From 9193afed6a221fc23bb33f12f5826a3245a8ee8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20B=C3=A4hr?= Date: Mon, 17 Feb 2014 15:05:07 +0100 Subject: [PATCH 001/303] Update DOWNLOAD_URI The old uri redirect already to the new uri. --- classes/dataBackend/BAV_DataBackend_File.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/dataBackend/BAV_DataBackend_File.php b/classes/dataBackend/BAV_DataBackend_File.php index ab859c89..bb6b1799 100644 --- a/classes/dataBackend/BAV_DataBackend_File.php +++ b/classes/dataBackend/BAV_DataBackend_File.php @@ -39,7 +39,7 @@ class BAV_DataBackend_File extends BAV_DataBackend { - const DOWNLOAD_URI = "http://www.bundesbank.de/Redaktion/DE/Standardartikel/Kerngeschaeftsfelder/Unbarer_Zahlungsverkehr/bankleitzahlen_download.html"; + const DOWNLOAD_URI = "http://www.bundesbank.de/Redaktion/DE/Standardartikel/Aufgaben/Unbarer_Zahlungsverkehr/bankleitzahlen_download.html"; private @@ -527,4 +527,4 @@ function_exists('sys_get_temp_dir') ? sys_get_temp_dir() : false, } -} \ No newline at end of file +} From fb2013e8b5a75222fca7fe74431e1b760436bacb Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Wed, 21 May 2014 20:22:02 +0200 Subject: [PATCH 002/303] fixed validator C5; see https://github.com/malkusch/bav/issues/12 --- classes/validator/validators/BAV_Validator_C5.php | 4 ++-- docs/changelog.txt | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/classes/validator/validators/BAV_Validator_C5.php b/classes/validator/validators/BAV_Validator_C5.php index e65e7a03..95542f76 100644 --- a/classes/validator/validators/BAV_Validator_C5.php +++ b/classes/validator/validators/BAV_Validator_C5.php @@ -93,7 +93,7 @@ protected function validate() { } else { $circle = substr($account, 0, 2); - if ($circle == 70 || $circle = 85) { + if ($circle == 70 || $circle == 85) { $this->validator = $this->mode4; } @@ -116,4 +116,4 @@ protected function getResult() { } -?> \ No newline at end of file +?> diff --git a/docs/changelog.txt b/docs/changelog.txt index 55e8d1b0..83ed7f43 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -2,6 +2,9 @@ Version 0.27 - not yet released ------------------------------- - replaced the autoloader with http://php-autoloader.malkusch.de + - fixed validator C5 + see https://github.com/malkusch/bav/issues/12 + Version 0.26 - June 3, 2012 --------------------------- From 037faed0e786d4f3192a8473b9d0c454086fd7a1 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Wed, 21 May 2014 23:28:55 +0200 Subject: [PATCH 003/303] changed download URI --- docs/changelog.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/changelog.txt b/docs/changelog.txt index 83ed7f43..b6daca6c 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -5,6 +5,8 @@ Version 0.27 - not yet released - fixed validator C5 see https://github.com/malkusch/bav/issues/12 + - changed download URI + see https://github.com/malkusch/bav/issues/10 Version 0.26 - June 3, 2012 --------------------------- From 8a6f7cc75a6f7b930923a8ef2ea8bcc333da3e82 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Thu, 22 May 2014 00:34:32 +0200 Subject: [PATCH 004/303] updated validator C6 according to Bundesbank update from 2013-03-04 --- classes/validator/validators/BAV_Validator_C6.php | 2 ++ data/verify.ini | 4 ++-- docs/changelog.txt | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/classes/validator/validators/BAV_Validator_C6.php b/classes/validator/validators/BAV_Validator_C6.php index a264d262..b6a2bd1b 100644 --- a/classes/validator/validators/BAV_Validator_C6.php +++ b/classes/validator/validators/BAV_Validator_C6.php @@ -39,9 +39,11 @@ class BAV_Validator_C6 extends BAV_Validator { 1 => 4451981, 2 => 4451992, 3 => 4451993, + 4 => 4344992, 5 => 4344990, 6 => 4344991, 7 => 5499570, + 8 => 4451994, 9 => 5499579 ); diff --git a/data/verify.ini b/data/verify.ini index af6e8793..32e401b9 100644 --- a/data/verify.ini +++ b/data/verify.ini @@ -49,7 +49,7 @@ C3 = 17002, 123451, 122448, 9000734028, 9000733227, 9000731120 C4 = 0000000017, 0000292933, 0000094459, 9000726558, 9001733457, 9000732000 C5 = 0000302589, 0000507336, 0302555000, 0302589000, 1000061457, 1000061498, 4864446015, 4865038012, 5000001028, 5000001075, 6450008150, 6542812818, 9000110012, 9000300310, 3081000783, 3081308871 - C6 = 0525111212, 0091423614, 1082311275, 1000118821, 2004306518, 2016001206, 3462816371, 3622548632, 4232300145, 4000456126, 4642847318, 5002684526, 5564123850, 6295473774, 6640806317, 7000062022, 7006003027, 7003306026, 7001501029, 8348300005, 7006003027, 8654216984, 9000641509, 9000260986 + C6 = 0525111212, 0091423614, 1082311275, 1000118821, 2004306518, 2016001206, 3462816371, 3622548632, 4232300158, 4000456126, 5002684526, 5564123850, 6295473774, 6640806317, 7000062022, 7006003027, 8348300002, 8654216984, 9000641509, 9000260986 C7 = 1234517892, 987614325 C8 = 1234567890, 9012345678 C9 = 3456789012, 1234567890, 9012345678 @@ -120,7 +120,7 @@ C3 = 9294182, 4431276, 19919, 9000420530, 9000010006, 9000577650 C4 = 0000000019, 0000292932, 0000094455, 9000420530, 9000010006, 9000577650 C5 = 0000301168, 0000302554, 0300020050, 0300566000, 1000061378, 1000061412, 4450164064, 4863476104, 5000000028, 5000000391, 6450008149, 6800001016, 9000100012, 9000210017, 3060188103, 3070402023 - C6 = 0000065516, 0203178249, 1031405209, 1082012201, 2003455189, 2004001016, 3110150986, 3068459207, 5035105948, 5286102149, 6028426119, 6861001755, 7008199027, 7002000023, 7000202027, 9000430223, 9000781153 + C6 = 0000065516, 0203178249, 1031405209, 1082012201, 2003455189, 2004001016, 3110150986, 3068459207, 5035105948, 5286102149, 5035105948, 5286102149, 4012660028, 4100235626, 6028426119, 6861001755, 7008199027, 7002000023, 7000202027, 8526080015, 8711072264, 9000430223, 9000781153 C7 = 3500022, 38150900, 600103660, 39101181, 94012341, 5073321010 C8 = 3456789019, 5678901231, 3456789012, 0022007130, 0123456789, 0552071285 C9 = 3456789019, 5678901231, 0123456789 diff --git a/docs/changelog.txt b/docs/changelog.txt index b6daca6c..67a44728 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -8,6 +8,8 @@ Version 0.27 - not yet released - changed download URI see https://github.com/malkusch/bav/issues/10 + - changed Validator C6 + Version 0.26 - June 3, 2012 --------------------------- - Repaired Bundesbank download From 4bb2d1bdfffd8477128556852e3154fae4b22569 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Thu, 22 May 2014 00:41:59 +0200 Subject: [PATCH 005/303] updated validator D1 according to Bundesbank update from 2013-03-04 --- classes/validator/validators/BAV_Validator_D1.php | 1 + data/verify.ini | 4 ++-- docs/changelog.txt | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/classes/validator/validators/BAV_Validator_D1.php b/classes/validator/validators/BAV_Validator_D1.php index 0bb32c7c..9b2b4434 100644 --- a/classes/validator/validators/BAV_Validator_D1.php +++ b/classes/validator/validators/BAV_Validator_D1.php @@ -43,6 +43,7 @@ class BAV_Validator_D1 extends BAV_Validator { 4 => 4363384, 5 => 4363385, 6 => 4363386, + 7 => 4363387, 9 => 4363389 ); diff --git a/data/verify.ini b/data/verify.ini index 32e401b9..b44bd98c 100644 --- a/data/verify.ini +++ b/data/verify.ini @@ -54,7 +54,7 @@ C8 = 1234567890, 9012345678 C9 = 3456789012, 1234567890, 9012345678 D0 = 6100272885, 6100273377, 6100274012 - D1 = 0000260986, 1062813622, 2000000000, 2001501026, 2256412314, 3012084101, 4006003027, 5814500990, 6128462594, 7000000000, 7000062025, 8000000000, 8003306026, 9000641509 + D1 = 0000260986, 1062813622, 2256412314, 3012084101, 4006003027, 5814500990, 6128462594, 7000062035, 8003306026, 9000641509 D2 = 6414241, 179751314 D3 = 6025017009, 6028267003, 6019835001 D4 = 0359432843, 1000062023, 2204271250, 3051681017, 4000123456, 5212744564, 6286420010, 7859103459, 8003306026, 9916524534 @@ -125,7 +125,7 @@ C8 = 3456789019, 5678901231, 3456789012, 0022007130, 0123456789, 0552071285 C9 = 3456789019, 5678901231, 0123456789 D0 = 6100272324, 6100273479, 5700000000, 5710000000, 5799999999 - D1 = 0082012203, 1452683581, 2129642505, 3002000027, 4230001407, 5000065514, 6001526215, 9000430223 + D1 = 0082012203, 1452683581, 2129642505, 3002000027, 4230001407, 5000065514, 6001526215, 7126502149, 9000430223 D2 = 51181008, 71214205, 4455667784, 1234567897, 189912137, 235308215 D3 = 1600169591, 1600189151, 1800084079, 6019937007, 6021354007, 6030642006 D4 = 1112048219, 2024601814, 3000005012, 4143406984, 5926485111, 6286304975, 7900256617, 8102228628, 9002364588 diff --git a/docs/changelog.txt b/docs/changelog.txt index 67a44728..6ce35d55 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -8,7 +8,7 @@ Version 0.27 - not yet released - changed download URI see https://github.com/malkusch/bav/issues/10 - - changed Validator C6 + - changed Validators: C6, D1 Version 0.26 - June 3, 2012 --------------------------- From 82d3a939f8bbceb44e1476c38caa66c89cc518dd Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Thu, 22 May 2014 00:59:20 +0200 Subject: [PATCH 006/303] added E0 from Heiko Hilbert --- autoloader/index/0.php | 1 + .../validator/validators/BAV_Validator_E0.php | 35 +++++++++++++++++++ data/verify.ini | 2 ++ 3 files changed, 38 insertions(+) create mode 100644 classes/validator/validators/BAV_Validator_E0.php diff --git a/autoloader/index/0.php b/autoloader/index/0.php index 9f1e341b..34b3d662 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -167,6 +167,7 @@ 'bav_validator_d7' => '../classes/validator/validators/BAV_Validator_D7.php', 'bav_validator_d8' => '../classes/validator/validators/BAV_Validator_D8.php', 'bav_validator_d9' => '../classes/validator/validators/BAV_Validator_D9.php', + 'bav_validator_e0' => '../classes/validator/validators/BAV_Validator_E0.php', 'bav_verifyimport' => '../classes/verify/BAV_VerifyImport.php', 'bav_validator_51x' => '../classes/validator/validators/BAV_Validator_51x.php', 'bav_validator_69b' => '../classes/validator/validators/BAV_Validator_69b.php', diff --git a/classes/validator/validators/BAV_Validator_E0.php b/classes/validator/validators/BAV_Validator_E0.php new file mode 100644 index 00000000..0d7bbb72 --- /dev/null +++ b/classes/validator/validators/BAV_Validator_E0.php @@ -0,0 +1,35 @@ + + * + * 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * @author hhilbert 2013-03-12 added + */ + + +class BAV_Validator_E0 extends BAV_Validator_00 { + + + protected function validate() { + parent::validate(); + $this->accumulator += 7; + } + + +} \ No newline at end of file diff --git a/data/verify.ini b/data/verify.ini index b44bd98c..aea9159f 100644 --- a/data/verify.ini +++ b/data/verify.ini @@ -63,6 +63,7 @@ D7 = 0501006102, 0231307867, 0301005331, 0330034104, 0420001302, 0135638809, 0202005939, 0601006977 D8 = 0009999999, 0100000000, 3012084101, 1062813622, 0000260986 D9 = 6543217890, 0543216789, 1100789043, 1100914032 + E0 = 1234769013, 2710014, 9741015011 51 = 0099345678, 0099100110, 0199100040 57 = 5302707782, 6412121212, 1813499124, 2206735010 68 = 6414241, 179751314 @@ -134,6 +135,7 @@ D7 = 0500018205, 0230103715, 0301000434, 0330035104, 0420001202, 0134637709, 0201005939, 0602006999 D8 = 0010000000, 0010000001, 0099999998, 0099999999, 1403414848, 6800000439, 6899999954 D9 = 1234567897, 0123456782, 9876543210, 1234567890, 0123456789, 1100132044, 1100669030 + E0 = 1234568013, 1534568010, 2610015, 8741013011 10 = 12345008, 87654008, 31251005, 86504002, 3157008, 34247009, 0672453002, 82319006, 405221, 370509005, 2190869, 65383206, 31741002, 4927397, 25168177, 624107000, 41683005, 8783004, 2740001, 302329005, 0013702017, 146468007, 141508108, 274018004, 61007404, 46199004, 0013711008, 4064224, 59083000, 255658001, 28396006, 452586003, 209611006, 1066889, 132623005, 71089004, 7219008, 172570000, 382813006, 81424000, 58583009, 653792000, 71934006, 29342007, 434894001, 139350004, 74509004, 110145003, 69748004, 77823001, 62248502, 65421000, 431361002, 7305001, 0011313005, 114126003, 63919001, 62320009, 13692003, 66933005, 100919200, 1249754, 268100, 67427006, 50018906, 77126009, 58032002, 85355003, 141401001, 15977005, 32710011, 30177383, 14088002, 104064005, 72769009, 115634002, 34409009, 183699009, 2055007, 21564000, 0709427000, 93107501, 36757004, 4322740006, 265281008, 88279707, 344455009, 341294004, 62162004 11 = 769010, 5661730, 3059227, 7761619, 7547927 13 = 2220267, 8107260, 1159656, 3301736, 180449101, 6824817, 2519056600, 1311521, 2675906200, 6815211, 887051100, 2476822200, 2928208, 1495035, 0008107260, 2803120, 8020083, 61895598, 5020946, 8018129, 7103260, 4440400, 8962060, 2737450, 6739064, 3319423, 420499600, 2923239800, 3992781, 7253032, 0247387, 1058056, 640575700, 3150679, 2781243, 1182468, 2456073600, 3004058, 2722320, 2872984, 2014660, 7455223, 6333868, 8913790, 2199099, 2602258, 6101851, 5272943, 8255754, 871638301, 6189559, 2586066300, 5262282, 1055292, 1039767, 7682065, 8844011, 1002054, 7013998, 2758889000, 1201375, 5715966, 8674285, 4301313, 4528493, 1194398, 5637707, 363743600, 800317000, 291176600, 458348000, 5712369, 0225524, 6412365, 8983447, 2035269000, 8327694, 2628892200, 2609531900, 1934264, 2915288, 6402671, 2052828100, 2053809, 183613900, 8279374, 5885082, 5502448, 2120061, 6557557, 6284244, 2501728000, 360460001, 1503861, 654143700, 1258318, 300574100, 3409083, 2762219, 1005628, 2205524, 1268275, 2007763, 2510678600, 4261285, 7307630, 3610011, 4500435, 8491714, 3657020, 7396302, 2226579, 414410102, 169622800, 1049568, 7917495, 142400100, 6183636, 2107597, 1615384, 1501055, 2332294, 8656654, 1413574 From 6e8fce29308ef43fddaf5f675c29671797dd83e9 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Thu, 22 May 2014 01:03:18 +0200 Subject: [PATCH 007/303] updated autoloader --- autoloader/InstantAutoloader.php | 39 +++++++++++++++++++++++--------- autoloader/autoloader.php | 2 ++ 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/autoloader/InstantAutoloader.php b/autoloader/InstantAutoloader.php index 692edcc1..e03880e3 100644 --- a/autoloader/InstantAutoloader.php +++ b/autoloader/InstantAutoloader.php @@ -30,11 +30,13 @@ * @link http://php-autoloader.malkusch.de/en/ */ +namespace malkusch\autoloader; + /** * There might be several InstantAutoloaders deployed in a project. * One is enough. */ -if (class_exists("InstantAutoloader")) { +if (class_exists("malkusch\autoloader\InstantAutoloader")) { return; } @@ -99,11 +101,11 @@ public function __construct($indexPath) public function register() { // spl_autoload_register() disables __autoload(). This might be unwanted. - if (function_exists("__autoload")) { - spl_autoload_register("__autoload"); + if (\function_exists("__autoload")) { + \spl_autoload_register("__autoload"); } - spl_autoload_register(array($this, "__autoload")); + \spl_autoload_register(array($this, "__autoload")); } /** @@ -150,11 +152,21 @@ public function __autoload($class) * even though the class is already defined by * a previously registered method. */ - if (class_exists($class, false) || interface_exists($class, false)) { + if ( + \class_exists($class, false) + || \interface_exists($class, false) + ) { return; } - if (! array_key_exists($class, $this->_index)) { + if ( + \version_compare(PHP_VERSION, "5.4", '>=') + && \trait_exists($class, false) + ) { + return; + + } + if (! \array_key_exists($class, $this->_index)) { return; } @@ -192,7 +204,7 @@ private function _requirePath($path) */ private function _normalizeClass(&$class) { - $class = strtolower($class); + $class = \strtolower($class); } /** @@ -206,19 +218,24 @@ private function _normalizeClass(&$class) * * @return bool true if the class constructor was called */ - private function _callClassConstructor($class, $constructorName) + public static function _callClassConstructor($class, $constructorName) { - $reflectionClass = new ReflectionClass($class); + $reflectionClass = new \ReflectionClass($class); if (! $reflectionClass->hasMethod($constructorName)) { return false; } - + $constructor = $reflectionClass->getMethod($constructorName); if (! $constructor->isStatic()) { return false; } + + if (\version_compare(PHP_VERSION, "5.4", '>=') && $reflectionClass->isTrait()) { + return false; + + } if ($constructor->getDeclaringClass()->getName() != $reflectionClass->getName()) { return false; @@ -229,4 +246,4 @@ private function _callClassConstructor($class, $constructorName) return true; } -} \ No newline at end of file +} diff --git a/autoloader/autoloader.php b/autoloader/autoloader.php index 395bde08..fcb35987 100644 --- a/autoloader/autoloader.php +++ b/autoloader/autoloader.php @@ -13,6 +13,8 @@ * @link http://php-autoloader.malkusch.de/en/ */ +namespace malkusch\autoloader; + require_once __DIR__ . '/InstantAutoloader.php'; $_autoloader = new InstantAutoloader(__DIR__ . '/index/0.php'); From 3a5802683e6f358b1e961d87fd604037d12869a9 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Thu, 22 May 2014 01:04:03 +0200 Subject: [PATCH 008/303] updated changelog about E0 --- docs/changelog.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/changelog.txt b/docs/changelog.txt index 6ce35d55..8086fca0 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -10,6 +10,8 @@ Version 0.27 - not yet released - changed Validators: C6, D1 + - added validator E0 + Version 0.26 - June 3, 2012 --------------------------- - Repaired Bundesbank download From 6bc253ea422c598f1efd7e75cfac607899de3249 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Thu, 22 May 2014 01:29:52 +0200 Subject: [PATCH 009/303] added E0 --- autoloader/index/0.php | 1 + .../validator/validators/BAV_Validator_E1.php | 54 +++++++++++++++++++ data/verify.ini | 2 + docs/changelog.txt | 2 +- 4 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 classes/validator/validators/BAV_Validator_E1.php diff --git a/autoloader/index/0.php b/autoloader/index/0.php index 34b3d662..e7e719b0 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -168,6 +168,7 @@ 'bav_validator_d8' => '../classes/validator/validators/BAV_Validator_D8.php', 'bav_validator_d9' => '../classes/validator/validators/BAV_Validator_D9.php', 'bav_validator_e0' => '../classes/validator/validators/BAV_Validator_E0.php', + 'bav_validator_e1' => '../classes/validator/validators/BAV_Validator_E1.php', 'bav_verifyimport' => '../classes/verify/BAV_VerifyImport.php', 'bav_validator_51x' => '../classes/validator/validators/BAV_Validator_51x.php', 'bav_validator_69b' => '../classes/validator/validators/BAV_Validator_69b.php', diff --git a/classes/validator/validators/BAV_Validator_E1.php b/classes/validator/validators/BAV_Validator_E1.php new file mode 100644 index 00000000..15d647a5 --- /dev/null +++ b/classes/validator/validators/BAV_Validator_E1.php @@ -0,0 +1,54 @@ + + * + * 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * This class was strong inspired by the class SystemE1 of Jan Schädlich + * https://github.com/jschaedl/Bav/blob/master/library/Bav/Validator/De/SystemE1.php + */ + +class BAV_Validator_E1 extends BAV_Validator_Iteration_Weighted { + + static private $subsitutions = array(48, 49, 50, 51, 52, 53, 54, 55, 56, 57); + + public function __construct(BAV_Bank $bank) { + parent::__construct($bank); + + $this->setWeights(array(1, 2, 3, 4, 5, 6, 11, 10, 9)); + $this->setDivisor(11); + } + + + protected function iterationStep() { + $this->accumulator += self::$subsitutions[$this->number] * $this->getWeight(); + } + + + protected function getResult() { + $result = $this->accumulator % $this->divisor; + if ($result == 10) { + return false; + + } + return (string) $result === $this->getCheckNumber(); + } + +} + +?> \ No newline at end of file diff --git a/data/verify.ini b/data/verify.ini index aea9159f..0b3b42fc 100644 --- a/data/verify.ini +++ b/data/verify.ini @@ -64,6 +64,7 @@ D8 = 0009999999, 0100000000, 3012084101, 1062813622, 0000260986 D9 = 6543217890, 0543216789, 1100789043, 1100914032 E0 = 1234769013, 2710014, 9741015011 + E1 = 0150013107, 0200035101, 0081313890, 4268550840, 0987402008 51 = 0099345678, 0099100110, 0199100040 57 = 5302707782, 6412121212, 1813499124, 2206735010 68 = 6414241, 179751314 @@ -136,6 +137,7 @@ D8 = 0010000000, 0010000001, 0099999998, 0099999999, 1403414848, 6800000439, 6899999954 D9 = 1234567897, 0123456782, 9876543210, 1234567890, 0123456789, 1100132044, 1100669030 E0 = 1234568013, 1534568010, 2610015, 8741013011 + E1 = 0100041104, 0100054106, 0200025107 10 = 12345008, 87654008, 31251005, 86504002, 3157008, 34247009, 0672453002, 82319006, 405221, 370509005, 2190869, 65383206, 31741002, 4927397, 25168177, 624107000, 41683005, 8783004, 2740001, 302329005, 0013702017, 146468007, 141508108, 274018004, 61007404, 46199004, 0013711008, 4064224, 59083000, 255658001, 28396006, 452586003, 209611006, 1066889, 132623005, 71089004, 7219008, 172570000, 382813006, 81424000, 58583009, 653792000, 71934006, 29342007, 434894001, 139350004, 74509004, 110145003, 69748004, 77823001, 62248502, 65421000, 431361002, 7305001, 0011313005, 114126003, 63919001, 62320009, 13692003, 66933005, 100919200, 1249754, 268100, 67427006, 50018906, 77126009, 58032002, 85355003, 141401001, 15977005, 32710011, 30177383, 14088002, 104064005, 72769009, 115634002, 34409009, 183699009, 2055007, 21564000, 0709427000, 93107501, 36757004, 4322740006, 265281008, 88279707, 344455009, 341294004, 62162004 11 = 769010, 5661730, 3059227, 7761619, 7547927 13 = 2220267, 8107260, 1159656, 3301736, 180449101, 6824817, 2519056600, 1311521, 2675906200, 6815211, 887051100, 2476822200, 2928208, 1495035, 0008107260, 2803120, 8020083, 61895598, 5020946, 8018129, 7103260, 4440400, 8962060, 2737450, 6739064, 3319423, 420499600, 2923239800, 3992781, 7253032, 0247387, 1058056, 640575700, 3150679, 2781243, 1182468, 2456073600, 3004058, 2722320, 2872984, 2014660, 7455223, 6333868, 8913790, 2199099, 2602258, 6101851, 5272943, 8255754, 871638301, 6189559, 2586066300, 5262282, 1055292, 1039767, 7682065, 8844011, 1002054, 7013998, 2758889000, 1201375, 5715966, 8674285, 4301313, 4528493, 1194398, 5637707, 363743600, 800317000, 291176600, 458348000, 5712369, 0225524, 6412365, 8983447, 2035269000, 8327694, 2628892200, 2609531900, 1934264, 2915288, 6402671, 2052828100, 2053809, 183613900, 8279374, 5885082, 5502448, 2120061, 6557557, 6284244, 2501728000, 360460001, 1503861, 654143700, 1258318, 300574100, 3409083, 2762219, 1005628, 2205524, 1268275, 2007763, 2510678600, 4261285, 7307630, 3610011, 4500435, 8491714, 3657020, 7396302, 2226579, 414410102, 169622800, 1049568, 7917495, 142400100, 6183636, 2107597, 1615384, 1501055, 2332294, 8656654, 1413574 diff --git a/docs/changelog.txt b/docs/changelog.txt index 8086fca0..582eb057 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -10,7 +10,7 @@ Version 0.27 - not yet released - changed Validators: C6, D1 - - added validator E0 + - added validators E0, E1 Version 0.26 - June 3, 2012 --------------------------- From 58a9fc655a9d8af18afa90595c7fabc52f375890 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Thu, 22 May 2014 01:47:14 +0200 Subject: [PATCH 010/303] changed 51 --- .../validator/validators/BAV_Validator_51.php | 25 +++++++++++-------- data/verify.ini | 2 +- docs/changelog.txt | 2 +- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/classes/validator/validators/BAV_Validator_51.php b/classes/validator/validators/BAV_Validator_51.php index 8623c4ce..da056c80 100644 --- a/classes/validator/validators/BAV_Validator_51.php +++ b/classes/validator/validators/BAV_Validator_51.php @@ -46,28 +46,31 @@ class BAV_Validator_51 extends BAV_Validator_Chain { /** * @var BAV_Validator_33 */ - $validatorC; + $validatorD; public function __construct(BAV_Bank $bank) { parent::__construct($bank); - $this->validatorC = new BAV_Validator_33($this->bank); - - $this->defaultValidators[] = new BAV_Validator_06($this->bank); - $this->defaultValidators[] = new BAV_Validator_33($this->bank); - $this->defaultValidators[] = $this->validatorC; - + $this->defaultValidators[0] = new BAV_Validator_06($this->bank); $this->defaultValidators[0]->setWeights(array(2, 3, 4, 5, 6, 7)); $this->defaultValidators[0]->setEnd(3); + $this->defaultValidators[1] = new BAV_Validator_33($this->bank); $this->defaultValidators[1]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators[1]->setEnd(4); - $this->defaultValidators[2]->setWeights(array(2, 3, 4, 5, 6)); - $this->defaultValidators[2]->setEnd(4); - $this->defaultValidators[2]->setDivisor(7); + $this->defaultValidators[2] = new BAV_Validator_00($this->bank); + $this->defaultValidators[2]->setWeights(array(2, 1)); + $this->defaultValidators[2]->setEnd(3); + $this->defaultValidators[2]->setDivisor(10); + $this->validatorD = new BAV_Validator_33($this->bank); + $this->defaultValidators[3] = $this->validatorD; + $this->defaultValidators[3]->setWeights(array(2, 3, 4, 5, 6)); + $this->defaultValidators[3]->setEnd(4); + $this->defaultValidators[3]->setDivisor(7); + $this->exceptionValidators = self::getExceptionValidators($bank); } @@ -99,7 +102,7 @@ protected function init($account) { protected function continueValidation(BAV_Validator $validator) { - if ($validator !== $this->validatorC) { + if ($validator !== $this->validatorD) { return true; } diff --git a/data/verify.ini b/data/verify.ini index 0b3b42fc..880a44fb 100644 --- a/data/verify.ini +++ b/data/verify.ini @@ -172,7 +172,7 @@ 48 = 93703660, 2959730 49 = 4152679, 4928024, 1826128, 1121799, 190388439, 3374520, 1444160, 2195865, 3278482 50 = 4000005001, 4444442001, 6144837000, 5850797000, 6142451000 - 51 = 0001156071, 0001156136, 0000156078, 0000156071, 3199500501, 0199100002, 0099100010, 2599100002, 0199100004, 2599100003, 3199204090, 592242, 164670, 270350, 458966 + 51 = 0001156071, 0001156136, 0000156078, 0001234567, 0000156071, 3199500501, 0199100002, 0099100010, 2599100002, 0199100004, 2599100003, 3199204090, 592242, 164670, 270350, 458966, 340968, 201178, 1009588, 101356073 54 = 4964137395, 4900010987 56 = 0290545005, 9718304037 57 = 7500021766, 9400001734, 7800028282, 8100244186, 7777778800, 5001050352, 5045090090, 1909700805, 0105781645, 0203861428, 1209752022, 1509701720, 0610784275, 0803732716, 2410781111, 0802713267, 2208483021, 1702772364, 1004731551, 2802752203, 1702770213, 2910751345, 3101752218, 0408720610, 2901554056, 2811722469, 3007762732, 1801810233, 3003711345, 0405542767, 1506801596, 1609751400, 1407781403, 0208762720, 0112762973, 0804841115, 1805761311, 1204762751, 2603784092, 1412720611, 2210811386, 2204762175, 1706812524, 0508750313, 1907791678, 1906721722, 2908752583, 0210772314, 1110742116, 1201760575, 1711764016, 2204840420, 0905712134, 2911792113, 2205812216, 1105812120, 2901784132, 3251080371, 3891234567, 9322111030, 2804540670 diff --git a/docs/changelog.txt b/docs/changelog.txt index 582eb057..6575af55 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -8,7 +8,7 @@ Version 0.27 - not yet released - changed download URI see https://github.com/malkusch/bav/issues/10 - - changed Validators: C6, D1 + - changed Validators: C6, D1, 51 - added validators E0, E1 From 3b48e2a53128daeedb2c660e4ee24324185fb572 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Thu, 22 May 2014 02:00:01 +0200 Subject: [PATCH 011/303] one more test case for 51 --- data/verify.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/verify.ini b/data/verify.ini index 880a44fb..64643b6d 100644 --- a/data/verify.ini +++ b/data/verify.ini @@ -172,7 +172,7 @@ 48 = 93703660, 2959730 49 = 4152679, 4928024, 1826128, 1121799, 190388439, 3374520, 1444160, 2195865, 3278482 50 = 4000005001, 4444442001, 6144837000, 5850797000, 6142451000 - 51 = 0001156071, 0001156136, 0000156078, 0001234567, 0000156071, 3199500501, 0199100002, 0099100010, 2599100002, 0199100004, 2599100003, 3199204090, 592242, 164670, 270350, 458966, 340968, 201178, 1009588, 101356073 + 51 = 0001156071, 0001156136, 0000156078, 0001234567, 0000156071, 3199500501, 0199100002, 0099100010, 2599100002, 0199100004, 2599100003, 3199204090, 592242, 164670, 270350, 458966, 340968, 201178, 1009588, 101356073, 2056778 54 = 4964137395, 4900010987 56 = 0290545005, 9718304037 57 = 7500021766, 9400001734, 7800028282, 8100244186, 7777778800, 5001050352, 5045090090, 1909700805, 0105781645, 0203861428, 1209752022, 1509701720, 0610784275, 0803732716, 2410781111, 0802713267, 2208483021, 1702772364, 1004731551, 2802752203, 1702770213, 2910751345, 3101752218, 0408720610, 2901554056, 2811722469, 3007762732, 1801810233, 3003711345, 0405542767, 1506801596, 1609751400, 1407781403, 0208762720, 0112762973, 0804841115, 1805761311, 1204762751, 2603784092, 1412720611, 2210811386, 2204762175, 1706812524, 0508750313, 1907791678, 1906721722, 2908752583, 0210772314, 1110742116, 1201760575, 1711764016, 2204840420, 0905712134, 2911792113, 2205812216, 1105812120, 2901784132, 3251080371, 3891234567, 9322111030, 2804540670 From 0810c20bf7fc1fa0dda616bd44a91c6ebd7516d6 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Thu, 22 May 2014 02:16:13 +0200 Subject: [PATCH 012/303] updated validator 57 according to Bundesbank update from 2013-09-09 --- classes/validator/validators/BAV_Validator_57.php | 9 +-------- data/verify.ini | 2 +- docs/changelog.txt | 2 +- 3 files changed, 3 insertions(+), 10 deletions(-) diff --git a/classes/validator/validators/BAV_Validator_57.php b/classes/validator/validators/BAV_Validator_57.php index 916481a2..40feb494 100644 --- a/classes/validator/validators/BAV_Validator_57.php +++ b/classes/validator/validators/BAV_Validator_57.php @@ -1,10 +1,5 @@ 1, 66 => 1, 70 => 1, - 73 => 1, 88 => 1, 94 => 1, 95 => 1, @@ -95,7 +89,6 @@ public function __construct(BAV_Bank $bank) { 69 => 2, 71 => 2, 72 => 2, - 74 => 2, 89 => 2, 90 => 2, 92 => 2, @@ -169,7 +162,7 @@ private function getMode() { } - if ($firstTwo >= 75 && $firstTwo <= 82) { + if ($firstTwo >= 73 && $firstTwo <= 82) { return 1; } elseif (($firstTwo >= 32 && $firstTwo <= 39) diff --git a/data/verify.ini b/data/verify.ini index 64643b6d..922be2c9 100644 --- a/data/verify.ini +++ b/data/verify.ini @@ -175,7 +175,7 @@ 51 = 0001156071, 0001156136, 0000156078, 0001234567, 0000156071, 3199500501, 0199100002, 0099100010, 2599100002, 0199100004, 2599100003, 3199204090, 592242, 164670, 270350, 458966, 340968, 201178, 1009588, 101356073, 2056778 54 = 4964137395, 4900010987 56 = 0290545005, 9718304037 - 57 = 7500021766, 9400001734, 7800028282, 8100244186, 7777778800, 5001050352, 5045090090, 1909700805, 0105781645, 0203861428, 1209752022, 1509701720, 0610784275, 0803732716, 2410781111, 0802713267, 2208483021, 1702772364, 1004731551, 2802752203, 1702770213, 2910751345, 3101752218, 0408720610, 2901554056, 2811722469, 3007762732, 1801810233, 3003711345, 0405542767, 1506801596, 1609751400, 1407781403, 0208762720, 0112762973, 0804841115, 1805761311, 1204762751, 2603784092, 1412720611, 2210811386, 2204762175, 1706812524, 0508750313, 1907791678, 1906721722, 2908752583, 0210772314, 1110742116, 1201760575, 1711764016, 2204840420, 0905712134, 2911792113, 2205812216, 1105812120, 2901784132, 3251080371, 3891234567, 9322111030, 2804540670 + 57 = 7500021766, 9400001734, 7800028282, 8100244186, 7777778800, 5001050352, 5045090090, 1909700805, 0105781645, 0203861428, 1209752022, 1509701720, 0610784275, 0803732716, 2410781111, 0802713267, 2208483021, 1702772364, 1004731551, 2802752203, 1702770213, 2910751345, 3101752218, 0408720610, 2901554056, 2811722469, 3007762732, 1801810233, 3003711345, 0405542767, 1506801596, 1609751400, 1407781403, 0208762720, 0112762973, 0804841115, 1805761311, 1204762751, 2603784092, 1412720611, 2210811386, 2204762175, 1706812524, 0508750313, 1907791678, 1906721722, 2908752583, 0210772314, 1110742116, 1201760575, 1711764016, 2204840420, 0905712134, 2911792113, 2205812216, 1105812120, 2901784132, 3251080371, 3891234567, 9322111030, 2804540670, 7400060823 58 = 1800293377, 180881120, 9200654108, 1015222224, 3703169668, 1000870595 59 = 115075806, 110105152 61 = 2063099200, 0260760481, 0260760282, 7806114000, 1146720600 diff --git a/docs/changelog.txt b/docs/changelog.txt index 6575af55..3aa54e7b 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -8,7 +8,7 @@ Version 0.27 - not yet released - changed download URI see https://github.com/malkusch/bav/issues/10 - - changed Validators: C6, D1, 51 + - changed Validators: C6, D1, 51, 57 - added validators E0, E1 From daee8f49969ebf884e7c962ac64b779117b0a06d Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Thu, 22 May 2014 02:31:00 +0200 Subject: [PATCH 013/303] updated validator 66 according to Bundesbank update from 2014-03-03 --- classes/validator/validators/BAV_Validator_66.php | 5 +++++ data/verify.ini | 2 +- docs/changelog.txt | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/classes/validator/validators/BAV_Validator_66.php b/classes/validator/validators/BAV_Validator_66.php index 2f1581d5..ab7bbad7 100644 --- a/classes/validator/validators/BAV_Validator_66.php +++ b/classes/validator/validators/BAV_Validator_66.php @@ -42,6 +42,11 @@ protected function iterationStep() { protected function getResult() { + // update 2014-03-03 + if ($this->account{1} == '9') { + return true; + + } $result = (11 - $this->accumulator % 11) % 10; return $this->account{0} == '0' && (string)$result === $this->getCheckNumber(); } diff --git a/data/verify.ini b/data/verify.ini index 922be2c9..754de352 100644 --- a/data/verify.ini +++ b/data/verify.ini @@ -183,7 +183,7 @@ 63 = 123456600, 0001234566, 1331537, 4938494, 167908, 7721244, 5518816, 503458, 830307, 2714202, 0200196, 268515400, 1756006, 0781831, 1079318, 7850134, 4079059, 3505708, 549157600, 5461587, 0231720, 971982400, 875344, 0322982, 6710750, 1038538, 3722410, 0912642, 8736779, 1094846, 5609581, 4301842, 0257063, 1488493, 6018774, 0433243, 3201076, 5441407, 7669807, 1720176, 5726963, 9974601, 0226555, 2421618, 5425483, 3742186, 9777228, 2081693, 348160300, 1543271, 3513132, 284753100, 5080510, 4687786, 3020757, 2114650, 0100230, 7602394, 5000849, 1267970, 3035292, 1214535, 1095843, 0173948, 040766800, 5861901, 2243178, 0341222, 2021764, 4441622, 3779238, 2043255, 7004690, 0516369, 5014600, 0630541, 6373492, 4517736, 0195123, 0477927, 4106712, 3237625, 5052360, 1195718, 4397790, 492134200, 8911299, 0272476, 654272400, 3076072, 3946829, 0282194, 9838244, 2750578, 4000808, 382011501, 8606568, 0400572, 2000263, 7046014, 0806786, 0473876, 3991031, 2385631, 1416288, 1561067, 2224533, 1741115, 8003998, 1857523, 1743855, 0260653, 6399653, 6409015, 7133101, 4816542, 075023200, 6911648, 6310692, 953647500, 446031700, 0150870, 4381604, 4474573, 9185737, 5019336, 0382390, 1305457, 2504660, 1564897, 0149955, 0853093, 2440071, 8832701, 2015741, 5415484, 0522268, 4904413, 1335355, 2222883, 0323535, 8041378, 2768208, 105405500, 020725800, 0145862, 3024387, 2343788, 033075301, 0409060, 4001152, 6465744, 5386792, 032341001, 200882900, 4792560, 2352573, 5434709, 2435600, 5137534, 1810621, 4679429, 1453216, 199577800, 2108033, 3980224, 8015208, 0308015, 0222380, 0303016, 5019211, 9540774, 8038523, 0411421, 183688100, 2137552, 0506758, 2242717, 400635900, 2512929, 989686100, 1028273, 0858688, 1216266, 7839293, 5104070, 7580012, 173605700, 0100206, 1335587, 0122135, 030367701, 7414402, 1214527, 5379367, 2130953, 8500555, 1587401, 0496273, 3172269, 7012297, 8816498, 8898389, 518427000, 684461700, 1053198, 5183710, 4255410, 3390010, 0119008, 3466521, 0602656, 4623245, 2038222, 0356758, 3015773, 781787700, 2523793, 0715417, 339102600, 8765711, 6606024, 6101331, 3945037, 376629200, 0521666, 6648802, 419723200, 0250936, 0312439, 3029766, 0709568, 520717000, 4111068, 3900388, 1238765, 0162065, 5916226, 4389698, 1941723, 8415432, 5051719, 1993898, 629314600, 5085204, 0245811, 7931926, 0210666, 1919588, 2303253, 1268044, 4009684, 0415372, 2813095, 0187823, 0432575, 5402177, 7367204, 3510849, 0156265, 0123927, 0131185, 0916445, 297518300, 0823419, 0246579, 8317349, 212612600, 2116127, 3900628, 1231315, 9167172, 126598200, 1239797, 1716026, 0430629, 0115055, 6082515, 025168600, 127129500, 6648349, 1130194, 6687628, 8446908, 0323410, 4212205, 1212877, 3206083, 3838000, 5605993, 0966663, 0208405, 3916293, 0223537, 1076710, 1301407, 445628100, 6472518, 0401943, 0401273, 0520486, 5146360, 6418735, 0444638, 015414600, 6967103, 4608105, 6967715, 1977206, 8002966, 3380243, 3912441, 2885325, 3228889, 4757076, 6072599, 7241896, 0001869791, 8174344, 4914123, 4472700, 6342208, 7591902, 7124746, 606530400, 2051357, 12305900, 271161200, 364094300, 140763400, 0750752, 1801661, 6018022, 4383501, 3631231, 5040928, 4999918, 0330183, 3214384, 0900019, 200019800, 010645000, 3985082, 4905857, 6301469, 3127594, 4662078, 1134345, 1134675, 0252247, 1225911, 0324376, 3588928, 0342451, 2515641, 0541698, 4303913, 1750017, 1841907, 2776011, 0138271, 5214564, 0366633, 0134312, 4750212, 3614401, 4017067, 0232140, 3743978, 2817369, 6609689, 0325191, 1011071, 8563553, 700305600, 4512505, 5710678, 2777076, 0177840, 9530908, 0403493, 8988149, 1991017, 651866600, 516460300, 6428684, 0979864, 0611798, 740613500, 3947322, 1992015, 7758808, 9636499, 5364823, 0511535, 5064159, 1164359, 0169631, 166180000, 6002349, 0212092, 0304345, 3807401, 1722834, 2439594, 012280400, 6229231, 3260759, 2506210, 1013887, 3220050, 141742700, 9616046, 3580487, 0291864, 501471700, 2717932, 4254181, 5729553, 0188037 64 = 1206473010, 5016511020, 7129309000 65 = 1234567400, 1234567590 - 66 = 100150502, 100154508, 101154508, 100154516, 101154516 + 66 = 0983393104, 1934567890, 100150502, 100154508, 101154508, 100154516, 101154516 68 = 51181008, 71214205, 8889654328, 987654324, 987654328, 2056760, 8606147, 19807727, 63206300, 71240804, 2011740, 412718, 6210801, 5030817, 76545806, 8406316, 53101527, 7322472, 7922792, 5477724, 6743173 69 = 9721134869, 1234567900, 1234567006, 0192735300, 4633049600, 6820735200, 3429127000, 9993327600, 2676152100 70 = 6790160566 diff --git a/docs/changelog.txt b/docs/changelog.txt index 3aa54e7b..9bb55bb8 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -8,7 +8,7 @@ Version 0.27 - not yet released - changed download URI see https://github.com/malkusch/bav/issues/10 - - changed Validators: C6, D1, 51, 57 + - changed Validators: C6, D1, 51, 57, 66 - added validators E0, E1 From ca72498a0638abf22482597415095536b20c3fe1 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Thu, 22 May 2014 09:45:39 +0200 Subject: [PATCH 014/303] trigger deprecation warning when using the old autoloader --- classes/autoloader/BAV_Autoloader.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/classes/autoloader/BAV_Autoloader.php b/classes/autoloader/BAV_Autoloader.php index 81346f64..e279f6bc 100644 --- a/classes/autoloader/BAV_Autoloader.php +++ b/classes/autoloader/BAV_Autoloader.php @@ -7,6 +7,8 @@ */ require_once __DIR__ . "/../../autoloader/autoloader.php"; +BAV_Autoloader::_triggerDeprecationWarning(); + /** * Deprecated Autoloader * @@ -17,7 +19,7 @@ class BAV_Autoloader { - private static function _triggerDeprecationWarning() + public static function _triggerDeprecationWarning() { trigger_error( "BAV_Autoloader is deprecated. Include bav/autoloader/autoloader.php instead.", @@ -71,4 +73,4 @@ static public function add($classPath) self::_triggerDeprecationWarning(); } -} \ No newline at end of file +} From df237ce004afc1209d4435afb6c37ee685f3e931 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Thu, 22 May 2014 10:06:53 +0200 Subject: [PATCH 015/303] updated validator 84 according to Bundesbank update from 2014-06-03 --- classes/validator/validators/BAV_Validator_84.php | 10 ++++++++-- data/verify.ini | 4 ++-- docs/changelog.txt | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/classes/validator/validators/BAV_Validator_84.php b/classes/validator/validators/BAV_Validator_84.php index 99f00cc6..571b6142 100644 --- a/classes/validator/validators/BAV_Validator_84.php +++ b/classes/validator/validators/BAV_Validator_84.php @@ -44,11 +44,17 @@ class BAV_Validator_84 extends BAV_Validator_Chain { public function __construct(BAV_Bank $bank) { parent::__construct($bank); - $this->defaultValidators[] = new BAV_Validator_33($bank); + $this->defaultValidators[0] = new BAV_Validator_33($bank); $this->defaultValidators[0]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators[0]->setEnd(4); - $this->defaultValidators[] = new BAV_Validator_84b($bank); + $this->defaultValidators[1] = new BAV_Validator_84b($bank); + + // Bundesbank update 2013-06-03 + $this->defaultValidators[2] = new BAV_Validator_06($bank); + $this->defaultValidators[2]->setWeights(array(2, 1)); + $this->defaultValidators[2]->setEnd(4); + $this->defaultValidators[2]->setDivisor(10); $this->exceptionValidators = BAV_Validator_51::getExceptionValidators($bank); } diff --git a/data/verify.ini b/data/verify.ini index 754de352..76bf8b72 100644 --- a/data/verify.ini +++ b/data/verify.ini @@ -72,7 +72,7 @@ 74 = 1011, 26265, 18002118, 6160000024 80 = 0099345678, 0099100110, 0199100040 81 = 0099345678, 0099100110, 0199100040 - 84 = 0099345678, 0099100110, 0199100040 + 84 = 0099345678, 0099100110, 0199100040, 240965, 350980, 461053 86 = 0099345678, 0099100110, 0199100040 87 = 0099345678, 0099100110, 0199100040 91 = 8840011000, 8840010000, 8840014000, 8840025000, 8840026000, 8840057000, 8840062000 @@ -198,7 +198,7 @@ 81 = 0646440, 1359100, 3199500501, 0199100002, 0099100010, 2599100002, 0199100004, 2599100003, 3199204090, 7296770, 7491751, 100587427, 7033249, 7117663, 7023650, 526800, 467405, 2636310, 3524450, 1114000, 7168802, 1105027, 2369010, 300900, 544825, 2656370, 7568231, 7622090, 960306, 7612192 82 = 123897, 3199500501 83 = 0001156071, 0001156136, 0000156078, 0000156071, 0099100002 - 84 = 100005, 393814, 950360, 3199500501, 0199100002, 0099100010, 2599100002, 0199100004, 2599100003, 3199204090, 634484, 371394, 506869, 703176, 197284 + 84 = 100005, 393814, 950360, 3199500501, 0199100002, 0099100010, 2599100002, 0199100004, 2599100003, 3199204090, 634484, 371394, 506869, 703176, 197284, 240699, 350982, 461059, 240692, 350985, 461052, 240961, 350984, 461054 85 = 0001156071, 0001156136, 0000156078, 0000156071, 3199100002, 316764, 0326816 86 = 123897, 340968, 1001171, 1009588, 3199500501, 340960, 0199100002, 0099100010, 2599100002, 0199100004, 2599100003, 3199204090, 1136845, 946150, 972323, 833371, 1293406 87 = 406, 51768, 10701590, 10720185, 100005, 393814, 950360, 3199500501, 0199100002, 0099100010, 2599100002, 0199100004, 2599100003, 3199204090, 2266057, 223175, 3186646, 1311349, 34715, 542655, 3011810, 1298310, 973356, 3467504 diff --git a/docs/changelog.txt b/docs/changelog.txt index 9bb55bb8..afaf3b3e 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -8,7 +8,7 @@ Version 0.27 - not yet released - changed download URI see https://github.com/malkusch/bav/issues/10 - - changed Validators: C6, D1, 51, 57, 66 + - changed Validators: C6, D1, 51, 57, 66, 84 - added validators E0, E1 From fcaeb393bd17f31d6d20a4922675e0cc5ebbe4a6 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Thu, 22 May 2014 22:40:11 +0200 Subject: [PATCH 016/303] updated validator 90 according to Bundesbank update from 2014-06-09 --- autoloader/index/0.php | 1 + .../validator/validators/BAV_Validator_90.php | 19 +++---- .../validators/BAV_Validator_90g.php | 52 +++++++++++++++++++ data/verify.ini | 3 +- docs/changelog.txt | 2 +- 5 files changed, 66 insertions(+), 11 deletions(-) create mode 100644 classes/validator/validators/BAV_Validator_90g.php diff --git a/autoloader/index/0.php b/autoloader/index/0.php index e7e719b0..305816b5 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -180,6 +180,7 @@ 'bav_validator_90c' => '../classes/validator/validators/BAV_Validator_90c.php', 'bav_validator_90d' => '../classes/validator/validators/BAV_Validator_90d.php', 'bav_validator_90e' => '../classes/validator/validators/BAV_Validator_90e.php', + 'bav_validator_90g' => '../classes/validator/validators/BAV_Validator_90g.php', 'bav_validator_a4b' => '../classes/validator/validators/BAV_Validator_A4b.php', 'bav_validator_b9a' => '../classes/validator/validators/BAV_Validator_B9a.php', 'bav_validator_b9b' => '../classes/validator/validators/BAV_Validator_B9b.php', diff --git a/classes/validator/validators/BAV_Validator_90.php b/classes/validator/validators/BAV_Validator_90.php index 5f674903..55e6256a 100644 --- a/classes/validator/validators/BAV_Validator_90.php +++ b/classes/validator/validators/BAV_Validator_90.php @@ -46,17 +46,18 @@ public function __construct(BAV_Bank $bank) { parent::__construct($bank); - $this->defaultValidators[] = new BAV_Validator_06($bank); - $this->defaultValidators[0]->setWeights(array(2, 3, 4, 5, 6, 7)); - $this->defaultValidators[0]->setEnd(3); + $this->defaultValidators["a"] = new BAV_Validator_06($bank); + $this->defaultValidators["a"]->setWeights(array(2, 3, 4, 5, 6, 7)); + $this->defaultValidators["a"]->setEnd(3); - $this->defaultValidators[] = new BAV_Validator_06($bank); - $this->defaultValidators[1]->setWeights(array(2, 3, 4, 5, 6)); - $this->defaultValidators[1]->setEnd(4); + $this->defaultValidators["b"] = new BAV_Validator_06($bank); + $this->defaultValidators["b"]->setWeights(array(2, 3, 4, 5, 6)); + $this->defaultValidators["b"]->setEnd(4); - $this->defaultValidators[] = new BAV_Validator_90c($bank); - $this->defaultValidators[] = new BAV_Validator_90d($bank); - $this->defaultValidators[] = new BAV_Validator_90e($bank); + $this->defaultValidators["c"] = new BAV_Validator_90c($bank); + $this->defaultValidators["d"] = new BAV_Validator_90d($bank); + $this->defaultValidators["e"] = new BAV_Validator_90e($bank); + $this->defaultValidators["g"] = new BAV_Validator_90g($bank); $this->modeF = new BAV_Validator_06($bank); $this->modeF->setWeights(array(2, 3, 4, 5, 6, 7, 8)); diff --git a/classes/validator/validators/BAV_Validator_90g.php b/classes/validator/validators/BAV_Validator_90g.php new file mode 100644 index 00000000..5370c59e --- /dev/null +++ b/classes/validator/validators/BAV_Validator_90g.php @@ -0,0 +1,52 @@ + + * + * 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + + +class BAV_Validator_90g extends BAV_Validator_Iteration_Weighted { + + + public function __construct(BAV_Bank $bank) { + parent::__construct($bank); + + $this->setWeights(array(2, 1)); + + /* + * The specification is not clear about 4 or 3. + * see https://github.com/malkusch/bav/issues/14 + */ + $this->setEnd(3); + } + + + protected function iterationStep() { + $this->accumulator += $this->number * $this->getWeight(); + } + + + protected function getResult() { + $rest = $this->accumulator % 7; + $checknumber = $rest == 0 ? 0 : (7 - $rest); + return (string)$checknumber === $this->getCheckNumber(); + } + + +} \ No newline at end of file diff --git a/data/verify.ini b/data/verify.ini index 76bf8b72..7ce0ec86 100644 --- a/data/verify.ini +++ b/data/verify.ini @@ -75,6 +75,7 @@ 84 = 0099345678, 0099100110, 0199100040, 240965, 350980, 461053 86 = 0099345678, 0099100110, 0199100040 87 = 0099345678, 0099100110, 0199100040 + 90 = 0001924592, 0000901568, 0000820487, 0000726393, 0000924591, 0003865964, 0099100007 91 = 8840011000, 8840010000, 8840014000, 8840025000, 8840026000, 8840057000, 8840062000 95 = 4455667784, 1234567897, 51181008, 71214205 6414241, 179751314 @@ -204,7 +205,7 @@ 87 = 406, 51768, 10701590, 10720185, 100005, 393814, 950360, 3199500501, 0199100002, 0099100010, 2599100002, 0199100004, 2599100003, 3199204090, 2266057, 223175, 3186646, 1311349, 34715, 542655, 3011810, 1298310, 973356, 3467504 88 = 2525259, 1000500, 90013000, 92525253, 99913003, 16284, 100263036, 89060, 227897, 582840, 78239, 303674, 3302989, 2628910, 7174918, 1694219, 929913, 4840968, 222348, 5729114, 923222, 3227103, 1057162, 126314, 50741, 818526, 1112, 27146, 320897, 5916941, 7178441, 66877, 1807323, 3221016, 72222, 4207289, 9710213, 40100, 6124593, 707899, 32700, 5195039, 152846, 727610, 483192, 100007960, 3501523, 2680696, 1064827, 3241599, 3603377, 2704900, 1825526, 1069080, 363910, 7425511, 317098, 179426, 319988, 1431188, 1202090, 704890, 614491, 11410, 67067, 119890, 37834, 1073796, 1807536, 36765, 2807220, 215490, 2569906, 1920103, 1190571, 2508508 89 = 1098506, 32028008, 218433000, 507072006, 254024009 - 90 = 982507293, 0001156136, 0000156132, 0000156071, 0001156132, 0000156073, 0000156077, 0099100002, 3921000, 259413, 0006073093, 737577, 4569164, 3140482, 2451050, 415176, 2426013 + 90 = 982507293, 0001156136, 0000156132, 0000156071, 0001156132, 0000156073, 0000156077, 0099100002, 3921000, 259413, 0006073093, 737577, 4569164, 3140482, 2451050, 415176, 2426013, 0001975641, 0001988654, 0001863530, 0001784451, 0000654321, 0000824491, 0000677747, 0000840507, 0000996663, 0000666034, 0004923250, 0003865960 91 = 2974117000, 5281770000, 8840012000, 8840019000, 8840050000, 8840055000, 8840087000, 8840045000, 8840080000, 9952812000 92 = 4129654921, 4139507456, 4079604146, 4239680359, 4349555862, 4069613759, 4069634518, 4239653647, 4149555848, 4359725290, 4149578179 93 = 6714790000, 0000671479, 1277830000, 0000127783, 1277910000, 0000127791, 3067540000, 0000306754 diff --git a/docs/changelog.txt b/docs/changelog.txt index afaf3b3e..5e311620 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -8,7 +8,7 @@ Version 0.27 - not yet released - changed download URI see https://github.com/malkusch/bav/issues/10 - - changed Validators: C6, D1, 51, 57, 66, 84 + - changed Validators: C6, D1, 51, 57, 66, 84, 90 - added validators E0, E1 From f391b733310524433259651eae80bfb5628b418e Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Thu, 22 May 2014 22:46:59 +0200 Subject: [PATCH 017/303] updated validator 95 according to Bundesbank update from 2013-09-09 --- classes/validator/validators/BAV_Validator_95.php | 3 ++- data/verify.ini | 2 +- docs/changelog.txt | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/classes/validator/validators/BAV_Validator_95.php b/classes/validator/validators/BAV_Validator_95.php index 9132cac0..9bb9e73f 100644 --- a/classes/validator/validators/BAV_Validator_95.php +++ b/classes/validator/validators/BAV_Validator_95.php @@ -39,7 +39,8 @@ public function isValid($account) { || $this->isBetween(1, 1999999) || $this->isBetween(9000000, 25999999) || $this->isBetween(396000000, 499999999) - || $this->isBetween(700000000, 799999999); + || $this->isBetween(700000000, 799999999) + || $this->isBetween(910000000, 989999999); } diff --git a/data/verify.ini b/data/verify.ini index 7ce0ec86..001eb4ee 100644 --- a/data/verify.ini +++ b/data/verify.ini @@ -210,7 +210,7 @@ 92 = 4129654921, 4139507456, 4079604146, 4239680359, 4349555862, 4069613759, 4069634518, 4239653647, 4149555848, 4359725290, 4149578179 93 = 6714790000, 0000671479, 1277830000, 0000127783, 1277910000, 0000127791, 3067540000, 0000306754 94 = 6782533003 - 95 = 0068007003, 0847321750, 6450060494, 6454000003, 657550590, 3180376878, 5800607576, 6340241892, 6130421618, 48256538, 6410681216, 5300100, 658311255, 4320265385, 38794531, 46599730, 33739966, 659110580, 2594811, 34239185, 45333655, 44212463, 654502633, 43917056, 189912137, 235308215 + 95 = 0068007003, 0847321750, 6450060494, 6454000003, 657550590, 3180376878, 5800607576, 6340241892, 6130421618, 48256538, 6410681216, 5300100, 658311255, 4320265385, 38794531, 46599730, 33739966, 659110580, 2594811, 34239185, 45333655, 44212463, 654502633, 43917056, 189912137, 235308215, 0910000000, 0989999999 96 = 0000254100, 9421000009, 0000000208, 0101115152, 0301204301, 1251705004, 388816198, 1201255242, 345807936, 1200996087, 1200571353, 1251063924, 1251325481, 394225724, 1251763837, 1251088153, 315811340, 1200161570, 313808651, 1251112070, 1251673102, 319812057, 378000624, 1251027898, 329807382, 371824206, 1201674709, 1251495190, 1251258300, 1251199940, 0318093154, 1251272795, 1251424030, 115018954, 1201413450, 1251178780, 1251721832, 0385014384, 161022942 97 = 24010019 98 = 9619439213, 9619509976, 9619319999, 3009800016, 5989800173, 6719430018 diff --git a/docs/changelog.txt b/docs/changelog.txt index 5e311620..a29d1fd2 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -8,7 +8,7 @@ Version 0.27 - not yet released - changed download URI see https://github.com/malkusch/bav/issues/10 - - changed Validators: C6, D1, 51, 57, 66, 84, 90 + - changed Validators: C6, D1, 51, 57, 66, 84, 90, 95 - added validators E0, E1 From 896399aaba17cf756fe3c1024f4e10e3b366467d Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Thu, 22 May 2014 22:53:35 +0200 Subject: [PATCH 018/303] release 0.27 --- docs/changelog.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index a29d1fd2..107657e8 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -1,5 +1,5 @@ -Version 0.27 - not yet released -------------------------------- +Version 0.27 - May 22, 2014 +--------------------------- - replaced the autoloader with http://php-autoloader.malkusch.de - fixed validator C5 From 98e437f9ad2c10265ba7bfdedcd8bee54a732cb7 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 09:58:09 +0200 Subject: [PATCH 019/303] added composer support --- composer.json | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 composer.json diff --git a/composer.json b/composer.json new file mode 100644 index 00000000..5dd2bd23 --- /dev/null +++ b/composer.json @@ -0,0 +1,39 @@ +{ + "name": "malkusch/bav", + "type": "library", + "description": "BAV provides validation for German Bank Accounts (Konto)", + "keywords": ["bank", "account", "bankaccount", "validation", "check", "konto"], + "homepage": "http://bav.malkusch.de/", + "license": "GPL-2.0", + "authors": [ + { + "name": "Markus Malkusch", + "email": "markus@malkusch.de", + "homepage": "http://markus.malkusch.de", + "role": "Developer" + } + ], + "support": { + "issues": "https://github.com/malkusch/bav/issues", + "source": "https://github.com/malkusch/bav" + }, + "autoload": { + "files": ["autoloader/autoloader.php"] + }, + "require": { + "php": ">=5" + }, + "suggest": { + "ext-PDO": "Allows storing bank information in a database", + "ext-mbstring": "Enables UTF-8 support", + "lib-curl": "Enables API for downloading the bank file", + "lib-iconv": "Enables UTF-8 support" + }, + "require-dev": { + "phpunit/phpunit": ">=3" + }, + "archive": { + "exclude": ["/tests/"] + } +} + From d9c774eaed6b74691c0d006c9f3abcf8da55dfe9 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 11:37:19 +0200 Subject: [PATCH 020/303] remove example.php --- README | 2 +- {scripts => docs}/example.php | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename {scripts => docs}/example.php (100%) diff --git a/README b/README index cc1341fd..65038127 100644 --- a/README +++ b/README @@ -109,7 +109,7 @@ Usage Example ------- - You find it in scripts/example.php + You find it in docs/example.php Helping BAV diff --git a/scripts/example.php b/docs/example.php similarity index 100% rename from scripts/example.php rename to docs/example.php From 3797312b3fd8d933bf84484b4761facc5c9f0889 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 11:39:18 +0200 Subject: [PATCH 021/303] renamed scripts/ into bin/ --- README | 2 +- {scripts => bin}/verifyImport.php | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename {scripts => bin}/verifyImport.php (100%) diff --git a/README b/README index 65038127..26733fea 100644 --- a/README +++ b/README @@ -124,7 +124,7 @@ Helping BAV mention the validation alogrithm (BAV_Bank->getValidationType()), the account id and the expected result. - There exists also the script scripts/verifyImport.php. You can use this to + There exists also the script bin/verifyImport.php. You can use this to import your bank accounts to a data/verify.ini and check them with test/checkValidators.php. See the comments in verifyImport.php for more details on usage. If there are errors you can send your verify.ini to diff --git a/scripts/verifyImport.php b/bin/verifyImport.php similarity index 100% rename from scripts/verifyImport.php rename to bin/verifyImport.php From c44e234649a08d8c86113ade71925f9045a14f51 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 12:17:27 +0200 Subject: [PATCH 022/303] make downloaded file readable for everybody --- classes/dataBackend/BAV_DataBackend_File.php | 1 + 1 file changed, 1 insertion(+) diff --git a/classes/dataBackend/BAV_DataBackend_File.php b/classes/dataBackend/BAV_DataBackend_File.php index bb6b1799..0d3ebcf7 100644 --- a/classes/dataBackend/BAV_DataBackend_File.php +++ b/classes/dataBackend/BAV_DataBackend_File.php @@ -246,6 +246,7 @@ public function update() { } $this->safeRename($file, $this->parser->getFile()); + chmod($this->parser->getFile(), 0644); } From 10522af61405a35cf0de162a35c2db76e702571e Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 12:36:48 +0200 Subject: [PATCH 023/303] added scripts for installing and updating the bundesbank file --- bin/bav-install.php | 42 ++++++++++++++++++++++++++++++++++++++++++ bin/bav-update.php | 42 ++++++++++++++++++++++++++++++++++++++++++ composer.json | 6 +++++- docs/changelog.txt | 7 +++++++ 4 files changed, 96 insertions(+), 1 deletion(-) create mode 100755 bin/bav-install.php create mode 100755 bin/bav-update.php diff --git a/bin/bav-install.php b/bin/bav-install.php new file mode 100755 index 00000000..74d484a8 --- /dev/null +++ b/bin/bav-install.php @@ -0,0 +1,42 @@ +#!/bin/env php + + * + * 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * @package scripts + * @filesource + * @author Markus Malkusch + * @copyright Copyright (C) 2014 Markus Malkusch + * @see BAV_DataBackend + */ + + +require_once __DIR__ . "/../autoloader/autoloader.php"; + +try { + // TODO: There should exist an injected instance. + $databack = new BAV_DataBackend_File(); + + $databack->install(); + echo "Bundesbank file downloaded.\n"; + +} catch (BAV_DataBackendException $error) { + die("Installation failed: {$error->getMessage()}\n"); + +} \ No newline at end of file diff --git a/bin/bav-update.php b/bin/bav-update.php new file mode 100755 index 00000000..30d723e3 --- /dev/null +++ b/bin/bav-update.php @@ -0,0 +1,42 @@ +#!/bin/env php + + * + * 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * @package scripts + * @filesource + * @author Markus Malkusch + * @copyright Copyright (C) 2014 Markus Malkusch + * @see BAV_DataBackend + */ + + +require_once __DIR__ . "/../autoloader/autoloader.php"; + +try { + // TODO: There should exist an injected instance. + $databack = new BAV_DataBackend_File(); + + $databack->update(); + echo "Bundesbank file downloaded.\n"; + +} catch (BAV_DataBackendException $error) { + die("Installation failed: {$error->getMessage()}\n"); + +} \ No newline at end of file diff --git a/composer.json b/composer.json index 5dd2bd23..e8022822 100644 --- a/composer.json +++ b/composer.json @@ -34,6 +34,10 @@ }, "archive": { "exclude": ["/tests/"] - } + }, + "bin": [ + "bin/bav-update.php", + "bin/bav-install.php" + ] } diff --git a/docs/changelog.txt b/docs/changelog.txt index 107657e8..300c696e 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -1,3 +1,10 @@ +Version 0.28 - not yet released +------------------------------- + - added Composer support + + - added scripts for installing and updating the bundesbank file. + + Version 0.27 - May 22, 2014 --------------------------- - replaced the autoloader with http://php-autoloader.malkusch.de From b47b295985af915d1b7387f51df4ec8e680a3716 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 14:09:35 +0200 Subject: [PATCH 024/303] next version might be 0.28 --- classes/BAV.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/BAV.php b/classes/BAV.php index 2c2adc42..abead681 100644 --- a/classes/BAV.php +++ b/classes/BAV.php @@ -66,7 +66,7 @@ static public function setEncoding($encoding) { * @return BAV_Version version of BAV */ static public function get_bav_version() { - return new BAV_Version('0.27'); + return new BAV_Version('0.28'); } /** * Returns the version of the API. Note that different BAV versions From 23de2e8c8ec59800800c58bd5f4206f2df39169c Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 14:28:33 +0200 Subject: [PATCH 025/303] example --- docs/example.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/docs/example.php b/docs/example.php index 68a54013..4972e44d 100755 --- a/docs/example.php +++ b/docs/example.php @@ -77,14 +77,17 @@ */ try { $bank = $databack->getBank(10000000); + /** * Hmm, what name does this bank have? */ echo "{$bank->getMainAgency()->getName()} {$bank->getMainAgency()->getCity()}\n"; + /** * Are there any more agencies? */ print_r($bank->getAgencies()); + /** * And now we want to see if the account 12345 is valid: */ @@ -137,7 +140,7 @@ */ $agencies = $databackPDO->getAgencies("SELECT id FROM {$databackPDO->getPrefix()}agency LIMIT 10"); foreach ($agencies as $agency) { - echo "Found agency {$agency->getPostcode()} of bank {$agency->getBank()->getBankID()}\n"; + echo "Found agency {$agency->getPostcode()} of bank {$agency->getBank()->getBankID()}\n"; } @@ -146,10 +149,11 @@ * You perform better if you provide all attributes of the agency table. Let's * try it and search all banks in munich. */ - $agencies = $databackPDO->getAgencies(" - SELECT * FROM {$databackPDO->getPrefix()}agency - WHERE city='München' - GROUP BY bank"); + $agencies = $databackPDO->getAgencies( + "SELECT * FROM {$databackPDO->getPrefix()}agency + WHERE city='München' + GROUP BY bank" + ); foreach ($agencies as $agency) { echo "{$agency->getBank()->getBankID()} ({$agency->getName()}, {$agency->getCity()})\n"; From 8f4879f6763cfd48c60e1e3a9ec8243951cdaccb Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 14:30:16 +0200 Subject: [PATCH 026/303] autoloader --- autoloader/autoloader.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoloader/autoloader.php b/autoloader/autoloader.php index fcb35987..0cc37703 100644 --- a/autoloader/autoloader.php +++ b/autoloader/autoloader.php @@ -24,4 +24,4 @@ $_autoloader = new InstantAutoloader(__DIR__ . '/index/1.php'); $_autoloader->setBasePath(__DIR__); $_autoloader->register(); -unset($_autoloader); \ No newline at end of file +unset($_autoloader); From bd34273fdb37b892e2e4de1df1fad7908d8f1973 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 19:10:00 +0200 Subject: [PATCH 027/303] Opening braces for classes MUST go on the next line --- classes/BAV.php | 3 ++- classes/BAV_Version.php | 3 ++- classes/bank/BAV_Agency.php | 3 ++- classes/bank/BAV_Bank.php | 3 ++- classes/bank/exception/BAV_AgencyException.php | 3 ++- .../bank/exception/BAV_AgencyException_UndefinedAttribute.php | 3 ++- classes/class/BAV_ClassFile.php | 3 ++- classes/class/exception/BAV_ClassFileException.php | 3 ++- classes/class/exception/BAV_ClassFileException_IO.php | 3 ++- .../class/exception/BAV_ClassFileException_MissingClass.php | 3 ++- classes/dataBackend/BAV_DataBackend.php | 3 ++- classes/dataBackend/BAV_DataBackend_File.php | 3 ++- classes/dataBackend/BAV_DataBackend_PDO.php | 3 ++- classes/dataBackend/exception/BAV_DataBackendException.php | 3 ++- .../exception/BAV_DataBackendException_BankNotFound.php | 3 ++- classes/dataBackend/exception/BAV_DataBackendException_IO.php | 3 ++- .../BAV_DataBackendException_IO_MissingAttributes.php | 3 ++- .../exception/BAV_DataBackendException_NoMainAgency.php | 3 ++- classes/dataBackend/fileParser/BAV_FileParser.php | 3 ++- classes/dataBackend/fileParser/BAV_FileParserContext.php | 3 ++- .../fileParser/exception/BAV_FileParserContextException.php | 3 ++- .../exception/BAV_FileParserContextException_Undefined.php | 3 ++- .../fileParser/exception/BAV_FileParserException.php | 3 ++- .../exception/BAV_FileParserException_FileNotExists.php | 3 ++- .../fileParser/exception/BAV_FileParserException_IO.php | 3 ++- .../exception/BAV_FileParserException_ParseError.php | 3 ++- classes/encoding/BAV_Encoding.php | 3 ++- classes/encoding/BAV_Encoding_ISO8859.php | 3 ++- classes/encoding/BAV_Encoding_Iconv.php | 3 ++- classes/encoding/BAV_Encoding_MB.php | 3 ++- classes/encoding/exception/BAV_EncodingException.php | 3 ++- .../encoding/exception/BAV_EncodingException_Unsupported.php | 3 ++- classes/validator/BAV_Validator.php | 3 ++- classes/validator/BAV_Validator_Chain.php | 3 ++- classes/validator/BAV_Validator_Iteration.php | 3 ++- classes/validator/BAV_Validator_Iteration_Transformation.php | 3 ++- classes/validator/BAV_Validator_Iteration_Weighted.php | 3 ++- classes/validator/exception/BAV_ValidatorException.php | 3 ++- classes/validator/exception/BAV_ValidatorException_ESER.php | 3 ++- .../validator/exception/BAV_ValidatorException_NotExists.php | 3 ++- .../validator/exception/BAV_ValidatorException_OutOfBounds.php | 3 ++- classes/validator/validators/BAV_Validator_00.php | 3 ++- classes/validator/validators/BAV_Validator_01.php | 3 ++- classes/validator/validators/BAV_Validator_02.php | 3 ++- classes/validator/validators/BAV_Validator_03.php | 3 ++- classes/validator/validators/BAV_Validator_04.php | 3 ++- classes/validator/validators/BAV_Validator_05.php | 3 ++- classes/validator/validators/BAV_Validator_06.php | 3 ++- classes/validator/validators/BAV_Validator_07.php | 3 ++- classes/validator/validators/BAV_Validator_08.php | 3 ++- classes/validator/validators/BAV_Validator_09.php | 3 ++- classes/validator/validators/BAV_Validator_10.php | 3 ++- classes/validator/validators/BAV_Validator_11.php | 3 ++- classes/validator/validators/BAV_Validator_13.php | 3 ++- classes/validator/validators/BAV_Validator_14.php | 3 ++- classes/validator/validators/BAV_Validator_15.php | 3 ++- classes/validator/validators/BAV_Validator_16.php | 3 ++- classes/validator/validators/BAV_Validator_17.php | 3 ++- classes/validator/validators/BAV_Validator_18.php | 3 ++- classes/validator/validators/BAV_Validator_19.php | 3 ++- classes/validator/validators/BAV_Validator_20.php | 3 ++- classes/validator/validators/BAV_Validator_21.php | 3 ++- classes/validator/validators/BAV_Validator_22.php | 3 ++- classes/validator/validators/BAV_Validator_23.php | 3 ++- classes/validator/validators/BAV_Validator_24.php | 3 ++- classes/validator/validators/BAV_Validator_25.php | 3 ++- classes/validator/validators/BAV_Validator_26.php | 3 ++- classes/validator/validators/BAV_Validator_27.php | 3 ++- classes/validator/validators/BAV_Validator_28.php | 3 ++- classes/validator/validators/BAV_Validator_29.php | 3 ++- classes/validator/validators/BAV_Validator_30.php | 3 ++- classes/validator/validators/BAV_Validator_31.php | 3 ++- classes/validator/validators/BAV_Validator_32.php | 3 ++- classes/validator/validators/BAV_Validator_33.php | 3 ++- classes/validator/validators/BAV_Validator_34.php | 3 ++- classes/validator/validators/BAV_Validator_35.php | 3 ++- classes/validator/validators/BAV_Validator_36.php | 3 ++- classes/validator/validators/BAV_Validator_37.php | 3 ++- classes/validator/validators/BAV_Validator_38.php | 3 ++- classes/validator/validators/BAV_Validator_39.php | 3 ++- classes/validator/validators/BAV_Validator_40.php | 3 ++- classes/validator/validators/BAV_Validator_41.php | 3 ++- classes/validator/validators/BAV_Validator_42.php | 3 ++- classes/validator/validators/BAV_Validator_43.php | 3 ++- classes/validator/validators/BAV_Validator_44.php | 3 ++- classes/validator/validators/BAV_Validator_45.php | 3 ++- classes/validator/validators/BAV_Validator_46.php | 3 ++- classes/validator/validators/BAV_Validator_47.php | 3 ++- classes/validator/validators/BAV_Validator_48.php | 3 ++- classes/validator/validators/BAV_Validator_49.php | 3 ++- classes/validator/validators/BAV_Validator_50.php | 3 ++- classes/validator/validators/BAV_Validator_51.php | 3 ++- classes/validator/validators/BAV_Validator_51x.php | 3 ++- classes/validator/validators/BAV_Validator_52.php | 3 ++- classes/validator/validators/BAV_Validator_53.php | 3 ++- classes/validator/validators/BAV_Validator_54.php | 3 ++- classes/validator/validators/BAV_Validator_55.php | 3 ++- classes/validator/validators/BAV_Validator_56.php | 3 ++- classes/validator/validators/BAV_Validator_57.php | 3 ++- classes/validator/validators/BAV_Validator_58.php | 3 ++- classes/validator/validators/BAV_Validator_59.php | 3 ++- classes/validator/validators/BAV_Validator_60.php | 3 ++- classes/validator/validators/BAV_Validator_61.php | 3 ++- classes/validator/validators/BAV_Validator_62.php | 3 ++- classes/validator/validators/BAV_Validator_63.php | 3 ++- classes/validator/validators/BAV_Validator_64.php | 3 ++- classes/validator/validators/BAV_Validator_65.php | 3 ++- classes/validator/validators/BAV_Validator_66.php | 3 ++- classes/validator/validators/BAV_Validator_67.php | 3 ++- classes/validator/validators/BAV_Validator_68.php | 3 ++- classes/validator/validators/BAV_Validator_69.php | 3 ++- classes/validator/validators/BAV_Validator_69b.php | 3 ++- classes/validator/validators/BAV_Validator_70.php | 3 ++- classes/validator/validators/BAV_Validator_71.php | 3 ++- classes/validator/validators/BAV_Validator_72.php | 3 ++- classes/validator/validators/BAV_Validator_73.php | 3 ++- classes/validator/validators/BAV_Validator_74.php | 3 ++- classes/validator/validators/BAV_Validator_75.php | 3 ++- classes/validator/validators/BAV_Validator_76.php | 3 ++- classes/validator/validators/BAV_Validator_77.php | 3 ++- classes/validator/validators/BAV_Validator_77a.php | 3 ++- classes/validator/validators/BAV_Validator_78.php | 3 ++- classes/validator/validators/BAV_Validator_79.php | 3 ++- classes/validator/validators/BAV_Validator_80.php | 3 ++- classes/validator/validators/BAV_Validator_81.php | 3 ++- classes/validator/validators/BAV_Validator_82.php | 3 ++- classes/validator/validators/BAV_Validator_83.php | 3 ++- classes/validator/validators/BAV_Validator_83x.php | 3 ++- classes/validator/validators/BAV_Validator_84.php | 3 ++- classes/validator/validators/BAV_Validator_84b.php | 3 ++- classes/validator/validators/BAV_Validator_85.php | 3 ++- classes/validator/validators/BAV_Validator_86.php | 3 ++- classes/validator/validators/BAV_Validator_87.php | 3 ++- classes/validator/validators/BAV_Validator_87a.php | 3 ++- classes/validator/validators/BAV_Validator_87c.php | 3 ++- classes/validator/validators/BAV_Validator_88.php | 3 ++- classes/validator/validators/BAV_Validator_89.php | 3 ++- classes/validator/validators/BAV_Validator_90.php | 3 ++- classes/validator/validators/BAV_Validator_90c.php | 3 ++- classes/validator/validators/BAV_Validator_90d.php | 3 ++- classes/validator/validators/BAV_Validator_90e.php | 3 ++- classes/validator/validators/BAV_Validator_90g.php | 3 ++- classes/validator/validators/BAV_Validator_91.php | 3 ++- classes/validator/validators/BAV_Validator_92.php | 3 ++- classes/validator/validators/BAV_Validator_93.php | 3 ++- classes/validator/validators/BAV_Validator_94.php | 3 ++- classes/validator/validators/BAV_Validator_95.php | 3 ++- classes/validator/validators/BAV_Validator_96.php | 3 ++- classes/validator/validators/BAV_Validator_97.php | 3 ++- classes/validator/validators/BAV_Validator_98.php | 3 ++- classes/validator/validators/BAV_Validator_99.php | 3 ++- classes/validator/validators/BAV_Validator_A0.php | 3 ++- classes/validator/validators/BAV_Validator_A1.php | 3 ++- classes/validator/validators/BAV_Validator_A2.php | 3 ++- classes/validator/validators/BAV_Validator_A3.php | 3 ++- classes/validator/validators/BAV_Validator_A4.php | 3 ++- classes/validator/validators/BAV_Validator_A4b.php | 3 ++- classes/validator/validators/BAV_Validator_A5.php | 3 ++- classes/validator/validators/BAV_Validator_A6.php | 3 ++- classes/validator/validators/BAV_Validator_A7.php | 3 ++- classes/validator/validators/BAV_Validator_A8.php | 3 ++- classes/validator/validators/BAV_Validator_A9.php | 3 ++- classes/validator/validators/BAV_Validator_B0.php | 3 ++- classes/validator/validators/BAV_Validator_B1.php | 3 ++- classes/validator/validators/BAV_Validator_B2.php | 3 ++- classes/validator/validators/BAV_Validator_B3.php | 3 ++- classes/validator/validators/BAV_Validator_B4.php | 3 ++- classes/validator/validators/BAV_Validator_B5.php | 3 ++- classes/validator/validators/BAV_Validator_B6.php | 3 ++- classes/validator/validators/BAV_Validator_B7.php | 3 ++- classes/validator/validators/BAV_Validator_B8.php | 3 ++- classes/validator/validators/BAV_Validator_B9.php | 3 ++- classes/validator/validators/BAV_Validator_B9a.php | 3 ++- classes/validator/validators/BAV_Validator_B9b.php | 3 ++- classes/validator/validators/BAV_Validator_C0.php | 3 ++- classes/validator/validators/BAV_Validator_C1.php | 3 ++- classes/validator/validators/BAV_Validator_C1b.php | 3 ++- classes/validator/validators/BAV_Validator_C2.php | 3 ++- classes/validator/validators/BAV_Validator_C3.php | 3 ++- classes/validator/validators/BAV_Validator_C4.php | 3 ++- classes/validator/validators/BAV_Validator_C5.php | 3 ++- classes/validator/validators/BAV_Validator_C6.php | 3 ++- classes/validator/validators/BAV_Validator_C7.php | 3 ++- classes/validator/validators/BAV_Validator_C8.php | 3 ++- classes/validator/validators/BAV_Validator_C9.php | 3 ++- classes/validator/validators/BAV_Validator_D0.php | 3 ++- classes/validator/validators/BAV_Validator_D1.php | 3 ++- classes/validator/validators/BAV_Validator_D2.php | 3 ++- classes/validator/validators/BAV_Validator_D3.php | 3 ++- classes/validator/validators/BAV_Validator_D4.php | 3 ++- classes/validator/validators/BAV_Validator_D5.php | 3 ++- classes/validator/validators/BAV_Validator_D6.php | 3 ++- classes/validator/validators/BAV_Validator_D7.php | 3 ++- classes/validator/validators/BAV_Validator_D8.php | 3 ++- classes/validator/validators/BAV_Validator_D9.php | 3 ++- classes/validator/validators/BAV_Validator_E0.php | 3 ++- classes/validator/validators/BAV_Validator_E1.php | 3 ++- classes/verify/BAV_VerifyImport.php | 3 ++- classes/verify/exception/BAV_VerifyException.php | 3 ++- classes/verify/exception/BAV_VerifyException_IO.php | 3 ++- classes/verify/testAPI/BAV_TestAPI.php | 3 ++- classes/verify/testAPI/BAV_TestAPIResult.php | 3 ++- classes/verify/testAPI/BAV_TestAPIResult_Error.php | 3 ++- classes/verify/testAPI/BAV_TestAPI_BAV.php | 3 ++- classes/verify/testAPI/BAV_TestAPI_Kontocheck.php | 3 ++- classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php | 3 ++- classes/verify/testAPI/exception/BAV_TestAPIException.php | 3 ++- .../testAPI/exception/BAV_TestAPIException_Validation.php | 3 ++- .../exception/BAV_TestAPIException_Validation_BankNotFound.php | 3 ++- .../BAV_TestAPIException_Validation_NotInitialized.php | 3 ++- tests/AgencyQueryTest.php | 3 ++- tests/BackendTest.php | 3 ++- tests/CrossProjectTest.php | 3 ++- tests/DataConstraintTest.php | 3 ++- tests/TestSuite.php | 3 ++- tests/ValidatorTest.php | 3 ++- tests/VerifyImportTest.php | 3 ++- tests/checkAgainstTestAPIs.php | 3 ++- 218 files changed, 436 insertions(+), 218 deletions(-) diff --git a/classes/BAV.php b/classes/BAV.php index abead681..5c69a5fb 100644 --- a/classes/BAV.php +++ b/classes/BAV.php @@ -31,7 +31,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class BAV { +abstract class BAV +{ static protected diff --git a/classes/BAV_Version.php b/classes/BAV_Version.php index 7c1095ca..b1893ff5 100644 --- a/classes/BAV_Version.php +++ b/classes/BAV_Version.php @@ -26,7 +26,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Version extends BAV { +class BAV_Version extends BAV +{ static private diff --git a/classes/bank/BAV_Agency.php b/classes/bank/BAV_Agency.php index d9ba465c..6adf1e37 100644 --- a/classes/bank/BAV_Agency.php +++ b/classes/bank/BAV_Agency.php @@ -32,7 +32,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Agency extends BAV { +class BAV_Agency extends BAV +{ private diff --git a/classes/bank/BAV_Bank.php b/classes/bank/BAV_Bank.php index 6d6084d2..e042e5fd 100644 --- a/classes/bank/BAV_Bank.php +++ b/classes/bank/BAV_Bank.php @@ -36,7 +36,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Bank extends BAV { +class BAV_Bank extends BAV +{ private diff --git a/classes/bank/exception/BAV_AgencyException.php b/classes/bank/exception/BAV_AgencyException.php index 4eba75c6..fd1c0de1 100644 --- a/classes/bank/exception/BAV_AgencyException.php +++ b/classes/bank/exception/BAV_AgencyException.php @@ -25,7 +25,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_AgencyException extends RuntimeException { +class BAV_AgencyException extends RuntimeException +{ private diff --git a/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php b/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php index a0052e7e..206fa8a8 100644 --- a/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php +++ b/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php @@ -26,7 +26,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_AgencyException_UndefinedAttribute extends BAV_AgencyException { +class BAV_AgencyException_UndefinedAttribute extends BAV_AgencyException +{ private diff --git a/classes/class/BAV_ClassFile.php b/classes/class/BAV_ClassFile.php index bcc16928..9d7e604b 100644 --- a/classes/class/BAV_ClassFile.php +++ b/classes/class/BAV_ClassFile.php @@ -27,7 +27,8 @@ * * @package classes */ -class BAV_ClassFile extends BAV { +class BAV_ClassFile extends BAV +{ private diff --git a/classes/class/exception/BAV_ClassFileException.php b/classes/class/exception/BAV_ClassFileException.php index a2ec7929..2e5efe80 100644 --- a/classes/class/exception/BAV_ClassFileException.php +++ b/classes/class/exception/BAV_ClassFileException.php @@ -24,7 +24,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_ClassFileException extends RuntimeException { +class BAV_ClassFileException extends RuntimeException +{ } diff --git a/classes/class/exception/BAV_ClassFileException_IO.php b/classes/class/exception/BAV_ClassFileException_IO.php index 4129da41..02a0d76a 100644 --- a/classes/class/exception/BAV_ClassFileException_IO.php +++ b/classes/class/exception/BAV_ClassFileException_IO.php @@ -25,7 +25,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_ClassFileException_IO extends BAV_ClassFileException { +class BAV_ClassFileException_IO extends BAV_ClassFileException +{ } diff --git a/classes/class/exception/BAV_ClassFileException_MissingClass.php b/classes/class/exception/BAV_ClassFileException_MissingClass.php index bd1ad691..fae154af 100644 --- a/classes/class/exception/BAV_ClassFileException_MissingClass.php +++ b/classes/class/exception/BAV_ClassFileException_MissingClass.php @@ -25,7 +25,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_ClassFileException_MissingClass extends BAV_ClassFileException { +class BAV_ClassFileException_MissingClass extends BAV_ClassFileException +{ private diff --git a/classes/dataBackend/BAV_DataBackend.php b/classes/dataBackend/BAV_DataBackend.php index 94f08379..df8be69d 100644 --- a/classes/dataBackend/BAV_DataBackend.php +++ b/classes/dataBackend/BAV_DataBackend.php @@ -38,7 +38,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class BAV_DataBackend extends BAV { +abstract class BAV_DataBackend extends BAV +{ protected diff --git a/classes/dataBackend/BAV_DataBackend_File.php b/classes/dataBackend/BAV_DataBackend_File.php index 0d3ebcf7..ef503646 100644 --- a/classes/dataBackend/BAV_DataBackend_File.php +++ b/classes/dataBackend/BAV_DataBackend_File.php @@ -36,7 +36,8 @@ * * @FIXME BAV_DataBackend_File is broken as Bundesbank appends new Banks at the end of the file */ -class BAV_DataBackend_File extends BAV_DataBackend { +class BAV_DataBackend_File extends BAV_DataBackend +{ const DOWNLOAD_URI = "http://www.bundesbank.de/Redaktion/DE/Standardartikel/Aufgaben/Unbarer_Zahlungsverkehr/bankleitzahlen_download.html"; diff --git a/classes/dataBackend/BAV_DataBackend_PDO.php b/classes/dataBackend/BAV_DataBackend_PDO.php index 262bc238..b432e313 100644 --- a/classes/dataBackend/BAV_DataBackend_PDO.php +++ b/classes/dataBackend/BAV_DataBackend_PDO.php @@ -37,7 +37,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_DataBackend_PDO extends BAV_DataBackend { +class BAV_DataBackend_PDO extends BAV_DataBackend +{ private diff --git a/classes/dataBackend/exception/BAV_DataBackendException.php b/classes/dataBackend/exception/BAV_DataBackendException.php index 0cd13375..f86dcc70 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException.php +++ b/classes/dataBackend/exception/BAV_DataBackendException.php @@ -24,7 +24,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_DataBackendException extends RuntimeException { +class BAV_DataBackendException extends RuntimeException +{ } diff --git a/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php b/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php index ccc61388..674d8c2a 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php +++ b/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php @@ -25,7 +25,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_DataBackendException_BankNotFound extends BAV_DataBackendException { +class BAV_DataBackendException_BankNotFound extends BAV_DataBackendException +{ private diff --git a/classes/dataBackend/exception/BAV_DataBackendException_IO.php b/classes/dataBackend/exception/BAV_DataBackendException_IO.php index 069f7967..0f302edc 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException_IO.php +++ b/classes/dataBackend/exception/BAV_DataBackendException_IO.php @@ -25,7 +25,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_DataBackendException_IO extends BAV_DataBackendException { +class BAV_DataBackendException_IO extends BAV_DataBackendException +{ } diff --git a/classes/dataBackend/exception/BAV_DataBackendException_IO_MissingAttributes.php b/classes/dataBackend/exception/BAV_DataBackendException_IO_MissingAttributes.php index 52485fcd..962b5e5d 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException_IO_MissingAttributes.php +++ b/classes/dataBackend/exception/BAV_DataBackendException_IO_MissingAttributes.php @@ -25,7 +25,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_DataBackendException_IO_MissingAttributes extends BAV_DataBackendException_IO { +class BAV_DataBackendException_IO_MissingAttributes extends BAV_DataBackendException_IO +{ } diff --git a/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php b/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php index cab734ad..22d28d8b 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php +++ b/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php @@ -25,7 +25,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class BAV_DataBackendException_NoMainAgency extends BAV_DataBackendException { +class BAV_DataBackendException_NoMainAgency extends BAV_DataBackendException +{ private diff --git a/classes/dataBackend/fileParser/BAV_FileParser.php b/classes/dataBackend/fileParser/BAV_FileParser.php index bcfa19d1..0e6a0aa1 100644 --- a/classes/dataBackend/fileParser/BAV_FileParser.php +++ b/classes/dataBackend/fileParser/BAV_FileParser.php @@ -34,7 +34,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_FileParser extends BAV { +class BAV_FileParser extends BAV +{ const FILE_ENCODING = 'ISO-8859-15'; diff --git a/classes/dataBackend/fileParser/BAV_FileParserContext.php b/classes/dataBackend/fileParser/BAV_FileParserContext.php index 432def41..c539e7c3 100644 --- a/classes/dataBackend/fileParser/BAV_FileParserContext.php +++ b/classes/dataBackend/fileParser/BAV_FileParserContext.php @@ -30,7 +30,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_FileParserContext extends BAV { +class BAV_FileParserContext extends BAV +{ private diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserContextException.php b/classes/dataBackend/fileParser/exception/BAV_FileParserContextException.php index c41464eb..118a0e2e 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserContextException.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserContextException.php @@ -24,7 +24,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_FileParserContextException extends RuntimeException { +class BAV_FileParserContextException extends RuntimeException +{ } diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserContextException_Undefined.php b/classes/dataBackend/fileParser/exception/BAV_FileParserContextException_Undefined.php index 3d1cb463..b1e5646d 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserContextException_Undefined.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserContextException_Undefined.php @@ -25,7 +25,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_FileParserContextException_Undefined extends BAV_FileParserContextException { +class BAV_FileParserContextException_Undefined extends BAV_FileParserContextException +{ } diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserException.php b/classes/dataBackend/fileParser/exception/BAV_FileParserException.php index 1523ff22..96262c97 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserException.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserException.php @@ -24,7 +24,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_FileParserException extends RuntimeException { +class BAV_FileParserException extends RuntimeException +{ } diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php b/classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php index aea0800c..7cd7c64c 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php @@ -25,7 +25,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_FileParserException_FileNotExists extends BAV_FileParserException { +class BAV_FileParserException_FileNotExists extends BAV_FileParserException +{ private diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserException_IO.php b/classes/dataBackend/fileParser/exception/BAV_FileParserException_IO.php index 757763b1..be7981d9 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserException_IO.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserException_IO.php @@ -25,7 +25,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_FileParserException_IO extends BAV_FileParserException { +class BAV_FileParserException_IO extends BAV_FileParserException +{ } diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserException_ParseError.php b/classes/dataBackend/fileParser/exception/BAV_FileParserException_ParseError.php index 30891cff..af75e83e 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserException_ParseError.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserException_ParseError.php @@ -25,7 +25,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_FileParserException_ParseError extends BAV_FileParserException { +class BAV_FileParserException_ParseError extends BAV_FileParserException +{ } diff --git a/classes/encoding/BAV_Encoding.php b/classes/encoding/BAV_Encoding.php index 7329403e..f1e4e8c2 100644 --- a/classes/encoding/BAV_Encoding.php +++ b/classes/encoding/BAV_Encoding.php @@ -33,7 +33,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class BAV_Encoding extends BAV { +abstract class BAV_Encoding extends BAV +{ protected diff --git a/classes/encoding/BAV_Encoding_ISO8859.php b/classes/encoding/BAV_Encoding_ISO8859.php index 993180b3..5a6d6f76 100644 --- a/classes/encoding/BAV_Encoding_ISO8859.php +++ b/classes/encoding/BAV_Encoding_ISO8859.php @@ -29,7 +29,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Encoding_ISO8859 extends BAV_Encoding { +class BAV_Encoding_ISO8859 extends BAV_Encoding +{ /** * @return bool diff --git a/classes/encoding/BAV_Encoding_Iconv.php b/classes/encoding/BAV_Encoding_Iconv.php index 87f9c6ff..8ee975a0 100644 --- a/classes/encoding/BAV_Encoding_Iconv.php +++ b/classes/encoding/BAV_Encoding_Iconv.php @@ -30,7 +30,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Encoding_Iconv extends BAV_Encoding { +class BAV_Encoding_Iconv extends BAV_Encoding +{ /** diff --git a/classes/encoding/BAV_Encoding_MB.php b/classes/encoding/BAV_Encoding_MB.php index 77808925..20f75e38 100644 --- a/classes/encoding/BAV_Encoding_MB.php +++ b/classes/encoding/BAV_Encoding_MB.php @@ -29,7 +29,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Encoding_MB extends BAV_Encoding { +class BAV_Encoding_MB extends BAV_Encoding +{ /** * @return bool diff --git a/classes/encoding/exception/BAV_EncodingException.php b/classes/encoding/exception/BAV_EncodingException.php index 1e83dd8d..9bafe141 100644 --- a/classes/encoding/exception/BAV_EncodingException.php +++ b/classes/encoding/exception/BAV_EncodingException.php @@ -24,7 +24,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_EncodingException extends RuntimeException { +class BAV_EncodingException extends RuntimeException +{ } diff --git a/classes/encoding/exception/BAV_EncodingException_Unsupported.php b/classes/encoding/exception/BAV_EncodingException_Unsupported.php index f70d8d23..4126efd2 100644 --- a/classes/encoding/exception/BAV_EncodingException_Unsupported.php +++ b/classes/encoding/exception/BAV_EncodingException_Unsupported.php @@ -25,7 +25,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_EncodingException_Unsupported extends BAV_EncodingException { +class BAV_EncodingException_Unsupported extends BAV_EncodingException +{ private diff --git a/classes/validator/BAV_Validator.php b/classes/validator/BAV_Validator.php index a27f5007..fbd454b6 100644 --- a/classes/validator/BAV_Validator.php +++ b/classes/validator/BAV_Validator.php @@ -29,7 +29,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class BAV_Validator extends BAV { +abstract class BAV_Validator extends BAV +{ protected diff --git a/classes/validator/BAV_Validator_Chain.php b/classes/validator/BAV_Validator_Chain.php index 539473ae..f0982765 100644 --- a/classes/validator/BAV_Validator_Chain.php +++ b/classes/validator/BAV_Validator_Chain.php @@ -30,7 +30,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_Chain extends BAV_Validator { +class BAV_Validator_Chain extends BAV_Validator +{ protected diff --git a/classes/validator/BAV_Validator_Iteration.php b/classes/validator/BAV_Validator_Iteration.php index 79c28c2f..11a91db8 100644 --- a/classes/validator/BAV_Validator_Iteration.php +++ b/classes/validator/BAV_Validator_Iteration.php @@ -25,7 +25,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class BAV_Validator_Iteration extends BAV_Validator { +abstract class BAV_Validator_Iteration extends BAV_Validator +{ protected diff --git a/classes/validator/BAV_Validator_Iteration_Transformation.php b/classes/validator/BAV_Validator_Iteration_Transformation.php index d95cd5ed..55f91f55 100644 --- a/classes/validator/BAV_Validator_Iteration_Transformation.php +++ b/classes/validator/BAV_Validator_Iteration_Transformation.php @@ -25,7 +25,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class BAV_Validator_Iteration_Transformation extends BAV_Validator_Iteration { +abstract class BAV_Validator_Iteration_Transformation extends BAV_Validator_Iteration +{ private diff --git a/classes/validator/BAV_Validator_Iteration_Weighted.php b/classes/validator/BAV_Validator_Iteration_Weighted.php index 9ccb538b..c1523c14 100644 --- a/classes/validator/BAV_Validator_Iteration_Weighted.php +++ b/classes/validator/BAV_Validator_Iteration_Weighted.php @@ -25,7 +25,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class BAV_Validator_Iteration_Weighted extends BAV_Validator_Iteration { +abstract class BAV_Validator_Iteration_Weighted extends BAV_Validator_Iteration +{ protected diff --git a/classes/validator/exception/BAV_ValidatorException.php b/classes/validator/exception/BAV_ValidatorException.php index 54a21d72..870d4905 100644 --- a/classes/validator/exception/BAV_ValidatorException.php +++ b/classes/validator/exception/BAV_ValidatorException.php @@ -24,7 +24,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_ValidatorException extends RuntimeException { +class BAV_ValidatorException extends RuntimeException +{ } diff --git a/classes/validator/exception/BAV_ValidatorException_ESER.php b/classes/validator/exception/BAV_ValidatorException_ESER.php index e8caa55d..2b6b258a 100644 --- a/classes/validator/exception/BAV_ValidatorException_ESER.php +++ b/classes/validator/exception/BAV_ValidatorException_ESER.php @@ -25,7 +25,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_ValidatorException_ESER extends BAV_ValidatorException { +class BAV_ValidatorException_ESER extends BAV_ValidatorException +{ } diff --git a/classes/validator/exception/BAV_ValidatorException_NotExists.php b/classes/validator/exception/BAV_ValidatorException_NotExists.php index 9281bebb..a1e4bfd1 100644 --- a/classes/validator/exception/BAV_ValidatorException_NotExists.php +++ b/classes/validator/exception/BAV_ValidatorException_NotExists.php @@ -26,7 +26,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_ValidatorException_NotExists extends BAV_ValidatorException { +class BAV_ValidatorException_NotExists extends BAV_ValidatorException +{ private diff --git a/classes/validator/exception/BAV_ValidatorException_OutOfBounds.php b/classes/validator/exception/BAV_ValidatorException_OutOfBounds.php index 2ce7b373..6bcc7be7 100644 --- a/classes/validator/exception/BAV_ValidatorException_OutOfBounds.php +++ b/classes/validator/exception/BAV_ValidatorException_OutOfBounds.php @@ -25,7 +25,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_ValidatorException_OutOfBounds extends BAV_ValidatorException { +class BAV_ValidatorException_OutOfBounds extends BAV_ValidatorException +{ } diff --git a/classes/validator/validators/BAV_Validator_00.php b/classes/validator/validators/BAV_Validator_00.php index b199ff55..09347b1c 100644 --- a/classes/validator/validators/BAV_Validator_00.php +++ b/classes/validator/validators/BAV_Validator_00.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_00 extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_00 extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_01.php b/classes/validator/validators/BAV_Validator_01.php index f33ea6d0..d14203cf 100644 --- a/classes/validator/validators/BAV_Validator_01.php +++ b/classes/validator/validators/BAV_Validator_01.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_01 extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_01 extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_02.php b/classes/validator/validators/BAV_Validator_02.php index 82952d43..1a30d356 100644 --- a/classes/validator/validators/BAV_Validator_02.php +++ b/classes/validator/validators/BAV_Validator_02.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_02 extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_02 extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_03.php b/classes/validator/validators/BAV_Validator_03.php index f6a1098b..c527b1e0 100644 --- a/classes/validator/validators/BAV_Validator_03.php +++ b/classes/validator/validators/BAV_Validator_03.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_03 extends BAV_Validator_01 { +class BAV_Validator_03 extends BAV_Validator_01 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_04.php b/classes/validator/validators/BAV_Validator_04.php index d28ec720..1a6dacdc 100644 --- a/classes/validator/validators/BAV_Validator_04.php +++ b/classes/validator/validators/BAV_Validator_04.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_04 extends BAV_Validator_02 { +class BAV_Validator_04 extends BAV_Validator_02 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_05.php b/classes/validator/validators/BAV_Validator_05.php index 77fa60ac..0f879392 100644 --- a/classes/validator/validators/BAV_Validator_05.php +++ b/classes/validator/validators/BAV_Validator_05.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_05 extends BAV_Validator_01 { +class BAV_Validator_05 extends BAV_Validator_01 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_06.php b/classes/validator/validators/BAV_Validator_06.php index c92be066..a8d71592 100644 --- a/classes/validator/validators/BAV_Validator_06.php +++ b/classes/validator/validators/BAV_Validator_06.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_06 extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_06 extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_07.php b/classes/validator/validators/BAV_Validator_07.php index 67fb0661..bd1c7d94 100644 --- a/classes/validator/validators/BAV_Validator_07.php +++ b/classes/validator/validators/BAV_Validator_07.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_07 extends BAV_Validator_02 { +class BAV_Validator_07 extends BAV_Validator_02 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_08.php b/classes/validator/validators/BAV_Validator_08.php index ac1c536d..435f7bf1 100644 --- a/classes/validator/validators/BAV_Validator_08.php +++ b/classes/validator/validators/BAV_Validator_08.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_08 extends BAV_Validator_00 { +class BAV_Validator_08 extends BAV_Validator_00 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_09.php b/classes/validator/validators/BAV_Validator_09.php index 47348032..bf93172e 100644 --- a/classes/validator/validators/BAV_Validator_09.php +++ b/classes/validator/validators/BAV_Validator_09.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_09 extends BAV_Validator { +class BAV_Validator_09 extends BAV_Validator +{ protected function validate() { diff --git a/classes/validator/validators/BAV_Validator_10.php b/classes/validator/validators/BAV_Validator_10.php index d1158cc1..eea34535 100644 --- a/classes/validator/validators/BAV_Validator_10.php +++ b/classes/validator/validators/BAV_Validator_10.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_10 extends BAV_Validator_06 { +class BAV_Validator_10 extends BAV_Validator_06 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_11.php b/classes/validator/validators/BAV_Validator_11.php index ba14d3fa..72961bb7 100644 --- a/classes/validator/validators/BAV_Validator_11.php +++ b/classes/validator/validators/BAV_Validator_11.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_11 extends BAV_Validator_06 { +class BAV_Validator_11 extends BAV_Validator_06 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_13.php b/classes/validator/validators/BAV_Validator_13.php index 8f3ec848..9f590aed 100644 --- a/classes/validator/validators/BAV_Validator_13.php +++ b/classes/validator/validators/BAV_Validator_13.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_13 extends BAV_Validator_00 { +class BAV_Validator_13 extends BAV_Validator_00 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_14.php b/classes/validator/validators/BAV_Validator_14.php index b5655cfd..f9d8afd8 100644 --- a/classes/validator/validators/BAV_Validator_14.php +++ b/classes/validator/validators/BAV_Validator_14.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_14 extends BAV_Validator_02 { +class BAV_Validator_14 extends BAV_Validator_02 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_15.php b/classes/validator/validators/BAV_Validator_15.php index 70be2d6d..003857c4 100644 --- a/classes/validator/validators/BAV_Validator_15.php +++ b/classes/validator/validators/BAV_Validator_15.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_15 extends BAV_Validator_06 { +class BAV_Validator_15 extends BAV_Validator_06 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_16.php b/classes/validator/validators/BAV_Validator_16.php index 1096e17a..0283744c 100644 --- a/classes/validator/validators/BAV_Validator_16.php +++ b/classes/validator/validators/BAV_Validator_16.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_16 extends BAV_Validator_06 { +class BAV_Validator_16 extends BAV_Validator_06 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_17.php b/classes/validator/validators/BAV_Validator_17.php index 08982446..c8c103b2 100644 --- a/classes/validator/validators/BAV_Validator_17.php +++ b/classes/validator/validators/BAV_Validator_17.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_17 extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_17 extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_18.php b/classes/validator/validators/BAV_Validator_18.php index f0e051fd..b75a02ed 100644 --- a/classes/validator/validators/BAV_Validator_18.php +++ b/classes/validator/validators/BAV_Validator_18.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_18 extends BAV_Validator_01 { +class BAV_Validator_18 extends BAV_Validator_01 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_19.php b/classes/validator/validators/BAV_Validator_19.php index 2eab1eff..95dde265 100644 --- a/classes/validator/validators/BAV_Validator_19.php +++ b/classes/validator/validators/BAV_Validator_19.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_19 extends BAV_Validator_06 { +class BAV_Validator_19 extends BAV_Validator_06 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_20.php b/classes/validator/validators/BAV_Validator_20.php index c952aae7..c0cdc753 100644 --- a/classes/validator/validators/BAV_Validator_20.php +++ b/classes/validator/validators/BAV_Validator_20.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_20 extends BAV_Validator_06 { +class BAV_Validator_20 extends BAV_Validator_06 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_21.php b/classes/validator/validators/BAV_Validator_21.php index 369111ac..15c7addc 100644 --- a/classes/validator/validators/BAV_Validator_21.php +++ b/classes/validator/validators/BAV_Validator_21.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_21 extends BAV_Validator_00 { +class BAV_Validator_21 extends BAV_Validator_00 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_22.php b/classes/validator/validators/BAV_Validator_22.php index 2dbd7c77..01047b5e 100644 --- a/classes/validator/validators/BAV_Validator_22.php +++ b/classes/validator/validators/BAV_Validator_22.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_22 extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_22 extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_23.php b/classes/validator/validators/BAV_Validator_23.php index 1a1e8224..81d9be73 100644 --- a/classes/validator/validators/BAV_Validator_23.php +++ b/classes/validator/validators/BAV_Validator_23.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_23 extends BAV_Validator_16 { +class BAV_Validator_23 extends BAV_Validator_16 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_24.php b/classes/validator/validators/BAV_Validator_24.php index 5becd93b..12858e9f 100644 --- a/classes/validator/validators/BAV_Validator_24.php +++ b/classes/validator/validators/BAV_Validator_24.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_24 extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_24 extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_25.php b/classes/validator/validators/BAV_Validator_25.php index c445ce7a..61b2d199 100644 --- a/classes/validator/validators/BAV_Validator_25.php +++ b/classes/validator/validators/BAV_Validator_25.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_25 extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_25 extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_26.php b/classes/validator/validators/BAV_Validator_26.php index de2e4d03..6cc1a77f 100644 --- a/classes/validator/validators/BAV_Validator_26.php +++ b/classes/validator/validators/BAV_Validator_26.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_26 extends BAV_Validator_06 { +class BAV_Validator_26 extends BAV_Validator_06 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_27.php b/classes/validator/validators/BAV_Validator_27.php index 660713d0..f16930b3 100644 --- a/classes/validator/validators/BAV_Validator_27.php +++ b/classes/validator/validators/BAV_Validator_27.php @@ -25,7 +25,8 @@ */ -class BAV_Validator_27 extends BAV_Validator_Iteration_Transformation { +class BAV_Validator_27 extends BAV_Validator_Iteration_Transformation +{ private diff --git a/classes/validator/validators/BAV_Validator_28.php b/classes/validator/validators/BAV_Validator_28.php index 1ec340cd..8d205332 100644 --- a/classes/validator/validators/BAV_Validator_28.php +++ b/classes/validator/validators/BAV_Validator_28.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_28 extends BAV_Validator_06 { +class BAV_Validator_28 extends BAV_Validator_06 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_29.php b/classes/validator/validators/BAV_Validator_29.php index 4c8f63e6..7f9a7415 100644 --- a/classes/validator/validators/BAV_Validator_29.php +++ b/classes/validator/validators/BAV_Validator_29.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_29 extends BAV_Validator_Iteration_Transformation { +class BAV_Validator_29 extends BAV_Validator_Iteration_Transformation +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_30.php b/classes/validator/validators/BAV_Validator_30.php index 5f38f7aa..cda0dd64 100644 --- a/classes/validator/validators/BAV_Validator_30.php +++ b/classes/validator/validators/BAV_Validator_30.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_30 extends BAV_Validator_00 { +class BAV_Validator_30 extends BAV_Validator_00 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_31.php b/classes/validator/validators/BAV_Validator_31.php index b9f54670..c3e9c86d 100644 --- a/classes/validator/validators/BAV_Validator_31.php +++ b/classes/validator/validators/BAV_Validator_31.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_31 extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_31 extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_32.php b/classes/validator/validators/BAV_Validator_32.php index a6ab0f0f..e183d516 100644 --- a/classes/validator/validators/BAV_Validator_32.php +++ b/classes/validator/validators/BAV_Validator_32.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_32 extends BAV_Validator_06 { +class BAV_Validator_32 extends BAV_Validator_06 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_33.php b/classes/validator/validators/BAV_Validator_33.php index 816055b2..4895e0e8 100644 --- a/classes/validator/validators/BAV_Validator_33.php +++ b/classes/validator/validators/BAV_Validator_33.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_33 extends BAV_Validator_06 { +class BAV_Validator_33 extends BAV_Validator_06 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_34.php b/classes/validator/validators/BAV_Validator_34.php index 2abff18b..20b7e254 100644 --- a/classes/validator/validators/BAV_Validator_34.php +++ b/classes/validator/validators/BAV_Validator_34.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_34 extends BAV_Validator_28 { +class BAV_Validator_34 extends BAV_Validator_28 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_35.php b/classes/validator/validators/BAV_Validator_35.php index 0c69e8f1..c59e459d 100644 --- a/classes/validator/validators/BAV_Validator_35.php +++ b/classes/validator/validators/BAV_Validator_35.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_35 extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_35 extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_36.php b/classes/validator/validators/BAV_Validator_36.php index 77fdc6b0..2d288e01 100644 --- a/classes/validator/validators/BAV_Validator_36.php +++ b/classes/validator/validators/BAV_Validator_36.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_36 extends BAV_Validator_06 { +class BAV_Validator_36 extends BAV_Validator_06 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_37.php b/classes/validator/validators/BAV_Validator_37.php index c71db390..149b3428 100644 --- a/classes/validator/validators/BAV_Validator_37.php +++ b/classes/validator/validators/BAV_Validator_37.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_37 extends BAV_Validator_06 { +class BAV_Validator_37 extends BAV_Validator_06 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_38.php b/classes/validator/validators/BAV_Validator_38.php index 3b9a13bd..7f63adad 100644 --- a/classes/validator/validators/BAV_Validator_38.php +++ b/classes/validator/validators/BAV_Validator_38.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_38 extends BAV_Validator_06 { +class BAV_Validator_38 extends BAV_Validator_06 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_39.php b/classes/validator/validators/BAV_Validator_39.php index d8fac50f..2447138d 100644 --- a/classes/validator/validators/BAV_Validator_39.php +++ b/classes/validator/validators/BAV_Validator_39.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_39 extends BAV_Validator_06 { +class BAV_Validator_39 extends BAV_Validator_06 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_40.php b/classes/validator/validators/BAV_Validator_40.php index 83a16d87..2d8a434d 100644 --- a/classes/validator/validators/BAV_Validator_40.php +++ b/classes/validator/validators/BAV_Validator_40.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_40 extends BAV_Validator_06 { +class BAV_Validator_40 extends BAV_Validator_06 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_41.php b/classes/validator/validators/BAV_Validator_41.php index c3dd9337..0b0880f8 100644 --- a/classes/validator/validators/BAV_Validator_41.php +++ b/classes/validator/validators/BAV_Validator_41.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_41 extends BAV_Validator_00 { +class BAV_Validator_41 extends BAV_Validator_00 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_42.php b/classes/validator/validators/BAV_Validator_42.php index 976b250b..7f21f39f 100644 --- a/classes/validator/validators/BAV_Validator_42.php +++ b/classes/validator/validators/BAV_Validator_42.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_42 extends BAV_Validator_06 { +class BAV_Validator_42 extends BAV_Validator_06 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_43.php b/classes/validator/validators/BAV_Validator_43.php index 35c5f079..bf7c7bbc 100644 --- a/classes/validator/validators/BAV_Validator_43.php +++ b/classes/validator/validators/BAV_Validator_43.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_43 extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_43 extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_44.php b/classes/validator/validators/BAV_Validator_44.php index bf57259e..56dfc480 100644 --- a/classes/validator/validators/BAV_Validator_44.php +++ b/classes/validator/validators/BAV_Validator_44.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_44 extends BAV_Validator_33 { +class BAV_Validator_44 extends BAV_Validator_33 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_45.php b/classes/validator/validators/BAV_Validator_45.php index 931e6c4e..fc8dc4c7 100644 --- a/classes/validator/validators/BAV_Validator_45.php +++ b/classes/validator/validators/BAV_Validator_45.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_45 extends BAV_Validator_00 { +class BAV_Validator_45 extends BAV_Validator_00 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_46.php b/classes/validator/validators/BAV_Validator_46.php index 938a9c22..4299e28d 100644 --- a/classes/validator/validators/BAV_Validator_46.php +++ b/classes/validator/validators/BAV_Validator_46.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_46 extends BAV_Validator_06 { +class BAV_Validator_46 extends BAV_Validator_06 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_47.php b/classes/validator/validators/BAV_Validator_47.php index 700c6388..08cec012 100644 --- a/classes/validator/validators/BAV_Validator_47.php +++ b/classes/validator/validators/BAV_Validator_47.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_47 extends BAV_Validator_06 { +class BAV_Validator_47 extends BAV_Validator_06 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_48.php b/classes/validator/validators/BAV_Validator_48.php index be8e6bbb..f4295c46 100644 --- a/classes/validator/validators/BAV_Validator_48.php +++ b/classes/validator/validators/BAV_Validator_48.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_48 extends BAV_Validator_06 { +class BAV_Validator_48 extends BAV_Validator_06 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_49.php b/classes/validator/validators/BAV_Validator_49.php index cc65e67e..4d7d8435 100644 --- a/classes/validator/validators/BAV_Validator_49.php +++ b/classes/validator/validators/BAV_Validator_49.php @@ -30,7 +30,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_49 extends BAV_Validator_Chain { +class BAV_Validator_49 extends BAV_Validator_Chain +{ /** diff --git a/classes/validator/validators/BAV_Validator_50.php b/classes/validator/validators/BAV_Validator_50.php index 50ab6860..21dccc65 100644 --- a/classes/validator/validators/BAV_Validator_50.php +++ b/classes/validator/validators/BAV_Validator_50.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_50 extends BAV_Validator_06 { +class BAV_Validator_50 extends BAV_Validator_06 +{ public function isValid($account) { diff --git a/classes/validator/validators/BAV_Validator_51.php b/classes/validator/validators/BAV_Validator_51.php index da056c80..7a17bd19 100644 --- a/classes/validator/validators/BAV_Validator_51.php +++ b/classes/validator/validators/BAV_Validator_51.php @@ -31,7 +31,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_51 extends BAV_Validator_Chain { +class BAV_Validator_51 extends BAV_Validator_Chain +{ private diff --git a/classes/validator/validators/BAV_Validator_51x.php b/classes/validator/validators/BAV_Validator_51x.php index d5122fc9..35ed61a7 100644 --- a/classes/validator/validators/BAV_Validator_51x.php +++ b/classes/validator/validators/BAV_Validator_51x.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_51x extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_51x extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_52.php b/classes/validator/validators/BAV_Validator_52.php index ba9030ba..5a33d0db 100644 --- a/classes/validator/validators/BAV_Validator_52.php +++ b/classes/validator/validators/BAV_Validator_52.php @@ -27,7 +27,8 @@ */ -class BAV_Validator_52 extends BAV_Validator_Iteration_Weighted implements BAV_Validator_BankDependent { +class BAV_Validator_52 extends BAV_Validator_Iteration_Weighted implements BAV_Validator_BankDependent +{ private diff --git a/classes/validator/validators/BAV_Validator_53.php b/classes/validator/validators/BAV_Validator_53.php index d6dc754c..37b46602 100644 --- a/classes/validator/validators/BAV_Validator_53.php +++ b/classes/validator/validators/BAV_Validator_53.php @@ -23,7 +23,8 @@ */ -class BAV_Validator_53 extends BAV_Validator_52 { +class BAV_Validator_53 extends BAV_Validator_52 +{ protected function normalizeAccount($size) { diff --git a/classes/validator/validators/BAV_Validator_54.php b/classes/validator/validators/BAV_Validator_54.php index a2e3ca45..799ff54a 100644 --- a/classes/validator/validators/BAV_Validator_54.php +++ b/classes/validator/validators/BAV_Validator_54.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_54 extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_54 extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_55.php b/classes/validator/validators/BAV_Validator_55.php index 3f3c3eea..0d11ad6b 100644 --- a/classes/validator/validators/BAV_Validator_55.php +++ b/classes/validator/validators/BAV_Validator_55.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_55 extends BAV_Validator_06 { +class BAV_Validator_55 extends BAV_Validator_06 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_56.php b/classes/validator/validators/BAV_Validator_56.php index 21c389f6..1d02a92d 100644 --- a/classes/validator/validators/BAV_Validator_56.php +++ b/classes/validator/validators/BAV_Validator_56.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_56 extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_56 extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_57.php b/classes/validator/validators/BAV_Validator_57.php index 40feb494..7765c1c0 100644 --- a/classes/validator/validators/BAV_Validator_57.php +++ b/classes/validator/validators/BAV_Validator_57.php @@ -21,7 +21,8 @@ */ -class BAV_Validator_57 extends BAV_Validator { +class BAV_Validator_57 extends BAV_Validator +{ private diff --git a/classes/validator/validators/BAV_Validator_58.php b/classes/validator/validators/BAV_Validator_58.php index 74566337..b833431f 100644 --- a/classes/validator/validators/BAV_Validator_58.php +++ b/classes/validator/validators/BAV_Validator_58.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_58 extends BAV_Validator_02 { +class BAV_Validator_58 extends BAV_Validator_02 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_59.php b/classes/validator/validators/BAV_Validator_59.php index 84d0b3f9..572e5bf4 100644 --- a/classes/validator/validators/BAV_Validator_59.php +++ b/classes/validator/validators/BAV_Validator_59.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_59 extends BAV_Validator_00 { +class BAV_Validator_59 extends BAV_Validator_00 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_60.php b/classes/validator/validators/BAV_Validator_60.php index c77126cc..30ddf7df 100644 --- a/classes/validator/validators/BAV_Validator_60.php +++ b/classes/validator/validators/BAV_Validator_60.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_60 extends BAV_Validator_00 { +class BAV_Validator_60 extends BAV_Validator_00 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_61.php b/classes/validator/validators/BAV_Validator_61.php index 0636720d..f2ea5372 100644 --- a/classes/validator/validators/BAV_Validator_61.php +++ b/classes/validator/validators/BAV_Validator_61.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_61 extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_61 extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_62.php b/classes/validator/validators/BAV_Validator_62.php index b7b3495f..7c4e5567 100644 --- a/classes/validator/validators/BAV_Validator_62.php +++ b/classes/validator/validators/BAV_Validator_62.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_62 extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_62 extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_63.php b/classes/validator/validators/BAV_Validator_63.php index 76f8998c..0259b8ec 100644 --- a/classes/validator/validators/BAV_Validator_63.php +++ b/classes/validator/validators/BAV_Validator_63.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_63 extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_63 extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_64.php b/classes/validator/validators/BAV_Validator_64.php index 60313510..883d3a78 100644 --- a/classes/validator/validators/BAV_Validator_64.php +++ b/classes/validator/validators/BAV_Validator_64.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_64 extends BAV_Validator_06 { +class BAV_Validator_64 extends BAV_Validator_06 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_65.php b/classes/validator/validators/BAV_Validator_65.php index 5761e5a9..4a191a40 100644 --- a/classes/validator/validators/BAV_Validator_65.php +++ b/classes/validator/validators/BAV_Validator_65.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_65 extends BAV_Validator_00 { +class BAV_Validator_65 extends BAV_Validator_00 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_66.php b/classes/validator/validators/BAV_Validator_66.php index ab7bbad7..dfcd8cc2 100644 --- a/classes/validator/validators/BAV_Validator_66.php +++ b/classes/validator/validators/BAV_Validator_66.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_66 extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_66 extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_67.php b/classes/validator/validators/BAV_Validator_67.php index 2fef1ec9..a732b4ec 100644 --- a/classes/validator/validators/BAV_Validator_67.php +++ b/classes/validator/validators/BAV_Validator_67.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_67 extends BAV_Validator_00 { +class BAV_Validator_67 extends BAV_Validator_00 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_68.php b/classes/validator/validators/BAV_Validator_68.php index 1871c852..e64764a6 100644 --- a/classes/validator/validators/BAV_Validator_68.php +++ b/classes/validator/validators/BAV_Validator_68.php @@ -29,7 +29,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_68 extends BAV_Validator_Chain { +class BAV_Validator_68 extends BAV_Validator_Chain +{ private diff --git a/classes/validator/validators/BAV_Validator_69.php b/classes/validator/validators/BAV_Validator_69.php index d7b2fc54..f86d15d4 100644 --- a/classes/validator/validators/BAV_Validator_69.php +++ b/classes/validator/validators/BAV_Validator_69.php @@ -30,7 +30,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_69 extends BAV_Validator_Chain { +class BAV_Validator_69 extends BAV_Validator_Chain +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_69b.php b/classes/validator/validators/BAV_Validator_69b.php index c30cdae9..469fbb4c 100644 --- a/classes/validator/validators/BAV_Validator_69b.php +++ b/classes/validator/validators/BAV_Validator_69b.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_69b extends BAV_Validator_Iteration_Transformation { +class BAV_Validator_69b extends BAV_Validator_Iteration_Transformation +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_70.php b/classes/validator/validators/BAV_Validator_70.php index 067175a4..f02b55e7 100644 --- a/classes/validator/validators/BAV_Validator_70.php +++ b/classes/validator/validators/BAV_Validator_70.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_70 extends BAV_Validator_06 { +class BAV_Validator_70 extends BAV_Validator_06 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_71.php b/classes/validator/validators/BAV_Validator_71.php index c1f21b9f..a0392c8b 100644 --- a/classes/validator/validators/BAV_Validator_71.php +++ b/classes/validator/validators/BAV_Validator_71.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_71 extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_71 extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_72.php b/classes/validator/validators/BAV_Validator_72.php index 06df5ddb..7695854e 100644 --- a/classes/validator/validators/BAV_Validator_72.php +++ b/classes/validator/validators/BAV_Validator_72.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_72 extends BAV_Validator_00 { +class BAV_Validator_72 extends BAV_Validator_00 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_73.php b/classes/validator/validators/BAV_Validator_73.php index 11850cb6..a4c89fc6 100644 --- a/classes/validator/validators/BAV_Validator_73.php +++ b/classes/validator/validators/BAV_Validator_73.php @@ -26,7 +26,8 @@ */ -class BAV_Validator_73 extends BAV_Validator_Chain { +class BAV_Validator_73 extends BAV_Validator_Chain +{ private diff --git a/classes/validator/validators/BAV_Validator_74.php b/classes/validator/validators/BAV_Validator_74.php index edf6abc8..aab39b96 100644 --- a/classes/validator/validators/BAV_Validator_74.php +++ b/classes/validator/validators/BAV_Validator_74.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_74 extends BAV_Validator_00 { +class BAV_Validator_74 extends BAV_Validator_00 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_75.php b/classes/validator/validators/BAV_Validator_75.php index 2cb9967a..1878bda7 100644 --- a/classes/validator/validators/BAV_Validator_75.php +++ b/classes/validator/validators/BAV_Validator_75.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_75 extends BAV_Validator_00 { +class BAV_Validator_75 extends BAV_Validator_00 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_76.php b/classes/validator/validators/BAV_Validator_76.php index 6402ea36..cd11dcef 100644 --- a/classes/validator/validators/BAV_Validator_76.php +++ b/classes/validator/validators/BAV_Validator_76.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_76 extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_76 extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_77.php b/classes/validator/validators/BAV_Validator_77.php index a306c76c..b75c3d54 100644 --- a/classes/validator/validators/BAV_Validator_77.php +++ b/classes/validator/validators/BAV_Validator_77.php @@ -25,7 +25,8 @@ */ -class BAV_Validator_77 extends BAV_Validator_Chain { +class BAV_Validator_77 extends BAV_Validator_Chain +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_77a.php b/classes/validator/validators/BAV_Validator_77a.php index 4b26b685..c2dd6704 100644 --- a/classes/validator/validators/BAV_Validator_77a.php +++ b/classes/validator/validators/BAV_Validator_77a.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_77a extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_77a extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_78.php b/classes/validator/validators/BAV_Validator_78.php index f584be98..349c4f1c 100644 --- a/classes/validator/validators/BAV_Validator_78.php +++ b/classes/validator/validators/BAV_Validator_78.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_78 extends BAV_Validator_00 { +class BAV_Validator_78 extends BAV_Validator_00 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_79.php b/classes/validator/validators/BAV_Validator_79.php index e53b0531..5e56931c 100644 --- a/classes/validator/validators/BAV_Validator_79.php +++ b/classes/validator/validators/BAV_Validator_79.php @@ -27,7 +27,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_79 extends BAV_Validator { +class BAV_Validator_79 extends BAV_Validator +{ private diff --git a/classes/validator/validators/BAV_Validator_80.php b/classes/validator/validators/BAV_Validator_80.php index d96fea00..a75aeb7c 100644 --- a/classes/validator/validators/BAV_Validator_80.php +++ b/classes/validator/validators/BAV_Validator_80.php @@ -26,7 +26,8 @@ */ -class BAV_Validator_80 extends BAV_Validator_Chain { +class BAV_Validator_80 extends BAV_Validator_Chain +{ private diff --git a/classes/validator/validators/BAV_Validator_81.php b/classes/validator/validators/BAV_Validator_81.php index 72c7321f..ce5489cf 100644 --- a/classes/validator/validators/BAV_Validator_81.php +++ b/classes/validator/validators/BAV_Validator_81.php @@ -26,7 +26,8 @@ */ -class BAV_Validator_81 extends BAV_Validator_Chain { +class BAV_Validator_81 extends BAV_Validator_Chain +{ private diff --git a/classes/validator/validators/BAV_Validator_82.php b/classes/validator/validators/BAV_Validator_82.php index e95f1703..aefa5cf6 100644 --- a/classes/validator/validators/BAV_Validator_82.php +++ b/classes/validator/validators/BAV_Validator_82.php @@ -28,7 +28,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_82 extends BAV_Validator { +class BAV_Validator_82 extends BAV_Validator +{ private diff --git a/classes/validator/validators/BAV_Validator_83.php b/classes/validator/validators/BAV_Validator_83.php index db8918a6..995ae7b0 100644 --- a/classes/validator/validators/BAV_Validator_83.php +++ b/classes/validator/validators/BAV_Validator_83.php @@ -27,7 +27,8 @@ */ -class BAV_Validator_83 extends BAV_Validator_Chain { +class BAV_Validator_83 extends BAV_Validator_Chain +{ private diff --git a/classes/validator/validators/BAV_Validator_83x.php b/classes/validator/validators/BAV_Validator_83x.php index beed64c3..33ffbe94 100644 --- a/classes/validator/validators/BAV_Validator_83x.php +++ b/classes/validator/validators/BAV_Validator_83x.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_83x extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_83x extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_84.php b/classes/validator/validators/BAV_Validator_84.php index 571b6142..fcce3166 100644 --- a/classes/validator/validators/BAV_Validator_84.php +++ b/classes/validator/validators/BAV_Validator_84.php @@ -27,7 +27,8 @@ */ -class BAV_Validator_84 extends BAV_Validator_Chain { +class BAV_Validator_84 extends BAV_Validator_Chain +{ private diff --git a/classes/validator/validators/BAV_Validator_84b.php b/classes/validator/validators/BAV_Validator_84b.php index 80ef78d5..e2c5e256 100644 --- a/classes/validator/validators/BAV_Validator_84b.php +++ b/classes/validator/validators/BAV_Validator_84b.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_84b extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_84b extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_85.php b/classes/validator/validators/BAV_Validator_85.php index 15ac3c97..d3ed652f 100644 --- a/classes/validator/validators/BAV_Validator_85.php +++ b/classes/validator/validators/BAV_Validator_85.php @@ -27,7 +27,8 @@ */ -class BAV_Validator_85 extends BAV_Validator_Chain { +class BAV_Validator_85 extends BAV_Validator_Chain +{ private diff --git a/classes/validator/validators/BAV_Validator_86.php b/classes/validator/validators/BAV_Validator_86.php index 3ff7440c..15412afa 100644 --- a/classes/validator/validators/BAV_Validator_86.php +++ b/classes/validator/validators/BAV_Validator_86.php @@ -27,7 +27,8 @@ */ -class BAV_Validator_86 extends BAV_Validator_Chain { +class BAV_Validator_86 extends BAV_Validator_Chain +{ private diff --git a/classes/validator/validators/BAV_Validator_87.php b/classes/validator/validators/BAV_Validator_87.php index 2d6020d0..bb1284fa 100644 --- a/classes/validator/validators/BAV_Validator_87.php +++ b/classes/validator/validators/BAV_Validator_87.php @@ -28,7 +28,8 @@ */ -class BAV_Validator_87 extends BAV_Validator_Chain { +class BAV_Validator_87 extends BAV_Validator_Chain +{ private diff --git a/classes/validator/validators/BAV_Validator_87a.php b/classes/validator/validators/BAV_Validator_87a.php index e97ef965..a99fba68 100644 --- a/classes/validator/validators/BAV_Validator_87a.php +++ b/classes/validator/validators/BAV_Validator_87a.php @@ -29,7 +29,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_87a extends BAV_Validator { +class BAV_Validator_87a extends BAV_Validator +{ protected function validate() { diff --git a/classes/validator/validators/BAV_Validator_87c.php b/classes/validator/validators/BAV_Validator_87c.php index 380adafd..041cae5e 100644 --- a/classes/validator/validators/BAV_Validator_87c.php +++ b/classes/validator/validators/BAV_Validator_87c.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_87c extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_87c extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_88.php b/classes/validator/validators/BAV_Validator_88.php index e2dc5eae..86ac678f 100644 --- a/classes/validator/validators/BAV_Validator_88.php +++ b/classes/validator/validators/BAV_Validator_88.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_88 extends BAV_Validator_06 { +class BAV_Validator_88 extends BAV_Validator_06 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_89.php b/classes/validator/validators/BAV_Validator_89.php index ede6465f..ca6e1bfd 100644 --- a/classes/validator/validators/BAV_Validator_89.php +++ b/classes/validator/validators/BAV_Validator_89.php @@ -25,7 +25,8 @@ */ -class BAV_Validator_89 extends BAV_Validator_06 { +class BAV_Validator_89 extends BAV_Validator_06 +{ private diff --git a/classes/validator/validators/BAV_Validator_90.php b/classes/validator/validators/BAV_Validator_90.php index 55e6256a..2a491116 100644 --- a/classes/validator/validators/BAV_Validator_90.php +++ b/classes/validator/validators/BAV_Validator_90.php @@ -28,7 +28,8 @@ */ -class BAV_Validator_90 extends BAV_Validator_Chain { +class BAV_Validator_90 extends BAV_Validator_Chain +{ private diff --git a/classes/validator/validators/BAV_Validator_90c.php b/classes/validator/validators/BAV_Validator_90c.php index 5406bc77..e170007c 100644 --- a/classes/validator/validators/BAV_Validator_90c.php +++ b/classes/validator/validators/BAV_Validator_90c.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_90c extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_90c extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_90d.php b/classes/validator/validators/BAV_Validator_90d.php index 3728b3f0..bd218ad1 100644 --- a/classes/validator/validators/BAV_Validator_90d.php +++ b/classes/validator/validators/BAV_Validator_90d.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_90d extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_90d extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_90e.php b/classes/validator/validators/BAV_Validator_90e.php index 4bd503f6..515ff3c8 100644 --- a/classes/validator/validators/BAV_Validator_90e.php +++ b/classes/validator/validators/BAV_Validator_90e.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_90e extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_90e extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_90g.php b/classes/validator/validators/BAV_Validator_90g.php index 5370c59e..06a14cdb 100644 --- a/classes/validator/validators/BAV_Validator_90g.php +++ b/classes/validator/validators/BAV_Validator_90g.php @@ -21,7 +21,8 @@ */ -class BAV_Validator_90g extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_90g extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_91.php b/classes/validator/validators/BAV_Validator_91.php index 1631e40b..d341ca5b 100644 --- a/classes/validator/validators/BAV_Validator_91.php +++ b/classes/validator/validators/BAV_Validator_91.php @@ -25,7 +25,8 @@ */ -class BAV_Validator_91 extends BAV_Validator_Chain { +class BAV_Validator_91 extends BAV_Validator_Chain +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_92.php b/classes/validator/validators/BAV_Validator_92.php index a1718531..37bcd728 100644 --- a/classes/validator/validators/BAV_Validator_92.php +++ b/classes/validator/validators/BAV_Validator_92.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_92 extends BAV_Validator_01 { +class BAV_Validator_92 extends BAV_Validator_01 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_93.php b/classes/validator/validators/BAV_Validator_93.php index 60ed5dcd..521e1312 100644 --- a/classes/validator/validators/BAV_Validator_93.php +++ b/classes/validator/validators/BAV_Validator_93.php @@ -25,7 +25,8 @@ */ -class BAV_Validator_93 extends BAV_Validator_Chain { +class BAV_Validator_93 extends BAV_Validator_Chain +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_94.php b/classes/validator/validators/BAV_Validator_94.php index 2b53f275..dc0ba835 100644 --- a/classes/validator/validators/BAV_Validator_94.php +++ b/classes/validator/validators/BAV_Validator_94.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_94 extends BAV_Validator_00 { +class BAV_Validator_94 extends BAV_Validator_00 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_95.php b/classes/validator/validators/BAV_Validator_95.php index 9bb9e73f..36c9adf4 100644 --- a/classes/validator/validators/BAV_Validator_95.php +++ b/classes/validator/validators/BAV_Validator_95.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_95 extends BAV_Validator_06 { +class BAV_Validator_95 extends BAV_Validator_06 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_96.php b/classes/validator/validators/BAV_Validator_96.php index 80dfa1a9..eee93113 100644 --- a/classes/validator/validators/BAV_Validator_96.php +++ b/classes/validator/validators/BAV_Validator_96.php @@ -26,7 +26,8 @@ */ -class BAV_Validator_96 extends BAV_Validator_Chain { +class BAV_Validator_96 extends BAV_Validator_Chain +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_97.php b/classes/validator/validators/BAV_Validator_97.php index 90385868..ac70d8f9 100644 --- a/classes/validator/validators/BAV_Validator_97.php +++ b/classes/validator/validators/BAV_Validator_97.php @@ -28,7 +28,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_97 extends BAV_Validator { +class BAV_Validator_97 extends BAV_Validator +{ private diff --git a/classes/validator/validators/BAV_Validator_98.php b/classes/validator/validators/BAV_Validator_98.php index ea4e244b..dcafcbd9 100644 --- a/classes/validator/validators/BAV_Validator_98.php +++ b/classes/validator/validators/BAV_Validator_98.php @@ -26,7 +26,8 @@ */ -class BAV_Validator_98 extends BAV_Validator_Chain { +class BAV_Validator_98 extends BAV_Validator_Chain +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_99.php b/classes/validator/validators/BAV_Validator_99.php index c5b6249c..aefbb451 100644 --- a/classes/validator/validators/BAV_Validator_99.php +++ b/classes/validator/validators/BAV_Validator_99.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_99 extends BAV_Validator_06 { +class BAV_Validator_99 extends BAV_Validator_06 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_A0.php b/classes/validator/validators/BAV_Validator_A0.php index 507de19d..c82547d9 100644 --- a/classes/validator/validators/BAV_Validator_A0.php +++ b/classes/validator/validators/BAV_Validator_A0.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_A0 extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_A0 extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_A1.php b/classes/validator/validators/BAV_Validator_A1.php index e53370df..40a04de1 100644 --- a/classes/validator/validators/BAV_Validator_A1.php +++ b/classes/validator/validators/BAV_Validator_A1.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_A1 extends BAV_Validator_00 { +class BAV_Validator_A1 extends BAV_Validator_00 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_A2.php b/classes/validator/validators/BAV_Validator_A2.php index e606fac0..7aa057ba 100644 --- a/classes/validator/validators/BAV_Validator_A2.php +++ b/classes/validator/validators/BAV_Validator_A2.php @@ -26,7 +26,8 @@ */ -class BAV_Validator_A2 extends BAV_Validator_Chain { +class BAV_Validator_A2 extends BAV_Validator_Chain +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_A3.php b/classes/validator/validators/BAV_Validator_A3.php index 5d1dca15..0878f0e0 100644 --- a/classes/validator/validators/BAV_Validator_A3.php +++ b/classes/validator/validators/BAV_Validator_A3.php @@ -26,7 +26,8 @@ */ -class BAV_Validator_A3 extends BAV_Validator_Chain { +class BAV_Validator_A3 extends BAV_Validator_Chain +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_A4.php b/classes/validator/validators/BAV_Validator_A4.php index e0b525be..4ee2f9fe 100644 --- a/classes/validator/validators/BAV_Validator_A4.php +++ b/classes/validator/validators/BAV_Validator_A4.php @@ -27,7 +27,8 @@ */ -class BAV_Validator_A4 extends BAV_Validator_Chain { +class BAV_Validator_A4 extends BAV_Validator_Chain +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_A4b.php b/classes/validator/validators/BAV_Validator_A4b.php index 97d53759..dad4c16f 100644 --- a/classes/validator/validators/BAV_Validator_A4b.php +++ b/classes/validator/validators/BAV_Validator_A4b.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_A4b extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_A4b extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_A5.php b/classes/validator/validators/BAV_Validator_A5.php index d19ddfdb..8e9fcaa1 100644 --- a/classes/validator/validators/BAV_Validator_A5.php +++ b/classes/validator/validators/BAV_Validator_A5.php @@ -26,7 +26,8 @@ */ -class BAV_Validator_A5 extends BAV_Validator_Chain { +class BAV_Validator_A5 extends BAV_Validator_Chain +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_A6.php b/classes/validator/validators/BAV_Validator_A6.php index c1a43dde..6ecc48d8 100644 --- a/classes/validator/validators/BAV_Validator_A6.php +++ b/classes/validator/validators/BAV_Validator_A6.php @@ -28,7 +28,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_A6 extends BAV_Validator { +class BAV_Validator_A6 extends BAV_Validator +{ protected diff --git a/classes/validator/validators/BAV_Validator_A7.php b/classes/validator/validators/BAV_Validator_A7.php index d8567dae..2316d8c3 100644 --- a/classes/validator/validators/BAV_Validator_A7.php +++ b/classes/validator/validators/BAV_Validator_A7.php @@ -26,7 +26,8 @@ */ -class BAV_Validator_A7 extends BAV_Validator_Chain { +class BAV_Validator_A7 extends BAV_Validator_Chain +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_A8.php b/classes/validator/validators/BAV_Validator_A8.php index 2c3f7fe9..822f2b69 100644 --- a/classes/validator/validators/BAV_Validator_A8.php +++ b/classes/validator/validators/BAV_Validator_A8.php @@ -31,7 +31,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_A8 extends BAV_Validator_Chain { +class BAV_Validator_A8 extends BAV_Validator_Chain +{ private diff --git a/classes/validator/validators/BAV_Validator_A9.php b/classes/validator/validators/BAV_Validator_A9.php index f7ae005b..2875c387 100644 --- a/classes/validator/validators/BAV_Validator_A9.php +++ b/classes/validator/validators/BAV_Validator_A9.php @@ -26,7 +26,8 @@ */ -class BAV_Validator_A9 extends BAV_Validator_Chain { +class BAV_Validator_A9 extends BAV_Validator_Chain +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_B0.php b/classes/validator/validators/BAV_Validator_B0.php index 9dda2fde..348d72db 100644 --- a/classes/validator/validators/BAV_Validator_B0.php +++ b/classes/validator/validators/BAV_Validator_B0.php @@ -28,7 +28,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_B0 extends BAV_Validator { +class BAV_Validator_B0 extends BAV_Validator +{ protected diff --git a/classes/validator/validators/BAV_Validator_B1.php b/classes/validator/validators/BAV_Validator_B1.php index 10ec8cb6..e0542e0b 100644 --- a/classes/validator/validators/BAV_Validator_B1.php +++ b/classes/validator/validators/BAV_Validator_B1.php @@ -26,7 +26,8 @@ */ -class BAV_Validator_B1 extends BAV_Validator_Chain { +class BAV_Validator_B1 extends BAV_Validator_Chain +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_B2.php b/classes/validator/validators/BAV_Validator_B2.php index ecabb160..49fa01d8 100644 --- a/classes/validator/validators/BAV_Validator_B2.php +++ b/classes/validator/validators/BAV_Validator_B2.php @@ -28,7 +28,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_B2 extends BAV_Validator { +class BAV_Validator_B2 extends BAV_Validator +{ protected diff --git a/classes/validator/validators/BAV_Validator_B3.php b/classes/validator/validators/BAV_Validator_B3.php index dd2b988b..1a51a143 100644 --- a/classes/validator/validators/BAV_Validator_B3.php +++ b/classes/validator/validators/BAV_Validator_B3.php @@ -28,7 +28,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_B3 extends BAV_Validator { +class BAV_Validator_B3 extends BAV_Validator +{ protected diff --git a/classes/validator/validators/BAV_Validator_B4.php b/classes/validator/validators/BAV_Validator_B4.php index 11a4936b..b3b4bca1 100644 --- a/classes/validator/validators/BAV_Validator_B4.php +++ b/classes/validator/validators/BAV_Validator_B4.php @@ -28,7 +28,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_B4 extends BAV_Validator { +class BAV_Validator_B4 extends BAV_Validator +{ protected diff --git a/classes/validator/validators/BAV_Validator_B5.php b/classes/validator/validators/BAV_Validator_B5.php index f60573e1..303fcd9a 100644 --- a/classes/validator/validators/BAV_Validator_B5.php +++ b/classes/validator/validators/BAV_Validator_B5.php @@ -26,7 +26,8 @@ */ -class BAV_Validator_B5 extends BAV_Validator_Chain { +class BAV_Validator_B5 extends BAV_Validator_Chain +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_B6.php b/classes/validator/validators/BAV_Validator_B6.php index b09245c5..2fa7486e 100644 --- a/classes/validator/validators/BAV_Validator_B6.php +++ b/classes/validator/validators/BAV_Validator_B6.php @@ -29,7 +29,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_B6 extends BAV_Validator implements BAV_Validator_BankDependent { +class BAV_Validator_B6 extends BAV_Validator implements BAV_Validator_BankDependent +{ protected diff --git a/classes/validator/validators/BAV_Validator_B7.php b/classes/validator/validators/BAV_Validator_B7.php index 8bb2a99d..de0c7f97 100644 --- a/classes/validator/validators/BAV_Validator_B7.php +++ b/classes/validator/validators/BAV_Validator_B7.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_B7 extends BAV_Validator_01 { +class BAV_Validator_B7 extends BAV_Validator_01 +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_B8.php b/classes/validator/validators/BAV_Validator_B8.php index 79ecf6ad..ab6adb7a 100644 --- a/classes/validator/validators/BAV_Validator_B8.php +++ b/classes/validator/validators/BAV_Validator_B8.php @@ -27,7 +27,8 @@ */ -class BAV_Validator_B8 extends BAV_Validator_Chain { +class BAV_Validator_B8 extends BAV_Validator_Chain +{ private /** diff --git a/classes/validator/validators/BAV_Validator_B9.php b/classes/validator/validators/BAV_Validator_B9.php index dde0d48a..992d34ee 100644 --- a/classes/validator/validators/BAV_Validator_B9.php +++ b/classes/validator/validators/BAV_Validator_B9.php @@ -28,7 +28,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_B9 extends BAV_Validator { +class BAV_Validator_B9 extends BAV_Validator +{ protected diff --git a/classes/validator/validators/BAV_Validator_B9a.php b/classes/validator/validators/BAV_Validator_B9a.php index 625d1e77..edd93a7c 100644 --- a/classes/validator/validators/BAV_Validator_B9a.php +++ b/classes/validator/validators/BAV_Validator_B9a.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_B9a extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_B9a extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_B9b.php b/classes/validator/validators/BAV_Validator_B9b.php index b756eaf5..5ff55803 100644 --- a/classes/validator/validators/BAV_Validator_B9b.php +++ b/classes/validator/validators/BAV_Validator_B9b.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_B9b extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_B9b extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_C0.php b/classes/validator/validators/BAV_Validator_C0.php index 369d73ba..a39d13c5 100644 --- a/classes/validator/validators/BAV_Validator_C0.php +++ b/classes/validator/validators/BAV_Validator_C0.php @@ -27,7 +27,8 @@ */ -class BAV_Validator_C0 extends BAV_Validator_Chain implements BAV_Validator_BankDependent { +class BAV_Validator_C0 extends BAV_Validator_Chain implements BAV_Validator_BankDependent +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_C1.php b/classes/validator/validators/BAV_Validator_C1.php index fc1d1fd7..26d113ef 100644 --- a/classes/validator/validators/BAV_Validator_C1.php +++ b/classes/validator/validators/BAV_Validator_C1.php @@ -28,7 +28,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_C1 extends BAV_Validator { +class BAV_Validator_C1 extends BAV_Validator +{ protected diff --git a/classes/validator/validators/BAV_Validator_C1b.php b/classes/validator/validators/BAV_Validator_C1b.php index fdc3c83a..6ed8a9b3 100644 --- a/classes/validator/validators/BAV_Validator_C1b.php +++ b/classes/validator/validators/BAV_Validator_C1b.php @@ -24,7 +24,8 @@ */ -class BAV_Validator_C1b extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_C1b extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_C2.php b/classes/validator/validators/BAV_Validator_C2.php index bd70ce85..aeb47d5f 100644 --- a/classes/validator/validators/BAV_Validator_C2.php +++ b/classes/validator/validators/BAV_Validator_C2.php @@ -26,7 +26,8 @@ */ -class BAV_Validator_C2 extends BAV_Validator_Chain { +class BAV_Validator_C2 extends BAV_Validator_Chain +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_C3.php b/classes/validator/validators/BAV_Validator_C3.php index deafab9c..3852e7ec 100644 --- a/classes/validator/validators/BAV_Validator_C3.php +++ b/classes/validator/validators/BAV_Validator_C3.php @@ -28,7 +28,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2007 Markus Malkusch */ -class BAV_Validator_C3 extends BAV_Validator { +class BAV_Validator_C3 extends BAV_Validator +{ protected diff --git a/classes/validator/validators/BAV_Validator_C4.php b/classes/validator/validators/BAV_Validator_C4.php index 48a73876..d2d54b1e 100644 --- a/classes/validator/validators/BAV_Validator_C4.php +++ b/classes/validator/validators/BAV_Validator_C4.php @@ -28,7 +28,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2007 Markus Malkusch */ -class BAV_Validator_C4 extends BAV_Validator { +class BAV_Validator_C4 extends BAV_Validator +{ protected diff --git a/classes/validator/validators/BAV_Validator_C5.php b/classes/validator/validators/BAV_Validator_C5.php index 95542f76..755180b4 100644 --- a/classes/validator/validators/BAV_Validator_C5.php +++ b/classes/validator/validators/BAV_Validator_C5.php @@ -30,7 +30,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2007 Markus Malkusch */ -class BAV_Validator_C5 extends BAV_Validator { +class BAV_Validator_C5 extends BAV_Validator +{ protected diff --git a/classes/validator/validators/BAV_Validator_C6.php b/classes/validator/validators/BAV_Validator_C6.php index b6a2bd1b..e3ebaca3 100644 --- a/classes/validator/validators/BAV_Validator_C6.php +++ b/classes/validator/validators/BAV_Validator_C6.php @@ -27,7 +27,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2007 Markus Malkusch */ -class BAV_Validator_C6 extends BAV_Validator { +class BAV_Validator_C6 extends BAV_Validator +{ static private diff --git a/classes/validator/validators/BAV_Validator_C7.php b/classes/validator/validators/BAV_Validator_C7.php index 3be58992..25d8e54c 100644 --- a/classes/validator/validators/BAV_Validator_C7.php +++ b/classes/validator/validators/BAV_Validator_C7.php @@ -26,7 +26,8 @@ */ -class BAV_Validator_C7 extends BAV_Validator_Chain { +class BAV_Validator_C7 extends BAV_Validator_Chain +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_C8.php b/classes/validator/validators/BAV_Validator_C8.php index 117ec5fe..5c6dc60e 100644 --- a/classes/validator/validators/BAV_Validator_C8.php +++ b/classes/validator/validators/BAV_Validator_C8.php @@ -27,7 +27,8 @@ */ -class BAV_Validator_C8 extends BAV_Validator_Chain { +class BAV_Validator_C8 extends BAV_Validator_Chain +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_C9.php b/classes/validator/validators/BAV_Validator_C9.php index fa450107..f9bac07e 100644 --- a/classes/validator/validators/BAV_Validator_C9.php +++ b/classes/validator/validators/BAV_Validator_C9.php @@ -26,7 +26,8 @@ */ -class BAV_Validator_C9 extends BAV_Validator_Chain { +class BAV_Validator_C9 extends BAV_Validator_Chain +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_D0.php b/classes/validator/validators/BAV_Validator_D0.php index 7272b57f..a5932a80 100644 --- a/classes/validator/validators/BAV_Validator_D0.php +++ b/classes/validator/validators/BAV_Validator_D0.php @@ -28,7 +28,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2008 Markus Malkusch */ -class BAV_Validator_D0 extends BAV_Validator { +class BAV_Validator_D0 extends BAV_Validator +{ const SWITCH_PREFIX = '57'; diff --git a/classes/validator/validators/BAV_Validator_D1.php b/classes/validator/validators/BAV_Validator_D1.php index 9b2b4434..0f8f5bda 100644 --- a/classes/validator/validators/BAV_Validator_D1.php +++ b/classes/validator/validators/BAV_Validator_D1.php @@ -28,7 +28,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class BAV_Validator_D1 extends BAV_Validator { +class BAV_Validator_D1 extends BAV_Validator +{ static private diff --git a/classes/validator/validators/BAV_Validator_D2.php b/classes/validator/validators/BAV_Validator_D2.php index e9dec290..f4b89303 100644 --- a/classes/validator/validators/BAV_Validator_D2.php +++ b/classes/validator/validators/BAV_Validator_D2.php @@ -30,7 +30,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class BAV_Validator_D2 extends BAV_Validator_Chain { +class BAV_Validator_D2 extends BAV_Validator_Chain +{ protected diff --git a/classes/validator/validators/BAV_Validator_D3.php b/classes/validator/validators/BAV_Validator_D3.php index 0b9ab7d0..b17a923b 100644 --- a/classes/validator/validators/BAV_Validator_D3.php +++ b/classes/validator/validators/BAV_Validator_D3.php @@ -29,7 +29,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class BAV_Validator_D3 extends BAV_Validator_Chain { +class BAV_Validator_D3 extends BAV_Validator_Chain +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_D4.php b/classes/validator/validators/BAV_Validator_D4.php index 355954ba..af19e87b 100644 --- a/classes/validator/validators/BAV_Validator_D4.php +++ b/classes/validator/validators/BAV_Validator_D4.php @@ -29,7 +29,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class BAV_Validator_D4 extends BAV_Validator { +class BAV_Validator_D4 extends BAV_Validator +{ protected diff --git a/classes/validator/validators/BAV_Validator_D5.php b/classes/validator/validators/BAV_Validator_D5.php index dd7e1bba..667ceec5 100644 --- a/classes/validator/validators/BAV_Validator_D5.php +++ b/classes/validator/validators/BAV_Validator_D5.php @@ -29,7 +29,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class BAV_Validator_D5 extends BAV_Validator { +class BAV_Validator_D5 extends BAV_Validator +{ private diff --git a/classes/validator/validators/BAV_Validator_D6.php b/classes/validator/validators/BAV_Validator_D6.php index b564df00..7a03bf4e 100644 --- a/classes/validator/validators/BAV_Validator_D6.php +++ b/classes/validator/validators/BAV_Validator_D6.php @@ -30,7 +30,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class BAV_Validator_D6 extends BAV_Validator_Chain { +class BAV_Validator_D6 extends BAV_Validator_Chain +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_D7.php b/classes/validator/validators/BAV_Validator_D7.php index 8f226fd4..d5ef6fc9 100644 --- a/classes/validator/validators/BAV_Validator_D7.php +++ b/classes/validator/validators/BAV_Validator_D7.php @@ -28,7 +28,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2011 Markus Malkusch */ -class BAV_Validator_D7 extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_D7 extends BAV_Validator_Iteration_Weighted +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_D8.php b/classes/validator/validators/BAV_Validator_D8.php index 9693082a..c0d6f047 100644 --- a/classes/validator/validators/BAV_Validator_D8.php +++ b/classes/validator/validators/BAV_Validator_D8.php @@ -29,7 +29,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2011 Markus Malkusch */ -class BAV_Validator_D8 extends BAV_Validator { +class BAV_Validator_D8 extends BAV_Validator +{ private diff --git a/classes/validator/validators/BAV_Validator_D9.php b/classes/validator/validators/BAV_Validator_D9.php index 0e09d848..bca45833 100644 --- a/classes/validator/validators/BAV_Validator_D9.php +++ b/classes/validator/validators/BAV_Validator_D9.php @@ -30,7 +30,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2012 Markus Malkusch */ -class BAV_Validator_D9 extends BAV_Validator_Chain { +class BAV_Validator_D9 extends BAV_Validator_Chain +{ public function __construct(BAV_Bank $bank) { diff --git a/classes/validator/validators/BAV_Validator_E0.php b/classes/validator/validators/BAV_Validator_E0.php index 0d7bbb72..dfa3c98c 100644 --- a/classes/validator/validators/BAV_Validator_E0.php +++ b/classes/validator/validators/BAV_Validator_E0.php @@ -23,7 +23,8 @@ */ -class BAV_Validator_E0 extends BAV_Validator_00 { +class BAV_Validator_E0 extends BAV_Validator_00 +{ protected function validate() { diff --git a/classes/validator/validators/BAV_Validator_E1.php b/classes/validator/validators/BAV_Validator_E1.php index 15d647a5..b1ab7300 100644 --- a/classes/validator/validators/BAV_Validator_E1.php +++ b/classes/validator/validators/BAV_Validator_E1.php @@ -23,7 +23,8 @@ * https://github.com/jschaedl/Bav/blob/master/library/Bav/Validator/De/SystemE1.php */ -class BAV_Validator_E1 extends BAV_Validator_Iteration_Weighted { +class BAV_Validator_E1 extends BAV_Validator_Iteration_Weighted +{ static private $subsitutions = array(48, 49, 50, 51, 52, 53, 54, 55, 56, 57); diff --git a/classes/verify/BAV_VerifyImport.php b/classes/verify/BAV_VerifyImport.php index cc8fdca2..0f846fc1 100644 --- a/classes/verify/BAV_VerifyImport.php +++ b/classes/verify/BAV_VerifyImport.php @@ -44,7 +44,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_VerifyImport extends BAV { +class BAV_VerifyImport extends BAV +{ private diff --git a/classes/verify/exception/BAV_VerifyException.php b/classes/verify/exception/BAV_VerifyException.php index f0fcf461..02d80905 100644 --- a/classes/verify/exception/BAV_VerifyException.php +++ b/classes/verify/exception/BAV_VerifyException.php @@ -24,7 +24,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_VerifyException extends RuntimeException { +class BAV_VerifyException extends RuntimeException +{ } diff --git a/classes/verify/exception/BAV_VerifyException_IO.php b/classes/verify/exception/BAV_VerifyException_IO.php index b8c033d2..7b1905d3 100644 --- a/classes/verify/exception/BAV_VerifyException_IO.php +++ b/classes/verify/exception/BAV_VerifyException_IO.php @@ -25,7 +25,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_VerifyException_IO extends BAV_VerifyException { +class BAV_VerifyException_IO extends BAV_VerifyException +{ } diff --git a/classes/verify/testAPI/BAV_TestAPI.php b/classes/verify/testAPI/BAV_TestAPI.php index 6fc32a47..41804c66 100644 --- a/classes/verify/testAPI/BAV_TestAPI.php +++ b/classes/verify/testAPI/BAV_TestAPI.php @@ -31,7 +31,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -abstract class BAV_TestAPI extends BAV { +abstract class BAV_TestAPI extends BAV +{ private diff --git a/classes/verify/testAPI/BAV_TestAPIResult.php b/classes/verify/testAPI/BAV_TestAPIResult.php index 52d249d3..515837ca 100644 --- a/classes/verify/testAPI/BAV_TestAPIResult.php +++ b/classes/verify/testAPI/BAV_TestAPIResult.php @@ -28,7 +28,8 @@ */ -class BAV_TestAPIResult extends BAV { +class BAV_TestAPIResult extends BAV +{ const VALID = 1; diff --git a/classes/verify/testAPI/BAV_TestAPIResult_Error.php b/classes/verify/testAPI/BAV_TestAPIResult_Error.php index 40e65a42..dcff982e 100644 --- a/classes/verify/testAPI/BAV_TestAPIResult_Error.php +++ b/classes/verify/testAPI/BAV_TestAPIResult_Error.php @@ -27,7 +27,8 @@ */ -class BAV_TestAPIResult_Error extends BAV_TestAPIResult { +class BAV_TestAPIResult_Error extends BAV_TestAPIResult +{ private diff --git a/classes/verify/testAPI/BAV_TestAPI_BAV.php b/classes/verify/testAPI/BAV_TestAPI_BAV.php index 9d76d272..80a52d96 100644 --- a/classes/verify/testAPI/BAV_TestAPI_BAV.php +++ b/classes/verify/testAPI/BAV_TestAPI_BAV.php @@ -28,7 +28,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_TestAPI_BAV extends BAV_TestAPI { +class BAV_TestAPI_BAV extends BAV_TestAPI +{ public function __construct() { diff --git a/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php b/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php index 5140c24e..4214b71d 100644 --- a/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php +++ b/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php @@ -30,7 +30,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_TestAPI_Kontocheck extends BAV_TestAPI { +class BAV_TestAPI_Kontocheck extends BAV_TestAPI +{ const NOT_INITIALIZED = -40; diff --git a/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php b/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php index c8f86675..04510cc4 100644 --- a/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php +++ b/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php @@ -30,7 +30,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_TestAPI_Ktoblzcheck extends BAV_TestAPI { +class BAV_TestAPI_Ktoblzcheck extends BAV_TestAPI +{ const BINARY = "ktoblzcheck"; diff --git a/classes/verify/testAPI/exception/BAV_TestAPIException.php b/classes/verify/testAPI/exception/BAV_TestAPIException.php index 14bda328..4ba793fe 100644 --- a/classes/verify/testAPI/exception/BAV_TestAPIException.php +++ b/classes/verify/testAPI/exception/BAV_TestAPIException.php @@ -22,7 +22,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_TestAPIException extends RuntimeException { +class BAV_TestAPIException extends RuntimeException +{ } diff --git a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation.php b/classes/verify/testAPI/exception/BAV_TestAPIException_Validation.php index 0bf21f80..348ff1bd 100644 --- a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation.php +++ b/classes/verify/testAPI/exception/BAV_TestAPIException_Validation.php @@ -24,7 +24,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_TestAPIException_Validation extends BAV_TestAPIException { +class BAV_TestAPIException_Validation extends BAV_TestAPIException +{ } diff --git a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_BankNotFound.php b/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_BankNotFound.php index 80402259..50a3d978 100644 --- a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_BankNotFound.php +++ b/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_BankNotFound.php @@ -24,7 +24,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_TestAPIException_Validation_BankNotFound extends BAV_TestAPIException_Validation { +class BAV_TestAPIException_Validation_BankNotFound extends BAV_TestAPIException_Validation +{ } diff --git a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_NotInitialized.php b/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_NotInitialized.php index c5817248..13b03920 100644 --- a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_NotInitialized.php +++ b/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_NotInitialized.php @@ -24,7 +24,8 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_TestAPIException_Validation_NotInitialized extends BAV_TestAPIException_Validation { +class BAV_TestAPIException_Validation_NotInitialized extends BAV_TestAPIException_Validation +{ } diff --git a/tests/AgencyQueryTest.php b/tests/AgencyQueryTest.php index 27ebbb15..192c4cf5 100755 --- a/tests/AgencyQueryTest.php +++ b/tests/AgencyQueryTest.php @@ -27,7 +27,8 @@ */ -class AgencyQueryTest extends PHPUnit_Framework_TestCase { +class AgencyQueryTest extends PHPUnit_Framework_TestCase +{ /** diff --git a/tests/BackendTest.php b/tests/BackendTest.php index f474de30..37e6245e 100755 --- a/tests/BackendTest.php +++ b/tests/BackendTest.php @@ -27,7 +27,8 @@ * @copyright Copyright (C) 2009 Markus Malkusch */ -class BackendTest extends PHPUnit_Framework_TestCase { +class BackendTest extends PHPUnit_Framework_TestCase +{ private static diff --git a/tests/CrossProjectTest.php b/tests/CrossProjectTest.php index afb03f27..d1f21c92 100755 --- a/tests/CrossProjectTest.php +++ b/tests/CrossProjectTest.php @@ -27,7 +27,8 @@ */ -class CrossProjectTest extends PHPUnit_Framework_TestCase { +class CrossProjectTest extends PHPUnit_Framework_TestCase +{ private diff --git a/tests/DataConstraintTest.php b/tests/DataConstraintTest.php index 2e6b1ae0..bb89925f 100755 --- a/tests/DataConstraintTest.php +++ b/tests/DataConstraintTest.php @@ -8,7 +8,8 @@ DataConstraintTest::classConstructor(); -class DataConstraintTest extends PHPUnit_Framework_TestCase { +class DataConstraintTest extends PHPUnit_Framework_TestCase +{ private static diff --git a/tests/TestSuite.php b/tests/TestSuite.php index 3c2f1945..f42c8bdc 100644 --- a/tests/TestSuite.php +++ b/tests/TestSuite.php @@ -29,7 +29,8 @@ require_once __DIR__ . '/VerifyImportTest.php'; -class TestSuite extends PHPUnit_Framework_TestSuite { +class TestSuite extends PHPUnit_Framework_TestSuite +{ /** diff --git a/tests/ValidatorTest.php b/tests/ValidatorTest.php index ef85d510..8e1e2fb4 100755 --- a/tests/ValidatorTest.php +++ b/tests/ValidatorTest.php @@ -28,7 +28,8 @@ */ -class ValidatorTest extends PHPUnit_Framework_TestCase { +class ValidatorTest extends PHPUnit_Framework_TestCase +{ private static diff --git a/tests/VerifyImportTest.php b/tests/VerifyImportTest.php index 6e81da4c..4b8b7559 100755 --- a/tests/VerifyImportTest.php +++ b/tests/VerifyImportTest.php @@ -30,7 +30,8 @@ */ -class VerifyImportTest extends PHPUnit_Framework_TestCase { +class VerifyImportTest extends PHPUnit_Framework_TestCase +{ private diff --git a/tests/checkAgainstTestAPIs.php b/tests/checkAgainstTestAPIs.php index 4b0fe9fe..40eecbb5 100755 --- a/tests/checkAgainstTestAPIs.php +++ b/tests/checkAgainstTestAPIs.php @@ -29,7 +29,8 @@ */ -class BAV_CheckAgainstTestAPIs extends BAV { +class BAV_CheckAgainstTestAPIs extends BAV +{ const VALID = 1; From bb3cfd8feb4e84872ed88ae4cc6713b39310e84a Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 19:44:54 +0200 Subject: [PATCH 028/303] no whitespace on end of class definition line --- classes/BAV.php | 2 +- classes/BAV_Version.php | 2 +- classes/bank/BAV_Agency.php | 2 +- classes/bank/BAV_Bank.php | 2 +- classes/bank/exception/BAV_AgencyException.php | 2 +- .../bank/exception/BAV_AgencyException_UndefinedAttribute.php | 2 +- classes/class/BAV_ClassFile.php | 2 +- classes/class/exception/BAV_ClassFileException.php | 2 +- classes/class/exception/BAV_ClassFileException_IO.php | 2 +- classes/class/exception/BAV_ClassFileException_MissingClass.php | 2 +- classes/dataBackend/BAV_DataBackend.php | 2 +- classes/dataBackend/BAV_DataBackend_File.php | 2 +- classes/dataBackend/BAV_DataBackend_PDO.php | 2 +- classes/dataBackend/exception/BAV_DataBackendException.php | 2 +- .../exception/BAV_DataBackendException_BankNotFound.php | 2 +- classes/dataBackend/exception/BAV_DataBackendException_IO.php | 2 +- .../exception/BAV_DataBackendException_IO_MissingAttributes.php | 2 +- .../exception/BAV_DataBackendException_NoMainAgency.php | 2 +- classes/dataBackend/fileParser/BAV_FileParser.php | 2 +- classes/dataBackend/fileParser/BAV_FileParserContext.php | 2 +- .../fileParser/exception/BAV_FileParserContextException.php | 2 +- .../exception/BAV_FileParserContextException_Undefined.php | 2 +- .../fileParser/exception/BAV_FileParserException.php | 2 +- .../exception/BAV_FileParserException_FileNotExists.php | 2 +- .../fileParser/exception/BAV_FileParserException_IO.php | 2 +- .../fileParser/exception/BAV_FileParserException_ParseError.php | 2 +- classes/encoding/BAV_Encoding.php | 2 +- classes/encoding/BAV_Encoding_ISO8859.php | 2 +- classes/encoding/BAV_Encoding_Iconv.php | 2 +- classes/encoding/BAV_Encoding_MB.php | 2 +- classes/encoding/exception/BAV_EncodingException.php | 2 +- .../encoding/exception/BAV_EncodingException_Unsupported.php | 2 +- classes/validator/BAV_Validator.php | 2 +- classes/validator/BAV_Validator_Chain.php | 2 +- classes/validator/BAV_Validator_Iteration.php | 2 +- classes/validator/BAV_Validator_Iteration_Transformation.php | 2 +- classes/validator/BAV_Validator_Iteration_Weighted.php | 2 +- classes/validator/exception/BAV_ValidatorException.php | 2 +- classes/validator/exception/BAV_ValidatorException_ESER.php | 2 +- .../validator/exception/BAV_ValidatorException_NotExists.php | 2 +- .../validator/exception/BAV_ValidatorException_OutOfBounds.php | 2 +- classes/validator/validators/BAV_Validator_00.php | 2 +- classes/validator/validators/BAV_Validator_01.php | 2 +- classes/validator/validators/BAV_Validator_02.php | 2 +- classes/validator/validators/BAV_Validator_03.php | 2 +- classes/validator/validators/BAV_Validator_04.php | 2 +- classes/validator/validators/BAV_Validator_05.php | 2 +- classes/validator/validators/BAV_Validator_06.php | 2 +- classes/validator/validators/BAV_Validator_07.php | 2 +- classes/validator/validators/BAV_Validator_08.php | 2 +- classes/validator/validators/BAV_Validator_09.php | 2 +- classes/validator/validators/BAV_Validator_10.php | 2 +- classes/validator/validators/BAV_Validator_11.php | 2 +- classes/validator/validators/BAV_Validator_13.php | 2 +- classes/validator/validators/BAV_Validator_14.php | 2 +- classes/validator/validators/BAV_Validator_15.php | 2 +- classes/validator/validators/BAV_Validator_16.php | 2 +- classes/validator/validators/BAV_Validator_17.php | 2 +- classes/validator/validators/BAV_Validator_18.php | 2 +- classes/validator/validators/BAV_Validator_19.php | 2 +- classes/validator/validators/BAV_Validator_20.php | 2 +- classes/validator/validators/BAV_Validator_21.php | 2 +- classes/validator/validators/BAV_Validator_22.php | 2 +- classes/validator/validators/BAV_Validator_23.php | 2 +- classes/validator/validators/BAV_Validator_24.php | 2 +- classes/validator/validators/BAV_Validator_25.php | 2 +- classes/validator/validators/BAV_Validator_26.php | 2 +- classes/validator/validators/BAV_Validator_27.php | 2 +- classes/validator/validators/BAV_Validator_28.php | 2 +- classes/validator/validators/BAV_Validator_29.php | 2 +- classes/validator/validators/BAV_Validator_30.php | 2 +- classes/validator/validators/BAV_Validator_31.php | 2 +- classes/validator/validators/BAV_Validator_32.php | 2 +- classes/validator/validators/BAV_Validator_33.php | 2 +- classes/validator/validators/BAV_Validator_34.php | 2 +- classes/validator/validators/BAV_Validator_35.php | 2 +- classes/validator/validators/BAV_Validator_36.php | 2 +- classes/validator/validators/BAV_Validator_37.php | 2 +- classes/validator/validators/BAV_Validator_38.php | 2 +- classes/validator/validators/BAV_Validator_39.php | 2 +- classes/validator/validators/BAV_Validator_40.php | 2 +- classes/validator/validators/BAV_Validator_41.php | 2 +- classes/validator/validators/BAV_Validator_42.php | 2 +- classes/validator/validators/BAV_Validator_43.php | 2 +- classes/validator/validators/BAV_Validator_44.php | 2 +- classes/validator/validators/BAV_Validator_45.php | 2 +- classes/validator/validators/BAV_Validator_46.php | 2 +- classes/validator/validators/BAV_Validator_47.php | 2 +- classes/validator/validators/BAV_Validator_48.php | 2 +- classes/validator/validators/BAV_Validator_49.php | 2 +- classes/validator/validators/BAV_Validator_50.php | 2 +- classes/validator/validators/BAV_Validator_51.php | 2 +- classes/validator/validators/BAV_Validator_51x.php | 2 +- classes/validator/validators/BAV_Validator_52.php | 2 +- classes/validator/validators/BAV_Validator_53.php | 2 +- classes/validator/validators/BAV_Validator_54.php | 2 +- classes/validator/validators/BAV_Validator_55.php | 2 +- classes/validator/validators/BAV_Validator_56.php | 2 +- classes/validator/validators/BAV_Validator_57.php | 2 +- classes/validator/validators/BAV_Validator_58.php | 2 +- classes/validator/validators/BAV_Validator_59.php | 2 +- classes/validator/validators/BAV_Validator_60.php | 2 +- classes/validator/validators/BAV_Validator_61.php | 2 +- classes/validator/validators/BAV_Validator_62.php | 2 +- classes/validator/validators/BAV_Validator_63.php | 2 +- classes/validator/validators/BAV_Validator_64.php | 2 +- classes/validator/validators/BAV_Validator_65.php | 2 +- classes/validator/validators/BAV_Validator_66.php | 2 +- classes/validator/validators/BAV_Validator_67.php | 2 +- classes/validator/validators/BAV_Validator_68.php | 2 +- classes/validator/validators/BAV_Validator_69.php | 2 +- classes/validator/validators/BAV_Validator_69b.php | 2 +- classes/validator/validators/BAV_Validator_70.php | 2 +- classes/validator/validators/BAV_Validator_71.php | 2 +- classes/validator/validators/BAV_Validator_72.php | 2 +- classes/validator/validators/BAV_Validator_73.php | 2 +- classes/validator/validators/BAV_Validator_74.php | 2 +- classes/validator/validators/BAV_Validator_75.php | 2 +- classes/validator/validators/BAV_Validator_76.php | 2 +- classes/validator/validators/BAV_Validator_77.php | 2 +- classes/validator/validators/BAV_Validator_77a.php | 2 +- classes/validator/validators/BAV_Validator_78.php | 2 +- classes/validator/validators/BAV_Validator_79.php | 2 +- classes/validator/validators/BAV_Validator_80.php | 2 +- classes/validator/validators/BAV_Validator_81.php | 2 +- classes/validator/validators/BAV_Validator_82.php | 2 +- classes/validator/validators/BAV_Validator_83.php | 2 +- classes/validator/validators/BAV_Validator_83x.php | 2 +- classes/validator/validators/BAV_Validator_84.php | 2 +- classes/validator/validators/BAV_Validator_84b.php | 2 +- classes/validator/validators/BAV_Validator_85.php | 2 +- classes/validator/validators/BAV_Validator_86.php | 2 +- classes/validator/validators/BAV_Validator_87.php | 2 +- classes/validator/validators/BAV_Validator_87a.php | 2 +- classes/validator/validators/BAV_Validator_87c.php | 2 +- classes/validator/validators/BAV_Validator_88.php | 2 +- classes/validator/validators/BAV_Validator_89.php | 2 +- classes/validator/validators/BAV_Validator_90.php | 2 +- classes/validator/validators/BAV_Validator_90c.php | 2 +- classes/validator/validators/BAV_Validator_90d.php | 2 +- classes/validator/validators/BAV_Validator_90e.php | 2 +- classes/validator/validators/BAV_Validator_90g.php | 2 +- classes/validator/validators/BAV_Validator_91.php | 2 +- classes/validator/validators/BAV_Validator_92.php | 2 +- classes/validator/validators/BAV_Validator_93.php | 2 +- classes/validator/validators/BAV_Validator_94.php | 2 +- classes/validator/validators/BAV_Validator_95.php | 2 +- classes/validator/validators/BAV_Validator_96.php | 2 +- classes/validator/validators/BAV_Validator_97.php | 2 +- classes/validator/validators/BAV_Validator_98.php | 2 +- classes/validator/validators/BAV_Validator_99.php | 2 +- classes/validator/validators/BAV_Validator_A0.php | 2 +- classes/validator/validators/BAV_Validator_A1.php | 2 +- classes/validator/validators/BAV_Validator_A2.php | 2 +- classes/validator/validators/BAV_Validator_A3.php | 2 +- classes/validator/validators/BAV_Validator_A4.php | 2 +- classes/validator/validators/BAV_Validator_A4b.php | 2 +- classes/validator/validators/BAV_Validator_A5.php | 2 +- classes/validator/validators/BAV_Validator_A6.php | 2 +- classes/validator/validators/BAV_Validator_A7.php | 2 +- classes/validator/validators/BAV_Validator_A8.php | 2 +- classes/validator/validators/BAV_Validator_A9.php | 2 +- classes/validator/validators/BAV_Validator_B0.php | 2 +- classes/validator/validators/BAV_Validator_B1.php | 2 +- classes/validator/validators/BAV_Validator_B2.php | 2 +- classes/validator/validators/BAV_Validator_B3.php | 2 +- classes/validator/validators/BAV_Validator_B4.php | 2 +- classes/validator/validators/BAV_Validator_B5.php | 2 +- classes/validator/validators/BAV_Validator_B6.php | 2 +- classes/validator/validators/BAV_Validator_B7.php | 2 +- classes/validator/validators/BAV_Validator_B8.php | 2 +- classes/validator/validators/BAV_Validator_B9.php | 2 +- classes/validator/validators/BAV_Validator_B9a.php | 2 +- classes/validator/validators/BAV_Validator_B9b.php | 2 +- classes/validator/validators/BAV_Validator_C0.php | 2 +- classes/validator/validators/BAV_Validator_C1.php | 2 +- classes/validator/validators/BAV_Validator_C1b.php | 2 +- classes/validator/validators/BAV_Validator_C2.php | 2 +- classes/validator/validators/BAV_Validator_C3.php | 2 +- classes/validator/validators/BAV_Validator_C4.php | 2 +- classes/validator/validators/BAV_Validator_C5.php | 2 +- classes/validator/validators/BAV_Validator_C6.php | 2 +- classes/validator/validators/BAV_Validator_C7.php | 2 +- classes/validator/validators/BAV_Validator_C8.php | 2 +- classes/validator/validators/BAV_Validator_C9.php | 2 +- classes/validator/validators/BAV_Validator_D0.php | 2 +- classes/validator/validators/BAV_Validator_D1.php | 2 +- classes/validator/validators/BAV_Validator_D2.php | 2 +- classes/validator/validators/BAV_Validator_D3.php | 2 +- classes/validator/validators/BAV_Validator_D4.php | 2 +- classes/validator/validators/BAV_Validator_D5.php | 2 +- classes/validator/validators/BAV_Validator_D6.php | 2 +- classes/validator/validators/BAV_Validator_D7.php | 2 +- classes/validator/validators/BAV_Validator_D8.php | 2 +- classes/validator/validators/BAV_Validator_D9.php | 2 +- classes/validator/validators/BAV_Validator_E0.php | 2 +- classes/validator/validators/BAV_Validator_E1.php | 2 +- classes/verify/BAV_VerifyImport.php | 2 +- classes/verify/exception/BAV_VerifyException.php | 2 +- classes/verify/exception/BAV_VerifyException_IO.php | 2 +- classes/verify/testAPI/BAV_TestAPI.php | 2 +- classes/verify/testAPI/BAV_TestAPIResult.php | 2 +- classes/verify/testAPI/BAV_TestAPIResult_Error.php | 2 +- classes/verify/testAPI/BAV_TestAPI_BAV.php | 2 +- classes/verify/testAPI/BAV_TestAPI_Kontocheck.php | 2 +- classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php | 2 +- classes/verify/testAPI/exception/BAV_TestAPIException.php | 2 +- .../testAPI/exception/BAV_TestAPIException_Validation.php | 2 +- .../exception/BAV_TestAPIException_Validation_BankNotFound.php | 2 +- .../BAV_TestAPIException_Validation_NotInitialized.php | 2 +- tests/AgencyQueryTest.php | 2 +- tests/BackendTest.php | 2 +- tests/CrossProjectTest.php | 2 +- tests/DataConstraintTest.php | 2 +- tests/TestSuite.php | 2 +- tests/ValidatorTest.php | 2 +- tests/VerifyImportTest.php | 2 +- tests/checkAgainstTestAPIs.php | 2 +- 218 files changed, 218 insertions(+), 218 deletions(-) diff --git a/classes/BAV.php b/classes/BAV.php index 5c69a5fb..f1528765 100644 --- a/classes/BAV.php +++ b/classes/BAV.php @@ -31,7 +31,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class BAV +abstract class BAV { diff --git a/classes/BAV_Version.php b/classes/BAV_Version.php index b1893ff5..b12c1a60 100644 --- a/classes/BAV_Version.php +++ b/classes/BAV_Version.php @@ -26,7 +26,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Version extends BAV +class BAV_Version extends BAV { diff --git a/classes/bank/BAV_Agency.php b/classes/bank/BAV_Agency.php index 6adf1e37..9e30810a 100644 --- a/classes/bank/BAV_Agency.php +++ b/classes/bank/BAV_Agency.php @@ -32,7 +32,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Agency extends BAV +class BAV_Agency extends BAV { diff --git a/classes/bank/BAV_Bank.php b/classes/bank/BAV_Bank.php index e042e5fd..ea399826 100644 --- a/classes/bank/BAV_Bank.php +++ b/classes/bank/BAV_Bank.php @@ -36,7 +36,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Bank extends BAV +class BAV_Bank extends BAV { diff --git a/classes/bank/exception/BAV_AgencyException.php b/classes/bank/exception/BAV_AgencyException.php index fd1c0de1..3e65d6f2 100644 --- a/classes/bank/exception/BAV_AgencyException.php +++ b/classes/bank/exception/BAV_AgencyException.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_AgencyException extends RuntimeException +class BAV_AgencyException extends RuntimeException { diff --git a/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php b/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php index 206fa8a8..a3ffaffc 100644 --- a/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php +++ b/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php @@ -26,7 +26,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_AgencyException_UndefinedAttribute extends BAV_AgencyException +class BAV_AgencyException_UndefinedAttribute extends BAV_AgencyException { diff --git a/classes/class/BAV_ClassFile.php b/classes/class/BAV_ClassFile.php index 9d7e604b..36255b3c 100644 --- a/classes/class/BAV_ClassFile.php +++ b/classes/class/BAV_ClassFile.php @@ -27,7 +27,7 @@ * * @package classes */ -class BAV_ClassFile extends BAV +class BAV_ClassFile extends BAV { diff --git a/classes/class/exception/BAV_ClassFileException.php b/classes/class/exception/BAV_ClassFileException.php index 2e5efe80..7be15978 100644 --- a/classes/class/exception/BAV_ClassFileException.php +++ b/classes/class/exception/BAV_ClassFileException.php @@ -24,7 +24,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_ClassFileException extends RuntimeException +class BAV_ClassFileException extends RuntimeException { diff --git a/classes/class/exception/BAV_ClassFileException_IO.php b/classes/class/exception/BAV_ClassFileException_IO.php index 02a0d76a..d588f344 100644 --- a/classes/class/exception/BAV_ClassFileException_IO.php +++ b/classes/class/exception/BAV_ClassFileException_IO.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_ClassFileException_IO extends BAV_ClassFileException +class BAV_ClassFileException_IO extends BAV_ClassFileException { diff --git a/classes/class/exception/BAV_ClassFileException_MissingClass.php b/classes/class/exception/BAV_ClassFileException_MissingClass.php index fae154af..14c68b94 100644 --- a/classes/class/exception/BAV_ClassFileException_MissingClass.php +++ b/classes/class/exception/BAV_ClassFileException_MissingClass.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_ClassFileException_MissingClass extends BAV_ClassFileException +class BAV_ClassFileException_MissingClass extends BAV_ClassFileException { diff --git a/classes/dataBackend/BAV_DataBackend.php b/classes/dataBackend/BAV_DataBackend.php index df8be69d..7757f577 100644 --- a/classes/dataBackend/BAV_DataBackend.php +++ b/classes/dataBackend/BAV_DataBackend.php @@ -38,7 +38,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class BAV_DataBackend extends BAV +abstract class BAV_DataBackend extends BAV { diff --git a/classes/dataBackend/BAV_DataBackend_File.php b/classes/dataBackend/BAV_DataBackend_File.php index ef503646..937385e4 100644 --- a/classes/dataBackend/BAV_DataBackend_File.php +++ b/classes/dataBackend/BAV_DataBackend_File.php @@ -36,7 +36,7 @@ * * @FIXME BAV_DataBackend_File is broken as Bundesbank appends new Banks at the end of the file */ -class BAV_DataBackend_File extends BAV_DataBackend +class BAV_DataBackend_File extends BAV_DataBackend { diff --git a/classes/dataBackend/BAV_DataBackend_PDO.php b/classes/dataBackend/BAV_DataBackend_PDO.php index b432e313..b75e8e0c 100644 --- a/classes/dataBackend/BAV_DataBackend_PDO.php +++ b/classes/dataBackend/BAV_DataBackend_PDO.php @@ -37,7 +37,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_DataBackend_PDO extends BAV_DataBackend +class BAV_DataBackend_PDO extends BAV_DataBackend { diff --git a/classes/dataBackend/exception/BAV_DataBackendException.php b/classes/dataBackend/exception/BAV_DataBackendException.php index f86dcc70..8e4190ec 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException.php +++ b/classes/dataBackend/exception/BAV_DataBackendException.php @@ -24,7 +24,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_DataBackendException extends RuntimeException +class BAV_DataBackendException extends RuntimeException { diff --git a/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php b/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php index 674d8c2a..a78e251e 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php +++ b/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_DataBackendException_BankNotFound extends BAV_DataBackendException +class BAV_DataBackendException_BankNotFound extends BAV_DataBackendException { diff --git a/classes/dataBackend/exception/BAV_DataBackendException_IO.php b/classes/dataBackend/exception/BAV_DataBackendException_IO.php index 0f302edc..95eca651 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException_IO.php +++ b/classes/dataBackend/exception/BAV_DataBackendException_IO.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_DataBackendException_IO extends BAV_DataBackendException +class BAV_DataBackendException_IO extends BAV_DataBackendException { diff --git a/classes/dataBackend/exception/BAV_DataBackendException_IO_MissingAttributes.php b/classes/dataBackend/exception/BAV_DataBackendException_IO_MissingAttributes.php index 962b5e5d..7e8f3f8e 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException_IO_MissingAttributes.php +++ b/classes/dataBackend/exception/BAV_DataBackendException_IO_MissingAttributes.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_DataBackendException_IO_MissingAttributes extends BAV_DataBackendException_IO +class BAV_DataBackendException_IO_MissingAttributes extends BAV_DataBackendException_IO { diff --git a/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php b/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php index 22d28d8b..3a70216b 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php +++ b/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class BAV_DataBackendException_NoMainAgency extends BAV_DataBackendException +class BAV_DataBackendException_NoMainAgency extends BAV_DataBackendException { diff --git a/classes/dataBackend/fileParser/BAV_FileParser.php b/classes/dataBackend/fileParser/BAV_FileParser.php index 0e6a0aa1..059a7bd0 100644 --- a/classes/dataBackend/fileParser/BAV_FileParser.php +++ b/classes/dataBackend/fileParser/BAV_FileParser.php @@ -34,7 +34,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_FileParser extends BAV +class BAV_FileParser extends BAV { diff --git a/classes/dataBackend/fileParser/BAV_FileParserContext.php b/classes/dataBackend/fileParser/BAV_FileParserContext.php index c539e7c3..e69fa261 100644 --- a/classes/dataBackend/fileParser/BAV_FileParserContext.php +++ b/classes/dataBackend/fileParser/BAV_FileParserContext.php @@ -30,7 +30,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_FileParserContext extends BAV +class BAV_FileParserContext extends BAV { diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserContextException.php b/classes/dataBackend/fileParser/exception/BAV_FileParserContextException.php index 118a0e2e..9eab1628 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserContextException.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserContextException.php @@ -24,7 +24,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_FileParserContextException extends RuntimeException +class BAV_FileParserContextException extends RuntimeException { diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserContextException_Undefined.php b/classes/dataBackend/fileParser/exception/BAV_FileParserContextException_Undefined.php index b1e5646d..a395246b 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserContextException_Undefined.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserContextException_Undefined.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_FileParserContextException_Undefined extends BAV_FileParserContextException +class BAV_FileParserContextException_Undefined extends BAV_FileParserContextException { diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserException.php b/classes/dataBackend/fileParser/exception/BAV_FileParserException.php index 96262c97..b7ae5d4c 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserException.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserException.php @@ -24,7 +24,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_FileParserException extends RuntimeException +class BAV_FileParserException extends RuntimeException { diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php b/classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php index 7cd7c64c..8d7293cb 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_FileParserException_FileNotExists extends BAV_FileParserException +class BAV_FileParserException_FileNotExists extends BAV_FileParserException { diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserException_IO.php b/classes/dataBackend/fileParser/exception/BAV_FileParserException_IO.php index be7981d9..69f99863 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserException_IO.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserException_IO.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_FileParserException_IO extends BAV_FileParserException +class BAV_FileParserException_IO extends BAV_FileParserException { diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserException_ParseError.php b/classes/dataBackend/fileParser/exception/BAV_FileParserException_ParseError.php index af75e83e..d9653375 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserException_ParseError.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserException_ParseError.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_FileParserException_ParseError extends BAV_FileParserException +class BAV_FileParserException_ParseError extends BAV_FileParserException { diff --git a/classes/encoding/BAV_Encoding.php b/classes/encoding/BAV_Encoding.php index f1e4e8c2..c6c8c6e8 100644 --- a/classes/encoding/BAV_Encoding.php +++ b/classes/encoding/BAV_Encoding.php @@ -33,7 +33,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class BAV_Encoding extends BAV +abstract class BAV_Encoding extends BAV { diff --git a/classes/encoding/BAV_Encoding_ISO8859.php b/classes/encoding/BAV_Encoding_ISO8859.php index 5a6d6f76..59562508 100644 --- a/classes/encoding/BAV_Encoding_ISO8859.php +++ b/classes/encoding/BAV_Encoding_ISO8859.php @@ -29,7 +29,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Encoding_ISO8859 extends BAV_Encoding +class BAV_Encoding_ISO8859 extends BAV_Encoding { /** diff --git a/classes/encoding/BAV_Encoding_Iconv.php b/classes/encoding/BAV_Encoding_Iconv.php index 8ee975a0..ac1d2b78 100644 --- a/classes/encoding/BAV_Encoding_Iconv.php +++ b/classes/encoding/BAV_Encoding_Iconv.php @@ -30,7 +30,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Encoding_Iconv extends BAV_Encoding +class BAV_Encoding_Iconv extends BAV_Encoding { diff --git a/classes/encoding/BAV_Encoding_MB.php b/classes/encoding/BAV_Encoding_MB.php index 20f75e38..bdb502e6 100644 --- a/classes/encoding/BAV_Encoding_MB.php +++ b/classes/encoding/BAV_Encoding_MB.php @@ -29,7 +29,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Encoding_MB extends BAV_Encoding +class BAV_Encoding_MB extends BAV_Encoding { /** diff --git a/classes/encoding/exception/BAV_EncodingException.php b/classes/encoding/exception/BAV_EncodingException.php index 9bafe141..af4f8e77 100644 --- a/classes/encoding/exception/BAV_EncodingException.php +++ b/classes/encoding/exception/BAV_EncodingException.php @@ -24,7 +24,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_EncodingException extends RuntimeException +class BAV_EncodingException extends RuntimeException { diff --git a/classes/encoding/exception/BAV_EncodingException_Unsupported.php b/classes/encoding/exception/BAV_EncodingException_Unsupported.php index 4126efd2..4efea825 100644 --- a/classes/encoding/exception/BAV_EncodingException_Unsupported.php +++ b/classes/encoding/exception/BAV_EncodingException_Unsupported.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_EncodingException_Unsupported extends BAV_EncodingException +class BAV_EncodingException_Unsupported extends BAV_EncodingException { diff --git a/classes/validator/BAV_Validator.php b/classes/validator/BAV_Validator.php index fbd454b6..86e610ab 100644 --- a/classes/validator/BAV_Validator.php +++ b/classes/validator/BAV_Validator.php @@ -29,7 +29,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class BAV_Validator extends BAV +abstract class BAV_Validator extends BAV { diff --git a/classes/validator/BAV_Validator_Chain.php b/classes/validator/BAV_Validator_Chain.php index f0982765..1fa35659 100644 --- a/classes/validator/BAV_Validator_Chain.php +++ b/classes/validator/BAV_Validator_Chain.php @@ -30,7 +30,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_Chain extends BAV_Validator +class BAV_Validator_Chain extends BAV_Validator { diff --git a/classes/validator/BAV_Validator_Iteration.php b/classes/validator/BAV_Validator_Iteration.php index 11a91db8..940de593 100644 --- a/classes/validator/BAV_Validator_Iteration.php +++ b/classes/validator/BAV_Validator_Iteration.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class BAV_Validator_Iteration extends BAV_Validator +abstract class BAV_Validator_Iteration extends BAV_Validator { diff --git a/classes/validator/BAV_Validator_Iteration_Transformation.php b/classes/validator/BAV_Validator_Iteration_Transformation.php index 55f91f55..7264dddd 100644 --- a/classes/validator/BAV_Validator_Iteration_Transformation.php +++ b/classes/validator/BAV_Validator_Iteration_Transformation.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class BAV_Validator_Iteration_Transformation extends BAV_Validator_Iteration +abstract class BAV_Validator_Iteration_Transformation extends BAV_Validator_Iteration { diff --git a/classes/validator/BAV_Validator_Iteration_Weighted.php b/classes/validator/BAV_Validator_Iteration_Weighted.php index c1523c14..e82a2e4a 100644 --- a/classes/validator/BAV_Validator_Iteration_Weighted.php +++ b/classes/validator/BAV_Validator_Iteration_Weighted.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class BAV_Validator_Iteration_Weighted extends BAV_Validator_Iteration +abstract class BAV_Validator_Iteration_Weighted extends BAV_Validator_Iteration { diff --git a/classes/validator/exception/BAV_ValidatorException.php b/classes/validator/exception/BAV_ValidatorException.php index 870d4905..39a2d064 100644 --- a/classes/validator/exception/BAV_ValidatorException.php +++ b/classes/validator/exception/BAV_ValidatorException.php @@ -24,7 +24,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_ValidatorException extends RuntimeException +class BAV_ValidatorException extends RuntimeException { diff --git a/classes/validator/exception/BAV_ValidatorException_ESER.php b/classes/validator/exception/BAV_ValidatorException_ESER.php index 2b6b258a..aec2abad 100644 --- a/classes/validator/exception/BAV_ValidatorException_ESER.php +++ b/classes/validator/exception/BAV_ValidatorException_ESER.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_ValidatorException_ESER extends BAV_ValidatorException +class BAV_ValidatorException_ESER extends BAV_ValidatorException { diff --git a/classes/validator/exception/BAV_ValidatorException_NotExists.php b/classes/validator/exception/BAV_ValidatorException_NotExists.php index a1e4bfd1..ee26bddf 100644 --- a/classes/validator/exception/BAV_ValidatorException_NotExists.php +++ b/classes/validator/exception/BAV_ValidatorException_NotExists.php @@ -26,7 +26,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_ValidatorException_NotExists extends BAV_ValidatorException +class BAV_ValidatorException_NotExists extends BAV_ValidatorException { diff --git a/classes/validator/exception/BAV_ValidatorException_OutOfBounds.php b/classes/validator/exception/BAV_ValidatorException_OutOfBounds.php index 6bcc7be7..edba71a6 100644 --- a/classes/validator/exception/BAV_ValidatorException_OutOfBounds.php +++ b/classes/validator/exception/BAV_ValidatorException_OutOfBounds.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_ValidatorException_OutOfBounds extends BAV_ValidatorException +class BAV_ValidatorException_OutOfBounds extends BAV_ValidatorException { diff --git a/classes/validator/validators/BAV_Validator_00.php b/classes/validator/validators/BAV_Validator_00.php index 09347b1c..f9112ad7 100644 --- a/classes/validator/validators/BAV_Validator_00.php +++ b/classes/validator/validators/BAV_Validator_00.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_00 extends BAV_Validator_Iteration_Weighted +class BAV_Validator_00 extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_01.php b/classes/validator/validators/BAV_Validator_01.php index d14203cf..d2ed057d 100644 --- a/classes/validator/validators/BAV_Validator_01.php +++ b/classes/validator/validators/BAV_Validator_01.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_01 extends BAV_Validator_Iteration_Weighted +class BAV_Validator_01 extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_02.php b/classes/validator/validators/BAV_Validator_02.php index 1a30d356..5f1683b7 100644 --- a/classes/validator/validators/BAV_Validator_02.php +++ b/classes/validator/validators/BAV_Validator_02.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_02 extends BAV_Validator_Iteration_Weighted +class BAV_Validator_02 extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_03.php b/classes/validator/validators/BAV_Validator_03.php index c527b1e0..209976b1 100644 --- a/classes/validator/validators/BAV_Validator_03.php +++ b/classes/validator/validators/BAV_Validator_03.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_03 extends BAV_Validator_01 +class BAV_Validator_03 extends BAV_Validator_01 { diff --git a/classes/validator/validators/BAV_Validator_04.php b/classes/validator/validators/BAV_Validator_04.php index 1a6dacdc..f0bd0ca0 100644 --- a/classes/validator/validators/BAV_Validator_04.php +++ b/classes/validator/validators/BAV_Validator_04.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_04 extends BAV_Validator_02 +class BAV_Validator_04 extends BAV_Validator_02 { diff --git a/classes/validator/validators/BAV_Validator_05.php b/classes/validator/validators/BAV_Validator_05.php index 0f879392..ae1dba71 100644 --- a/classes/validator/validators/BAV_Validator_05.php +++ b/classes/validator/validators/BAV_Validator_05.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_05 extends BAV_Validator_01 +class BAV_Validator_05 extends BAV_Validator_01 { diff --git a/classes/validator/validators/BAV_Validator_06.php b/classes/validator/validators/BAV_Validator_06.php index a8d71592..fd5cc6b9 100644 --- a/classes/validator/validators/BAV_Validator_06.php +++ b/classes/validator/validators/BAV_Validator_06.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_06 extends BAV_Validator_Iteration_Weighted +class BAV_Validator_06 extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_07.php b/classes/validator/validators/BAV_Validator_07.php index bd1c7d94..39c7afbc 100644 --- a/classes/validator/validators/BAV_Validator_07.php +++ b/classes/validator/validators/BAV_Validator_07.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_07 extends BAV_Validator_02 +class BAV_Validator_07 extends BAV_Validator_02 { diff --git a/classes/validator/validators/BAV_Validator_08.php b/classes/validator/validators/BAV_Validator_08.php index 435f7bf1..358b9a7b 100644 --- a/classes/validator/validators/BAV_Validator_08.php +++ b/classes/validator/validators/BAV_Validator_08.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_08 extends BAV_Validator_00 +class BAV_Validator_08 extends BAV_Validator_00 { diff --git a/classes/validator/validators/BAV_Validator_09.php b/classes/validator/validators/BAV_Validator_09.php index bf93172e..03895019 100644 --- a/classes/validator/validators/BAV_Validator_09.php +++ b/classes/validator/validators/BAV_Validator_09.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_09 extends BAV_Validator +class BAV_Validator_09 extends BAV_Validator { diff --git a/classes/validator/validators/BAV_Validator_10.php b/classes/validator/validators/BAV_Validator_10.php index eea34535..bc8e153c 100644 --- a/classes/validator/validators/BAV_Validator_10.php +++ b/classes/validator/validators/BAV_Validator_10.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_10 extends BAV_Validator_06 +class BAV_Validator_10 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_11.php b/classes/validator/validators/BAV_Validator_11.php index 72961bb7..bbac481c 100644 --- a/classes/validator/validators/BAV_Validator_11.php +++ b/classes/validator/validators/BAV_Validator_11.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_11 extends BAV_Validator_06 +class BAV_Validator_11 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_13.php b/classes/validator/validators/BAV_Validator_13.php index 9f590aed..76b088fc 100644 --- a/classes/validator/validators/BAV_Validator_13.php +++ b/classes/validator/validators/BAV_Validator_13.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_13 extends BAV_Validator_00 +class BAV_Validator_13 extends BAV_Validator_00 { diff --git a/classes/validator/validators/BAV_Validator_14.php b/classes/validator/validators/BAV_Validator_14.php index f9d8afd8..69301e06 100644 --- a/classes/validator/validators/BAV_Validator_14.php +++ b/classes/validator/validators/BAV_Validator_14.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_14 extends BAV_Validator_02 +class BAV_Validator_14 extends BAV_Validator_02 { diff --git a/classes/validator/validators/BAV_Validator_15.php b/classes/validator/validators/BAV_Validator_15.php index 003857c4..2bcdafee 100644 --- a/classes/validator/validators/BAV_Validator_15.php +++ b/classes/validator/validators/BAV_Validator_15.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_15 extends BAV_Validator_06 +class BAV_Validator_15 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_16.php b/classes/validator/validators/BAV_Validator_16.php index 0283744c..53007ae6 100644 --- a/classes/validator/validators/BAV_Validator_16.php +++ b/classes/validator/validators/BAV_Validator_16.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_16 extends BAV_Validator_06 +class BAV_Validator_16 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_17.php b/classes/validator/validators/BAV_Validator_17.php index c8c103b2..1a84a066 100644 --- a/classes/validator/validators/BAV_Validator_17.php +++ b/classes/validator/validators/BAV_Validator_17.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_17 extends BAV_Validator_Iteration_Weighted +class BAV_Validator_17 extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_18.php b/classes/validator/validators/BAV_Validator_18.php index b75a02ed..a55d4ad3 100644 --- a/classes/validator/validators/BAV_Validator_18.php +++ b/classes/validator/validators/BAV_Validator_18.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_18 extends BAV_Validator_01 +class BAV_Validator_18 extends BAV_Validator_01 { diff --git a/classes/validator/validators/BAV_Validator_19.php b/classes/validator/validators/BAV_Validator_19.php index 95dde265..e4db27ed 100644 --- a/classes/validator/validators/BAV_Validator_19.php +++ b/classes/validator/validators/BAV_Validator_19.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_19 extends BAV_Validator_06 +class BAV_Validator_19 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_20.php b/classes/validator/validators/BAV_Validator_20.php index c0cdc753..6f0a522f 100644 --- a/classes/validator/validators/BAV_Validator_20.php +++ b/classes/validator/validators/BAV_Validator_20.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_20 extends BAV_Validator_06 +class BAV_Validator_20 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_21.php b/classes/validator/validators/BAV_Validator_21.php index 15c7addc..b4125d9e 100644 --- a/classes/validator/validators/BAV_Validator_21.php +++ b/classes/validator/validators/BAV_Validator_21.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_21 extends BAV_Validator_00 +class BAV_Validator_21 extends BAV_Validator_00 { diff --git a/classes/validator/validators/BAV_Validator_22.php b/classes/validator/validators/BAV_Validator_22.php index 01047b5e..3034bf29 100644 --- a/classes/validator/validators/BAV_Validator_22.php +++ b/classes/validator/validators/BAV_Validator_22.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_22 extends BAV_Validator_Iteration_Weighted +class BAV_Validator_22 extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_23.php b/classes/validator/validators/BAV_Validator_23.php index 81d9be73..2c032fa8 100644 --- a/classes/validator/validators/BAV_Validator_23.php +++ b/classes/validator/validators/BAV_Validator_23.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_23 extends BAV_Validator_16 +class BAV_Validator_23 extends BAV_Validator_16 { diff --git a/classes/validator/validators/BAV_Validator_24.php b/classes/validator/validators/BAV_Validator_24.php index 12858e9f..6d3b9a8e 100644 --- a/classes/validator/validators/BAV_Validator_24.php +++ b/classes/validator/validators/BAV_Validator_24.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_24 extends BAV_Validator_Iteration_Weighted +class BAV_Validator_24 extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_25.php b/classes/validator/validators/BAV_Validator_25.php index 61b2d199..cc4da9dc 100644 --- a/classes/validator/validators/BAV_Validator_25.php +++ b/classes/validator/validators/BAV_Validator_25.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_25 extends BAV_Validator_Iteration_Weighted +class BAV_Validator_25 extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_26.php b/classes/validator/validators/BAV_Validator_26.php index 6cc1a77f..adb96d0a 100644 --- a/classes/validator/validators/BAV_Validator_26.php +++ b/classes/validator/validators/BAV_Validator_26.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_26 extends BAV_Validator_06 +class BAV_Validator_26 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_27.php b/classes/validator/validators/BAV_Validator_27.php index f16930b3..4d8b7204 100644 --- a/classes/validator/validators/BAV_Validator_27.php +++ b/classes/validator/validators/BAV_Validator_27.php @@ -25,7 +25,7 @@ */ -class BAV_Validator_27 extends BAV_Validator_Iteration_Transformation +class BAV_Validator_27 extends BAV_Validator_Iteration_Transformation { diff --git a/classes/validator/validators/BAV_Validator_28.php b/classes/validator/validators/BAV_Validator_28.php index 8d205332..33cedd39 100644 --- a/classes/validator/validators/BAV_Validator_28.php +++ b/classes/validator/validators/BAV_Validator_28.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_28 extends BAV_Validator_06 +class BAV_Validator_28 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_29.php b/classes/validator/validators/BAV_Validator_29.php index 7f9a7415..c2f11c21 100644 --- a/classes/validator/validators/BAV_Validator_29.php +++ b/classes/validator/validators/BAV_Validator_29.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_29 extends BAV_Validator_Iteration_Transformation +class BAV_Validator_29 extends BAV_Validator_Iteration_Transformation { diff --git a/classes/validator/validators/BAV_Validator_30.php b/classes/validator/validators/BAV_Validator_30.php index cda0dd64..6e5d1c54 100644 --- a/classes/validator/validators/BAV_Validator_30.php +++ b/classes/validator/validators/BAV_Validator_30.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_30 extends BAV_Validator_00 +class BAV_Validator_30 extends BAV_Validator_00 { diff --git a/classes/validator/validators/BAV_Validator_31.php b/classes/validator/validators/BAV_Validator_31.php index c3e9c86d..6b5cf3c3 100644 --- a/classes/validator/validators/BAV_Validator_31.php +++ b/classes/validator/validators/BAV_Validator_31.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_31 extends BAV_Validator_Iteration_Weighted +class BAV_Validator_31 extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_32.php b/classes/validator/validators/BAV_Validator_32.php index e183d516..e19e245f 100644 --- a/classes/validator/validators/BAV_Validator_32.php +++ b/classes/validator/validators/BAV_Validator_32.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_32 extends BAV_Validator_06 +class BAV_Validator_32 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_33.php b/classes/validator/validators/BAV_Validator_33.php index 4895e0e8..33dba3b4 100644 --- a/classes/validator/validators/BAV_Validator_33.php +++ b/classes/validator/validators/BAV_Validator_33.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_33 extends BAV_Validator_06 +class BAV_Validator_33 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_34.php b/classes/validator/validators/BAV_Validator_34.php index 20b7e254..6eac55c9 100644 --- a/classes/validator/validators/BAV_Validator_34.php +++ b/classes/validator/validators/BAV_Validator_34.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_34 extends BAV_Validator_28 +class BAV_Validator_34 extends BAV_Validator_28 { diff --git a/classes/validator/validators/BAV_Validator_35.php b/classes/validator/validators/BAV_Validator_35.php index c59e459d..4cf3f1d1 100644 --- a/classes/validator/validators/BAV_Validator_35.php +++ b/classes/validator/validators/BAV_Validator_35.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_35 extends BAV_Validator_Iteration_Weighted +class BAV_Validator_35 extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_36.php b/classes/validator/validators/BAV_Validator_36.php index 2d288e01..d6fba4be 100644 --- a/classes/validator/validators/BAV_Validator_36.php +++ b/classes/validator/validators/BAV_Validator_36.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_36 extends BAV_Validator_06 +class BAV_Validator_36 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_37.php b/classes/validator/validators/BAV_Validator_37.php index 149b3428..961784dd 100644 --- a/classes/validator/validators/BAV_Validator_37.php +++ b/classes/validator/validators/BAV_Validator_37.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_37 extends BAV_Validator_06 +class BAV_Validator_37 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_38.php b/classes/validator/validators/BAV_Validator_38.php index 7f63adad..a733cbc1 100644 --- a/classes/validator/validators/BAV_Validator_38.php +++ b/classes/validator/validators/BAV_Validator_38.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_38 extends BAV_Validator_06 +class BAV_Validator_38 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_39.php b/classes/validator/validators/BAV_Validator_39.php index 2447138d..bc116700 100644 --- a/classes/validator/validators/BAV_Validator_39.php +++ b/classes/validator/validators/BAV_Validator_39.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_39 extends BAV_Validator_06 +class BAV_Validator_39 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_40.php b/classes/validator/validators/BAV_Validator_40.php index 2d8a434d..af7d5731 100644 --- a/classes/validator/validators/BAV_Validator_40.php +++ b/classes/validator/validators/BAV_Validator_40.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_40 extends BAV_Validator_06 +class BAV_Validator_40 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_41.php b/classes/validator/validators/BAV_Validator_41.php index 0b0880f8..d6beec2b 100644 --- a/classes/validator/validators/BAV_Validator_41.php +++ b/classes/validator/validators/BAV_Validator_41.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_41 extends BAV_Validator_00 +class BAV_Validator_41 extends BAV_Validator_00 { diff --git a/classes/validator/validators/BAV_Validator_42.php b/classes/validator/validators/BAV_Validator_42.php index 7f21f39f..ad802967 100644 --- a/classes/validator/validators/BAV_Validator_42.php +++ b/classes/validator/validators/BAV_Validator_42.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_42 extends BAV_Validator_06 +class BAV_Validator_42 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_43.php b/classes/validator/validators/BAV_Validator_43.php index bf7c7bbc..41edd3fb 100644 --- a/classes/validator/validators/BAV_Validator_43.php +++ b/classes/validator/validators/BAV_Validator_43.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_43 extends BAV_Validator_Iteration_Weighted +class BAV_Validator_43 extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_44.php b/classes/validator/validators/BAV_Validator_44.php index 56dfc480..40058832 100644 --- a/classes/validator/validators/BAV_Validator_44.php +++ b/classes/validator/validators/BAV_Validator_44.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_44 extends BAV_Validator_33 +class BAV_Validator_44 extends BAV_Validator_33 { diff --git a/classes/validator/validators/BAV_Validator_45.php b/classes/validator/validators/BAV_Validator_45.php index fc8dc4c7..15bd64fb 100644 --- a/classes/validator/validators/BAV_Validator_45.php +++ b/classes/validator/validators/BAV_Validator_45.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_45 extends BAV_Validator_00 +class BAV_Validator_45 extends BAV_Validator_00 { diff --git a/classes/validator/validators/BAV_Validator_46.php b/classes/validator/validators/BAV_Validator_46.php index 4299e28d..750d0b8a 100644 --- a/classes/validator/validators/BAV_Validator_46.php +++ b/classes/validator/validators/BAV_Validator_46.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_46 extends BAV_Validator_06 +class BAV_Validator_46 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_47.php b/classes/validator/validators/BAV_Validator_47.php index 08cec012..644e73ac 100644 --- a/classes/validator/validators/BAV_Validator_47.php +++ b/classes/validator/validators/BAV_Validator_47.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_47 extends BAV_Validator_06 +class BAV_Validator_47 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_48.php b/classes/validator/validators/BAV_Validator_48.php index f4295c46..5e1905df 100644 --- a/classes/validator/validators/BAV_Validator_48.php +++ b/classes/validator/validators/BAV_Validator_48.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_48 extends BAV_Validator_06 +class BAV_Validator_48 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_49.php b/classes/validator/validators/BAV_Validator_49.php index 4d7d8435..465993a0 100644 --- a/classes/validator/validators/BAV_Validator_49.php +++ b/classes/validator/validators/BAV_Validator_49.php @@ -30,7 +30,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_49 extends BAV_Validator_Chain +class BAV_Validator_49 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_50.php b/classes/validator/validators/BAV_Validator_50.php index 21dccc65..d5f38243 100644 --- a/classes/validator/validators/BAV_Validator_50.php +++ b/classes/validator/validators/BAV_Validator_50.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_50 extends BAV_Validator_06 +class BAV_Validator_50 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_51.php b/classes/validator/validators/BAV_Validator_51.php index 7a17bd19..05e4022a 100644 --- a/classes/validator/validators/BAV_Validator_51.php +++ b/classes/validator/validators/BAV_Validator_51.php @@ -31,7 +31,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_51 extends BAV_Validator_Chain +class BAV_Validator_51 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_51x.php b/classes/validator/validators/BAV_Validator_51x.php index 35ed61a7..d095bc81 100644 --- a/classes/validator/validators/BAV_Validator_51x.php +++ b/classes/validator/validators/BAV_Validator_51x.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_51x extends BAV_Validator_Iteration_Weighted +class BAV_Validator_51x extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_52.php b/classes/validator/validators/BAV_Validator_52.php index 5a33d0db..a4193c46 100644 --- a/classes/validator/validators/BAV_Validator_52.php +++ b/classes/validator/validators/BAV_Validator_52.php @@ -27,7 +27,7 @@ */ -class BAV_Validator_52 extends BAV_Validator_Iteration_Weighted implements BAV_Validator_BankDependent +class BAV_Validator_52 extends BAV_Validator_Iteration_Weighted implements BAV_Validator_BankDependent { diff --git a/classes/validator/validators/BAV_Validator_53.php b/classes/validator/validators/BAV_Validator_53.php index 37b46602..4474c4e7 100644 --- a/classes/validator/validators/BAV_Validator_53.php +++ b/classes/validator/validators/BAV_Validator_53.php @@ -23,7 +23,7 @@ */ -class BAV_Validator_53 extends BAV_Validator_52 +class BAV_Validator_53 extends BAV_Validator_52 { diff --git a/classes/validator/validators/BAV_Validator_54.php b/classes/validator/validators/BAV_Validator_54.php index 799ff54a..4cea386d 100644 --- a/classes/validator/validators/BAV_Validator_54.php +++ b/classes/validator/validators/BAV_Validator_54.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_54 extends BAV_Validator_Iteration_Weighted +class BAV_Validator_54 extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_55.php b/classes/validator/validators/BAV_Validator_55.php index 0d11ad6b..159c03ca 100644 --- a/classes/validator/validators/BAV_Validator_55.php +++ b/classes/validator/validators/BAV_Validator_55.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_55 extends BAV_Validator_06 +class BAV_Validator_55 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_56.php b/classes/validator/validators/BAV_Validator_56.php index 1d02a92d..7f10a06a 100644 --- a/classes/validator/validators/BAV_Validator_56.php +++ b/classes/validator/validators/BAV_Validator_56.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_56 extends BAV_Validator_Iteration_Weighted +class BAV_Validator_56 extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_57.php b/classes/validator/validators/BAV_Validator_57.php index 7765c1c0..390d50ba 100644 --- a/classes/validator/validators/BAV_Validator_57.php +++ b/classes/validator/validators/BAV_Validator_57.php @@ -21,7 +21,7 @@ */ -class BAV_Validator_57 extends BAV_Validator +class BAV_Validator_57 extends BAV_Validator { diff --git a/classes/validator/validators/BAV_Validator_58.php b/classes/validator/validators/BAV_Validator_58.php index b833431f..c277201f 100644 --- a/classes/validator/validators/BAV_Validator_58.php +++ b/classes/validator/validators/BAV_Validator_58.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_58 extends BAV_Validator_02 +class BAV_Validator_58 extends BAV_Validator_02 { diff --git a/classes/validator/validators/BAV_Validator_59.php b/classes/validator/validators/BAV_Validator_59.php index 572e5bf4..c56779df 100644 --- a/classes/validator/validators/BAV_Validator_59.php +++ b/classes/validator/validators/BAV_Validator_59.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_59 extends BAV_Validator_00 +class BAV_Validator_59 extends BAV_Validator_00 { diff --git a/classes/validator/validators/BAV_Validator_60.php b/classes/validator/validators/BAV_Validator_60.php index 30ddf7df..d022fa6d 100644 --- a/classes/validator/validators/BAV_Validator_60.php +++ b/classes/validator/validators/BAV_Validator_60.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_60 extends BAV_Validator_00 +class BAV_Validator_60 extends BAV_Validator_00 { diff --git a/classes/validator/validators/BAV_Validator_61.php b/classes/validator/validators/BAV_Validator_61.php index f2ea5372..46cb47d0 100644 --- a/classes/validator/validators/BAV_Validator_61.php +++ b/classes/validator/validators/BAV_Validator_61.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_61 extends BAV_Validator_Iteration_Weighted +class BAV_Validator_61 extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_62.php b/classes/validator/validators/BAV_Validator_62.php index 7c4e5567..64b22f94 100644 --- a/classes/validator/validators/BAV_Validator_62.php +++ b/classes/validator/validators/BAV_Validator_62.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_62 extends BAV_Validator_Iteration_Weighted +class BAV_Validator_62 extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_63.php b/classes/validator/validators/BAV_Validator_63.php index 0259b8ec..783b2d4c 100644 --- a/classes/validator/validators/BAV_Validator_63.php +++ b/classes/validator/validators/BAV_Validator_63.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_63 extends BAV_Validator_Iteration_Weighted +class BAV_Validator_63 extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_64.php b/classes/validator/validators/BAV_Validator_64.php index 883d3a78..7a566ac6 100644 --- a/classes/validator/validators/BAV_Validator_64.php +++ b/classes/validator/validators/BAV_Validator_64.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_64 extends BAV_Validator_06 +class BAV_Validator_64 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_65.php b/classes/validator/validators/BAV_Validator_65.php index 4a191a40..f08a7fcc 100644 --- a/classes/validator/validators/BAV_Validator_65.php +++ b/classes/validator/validators/BAV_Validator_65.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_65 extends BAV_Validator_00 +class BAV_Validator_65 extends BAV_Validator_00 { diff --git a/classes/validator/validators/BAV_Validator_66.php b/classes/validator/validators/BAV_Validator_66.php index dfcd8cc2..ba020f61 100644 --- a/classes/validator/validators/BAV_Validator_66.php +++ b/classes/validator/validators/BAV_Validator_66.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_66 extends BAV_Validator_Iteration_Weighted +class BAV_Validator_66 extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_67.php b/classes/validator/validators/BAV_Validator_67.php index a732b4ec..d3732ad9 100644 --- a/classes/validator/validators/BAV_Validator_67.php +++ b/classes/validator/validators/BAV_Validator_67.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_67 extends BAV_Validator_00 +class BAV_Validator_67 extends BAV_Validator_00 { diff --git a/classes/validator/validators/BAV_Validator_68.php b/classes/validator/validators/BAV_Validator_68.php index e64764a6..9094123e 100644 --- a/classes/validator/validators/BAV_Validator_68.php +++ b/classes/validator/validators/BAV_Validator_68.php @@ -29,7 +29,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_68 extends BAV_Validator_Chain +class BAV_Validator_68 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_69.php b/classes/validator/validators/BAV_Validator_69.php index f86d15d4..5e5fbf39 100644 --- a/classes/validator/validators/BAV_Validator_69.php +++ b/classes/validator/validators/BAV_Validator_69.php @@ -30,7 +30,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_69 extends BAV_Validator_Chain +class BAV_Validator_69 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_69b.php b/classes/validator/validators/BAV_Validator_69b.php index 469fbb4c..4deadf80 100644 --- a/classes/validator/validators/BAV_Validator_69b.php +++ b/classes/validator/validators/BAV_Validator_69b.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_69b extends BAV_Validator_Iteration_Transformation +class BAV_Validator_69b extends BAV_Validator_Iteration_Transformation { diff --git a/classes/validator/validators/BAV_Validator_70.php b/classes/validator/validators/BAV_Validator_70.php index f02b55e7..051834c6 100644 --- a/classes/validator/validators/BAV_Validator_70.php +++ b/classes/validator/validators/BAV_Validator_70.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_70 extends BAV_Validator_06 +class BAV_Validator_70 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_71.php b/classes/validator/validators/BAV_Validator_71.php index a0392c8b..841d97dc 100644 --- a/classes/validator/validators/BAV_Validator_71.php +++ b/classes/validator/validators/BAV_Validator_71.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_71 extends BAV_Validator_Iteration_Weighted +class BAV_Validator_71 extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_72.php b/classes/validator/validators/BAV_Validator_72.php index 7695854e..670838c9 100644 --- a/classes/validator/validators/BAV_Validator_72.php +++ b/classes/validator/validators/BAV_Validator_72.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_72 extends BAV_Validator_00 +class BAV_Validator_72 extends BAV_Validator_00 { diff --git a/classes/validator/validators/BAV_Validator_73.php b/classes/validator/validators/BAV_Validator_73.php index a4c89fc6..a8f371aa 100644 --- a/classes/validator/validators/BAV_Validator_73.php +++ b/classes/validator/validators/BAV_Validator_73.php @@ -26,7 +26,7 @@ */ -class BAV_Validator_73 extends BAV_Validator_Chain +class BAV_Validator_73 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_74.php b/classes/validator/validators/BAV_Validator_74.php index aab39b96..ca09a066 100644 --- a/classes/validator/validators/BAV_Validator_74.php +++ b/classes/validator/validators/BAV_Validator_74.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_74 extends BAV_Validator_00 +class BAV_Validator_74 extends BAV_Validator_00 { diff --git a/classes/validator/validators/BAV_Validator_75.php b/classes/validator/validators/BAV_Validator_75.php index 1878bda7..50b5b43d 100644 --- a/classes/validator/validators/BAV_Validator_75.php +++ b/classes/validator/validators/BAV_Validator_75.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_75 extends BAV_Validator_00 +class BAV_Validator_75 extends BAV_Validator_00 { diff --git a/classes/validator/validators/BAV_Validator_76.php b/classes/validator/validators/BAV_Validator_76.php index cd11dcef..c3a27672 100644 --- a/classes/validator/validators/BAV_Validator_76.php +++ b/classes/validator/validators/BAV_Validator_76.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_76 extends BAV_Validator_Iteration_Weighted +class BAV_Validator_76 extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_77.php b/classes/validator/validators/BAV_Validator_77.php index b75c3d54..cc2bb9fc 100644 --- a/classes/validator/validators/BAV_Validator_77.php +++ b/classes/validator/validators/BAV_Validator_77.php @@ -25,7 +25,7 @@ */ -class BAV_Validator_77 extends BAV_Validator_Chain +class BAV_Validator_77 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_77a.php b/classes/validator/validators/BAV_Validator_77a.php index c2dd6704..87dd1a85 100644 --- a/classes/validator/validators/BAV_Validator_77a.php +++ b/classes/validator/validators/BAV_Validator_77a.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_77a extends BAV_Validator_Iteration_Weighted +class BAV_Validator_77a extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_78.php b/classes/validator/validators/BAV_Validator_78.php index 349c4f1c..43535810 100644 --- a/classes/validator/validators/BAV_Validator_78.php +++ b/classes/validator/validators/BAV_Validator_78.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_78 extends BAV_Validator_00 +class BAV_Validator_78 extends BAV_Validator_00 { diff --git a/classes/validator/validators/BAV_Validator_79.php b/classes/validator/validators/BAV_Validator_79.php index 5e56931c..2c8431cb 100644 --- a/classes/validator/validators/BAV_Validator_79.php +++ b/classes/validator/validators/BAV_Validator_79.php @@ -27,7 +27,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_79 extends BAV_Validator +class BAV_Validator_79 extends BAV_Validator { diff --git a/classes/validator/validators/BAV_Validator_80.php b/classes/validator/validators/BAV_Validator_80.php index a75aeb7c..63b1aed8 100644 --- a/classes/validator/validators/BAV_Validator_80.php +++ b/classes/validator/validators/BAV_Validator_80.php @@ -26,7 +26,7 @@ */ -class BAV_Validator_80 extends BAV_Validator_Chain +class BAV_Validator_80 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_81.php b/classes/validator/validators/BAV_Validator_81.php index ce5489cf..fb2f700b 100644 --- a/classes/validator/validators/BAV_Validator_81.php +++ b/classes/validator/validators/BAV_Validator_81.php @@ -26,7 +26,7 @@ */ -class BAV_Validator_81 extends BAV_Validator_Chain +class BAV_Validator_81 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_82.php b/classes/validator/validators/BAV_Validator_82.php index aefa5cf6..317643ea 100644 --- a/classes/validator/validators/BAV_Validator_82.php +++ b/classes/validator/validators/BAV_Validator_82.php @@ -28,7 +28,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_82 extends BAV_Validator +class BAV_Validator_82 extends BAV_Validator { diff --git a/classes/validator/validators/BAV_Validator_83.php b/classes/validator/validators/BAV_Validator_83.php index 995ae7b0..1dbe66d2 100644 --- a/classes/validator/validators/BAV_Validator_83.php +++ b/classes/validator/validators/BAV_Validator_83.php @@ -27,7 +27,7 @@ */ -class BAV_Validator_83 extends BAV_Validator_Chain +class BAV_Validator_83 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_83x.php b/classes/validator/validators/BAV_Validator_83x.php index 33ffbe94..c515af32 100644 --- a/classes/validator/validators/BAV_Validator_83x.php +++ b/classes/validator/validators/BAV_Validator_83x.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_83x extends BAV_Validator_Iteration_Weighted +class BAV_Validator_83x extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_84.php b/classes/validator/validators/BAV_Validator_84.php index fcce3166..825d0917 100644 --- a/classes/validator/validators/BAV_Validator_84.php +++ b/classes/validator/validators/BAV_Validator_84.php @@ -27,7 +27,7 @@ */ -class BAV_Validator_84 extends BAV_Validator_Chain +class BAV_Validator_84 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_84b.php b/classes/validator/validators/BAV_Validator_84b.php index e2c5e256..f9f9c4b0 100644 --- a/classes/validator/validators/BAV_Validator_84b.php +++ b/classes/validator/validators/BAV_Validator_84b.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_84b extends BAV_Validator_Iteration_Weighted +class BAV_Validator_84b extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_85.php b/classes/validator/validators/BAV_Validator_85.php index d3ed652f..62b7f987 100644 --- a/classes/validator/validators/BAV_Validator_85.php +++ b/classes/validator/validators/BAV_Validator_85.php @@ -27,7 +27,7 @@ */ -class BAV_Validator_85 extends BAV_Validator_Chain +class BAV_Validator_85 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_86.php b/classes/validator/validators/BAV_Validator_86.php index 15412afa..871be971 100644 --- a/classes/validator/validators/BAV_Validator_86.php +++ b/classes/validator/validators/BAV_Validator_86.php @@ -27,7 +27,7 @@ */ -class BAV_Validator_86 extends BAV_Validator_Chain +class BAV_Validator_86 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_87.php b/classes/validator/validators/BAV_Validator_87.php index bb1284fa..d2b6d1c7 100644 --- a/classes/validator/validators/BAV_Validator_87.php +++ b/classes/validator/validators/BAV_Validator_87.php @@ -28,7 +28,7 @@ */ -class BAV_Validator_87 extends BAV_Validator_Chain +class BAV_Validator_87 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_87a.php b/classes/validator/validators/BAV_Validator_87a.php index a99fba68..b8fa271c 100644 --- a/classes/validator/validators/BAV_Validator_87a.php +++ b/classes/validator/validators/BAV_Validator_87a.php @@ -29,7 +29,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_87a extends BAV_Validator +class BAV_Validator_87a extends BAV_Validator { diff --git a/classes/validator/validators/BAV_Validator_87c.php b/classes/validator/validators/BAV_Validator_87c.php index 041cae5e..db94c9eb 100644 --- a/classes/validator/validators/BAV_Validator_87c.php +++ b/classes/validator/validators/BAV_Validator_87c.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_87c extends BAV_Validator_Iteration_Weighted +class BAV_Validator_87c extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_88.php b/classes/validator/validators/BAV_Validator_88.php index 86ac678f..c51f9c9c 100644 --- a/classes/validator/validators/BAV_Validator_88.php +++ b/classes/validator/validators/BAV_Validator_88.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_88 extends BAV_Validator_06 +class BAV_Validator_88 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_89.php b/classes/validator/validators/BAV_Validator_89.php index ca6e1bfd..b06c82ce 100644 --- a/classes/validator/validators/BAV_Validator_89.php +++ b/classes/validator/validators/BAV_Validator_89.php @@ -25,7 +25,7 @@ */ -class BAV_Validator_89 extends BAV_Validator_06 +class BAV_Validator_89 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_90.php b/classes/validator/validators/BAV_Validator_90.php index 2a491116..beca5ac5 100644 --- a/classes/validator/validators/BAV_Validator_90.php +++ b/classes/validator/validators/BAV_Validator_90.php @@ -28,7 +28,7 @@ */ -class BAV_Validator_90 extends BAV_Validator_Chain +class BAV_Validator_90 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_90c.php b/classes/validator/validators/BAV_Validator_90c.php index e170007c..627ad4f8 100644 --- a/classes/validator/validators/BAV_Validator_90c.php +++ b/classes/validator/validators/BAV_Validator_90c.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_90c extends BAV_Validator_Iteration_Weighted +class BAV_Validator_90c extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_90d.php b/classes/validator/validators/BAV_Validator_90d.php index bd218ad1..d2ad8942 100644 --- a/classes/validator/validators/BAV_Validator_90d.php +++ b/classes/validator/validators/BAV_Validator_90d.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_90d extends BAV_Validator_Iteration_Weighted +class BAV_Validator_90d extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_90e.php b/classes/validator/validators/BAV_Validator_90e.php index 515ff3c8..7ee85005 100644 --- a/classes/validator/validators/BAV_Validator_90e.php +++ b/classes/validator/validators/BAV_Validator_90e.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_90e extends BAV_Validator_Iteration_Weighted +class BAV_Validator_90e extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_90g.php b/classes/validator/validators/BAV_Validator_90g.php index 06a14cdb..5addcf73 100644 --- a/classes/validator/validators/BAV_Validator_90g.php +++ b/classes/validator/validators/BAV_Validator_90g.php @@ -21,7 +21,7 @@ */ -class BAV_Validator_90g extends BAV_Validator_Iteration_Weighted +class BAV_Validator_90g extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_91.php b/classes/validator/validators/BAV_Validator_91.php index d341ca5b..0e0c459d 100644 --- a/classes/validator/validators/BAV_Validator_91.php +++ b/classes/validator/validators/BAV_Validator_91.php @@ -25,7 +25,7 @@ */ -class BAV_Validator_91 extends BAV_Validator_Chain +class BAV_Validator_91 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_92.php b/classes/validator/validators/BAV_Validator_92.php index 37bcd728..874695df 100644 --- a/classes/validator/validators/BAV_Validator_92.php +++ b/classes/validator/validators/BAV_Validator_92.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_92 extends BAV_Validator_01 +class BAV_Validator_92 extends BAV_Validator_01 { diff --git a/classes/validator/validators/BAV_Validator_93.php b/classes/validator/validators/BAV_Validator_93.php index 521e1312..40e9c4c3 100644 --- a/classes/validator/validators/BAV_Validator_93.php +++ b/classes/validator/validators/BAV_Validator_93.php @@ -25,7 +25,7 @@ */ -class BAV_Validator_93 extends BAV_Validator_Chain +class BAV_Validator_93 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_94.php b/classes/validator/validators/BAV_Validator_94.php index dc0ba835..ad834a0f 100644 --- a/classes/validator/validators/BAV_Validator_94.php +++ b/classes/validator/validators/BAV_Validator_94.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_94 extends BAV_Validator_00 +class BAV_Validator_94 extends BAV_Validator_00 { diff --git a/classes/validator/validators/BAV_Validator_95.php b/classes/validator/validators/BAV_Validator_95.php index 36c9adf4..7c57f65f 100644 --- a/classes/validator/validators/BAV_Validator_95.php +++ b/classes/validator/validators/BAV_Validator_95.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_95 extends BAV_Validator_06 +class BAV_Validator_95 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_96.php b/classes/validator/validators/BAV_Validator_96.php index eee93113..e152b273 100644 --- a/classes/validator/validators/BAV_Validator_96.php +++ b/classes/validator/validators/BAV_Validator_96.php @@ -26,7 +26,7 @@ */ -class BAV_Validator_96 extends BAV_Validator_Chain +class BAV_Validator_96 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_97.php b/classes/validator/validators/BAV_Validator_97.php index ac70d8f9..0ea32c41 100644 --- a/classes/validator/validators/BAV_Validator_97.php +++ b/classes/validator/validators/BAV_Validator_97.php @@ -28,7 +28,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_97 extends BAV_Validator +class BAV_Validator_97 extends BAV_Validator { diff --git a/classes/validator/validators/BAV_Validator_98.php b/classes/validator/validators/BAV_Validator_98.php index dcafcbd9..5ccd3861 100644 --- a/classes/validator/validators/BAV_Validator_98.php +++ b/classes/validator/validators/BAV_Validator_98.php @@ -26,7 +26,7 @@ */ -class BAV_Validator_98 extends BAV_Validator_Chain +class BAV_Validator_98 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_99.php b/classes/validator/validators/BAV_Validator_99.php index aefbb451..1aa11b39 100644 --- a/classes/validator/validators/BAV_Validator_99.php +++ b/classes/validator/validators/BAV_Validator_99.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_99 extends BAV_Validator_06 +class BAV_Validator_99 extends BAV_Validator_06 { diff --git a/classes/validator/validators/BAV_Validator_A0.php b/classes/validator/validators/BAV_Validator_A0.php index c82547d9..2c71b020 100644 --- a/classes/validator/validators/BAV_Validator_A0.php +++ b/classes/validator/validators/BAV_Validator_A0.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_A0 extends BAV_Validator_Iteration_Weighted +class BAV_Validator_A0 extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_A1.php b/classes/validator/validators/BAV_Validator_A1.php index 40a04de1..b9641f89 100644 --- a/classes/validator/validators/BAV_Validator_A1.php +++ b/classes/validator/validators/BAV_Validator_A1.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_A1 extends BAV_Validator_00 +class BAV_Validator_A1 extends BAV_Validator_00 { diff --git a/classes/validator/validators/BAV_Validator_A2.php b/classes/validator/validators/BAV_Validator_A2.php index 7aa057ba..11cfc9b5 100644 --- a/classes/validator/validators/BAV_Validator_A2.php +++ b/classes/validator/validators/BAV_Validator_A2.php @@ -26,7 +26,7 @@ */ -class BAV_Validator_A2 extends BAV_Validator_Chain +class BAV_Validator_A2 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_A3.php b/classes/validator/validators/BAV_Validator_A3.php index 0878f0e0..508d5c94 100644 --- a/classes/validator/validators/BAV_Validator_A3.php +++ b/classes/validator/validators/BAV_Validator_A3.php @@ -26,7 +26,7 @@ */ -class BAV_Validator_A3 extends BAV_Validator_Chain +class BAV_Validator_A3 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_A4.php b/classes/validator/validators/BAV_Validator_A4.php index 4ee2f9fe..1b5932fe 100644 --- a/classes/validator/validators/BAV_Validator_A4.php +++ b/classes/validator/validators/BAV_Validator_A4.php @@ -27,7 +27,7 @@ */ -class BAV_Validator_A4 extends BAV_Validator_Chain +class BAV_Validator_A4 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_A4b.php b/classes/validator/validators/BAV_Validator_A4b.php index dad4c16f..7a6b2692 100644 --- a/classes/validator/validators/BAV_Validator_A4b.php +++ b/classes/validator/validators/BAV_Validator_A4b.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_A4b extends BAV_Validator_Iteration_Weighted +class BAV_Validator_A4b extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_A5.php b/classes/validator/validators/BAV_Validator_A5.php index 8e9fcaa1..34115d37 100644 --- a/classes/validator/validators/BAV_Validator_A5.php +++ b/classes/validator/validators/BAV_Validator_A5.php @@ -26,7 +26,7 @@ */ -class BAV_Validator_A5 extends BAV_Validator_Chain +class BAV_Validator_A5 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_A6.php b/classes/validator/validators/BAV_Validator_A6.php index 6ecc48d8..676c888f 100644 --- a/classes/validator/validators/BAV_Validator_A6.php +++ b/classes/validator/validators/BAV_Validator_A6.php @@ -28,7 +28,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_A6 extends BAV_Validator +class BAV_Validator_A6 extends BAV_Validator { diff --git a/classes/validator/validators/BAV_Validator_A7.php b/classes/validator/validators/BAV_Validator_A7.php index 2316d8c3..23f399c7 100644 --- a/classes/validator/validators/BAV_Validator_A7.php +++ b/classes/validator/validators/BAV_Validator_A7.php @@ -26,7 +26,7 @@ */ -class BAV_Validator_A7 extends BAV_Validator_Chain +class BAV_Validator_A7 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_A8.php b/classes/validator/validators/BAV_Validator_A8.php index 822f2b69..ff6f0ab6 100644 --- a/classes/validator/validators/BAV_Validator_A8.php +++ b/classes/validator/validators/BAV_Validator_A8.php @@ -31,7 +31,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_A8 extends BAV_Validator_Chain +class BAV_Validator_A8 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_A9.php b/classes/validator/validators/BAV_Validator_A9.php index 2875c387..61cb9848 100644 --- a/classes/validator/validators/BAV_Validator_A9.php +++ b/classes/validator/validators/BAV_Validator_A9.php @@ -26,7 +26,7 @@ */ -class BAV_Validator_A9 extends BAV_Validator_Chain +class BAV_Validator_A9 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_B0.php b/classes/validator/validators/BAV_Validator_B0.php index 348d72db..b4848d23 100644 --- a/classes/validator/validators/BAV_Validator_B0.php +++ b/classes/validator/validators/BAV_Validator_B0.php @@ -28,7 +28,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_B0 extends BAV_Validator +class BAV_Validator_B0 extends BAV_Validator { diff --git a/classes/validator/validators/BAV_Validator_B1.php b/classes/validator/validators/BAV_Validator_B1.php index e0542e0b..6735d856 100644 --- a/classes/validator/validators/BAV_Validator_B1.php +++ b/classes/validator/validators/BAV_Validator_B1.php @@ -26,7 +26,7 @@ */ -class BAV_Validator_B1 extends BAV_Validator_Chain +class BAV_Validator_B1 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_B2.php b/classes/validator/validators/BAV_Validator_B2.php index 49fa01d8..39b4c4a9 100644 --- a/classes/validator/validators/BAV_Validator_B2.php +++ b/classes/validator/validators/BAV_Validator_B2.php @@ -28,7 +28,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_B2 extends BAV_Validator +class BAV_Validator_B2 extends BAV_Validator { diff --git a/classes/validator/validators/BAV_Validator_B3.php b/classes/validator/validators/BAV_Validator_B3.php index 1a51a143..a0212830 100644 --- a/classes/validator/validators/BAV_Validator_B3.php +++ b/classes/validator/validators/BAV_Validator_B3.php @@ -28,7 +28,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_B3 extends BAV_Validator +class BAV_Validator_B3 extends BAV_Validator { diff --git a/classes/validator/validators/BAV_Validator_B4.php b/classes/validator/validators/BAV_Validator_B4.php index b3b4bca1..6ae9743f 100644 --- a/classes/validator/validators/BAV_Validator_B4.php +++ b/classes/validator/validators/BAV_Validator_B4.php @@ -28,7 +28,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_B4 extends BAV_Validator +class BAV_Validator_B4 extends BAV_Validator { diff --git a/classes/validator/validators/BAV_Validator_B5.php b/classes/validator/validators/BAV_Validator_B5.php index 303fcd9a..e7f22a74 100644 --- a/classes/validator/validators/BAV_Validator_B5.php +++ b/classes/validator/validators/BAV_Validator_B5.php @@ -26,7 +26,7 @@ */ -class BAV_Validator_B5 extends BAV_Validator_Chain +class BAV_Validator_B5 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_B6.php b/classes/validator/validators/BAV_Validator_B6.php index 2fa7486e..b740a948 100644 --- a/classes/validator/validators/BAV_Validator_B6.php +++ b/classes/validator/validators/BAV_Validator_B6.php @@ -29,7 +29,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_B6 extends BAV_Validator implements BAV_Validator_BankDependent +class BAV_Validator_B6 extends BAV_Validator implements BAV_Validator_BankDependent { diff --git a/classes/validator/validators/BAV_Validator_B7.php b/classes/validator/validators/BAV_Validator_B7.php index de0c7f97..8106177a 100644 --- a/classes/validator/validators/BAV_Validator_B7.php +++ b/classes/validator/validators/BAV_Validator_B7.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_B7 extends BAV_Validator_01 +class BAV_Validator_B7 extends BAV_Validator_01 { diff --git a/classes/validator/validators/BAV_Validator_B8.php b/classes/validator/validators/BAV_Validator_B8.php index ab6adb7a..1ce31a75 100644 --- a/classes/validator/validators/BAV_Validator_B8.php +++ b/classes/validator/validators/BAV_Validator_B8.php @@ -27,7 +27,7 @@ */ -class BAV_Validator_B8 extends BAV_Validator_Chain +class BAV_Validator_B8 extends BAV_Validator_Chain { private diff --git a/classes/validator/validators/BAV_Validator_B9.php b/classes/validator/validators/BAV_Validator_B9.php index 992d34ee..cae8f710 100644 --- a/classes/validator/validators/BAV_Validator_B9.php +++ b/classes/validator/validators/BAV_Validator_B9.php @@ -28,7 +28,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_B9 extends BAV_Validator +class BAV_Validator_B9 extends BAV_Validator { diff --git a/classes/validator/validators/BAV_Validator_B9a.php b/classes/validator/validators/BAV_Validator_B9a.php index edd93a7c..3823d665 100644 --- a/classes/validator/validators/BAV_Validator_B9a.php +++ b/classes/validator/validators/BAV_Validator_B9a.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_B9a extends BAV_Validator_Iteration_Weighted +class BAV_Validator_B9a extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_B9b.php b/classes/validator/validators/BAV_Validator_B9b.php index 5ff55803..d7d5b80d 100644 --- a/classes/validator/validators/BAV_Validator_B9b.php +++ b/classes/validator/validators/BAV_Validator_B9b.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_B9b extends BAV_Validator_Iteration_Weighted +class BAV_Validator_B9b extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_C0.php b/classes/validator/validators/BAV_Validator_C0.php index a39d13c5..12a022fa 100644 --- a/classes/validator/validators/BAV_Validator_C0.php +++ b/classes/validator/validators/BAV_Validator_C0.php @@ -27,7 +27,7 @@ */ -class BAV_Validator_C0 extends BAV_Validator_Chain implements BAV_Validator_BankDependent +class BAV_Validator_C0 extends BAV_Validator_Chain implements BAV_Validator_BankDependent { diff --git a/classes/validator/validators/BAV_Validator_C1.php b/classes/validator/validators/BAV_Validator_C1.php index 26d113ef..a5005b7b 100644 --- a/classes/validator/validators/BAV_Validator_C1.php +++ b/classes/validator/validators/BAV_Validator_C1.php @@ -28,7 +28,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_C1 extends BAV_Validator +class BAV_Validator_C1 extends BAV_Validator { diff --git a/classes/validator/validators/BAV_Validator_C1b.php b/classes/validator/validators/BAV_Validator_C1b.php index 6ed8a9b3..5f396e27 100644 --- a/classes/validator/validators/BAV_Validator_C1b.php +++ b/classes/validator/validators/BAV_Validator_C1b.php @@ -24,7 +24,7 @@ */ -class BAV_Validator_C1b extends BAV_Validator_Iteration_Weighted +class BAV_Validator_C1b extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_C2.php b/classes/validator/validators/BAV_Validator_C2.php index aeb47d5f..ae732e20 100644 --- a/classes/validator/validators/BAV_Validator_C2.php +++ b/classes/validator/validators/BAV_Validator_C2.php @@ -26,7 +26,7 @@ */ -class BAV_Validator_C2 extends BAV_Validator_Chain +class BAV_Validator_C2 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_C3.php b/classes/validator/validators/BAV_Validator_C3.php index 3852e7ec..f122dfd1 100644 --- a/classes/validator/validators/BAV_Validator_C3.php +++ b/classes/validator/validators/BAV_Validator_C3.php @@ -28,7 +28,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2007 Markus Malkusch */ -class BAV_Validator_C3 extends BAV_Validator +class BAV_Validator_C3 extends BAV_Validator { diff --git a/classes/validator/validators/BAV_Validator_C4.php b/classes/validator/validators/BAV_Validator_C4.php index d2d54b1e..7ed5acdc 100644 --- a/classes/validator/validators/BAV_Validator_C4.php +++ b/classes/validator/validators/BAV_Validator_C4.php @@ -28,7 +28,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2007 Markus Malkusch */ -class BAV_Validator_C4 extends BAV_Validator +class BAV_Validator_C4 extends BAV_Validator { diff --git a/classes/validator/validators/BAV_Validator_C5.php b/classes/validator/validators/BAV_Validator_C5.php index 755180b4..9c6b2357 100644 --- a/classes/validator/validators/BAV_Validator_C5.php +++ b/classes/validator/validators/BAV_Validator_C5.php @@ -30,7 +30,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2007 Markus Malkusch */ -class BAV_Validator_C5 extends BAV_Validator +class BAV_Validator_C5 extends BAV_Validator { diff --git a/classes/validator/validators/BAV_Validator_C6.php b/classes/validator/validators/BAV_Validator_C6.php index e3ebaca3..0a324e65 100644 --- a/classes/validator/validators/BAV_Validator_C6.php +++ b/classes/validator/validators/BAV_Validator_C6.php @@ -27,7 +27,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2007 Markus Malkusch */ -class BAV_Validator_C6 extends BAV_Validator +class BAV_Validator_C6 extends BAV_Validator { diff --git a/classes/validator/validators/BAV_Validator_C7.php b/classes/validator/validators/BAV_Validator_C7.php index 25d8e54c..1fa855a0 100644 --- a/classes/validator/validators/BAV_Validator_C7.php +++ b/classes/validator/validators/BAV_Validator_C7.php @@ -26,7 +26,7 @@ */ -class BAV_Validator_C7 extends BAV_Validator_Chain +class BAV_Validator_C7 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_C8.php b/classes/validator/validators/BAV_Validator_C8.php index 5c6dc60e..1cbcbc79 100644 --- a/classes/validator/validators/BAV_Validator_C8.php +++ b/classes/validator/validators/BAV_Validator_C8.php @@ -27,7 +27,7 @@ */ -class BAV_Validator_C8 extends BAV_Validator_Chain +class BAV_Validator_C8 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_C9.php b/classes/validator/validators/BAV_Validator_C9.php index f9bac07e..83f938b4 100644 --- a/classes/validator/validators/BAV_Validator_C9.php +++ b/classes/validator/validators/BAV_Validator_C9.php @@ -26,7 +26,7 @@ */ -class BAV_Validator_C9 extends BAV_Validator_Chain +class BAV_Validator_C9 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_D0.php b/classes/validator/validators/BAV_Validator_D0.php index a5932a80..a3726ee4 100644 --- a/classes/validator/validators/BAV_Validator_D0.php +++ b/classes/validator/validators/BAV_Validator_D0.php @@ -28,7 +28,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2008 Markus Malkusch */ -class BAV_Validator_D0 extends BAV_Validator +class BAV_Validator_D0 extends BAV_Validator { diff --git a/classes/validator/validators/BAV_Validator_D1.php b/classes/validator/validators/BAV_Validator_D1.php index 0f8f5bda..4a2464c7 100644 --- a/classes/validator/validators/BAV_Validator_D1.php +++ b/classes/validator/validators/BAV_Validator_D1.php @@ -28,7 +28,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class BAV_Validator_D1 extends BAV_Validator +class BAV_Validator_D1 extends BAV_Validator { diff --git a/classes/validator/validators/BAV_Validator_D2.php b/classes/validator/validators/BAV_Validator_D2.php index f4b89303..2b87e70b 100644 --- a/classes/validator/validators/BAV_Validator_D2.php +++ b/classes/validator/validators/BAV_Validator_D2.php @@ -30,7 +30,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class BAV_Validator_D2 extends BAV_Validator_Chain +class BAV_Validator_D2 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_D3.php b/classes/validator/validators/BAV_Validator_D3.php index b17a923b..53fa1141 100644 --- a/classes/validator/validators/BAV_Validator_D3.php +++ b/classes/validator/validators/BAV_Validator_D3.php @@ -29,7 +29,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class BAV_Validator_D3 extends BAV_Validator_Chain +class BAV_Validator_D3 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_D4.php b/classes/validator/validators/BAV_Validator_D4.php index af19e87b..f3d84cae 100644 --- a/classes/validator/validators/BAV_Validator_D4.php +++ b/classes/validator/validators/BAV_Validator_D4.php @@ -29,7 +29,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class BAV_Validator_D4 extends BAV_Validator +class BAV_Validator_D4 extends BAV_Validator { diff --git a/classes/validator/validators/BAV_Validator_D5.php b/classes/validator/validators/BAV_Validator_D5.php index 667ceec5..8c560e89 100644 --- a/classes/validator/validators/BAV_Validator_D5.php +++ b/classes/validator/validators/BAV_Validator_D5.php @@ -29,7 +29,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class BAV_Validator_D5 extends BAV_Validator +class BAV_Validator_D5 extends BAV_Validator { diff --git a/classes/validator/validators/BAV_Validator_D6.php b/classes/validator/validators/BAV_Validator_D6.php index 7a03bf4e..6d73dfef 100644 --- a/classes/validator/validators/BAV_Validator_D6.php +++ b/classes/validator/validators/BAV_Validator_D6.php @@ -30,7 +30,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class BAV_Validator_D6 extends BAV_Validator_Chain +class BAV_Validator_D6 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_D7.php b/classes/validator/validators/BAV_Validator_D7.php index d5ef6fc9..216aab36 100644 --- a/classes/validator/validators/BAV_Validator_D7.php +++ b/classes/validator/validators/BAV_Validator_D7.php @@ -28,7 +28,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2011 Markus Malkusch */ -class BAV_Validator_D7 extends BAV_Validator_Iteration_Weighted +class BAV_Validator_D7 extends BAV_Validator_Iteration_Weighted { diff --git a/classes/validator/validators/BAV_Validator_D8.php b/classes/validator/validators/BAV_Validator_D8.php index c0d6f047..332024ed 100644 --- a/classes/validator/validators/BAV_Validator_D8.php +++ b/classes/validator/validators/BAV_Validator_D8.php @@ -29,7 +29,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2011 Markus Malkusch */ -class BAV_Validator_D8 extends BAV_Validator +class BAV_Validator_D8 extends BAV_Validator { diff --git a/classes/validator/validators/BAV_Validator_D9.php b/classes/validator/validators/BAV_Validator_D9.php index bca45833..5193784a 100644 --- a/classes/validator/validators/BAV_Validator_D9.php +++ b/classes/validator/validators/BAV_Validator_D9.php @@ -30,7 +30,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2012 Markus Malkusch */ -class BAV_Validator_D9 extends BAV_Validator_Chain +class BAV_Validator_D9 extends BAV_Validator_Chain { diff --git a/classes/validator/validators/BAV_Validator_E0.php b/classes/validator/validators/BAV_Validator_E0.php index dfa3c98c..b15c5fd2 100644 --- a/classes/validator/validators/BAV_Validator_E0.php +++ b/classes/validator/validators/BAV_Validator_E0.php @@ -23,7 +23,7 @@ */ -class BAV_Validator_E0 extends BAV_Validator_00 +class BAV_Validator_E0 extends BAV_Validator_00 { diff --git a/classes/validator/validators/BAV_Validator_E1.php b/classes/validator/validators/BAV_Validator_E1.php index b1ab7300..44ae2a48 100644 --- a/classes/validator/validators/BAV_Validator_E1.php +++ b/classes/validator/validators/BAV_Validator_E1.php @@ -23,7 +23,7 @@ * https://github.com/jschaedl/Bav/blob/master/library/Bav/Validator/De/SystemE1.php */ -class BAV_Validator_E1 extends BAV_Validator_Iteration_Weighted +class BAV_Validator_E1 extends BAV_Validator_Iteration_Weighted { static private $subsitutions = array(48, 49, 50, 51, 52, 53, 54, 55, 56, 57); diff --git a/classes/verify/BAV_VerifyImport.php b/classes/verify/BAV_VerifyImport.php index 0f846fc1..2e1ad8c2 100644 --- a/classes/verify/BAV_VerifyImport.php +++ b/classes/verify/BAV_VerifyImport.php @@ -44,7 +44,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_VerifyImport extends BAV +class BAV_VerifyImport extends BAV { diff --git a/classes/verify/exception/BAV_VerifyException.php b/classes/verify/exception/BAV_VerifyException.php index 02d80905..05ac3834 100644 --- a/classes/verify/exception/BAV_VerifyException.php +++ b/classes/verify/exception/BAV_VerifyException.php @@ -24,7 +24,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_VerifyException extends RuntimeException +class BAV_VerifyException extends RuntimeException { diff --git a/classes/verify/exception/BAV_VerifyException_IO.php b/classes/verify/exception/BAV_VerifyException_IO.php index 7b1905d3..c3de1911 100644 --- a/classes/verify/exception/BAV_VerifyException_IO.php +++ b/classes/verify/exception/BAV_VerifyException_IO.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_VerifyException_IO extends BAV_VerifyException +class BAV_VerifyException_IO extends BAV_VerifyException { diff --git a/classes/verify/testAPI/BAV_TestAPI.php b/classes/verify/testAPI/BAV_TestAPI.php index 41804c66..dd569619 100644 --- a/classes/verify/testAPI/BAV_TestAPI.php +++ b/classes/verify/testAPI/BAV_TestAPI.php @@ -31,7 +31,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -abstract class BAV_TestAPI extends BAV +abstract class BAV_TestAPI extends BAV { diff --git a/classes/verify/testAPI/BAV_TestAPIResult.php b/classes/verify/testAPI/BAV_TestAPIResult.php index 515837ca..28ad2612 100644 --- a/classes/verify/testAPI/BAV_TestAPIResult.php +++ b/classes/verify/testAPI/BAV_TestAPIResult.php @@ -28,7 +28,7 @@ */ -class BAV_TestAPIResult extends BAV +class BAV_TestAPIResult extends BAV { diff --git a/classes/verify/testAPI/BAV_TestAPIResult_Error.php b/classes/verify/testAPI/BAV_TestAPIResult_Error.php index dcff982e..5f333bf4 100644 --- a/classes/verify/testAPI/BAV_TestAPIResult_Error.php +++ b/classes/verify/testAPI/BAV_TestAPIResult_Error.php @@ -27,7 +27,7 @@ */ -class BAV_TestAPIResult_Error extends BAV_TestAPIResult +class BAV_TestAPIResult_Error extends BAV_TestAPIResult { diff --git a/classes/verify/testAPI/BAV_TestAPI_BAV.php b/classes/verify/testAPI/BAV_TestAPI_BAV.php index 80a52d96..73eb5cf3 100644 --- a/classes/verify/testAPI/BAV_TestAPI_BAV.php +++ b/classes/verify/testAPI/BAV_TestAPI_BAV.php @@ -28,7 +28,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_TestAPI_BAV extends BAV_TestAPI +class BAV_TestAPI_BAV extends BAV_TestAPI { diff --git a/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php b/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php index 4214b71d..e52ebc09 100644 --- a/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php +++ b/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php @@ -30,7 +30,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_TestAPI_Kontocheck extends BAV_TestAPI +class BAV_TestAPI_Kontocheck extends BAV_TestAPI { diff --git a/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php b/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php index 04510cc4..050c52bf 100644 --- a/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php +++ b/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php @@ -30,7 +30,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_TestAPI_Ktoblzcheck extends BAV_TestAPI +class BAV_TestAPI_Ktoblzcheck extends BAV_TestAPI { diff --git a/classes/verify/testAPI/exception/BAV_TestAPIException.php b/classes/verify/testAPI/exception/BAV_TestAPIException.php index 4ba793fe..0a92bcd1 100644 --- a/classes/verify/testAPI/exception/BAV_TestAPIException.php +++ b/classes/verify/testAPI/exception/BAV_TestAPIException.php @@ -22,7 +22,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_TestAPIException extends RuntimeException +class BAV_TestAPIException extends RuntimeException { diff --git a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation.php b/classes/verify/testAPI/exception/BAV_TestAPIException_Validation.php index 348ff1bd..bd722f28 100644 --- a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation.php +++ b/classes/verify/testAPI/exception/BAV_TestAPIException_Validation.php @@ -24,7 +24,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_TestAPIException_Validation extends BAV_TestAPIException +class BAV_TestAPIException_Validation extends BAV_TestAPIException { diff --git a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_BankNotFound.php b/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_BankNotFound.php index 50a3d978..153eb6cb 100644 --- a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_BankNotFound.php +++ b/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_BankNotFound.php @@ -24,7 +24,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_TestAPIException_Validation_BankNotFound extends BAV_TestAPIException_Validation +class BAV_TestAPIException_Validation_BankNotFound extends BAV_TestAPIException_Validation { diff --git a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_NotInitialized.php b/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_NotInitialized.php index 13b03920..a10bf883 100644 --- a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_NotInitialized.php +++ b/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_NotInitialized.php @@ -24,7 +24,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_TestAPIException_Validation_NotInitialized extends BAV_TestAPIException_Validation +class BAV_TestAPIException_Validation_NotInitialized extends BAV_TestAPIException_Validation { diff --git a/tests/AgencyQueryTest.php b/tests/AgencyQueryTest.php index 192c4cf5..c892f7c7 100755 --- a/tests/AgencyQueryTest.php +++ b/tests/AgencyQueryTest.php @@ -27,7 +27,7 @@ */ -class AgencyQueryTest extends PHPUnit_Framework_TestCase +class AgencyQueryTest extends PHPUnit_Framework_TestCase { diff --git a/tests/BackendTest.php b/tests/BackendTest.php index 37e6245e..5f4e5509 100755 --- a/tests/BackendTest.php +++ b/tests/BackendTest.php @@ -27,7 +27,7 @@ * @copyright Copyright (C) 2009 Markus Malkusch */ -class BackendTest extends PHPUnit_Framework_TestCase +class BackendTest extends PHPUnit_Framework_TestCase { diff --git a/tests/CrossProjectTest.php b/tests/CrossProjectTest.php index d1f21c92..1d921b65 100755 --- a/tests/CrossProjectTest.php +++ b/tests/CrossProjectTest.php @@ -27,7 +27,7 @@ */ -class CrossProjectTest extends PHPUnit_Framework_TestCase +class CrossProjectTest extends PHPUnit_Framework_TestCase { diff --git a/tests/DataConstraintTest.php b/tests/DataConstraintTest.php index bb89925f..ba96060b 100755 --- a/tests/DataConstraintTest.php +++ b/tests/DataConstraintTest.php @@ -8,7 +8,7 @@ DataConstraintTest::classConstructor(); -class DataConstraintTest extends PHPUnit_Framework_TestCase +class DataConstraintTest extends PHPUnit_Framework_TestCase { diff --git a/tests/TestSuite.php b/tests/TestSuite.php index f42c8bdc..7805712e 100644 --- a/tests/TestSuite.php +++ b/tests/TestSuite.php @@ -29,7 +29,7 @@ require_once __DIR__ . '/VerifyImportTest.php'; -class TestSuite extends PHPUnit_Framework_TestSuite +class TestSuite extends PHPUnit_Framework_TestSuite { diff --git a/tests/ValidatorTest.php b/tests/ValidatorTest.php index 8e1e2fb4..45ec45f6 100755 --- a/tests/ValidatorTest.php +++ b/tests/ValidatorTest.php @@ -28,7 +28,7 @@ */ -class ValidatorTest extends PHPUnit_Framework_TestCase +class ValidatorTest extends PHPUnit_Framework_TestCase { diff --git a/tests/VerifyImportTest.php b/tests/VerifyImportTest.php index 4b8b7559..4cee627a 100755 --- a/tests/VerifyImportTest.php +++ b/tests/VerifyImportTest.php @@ -30,7 +30,7 @@ */ -class VerifyImportTest extends PHPUnit_Framework_TestCase +class VerifyImportTest extends PHPUnit_Framework_TestCase { diff --git a/tests/checkAgainstTestAPIs.php b/tests/checkAgainstTestAPIs.php index 40eecbb5..73c52f21 100755 --- a/tests/checkAgainstTestAPIs.php +++ b/tests/checkAgainstTestAPIs.php @@ -29,7 +29,7 @@ */ -class BAV_CheckAgainstTestAPIs extends BAV +class BAV_CheckAgainstTestAPIs extends BAV { From 00340b1a509ba0ca23ee231a559868ede5718d73 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 19:50:59 +0200 Subject: [PATCH 029/303] visibility before static --- classes/BAV.php | 10 +++++----- classes/BAV_Version.php | 4 ++-- classes/autoloader/BAV_Autoloader.php | 4 ++-- classes/class/BAV_ClassFile.php | 6 +++--- classes/encoding/BAV_Encoding.php | 4 ++-- classes/encoding/BAV_Encoding_ISO8859.php | 2 +- classes/encoding/BAV_Encoding_Iconv.php | 2 +- classes/encoding/BAV_Encoding_MB.php | 2 +- classes/validator/BAV_Validator.php | 2 +- classes/validator/validators/BAV_Validator_51.php | 2 +- classes/validator/validators/BAV_Validator_C6.php | 2 +- classes/validator/validators/BAV_Validator_D1.php | 2 +- classes/validator/validators/BAV_Validator_E1.php | 2 +- tests/BackendTest.php | 2 +- tests/DataConstraintTest.php | 2 +- 15 files changed, 24 insertions(+), 24 deletions(-) diff --git a/classes/BAV.php b/classes/BAV.php index f1528765..9f3c7846 100644 --- a/classes/BAV.php +++ b/classes/BAV.php @@ -35,14 +35,14 @@ abstract class BAV { - static protected + protected static /** * @var BAV_Encoding */ $encoding; - static public function classConstructor() { + public static function classConstructor() { try { self::setEncoding('UTF-8'); @@ -58,7 +58,7 @@ static public function classConstructor() { * @param mixed $encoding * @see BAV_Encoding */ - static public function setEncoding($encoding) { + public static function setEncoding($encoding) { self::$encoding = ($encoding instanceof BAV_Encoding) ? $encoding : BAV_Encoding::getInstance($encoding); @@ -66,7 +66,7 @@ static public function setEncoding($encoding) { /** * @return BAV_Version version of BAV */ - static public function get_bav_version() { + public static function get_bav_version() { return new BAV_Version('0.28'); } /** @@ -75,7 +75,7 @@ static public function get_bav_version() { * * @return BAV_Version version of BAV's API */ - static public function get_bav_api_version() { + public static function get_bav_api_version() { return new BAV_Version('2.4'); } diff --git a/classes/BAV_Version.php b/classes/BAV_Version.php index b12c1a60..2e6c7767 100644 --- a/classes/BAV_Version.php +++ b/classes/BAV_Version.php @@ -30,7 +30,7 @@ class BAV_Version extends BAV { - static private + private static /** * @var BAV_Version */ @@ -147,7 +147,7 @@ private function getElements($padding = null) { /** * @return BAV_Version */ - static public function getPHPVersion() { + public static function getPHPVersion() { if (empty(self::$phpVersion)) { self::$phpVersion = new BAV_Version(phpversion()); diff --git a/classes/autoloader/BAV_Autoloader.php b/classes/autoloader/BAV_Autoloader.php index e279f6bc..9211ec2c 100644 --- a/classes/autoloader/BAV_Autoloader.php +++ b/classes/autoloader/BAV_Autoloader.php @@ -62,13 +62,13 @@ public function getPath($className) self::_triggerDeprecationWarning(); } - static public function getInstance() + public static function getInstance() { self::_triggerDeprecationWarning(); return new self(); } - static public function add($classPath) + public static function add($classPath) { self::_triggerDeprecationWarning(); } diff --git a/classes/class/BAV_ClassFile.php b/classes/class/BAV_ClassFile.php index 36255b3c..ee098055 100644 --- a/classes/class/BAV_ClassFile.php +++ b/classes/class/BAV_ClassFile.php @@ -54,7 +54,7 @@ class BAV_ClassFile extends BAV $classDefinition = ''; - static private + private static /** * @var array */ @@ -111,7 +111,7 @@ private function __construct($path) { * @param string $path * @return BAV_ClassFile */ - static public function getClassFile($path) { + public static function getClassFile($path) { if (! isset(self::$instances[$path])) { self::$instances[$path] = new self($path); @@ -124,7 +124,7 @@ static public function getClassFile($path) { * @param string $dir * @return array BAV_ClassFile objects */ - static public function getClassFiles($dir) { + public static function getClassFiles($dir) { $classFiles = array(); $dh = opendir($dir); if (! $dh) { diff --git a/classes/encoding/BAV_Encoding.php b/classes/encoding/BAV_Encoding.php index c6c8c6e8..e001dd90 100644 --- a/classes/encoding/BAV_Encoding.php +++ b/classes/encoding/BAV_Encoding.php @@ -76,7 +76,7 @@ abstract public function convert($string, $from_encoding); * @param String * @return bool */ - static public function isSupported($encoding) { + public static function isSupported($encoding) { return false; } /** @@ -84,7 +84,7 @@ static public function isSupported($encoding) { * @param String $encoding * @return BAV_Encoding */ - static public function getInstance($encoding) { + public static function getInstance($encoding) { if (BAV_Encoding_Iconv::isSupported($encoding)) { return new BAV_Encoding_Iconv($encoding); diff --git a/classes/encoding/BAV_Encoding_ISO8859.php b/classes/encoding/BAV_Encoding_ISO8859.php index 59562508..43656175 100644 --- a/classes/encoding/BAV_Encoding_ISO8859.php +++ b/classes/encoding/BAV_Encoding_ISO8859.php @@ -35,7 +35,7 @@ class BAV_Encoding_ISO8859 extends BAV_Encoding /** * @return bool */ - static public function isSupported($encoding) { + public static function isSupported($encoding) { return preg_match('~^ISO-8859-([1-9]|1[0-5])$~', $encoding); } /** diff --git a/classes/encoding/BAV_Encoding_Iconv.php b/classes/encoding/BAV_Encoding_Iconv.php index ac1d2b78..cd74d328 100644 --- a/classes/encoding/BAV_Encoding_Iconv.php +++ b/classes/encoding/BAV_Encoding_Iconv.php @@ -37,7 +37,7 @@ class BAV_Encoding_Iconv extends BAV_Encoding /** * @return bool */ - static public function isSupported($encoding) { + public static function isSupported($encoding) { return function_exists("iconv_set_encoding"); } /** diff --git a/classes/encoding/BAV_Encoding_MB.php b/classes/encoding/BAV_Encoding_MB.php index bdb502e6..4a514850 100644 --- a/classes/encoding/BAV_Encoding_MB.php +++ b/classes/encoding/BAV_Encoding_MB.php @@ -35,7 +35,7 @@ class BAV_Encoding_MB extends BAV_Encoding /** * @return bool */ - static public function isSupported($encoding) { + public static function isSupported($encoding) { return function_exists("mb_list_encodings") && in_array($encoding, mb_list_encodings()); } diff --git a/classes/validator/BAV_Validator.php b/classes/validator/BAV_Validator.php index 86e610ab..09d2765b 100644 --- a/classes/validator/BAV_Validator.php +++ b/classes/validator/BAV_Validator.php @@ -68,7 +68,7 @@ public function __construct(BAV_Bank $bank) { * @throws BAV_ValidatorException_NotExists * @return BAV_Validator */ - static public function getInstance(BAV_Bank $bank) { + public static function getInstance(BAV_Bank $bank) { $type = trim(strtoupper($bank->getValidationType())); $class = "BAV_Validator_$type"; $file = __DIR__."/validators/$class.php"; diff --git a/classes/validator/validators/BAV_Validator_51.php b/classes/validator/validators/BAV_Validator_51.php index 05e4022a..ab9857a2 100644 --- a/classes/validator/validators/BAV_Validator_51.php +++ b/classes/validator/validators/BAV_Validator_51.php @@ -79,7 +79,7 @@ public function __construct(BAV_Bank $bank) { /** * @return array */ - static public function getExceptionValidators(BAV_Bank $bank) { + public static function getExceptionValidators(BAV_Bank $bank) { $exceptionValidators = array(); $exceptionValidators[] = new BAV_Validator_51x($bank); $exceptionValidators[] = new BAV_Validator_51x($bank); diff --git a/classes/validator/validators/BAV_Validator_C6.php b/classes/validator/validators/BAV_Validator_C6.php index 0a324e65..eb4afcb8 100644 --- a/classes/validator/validators/BAV_Validator_C6.php +++ b/classes/validator/validators/BAV_Validator_C6.php @@ -31,7 +31,7 @@ class BAV_Validator_C6 extends BAV_Validator { - static private + private static /** * @var Array */ diff --git a/classes/validator/validators/BAV_Validator_D1.php b/classes/validator/validators/BAV_Validator_D1.php index 4a2464c7..89649e8c 100644 --- a/classes/validator/validators/BAV_Validator_D1.php +++ b/classes/validator/validators/BAV_Validator_D1.php @@ -32,7 +32,7 @@ class BAV_Validator_D1 extends BAV_Validator { - static private + private static /** * @var Array */ diff --git a/classes/validator/validators/BAV_Validator_E1.php b/classes/validator/validators/BAV_Validator_E1.php index 44ae2a48..a3bdcb07 100644 --- a/classes/validator/validators/BAV_Validator_E1.php +++ b/classes/validator/validators/BAV_Validator_E1.php @@ -26,7 +26,7 @@ class BAV_Validator_E1 extends BAV_Validator_Iteration_Weighted { - static private $subsitutions = array(48, 49, 50, 51, 52, 53, 54, 55, 56, 57); + private static $subsitutions = array(48, 49, 50, 51, 52, 53, 54, 55, 56, 57); public function __construct(BAV_Bank $bank) { parent::__construct($bank); diff --git a/tests/BackendTest.php b/tests/BackendTest.php index 5f4e5509..b1e2d6c6 100755 --- a/tests/BackendTest.php +++ b/tests/BackendTest.php @@ -41,7 +41,7 @@ class BackendTest extends PHPUnit_Framework_TestCase /** * Defines the reference backend */ - static public function classConstructor() { + public static function classConstructor() { self::$referenceBackend = new BAV_DataBackend_File(); } diff --git a/tests/DataConstraintTest.php b/tests/DataConstraintTest.php index ba96060b..bae95499 100755 --- a/tests/DataConstraintTest.php +++ b/tests/DataConstraintTest.php @@ -19,7 +19,7 @@ class DataConstraintTest extends PHPUnit_Framework_TestCase $pdo; - static public function classConstructor() { + public static function classConstructor() { self::$pdo = new PDO('mysql:host=localhost;dbname=test', 'test'); self::$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); From 7afdf0d930f7d0b847e215f9f4c33a715b784ae5 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 20:30:37 +0200 Subject: [PATCH 030/303] Opening brace should be on a new line --- classes/BAV.php | 12 +++-- classes/BAV_Version.php | 27 +++++++---- classes/bank/BAV_Agency.php | 36 ++++++++++----- classes/bank/BAV_Bank.php | 21 ++++++--- .../bank/exception/BAV_AgencyException.php | 6 ++- ...BAV_AgencyException_UndefinedAttribute.php | 6 ++- classes/class/BAV_ClassFile.php | 18 +++++--- .../BAV_ClassFileException_MissingClass.php | 9 ++-- classes/dataBackend/BAV_DataBackend.php | 6 ++- classes/dataBackend/BAV_DataBackend_File.php | 39 ++++++++++------ classes/dataBackend/BAV_DataBackend_PDO.php | 45 ++++++++++++------- .../BAV_DataBackendException_BankNotFound.php | 6 ++- .../BAV_DataBackendException_NoMainAgency.php | 6 ++- .../dataBackend/fileParser/BAV_FileParser.php | 42 +++++++++++------ .../fileParser/BAV_FileParserContext.php | 24 ++++++---- .../BAV_FileParserException_FileNotExists.php | 6 ++- classes/encoding/BAV_Encoding.php | 9 ++-- classes/encoding/BAV_Encoding_ISO8859.php | 12 +++-- classes/encoding/BAV_Encoding_Iconv.php | 15 ++++--- classes/encoding/BAV_Encoding_MB.php | 15 ++++--- .../BAV_EncodingException_Unsupported.php | 6 ++- classes/validator/BAV_Validator.php | 45 ++++++++++++------- classes/validator/BAV_Validator_Chain.php | 15 ++++--- classes/validator/BAV_Validator_Iteration.php | 15 ++++--- ...BAV_Validator_Iteration_Transformation.php | 15 ++++--- .../BAV_Validator_Iteration_Weighted.php | 9 ++-- .../BAV_ValidatorException_NotExists.php | 6 ++- .../validator/validators/BAV_Validator_00.php | 9 ++-- .../validator/validators/BAV_Validator_01.php | 9 ++-- .../validator/validators/BAV_Validator_02.php | 9 ++-- .../validator/validators/BAV_Validator_03.php | 3 +- .../validator/validators/BAV_Validator_04.php | 3 +- .../validator/validators/BAV_Validator_05.php | 3 +- .../validator/validators/BAV_Validator_06.php | 9 ++-- .../validator/validators/BAV_Validator_07.php | 3 +- .../validator/validators/BAV_Validator_08.php | 6 ++- .../validator/validators/BAV_Validator_09.php | 6 ++- .../validator/validators/BAV_Validator_10.php | 3 +- .../validator/validators/BAV_Validator_11.php | 6 ++- .../validator/validators/BAV_Validator_13.php | 6 ++- .../validator/validators/BAV_Validator_14.php | 3 +- .../validator/validators/BAV_Validator_15.php | 3 +- .../validator/validators/BAV_Validator_16.php | 6 ++- .../validator/validators/BAV_Validator_17.php | 9 ++-- .../validator/validators/BAV_Validator_18.php | 3 +- .../validator/validators/BAV_Validator_19.php | 3 +- .../validator/validators/BAV_Validator_20.php | 3 +- .../validator/validators/BAV_Validator_21.php | 6 ++- .../validator/validators/BAV_Validator_22.php | 9 ++-- .../validator/validators/BAV_Validator_23.php | 3 +- .../validator/validators/BAV_Validator_24.php | 12 +++-- .../validator/validators/BAV_Validator_25.php | 9 ++-- .../validator/validators/BAV_Validator_26.php | 6 ++- .../validator/validators/BAV_Validator_27.php | 9 ++-- .../validator/validators/BAV_Validator_28.php | 3 +- .../validator/validators/BAV_Validator_29.php | 6 ++- .../validator/validators/BAV_Validator_30.php | 6 ++- .../validator/validators/BAV_Validator_31.php | 9 ++-- .../validator/validators/BAV_Validator_32.php | 3 +- .../validator/validators/BAV_Validator_33.php | 3 +- .../validator/validators/BAV_Validator_34.php | 3 +- .../validator/validators/BAV_Validator_35.php | 9 ++-- .../validator/validators/BAV_Validator_36.php | 3 +- .../validator/validators/BAV_Validator_37.php | 3 +- .../validator/validators/BAV_Validator_38.php | 3 +- .../validator/validators/BAV_Validator_39.php | 3 +- .../validator/validators/BAV_Validator_40.php | 3 +- .../validator/validators/BAV_Validator_41.php | 6 ++- .../validator/validators/BAV_Validator_42.php | 3 +- .../validator/validators/BAV_Validator_43.php | 9 ++-- .../validator/validators/BAV_Validator_44.php | 3 +- .../validator/validators/BAV_Validator_45.php | 6 ++- .../validator/validators/BAV_Validator_46.php | 3 +- .../validator/validators/BAV_Validator_47.php | 3 +- .../validator/validators/BAV_Validator_48.php | 3 +- .../validator/validators/BAV_Validator_49.php | 3 +- .../validator/validators/BAV_Validator_50.php | 6 ++- .../validator/validators/BAV_Validator_51.php | 12 +++-- .../validators/BAV_Validator_51x.php | 9 ++-- .../validator/validators/BAV_Validator_52.php | 15 ++++--- .../validator/validators/BAV_Validator_53.php | 3 +- .../validator/validators/BAV_Validator_54.php | 9 ++-- .../validator/validators/BAV_Validator_55.php | 3 +- .../validator/validators/BAV_Validator_56.php | 9 ++-- .../validator/validators/BAV_Validator_57.php | 12 +++-- .../validator/validators/BAV_Validator_58.php | 6 ++- .../validator/validators/BAV_Validator_59.php | 6 ++- .../validator/validators/BAV_Validator_60.php | 3 +- .../validator/validators/BAV_Validator_61.php | 12 +++-- .../validator/validators/BAV_Validator_62.php | 9 ++-- .../validator/validators/BAV_Validator_63.php | 12 +++-- .../validator/validators/BAV_Validator_64.php | 3 +- .../validator/validators/BAV_Validator_65.php | 6 ++- .../validator/validators/BAV_Validator_66.php | 9 ++-- .../validator/validators/BAV_Validator_67.php | 3 +- .../validator/validators/BAV_Validator_68.php | 6 ++- .../validator/validators/BAV_Validator_69.php | 9 ++-- .../validators/BAV_Validator_69b.php | 6 ++- .../validator/validators/BAV_Validator_70.php | 6 ++- .../validator/validators/BAV_Validator_71.php | 9 ++-- .../validator/validators/BAV_Validator_72.php | 3 +- .../validator/validators/BAV_Validator_73.php | 6 ++- .../validator/validators/BAV_Validator_74.php | 9 ++-- .../validator/validators/BAV_Validator_75.php | 6 ++- .../validator/validators/BAV_Validator_76.php | 15 ++++--- .../validator/validators/BAV_Validator_77.php | 3 +- .../validators/BAV_Validator_77a.php | 9 ++-- .../validator/validators/BAV_Validator_78.php | 6 ++- .../validator/validators/BAV_Validator_79.php | 12 +++-- .../validator/validators/BAV_Validator_80.php | 6 ++- .../validator/validators/BAV_Validator_81.php | 6 ++- .../validator/validators/BAV_Validator_82.php | 9 ++-- .../validator/validators/BAV_Validator_83.php | 9 ++-- .../validators/BAV_Validator_83x.php | 9 ++-- .../validator/validators/BAV_Validator_84.php | 6 ++- .../validators/BAV_Validator_84b.php | 9 ++-- .../validator/validators/BAV_Validator_85.php | 9 ++-- .../validator/validators/BAV_Validator_86.php | 6 ++- .../validator/validators/BAV_Validator_87.php | 6 ++- .../validators/BAV_Validator_87a.php | 6 ++- .../validators/BAV_Validator_87c.php | 9 ++-- .../validator/validators/BAV_Validator_88.php | 6 ++- .../validator/validators/BAV_Validator_89.php | 9 ++-- .../validator/validators/BAV_Validator_90.php | 6 ++- .../validators/BAV_Validator_90c.php | 9 ++-- .../validators/BAV_Validator_90d.php | 9 ++-- .../validators/BAV_Validator_90e.php | 9 ++-- .../validators/BAV_Validator_90g.php | 9 ++-- .../validator/validators/BAV_Validator_91.php | 3 +- .../validator/validators/BAV_Validator_92.php | 3 +- .../validator/validators/BAV_Validator_93.php | 6 ++- .../validator/validators/BAV_Validator_94.php | 3 +- .../validator/validators/BAV_Validator_95.php | 6 ++- .../validator/validators/BAV_Validator_96.php | 6 ++- .../validator/validators/BAV_Validator_97.php | 6 ++- .../validator/validators/BAV_Validator_98.php | 3 +- .../validator/validators/BAV_Validator_99.php | 6 ++- .../validator/validators/BAV_Validator_A0.php | 9 ++-- .../validator/validators/BAV_Validator_A1.php | 6 ++- .../validator/validators/BAV_Validator_A2.php | 3 +- .../validator/validators/BAV_Validator_A3.php | 3 +- .../validator/validators/BAV_Validator_A4.php | 6 ++- .../validators/BAV_Validator_A4b.php | 9 ++-- .../validator/validators/BAV_Validator_A5.php | 6 ++- .../validator/validators/BAV_Validator_A6.php | 9 ++-- .../validator/validators/BAV_Validator_A7.php | 3 +- .../validator/validators/BAV_Validator_A8.php | 6 ++- .../validator/validators/BAV_Validator_A9.php | 3 +- .../validator/validators/BAV_Validator_B0.php | 9 ++-- .../validator/validators/BAV_Validator_B1.php | 3 +- .../validator/validators/BAV_Validator_B2.php | 9 ++-- .../validator/validators/BAV_Validator_B3.php | 9 ++-- .../validator/validators/BAV_Validator_B4.php | 9 ++-- .../validator/validators/BAV_Validator_B5.php | 6 ++- .../validator/validators/BAV_Validator_B6.php | 9 ++-- .../validator/validators/BAV_Validator_B7.php | 6 ++- .../validator/validators/BAV_Validator_B8.php | 6 ++- .../validator/validators/BAV_Validator_B9.php | 9 ++-- .../validators/BAV_Validator_B9a.php | 9 ++-- .../validators/BAV_Validator_B9b.php | 9 ++-- .../validator/validators/BAV_Validator_C0.php | 6 ++- .../validator/validators/BAV_Validator_C1.php | 9 ++-- .../validators/BAV_Validator_C1b.php | 9 ++-- .../validator/validators/BAV_Validator_C2.php | 3 +- .../validator/validators/BAV_Validator_C3.php | 9 ++-- .../validator/validators/BAV_Validator_C4.php | 9 ++-- .../validator/validators/BAV_Validator_C5.php | 9 ++-- .../validator/validators/BAV_Validator_C6.php | 9 ++-- .../validator/validators/BAV_Validator_C7.php | 3 +- .../validator/validators/BAV_Validator_C8.php | 3 +- .../validator/validators/BAV_Validator_C9.php | 3 +- .../validator/validators/BAV_Validator_D0.php | 9 ++-- .../validator/validators/BAV_Validator_D1.php | 12 +++-- .../validator/validators/BAV_Validator_D2.php | 3 +- .../validator/validators/BAV_Validator_D3.php | 3 +- .../validator/validators/BAV_Validator_D4.php | 9 ++-- .../validator/validators/BAV_Validator_D5.php | 9 ++-- .../validator/validators/BAV_Validator_D6.php | 3 +- .../validator/validators/BAV_Validator_D7.php | 9 ++-- .../validator/validators/BAV_Validator_D8.php | 9 ++-- .../validator/validators/BAV_Validator_D9.php | 3 +- .../validator/validators/BAV_Validator_E0.php | 3 +- .../validator/validators/BAV_Validator_E1.php | 9 ++-- classes/verify/BAV_VerifyImport.php | 27 +++++++---- classes/verify/testAPI/BAV_TestAPI.php | 12 +++-- classes/verify/testAPI/BAV_TestAPIResult.php | 9 ++-- .../testAPI/BAV_TestAPIResult_Error.php | 6 ++- classes/verify/testAPI/BAV_TestAPI_BAV.php | 6 ++- .../verify/testAPI/BAV_TestAPI_Kontocheck.php | 6 ++- .../testAPI/BAV_TestAPI_Ktoblzcheck.php | 6 ++- tests/AgencyQueryTest.php | 18 +++++--- tests/BackendTest.php | 36 ++++++++++----- tests/CrossProjectTest.php | 15 ++++--- tests/DataConstraintTest.php | 18 +++++--- tests/TestSuite.php | 3 +- tests/ValidatorTest.php | 27 +++++++---- tests/VerifyImportTest.php | 15 ++++--- tests/checkAgainstTestAPIs.php | 6 ++- 198 files changed, 1124 insertions(+), 562 deletions(-) diff --git a/classes/BAV.php b/classes/BAV.php index 9f3c7846..fd1de756 100644 --- a/classes/BAV.php +++ b/classes/BAV.php @@ -42,7 +42,8 @@ abstract class BAV $encoding; - public static function classConstructor() { + public static function classConstructor() + { try { self::setEncoding('UTF-8'); @@ -58,7 +59,8 @@ public static function classConstructor() { * @param mixed $encoding * @see BAV_Encoding */ - public static function setEncoding($encoding) { + public static function setEncoding($encoding) + { self::$encoding = ($encoding instanceof BAV_Encoding) ? $encoding : BAV_Encoding::getInstance($encoding); @@ -66,7 +68,8 @@ public static function setEncoding($encoding) { /** * @return BAV_Version version of BAV */ - public static function get_bav_version() { + public static function get_bav_version() + { return new BAV_Version('0.28'); } /** @@ -75,7 +78,8 @@ public static function get_bav_version() { * * @return BAV_Version version of BAV's API */ - public static function get_bav_api_version() { + public static function get_bav_api_version() + { return new BAV_Version('2.4'); } diff --git a/classes/BAV_Version.php b/classes/BAV_Version.php index 2e6c7767..89311cc4 100644 --- a/classes/BAV_Version.php +++ b/classes/BAV_Version.php @@ -52,7 +52,8 @@ class BAV_Version extends BAV * @param string $version * @param string $separator */ - public function __construct($version, $separator = '.') { + public function __construct($version, $separator = '.') + { $this->separator = $separator; $this->elements = explode($separator, $version); } @@ -61,7 +62,8 @@ public function __construct($version, $separator = '.') { /** * @return boolean */ - public function isGreater(BAV_Version $version) { + public function isGreater(BAV_Version $version) + { $thoseElements = $version->getElements(count($this->elements)); $thisElements = $this->getElements(count($thoseElements)); @@ -79,7 +81,8 @@ public function isGreater(BAV_Version $version) { /** * @return boolean */ - public function equals(BAV_Version $version) { + public function equals(BAV_Version $version) + { $thoseElements = $version->getElements(count($this->elements)); $thisElements = $this->getElements(count($thoseElements)); @@ -90,7 +93,8 @@ public function equals(BAV_Version $version) { /** * @return boolean */ - public function isLesser(BAV_Version $version) { + public function isLesser(BAV_Version $version) + { return ! $this->equals($version) && ! $this->isGreater($version); } @@ -98,7 +102,8 @@ public function isLesser(BAV_Version $version) { /** * @return string */ - public function getString() { + public function getString() + { return implode($this->separator, $this->elements); } @@ -106,7 +111,8 @@ public function getString() { /** * @return string */ - public function getNormalizedVersion() { + public function getNormalizedVersion() + { $elements = array_merge($this->elements); for ($i = count($elements) - 1; $i > 0; $i--) { $lastElement = array_pop($elements); @@ -126,7 +132,8 @@ public function getNormalizedVersion() { * @param string $right * @return boolean */ - private function _isGreater($left, $right) { + private function _isGreater($left, $right) + { return $left > $right; } @@ -135,7 +142,8 @@ private function _isGreater($left, $right) { * @param int $padding * @return array */ - private function getElements($padding = null) { + private function getElements($padding = null) + { if (is_null($padding) || count($this->elements) >= $padding) { return $this->elements; @@ -147,7 +155,8 @@ private function getElements($padding = null) { /** * @return BAV_Version */ - public static function getPHPVersion() { + public static function getPHPVersion() + { if (empty(self::$phpVersion)) { self::$phpVersion = new BAV_Version(phpversion()); diff --git a/classes/bank/BAV_Agency.php b/classes/bank/BAV_Agency.php index 9e30810a..66819a3b 100644 --- a/classes/bank/BAV_Agency.php +++ b/classes/bank/BAV_Agency.php @@ -83,7 +83,8 @@ class BAV_Agency extends BAV * @param string $bic might be empty * @param string $pan might be empty */ - public function __construct($id, BAV_Bank $bank, $name, $shortTerm, $city, $postcode, $bic = '', $pan = '') { + public function __construct($id, BAV_Bank $bank, $name, $shortTerm, $city, $postcode, $bic = '', $pan = '') + { $this->id = (int)$id; $this->bank = $bank; $this->bic = $bic; @@ -96,62 +97,72 @@ public function __construct($id, BAV_Bank $bank, $name, $shortTerm, $city, $post /** * @return bool */ - public function isMainAgency() { + public function isMainAgency() + { return $this->bank->getMainAgency() === $this; } /** * @return BAV_Bank */ - public function getBank() { + public function getBank() + { return $this->bank; } /** * @return int */ - public function getID() { + public function getID() + { return $this->id; } /** * @return string */ - public function getPostcode() { + public function getPostcode() + { return $this->postcode; } /** * @return string */ - public function getCity() { + public function getCity() + { return $this->city; } /** * @return string */ - public function getName() { + public function getName() + { return $this->name; } /** * @return string */ - public function getShortTerm() { + public function getShortTerm() + { return $this->shortTerm; } /** * @return bool */ - public function hasPAN() { + public function hasPAN() + { return ! empty($this->pan); } /** * @return bool */ - public function hasBIC() { + public function hasBIC() + { return ! empty($this->bic); } /** * @throws BAV_AgencyException_UndefinedAttribute * @return string */ - public function getPAN() { + public function getPAN() + { if (! $this->hasPAN()) { throw new BAV_AgencyException_UndefinedAttribute($this, 'pan'); @@ -162,7 +173,8 @@ public function getPAN() { * @throws BAV_AgencyException_UndefinedAttribute * @return string */ - public function getBIC() { + public function getBIC() + { if (! $this->hasBIC()) { throw new BAV_AgencyException_UndefinedAttribute($this, 'bic'); diff --git a/classes/bank/BAV_Bank.php b/classes/bank/BAV_Bank.php index ea399826..5158cabb 100644 --- a/classes/bank/BAV_Bank.php +++ b/classes/bank/BAV_Bank.php @@ -74,7 +74,8 @@ class BAV_Bank extends BAV * @param string $bankID * @param string $validationType */ - public function __construct(BAV_DataBackend $dataBackend, $bankID, $validationType) { + public function __construct(BAV_DataBackend $dataBackend, $bankID, $validationType) + { $this->dataBackend = $dataBackend; $this->bankID = $bankID; $this->validationType = $validationType; @@ -82,13 +83,15 @@ public function __construct(BAV_DataBackend $dataBackend, $bankID, $validationTy /** * @return string */ - public function getValidationType() { + public function getValidationType() + { return $this->validationType; } /** * @return string */ - public function getBankID() { + public function getBankID() + { return (string) $this->bankID; } /** @@ -97,7 +100,8 @@ public function getBankID() { * @throws BAV_DataBackendException * @return BAV_Agency */ - public function getMainAgency() { + public function getMainAgency() + { if (is_null($this->mainAgency)) { $this->mainAgency = $this->dataBackend->_getMainAgency($this); @@ -110,7 +114,8 @@ public function getMainAgency() { * @throws BAV_DataBackendException * @return array */ - public function getAgencies() { + public function getAgencies() + { if (is_null($this->agencies)) { $this->agencies = $this->dataBackend->_getAgencies($this); @@ -124,14 +129,16 @@ public function getAgencies() { * @param string $account * @return bool */ - public function isValid($account) { + public function isValid($account) + { return $this->getValidator()->isValid($account); } /** * @throws BAV_ValidatorException_NotExists * @return BAV_Validator */ - public function getValidator() { + public function getValidator() + { if (is_null($this->validator)) { $this->validator = BAV_Validator::getInstance($this); diff --git a/classes/bank/exception/BAV_AgencyException.php b/classes/bank/exception/BAV_AgencyException.php index 3e65d6f2..186ad7ea 100644 --- a/classes/bank/exception/BAV_AgencyException.php +++ b/classes/bank/exception/BAV_AgencyException.php @@ -36,13 +36,15 @@ class BAV_AgencyException extends RuntimeException $agency; - public function __construct(BAV_Agency $agency) { + public function __construct(BAV_Agency $agency) + { $this->agency = $agency; } /** * @return BAV_Agency */ - public function getAgency() { + public function getAgency() + { return $this->agency; } diff --git a/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php b/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php index a3ffaffc..f0a07737 100644 --- a/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php +++ b/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php @@ -40,14 +40,16 @@ class BAV_AgencyException_UndefinedAttribute extends BAV_AgencyException /** * @param string $attribute */ - public function __construct(BAV_Agency $agency, $attribute) { + public function __construct(BAV_Agency $agency, $attribute) + { parent::__construct($agency); $this->attribute = $attribute; } /** * @return string */ - public function getAttribute() { + public function getAttribute() + { return $this->attribute; } diff --git a/classes/class/BAV_ClassFile.php b/classes/class/BAV_ClassFile.php index ee098055..49d5d66a 100644 --- a/classes/class/BAV_ClassFile.php +++ b/classes/class/BAV_ClassFile.php @@ -68,7 +68,8 @@ class BAV_ClassFile extends BAV * @throws BAV_ClassFileException_MissingClass * @param string $path */ - private function __construct($path) { + private function __construct($path) + { $this->path = $path; $this->name = basename($path, '.php'); @@ -111,7 +112,8 @@ private function __construct($path) { * @param string $path * @return BAV_ClassFile */ - public static function getClassFile($path) { + public static function getClassFile($path) + { if (! isset(self::$instances[$path])) { self::$instances[$path] = new self($path); @@ -124,7 +126,8 @@ public static function getClassFile($path) { * @param string $dir * @return array BAV_ClassFile objects */ - public static function getClassFiles($dir) { + public static function getClassFiles($dir) + { $classFiles = array(); $dh = opendir($dir); if (! $dh) { @@ -144,7 +147,8 @@ public static function getClassFiles($dir) { /** * @return BAV a new instance of {@link $name} */ - public function getInstance() { + public function getInstance() + { if (func_num_args() == 0) { return new $this->name(); @@ -162,7 +166,8 @@ public function getInstance() { * @throws BAV_ClassFileException_IO * @return string */ - public function getClassDefinition() { + public function getClassDefinition() + { if (is_null($this->classDefinition)) { $this->classDefinition = ''; $fp = fopen($this->path, 'r'); @@ -185,7 +190,8 @@ public function getClassDefinition() { /** * @return string */ - public function getName() { + public function getName() + { return $this->name; } diff --git a/classes/class/exception/BAV_ClassFileException_MissingClass.php b/classes/class/exception/BAV_ClassFileException_MissingClass.php index 14c68b94..bfe46ac0 100644 --- a/classes/class/exception/BAV_ClassFileException_MissingClass.php +++ b/classes/class/exception/BAV_ClassFileException_MissingClass.php @@ -44,20 +44,23 @@ class BAV_ClassFileException_MissingClass extends BAV_ClassFileException * @param string $className * @param string $missingClassName */ - public function __construct($className, $missingClassName) { + public function __construct($className, $missingClassName) + { $this->className = $className; $this->missingClassName = $missingClassName; } /** * @return string */ - public function getClassName() { + public function getClassName() + { return $this->className; } /** * @return string */ - public function getMissingClassName() { + public function getMissingClassName() + { return $this->missingClassName; } diff --git a/classes/dataBackend/BAV_DataBackend.php b/classes/dataBackend/BAV_DataBackend.php index 7757f577..c2709fb1 100644 --- a/classes/dataBackend/BAV_DataBackend.php +++ b/classes/dataBackend/BAV_DataBackend.php @@ -79,7 +79,8 @@ abstract public function install(); * @param string * @return BAV_Bank */ - public function getBank($bankID) { + public function getBank($bankID) + { if (! isset($this->instances[$bankID])) { $this->instances[$bankID] = $this->getNewBank($bankID); @@ -93,7 +94,8 @@ public function getBank($bankID) { * @param String $bankID * @return bool */ - public function bankExists($bankID) { + public function bankExists($bankID) + { try { $this->getBank($bankID); return true; diff --git a/classes/dataBackend/BAV_DataBackend_File.php b/classes/dataBackend/BAV_DataBackend_File.php index 937385e4..7767bae5 100644 --- a/classes/dataBackend/BAV_DataBackend_File.php +++ b/classes/dataBackend/BAV_DataBackend_File.php @@ -57,7 +57,8 @@ class BAV_DataBackend_File extends BAV_DataBackend /** * @param String $file The data source */ - public function __construct($file = null) { + public function __construct($file = null) + { $this->parser = new BAV_FileParser($file); } @@ -73,7 +74,8 @@ public function __construct($file = null) { * @param String $file * @throws BAV_DataBackendException_IO */ - private function sortFile($file) { + private function sortFile($file) + { //read the unordered bank file $lines = file($file); if (! is_array($lines) || empty($lines)) { @@ -116,7 +118,8 @@ private function sortFile($file) { * @see BAV_DataBackend::uninstall() * @throws BAV_DataBackendException_IO */ - public function uninstall() { + public function uninstall() + { if (! unlink($this->parser->getFile())) { throw new BAV_DataBackendException_IO(); @@ -126,7 +129,8 @@ public function uninstall() { * @see BAV_DataBackend::install() * @throws BAV_DataBackendException_IO */ - public function install() { + public function install() + { $this->update(); } /** @@ -136,7 +140,8 @@ public function install() { * @see BAV_DataBackend::update() * @throws BAV_DataBackendException_IO */ - public function update() { + public function update() + { $ch = curl_init(self::DOWNLOAD_URI); if (! is_resource($ch)) { throw new BAV_DataBackendException_IO(); @@ -258,7 +263,8 @@ public function update() { * @param String $destination path of the destination * @throws BAV_DataBackendException_IO */ - private function safeRename($source, $destination) { + private function safeRename($source, $destination) + { $isRenamed = @rename($source, $destination); if ($isRenamed) { return; @@ -298,7 +304,8 @@ private function safeRename($source, $destination) { * @return array * @see BAV_DataBackend::getAllBanks() */ - public function getAllBanks() { + public function getAllBanks() + { try { for ($i = 0; $i < $this->parser->getLines(); $i++) { if (isset($this->instances[$this->parser->getBankID($i)])) { @@ -327,7 +334,8 @@ public function getAllBanks() { * @see BAV_DataBackend::getNewBank() * @return BAV_Bank */ - public function getNewBank($bankID) { + public function getNewBank($bankID) + { try { $this->parser->rewind(); /** @@ -359,7 +367,8 @@ public function getNewBank($bankID) { * @param int $length the line count * @return BAV_Bank */ - private function findBank($bankID, $offset, $end) { + private function findBank($bankID, $offset, $end) + { if ($end - $offset < 0) { throw new BAV_DataBackendException_BankNotFound($bankID); @@ -401,7 +410,8 @@ private function findBank($bankID, $offset, $end) { * @throws BAV_DataBackendException_NoMainAgency * @return BAV_Agency */ - public function _getMainAgency(BAV_Bank $bank) { + public function _getMainAgency(BAV_Bank $bank) + { try { $context = $this->defineContextInterval($bank->getBankID()); for ($line = $context->getStart(); $line <= $context->getEnd(); $line++) { @@ -431,7 +441,8 @@ public function _getMainAgency(BAV_Bank $bank) { * @throws BAV_DataBackendException * @return array */ - public function _getAgencies(BAV_Bank $bank) { + public function _getAgencies(BAV_Bank $bank) + { try { $context = $this->defineContextInterval($bank->getBankID()); $agencies = array(); @@ -460,7 +471,8 @@ public function _getAgencies(BAV_Bank $bank) { /** * @return BAV_FileParserContext */ - private function defineContextInterval($bankID) { + private function defineContextInterval($bankID) + { if (! isset($this->contextCache[$bankID])) { throw new LogicException("The contextCache object should exist!"); @@ -500,7 +512,8 @@ private function defineContextInterval($bankID) { * @throws BAV_DataBackendException_IO * @return String a writable directory for temporary files */ - public static function getTempdir() { + public static function getTempdir() + { $tmpDirs = array( function_exists('sys_get_temp_dir') ? sys_get_temp_dir() : false, empty($_ENV['TMP']) ? false : $_ENV['TMP'], diff --git a/classes/dataBackend/BAV_DataBackend_PDO.php b/classes/dataBackend/BAV_DataBackend_PDO.php index b75e8e0c..4fc40895 100644 --- a/classes/dataBackend/BAV_DataBackend_PDO.php +++ b/classes/dataBackend/BAV_DataBackend_PDO.php @@ -79,7 +79,8 @@ class BAV_DataBackend_PDO extends BAV_DataBackend /** * @param String $prefix the prefix of the table names. Default is 'bav_'. */ - public function __construct(PDO $pdo, $prefix = 'bav_') { + public function __construct(PDO $pdo, $prefix = 'bav_') + { $this->pdo = $pdo; $this->prefix = $prefix; @@ -90,7 +91,8 @@ public function __construct(PDO $pdo, $prefix = 'bav_') { /** * @return string */ - public function getPrefix() { + public function getPrefix() + { return $this->prefix; } @@ -109,7 +111,8 @@ public function getPrefix() { * @throws BAV_DataBackendException * @return array */ - public function getAgencies($sql) { + public function getAgencies($sql) + { try { $this->prepareStatements(); $agencies = array(); @@ -157,7 +160,8 @@ public function getAgencies($sql) { /** * @throws PDOException */ - private function prepareStatements() { + private function prepareStatements() + { if (! is_null($this->selectBank)) { return; } @@ -186,7 +190,8 @@ private function prepareStatements() { * @see BAV_DataBackend::update() * @throws BAV_DataBackendException */ - public function update() { + public function update() + { $useTA = false; try { $fileBackend = new BAV_DataBackend_File(tempnam(BAV_DataBackend_File::getTempdir(), 'bav')); @@ -270,7 +275,8 @@ public function update() { * @see BAV_DataBackend::install() * @throws BAV_DataBackendException_IO */ - public function install() { + public function install() + { try { $createOptions = ''; switch ($this->pdo->getAttribute(PDO::ATTR_DRIVER_NAME)) { @@ -318,7 +324,8 @@ public function install() { * @see BAV_DataBackend::uninstall() * @throws BAV_DataBackendException_IO */ - public function uninstall() { + public function uninstall() + { try { $this->pdo->exec("DROP TABLE {$this->prefix}bank"); $this->pdo->exec("DROP TABLE {$this->prefix}agency"); @@ -335,7 +342,8 @@ public function uninstall() { * @throws BAV_DataBackendException * @return array */ - public function getAllBanks() { + public function getAllBanks() + { try { foreach ($this->pdo->query("SELECT id, validator FROM {$this->prefix}bank") as $bankResult) { if (isset($this->instances[$bankResult['id']])) { @@ -364,7 +372,8 @@ public function getAllBanks() { * @return BAV_Bank * @see BAV_DataBackend::getNewBank() */ - protected function getNewBank($bankID) { + protected function getNewBank($bankID) + { try { $this->prepareStatements(); $this->selectBank->execute(array(':bankID' => $bankID)); @@ -390,14 +399,16 @@ protected function getNewBank($bankID) { /** * @return bool */ - private function isValidBankResult(Array $result) { + private function isValidBankResult(Array $result) + { return array_key_exists('id', $result) && array_key_exists('validator', $result); } /** * @return bool */ - private function isValidAgencyResult(Array $result) { + private function isValidAgencyResult(Array $result) + { return array_key_exists('id', $result) && array_key_exists('name', $result) && array_key_exists('shortTerm', $result) @@ -410,7 +421,8 @@ private function isValidAgencyResult(Array $result) { * @return BAV_Bank * @throws BAV_DataBackendException_IO_MissingAttributes */ - private function getBankObject(Array $fetchedResult) { + private function getBankObject(Array $fetchedResult) + { if (! $this->isValidBankResult($fetchedResult)) { throw new BAV_DataBackendException_IO_MissingAttributes(); @@ -421,7 +433,8 @@ private function getBankObject(Array $fetchedResult) { * @return BAV_Agency * @throws BAV_DataBackendException_IO_MissingAttributes */ - private function getAgencyObject(BAV_Bank $bank, Array $fetchedResult) { + private function getAgencyObject(BAV_Bank $bank, Array $fetchedResult) + { if (! $this->isValidAgencyResult($fetchedResult)) { throw new BAV_DataBackendException_IO_MissingAttributes(); @@ -445,7 +458,8 @@ private function getAgencyObject(BAV_Bank $bank, Array $fetchedResult) { * @return BAV_Agency * @see BAV_DataBackend::_getMainAgency() */ - public function _getMainAgency(BAV_Bank $bank) { + public function _getMainAgency(BAV_Bank $bank) + { try { $this->prepareStatements(); $this->selectMainAgency->execute(array(":bankID" => $bank->getBankID())); @@ -472,7 +486,8 @@ public function _getMainAgency(BAV_Bank $bank) { * @return array * @see BAV_DataBackend::_getAgencies() */ - public function _getAgencies(BAV_Bank $bank) { + public function _getAgencies(BAV_Bank $bank) + { try { $this->prepareStatements(); $agencies = array(); diff --git a/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php b/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php index a78e251e..f70a2421 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php +++ b/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php @@ -36,14 +36,16 @@ class BAV_DataBackendException_BankNotFound extends BAV_DataBackendException $bankID; - public function __construct($bankID) { + public function __construct($bankID) + { parent::__construct("bank $bankID not found"); $this->bankID = $bankID; } /** * @return string */ - public function getBankID() { + public function getBankID() + { return $this->bankID; } diff --git a/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php b/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php index 3a70216b..7ddcff5f 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php +++ b/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php @@ -36,7 +36,8 @@ class BAV_DataBackendException_NoMainAgency extends BAV_DataBackendException $bank; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct("bank {$bank->getBankID()} has no main agency."); $this->bank = $bank; } @@ -45,7 +46,8 @@ public function __construct(BAV_Bank $bank) { /** * @return BAV_Bank */ - public function getBank() { + public function getBank() + { return $this->bank; } diff --git a/classes/dataBackend/fileParser/BAV_FileParser.php b/classes/dataBackend/fileParser/BAV_FileParser.php index 059a7bd0..abe827c4 100644 --- a/classes/dataBackend/fileParser/BAV_FileParser.php +++ b/classes/dataBackend/fileParser/BAV_FileParser.php @@ -83,7 +83,8 @@ class BAV_FileParser extends BAV /** * @param String $file The data source */ - public function __construct($file = null) { + public function __construct($file = null) + { $this->file = is_null($file) ? __DIR__ . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . "data" . DIRECTORY_SEPARATOR . "banklist.txt" : $file; @@ -92,7 +93,8 @@ public function __construct($file = null) { * @throws BAV_FileParserException_IO * @throws BAV_FileParserException_FileNotExists */ - private function init() { + private function init() + { if (is_resource($this->fp)) { return; @@ -132,7 +134,8 @@ private function init() { * @throws BAV_FileParserException_FileNotExists * @return int */ - public function getLines() { + public function getLines() + { $this->init(); return $this->lines; } @@ -140,7 +143,8 @@ public function getLines() { * @throws BAV_FileParserException_IO * @throws BAV_FileParserException_FileNotExists */ - public function rewind() { + public function rewind() + { if (fseek($this->getFileHandle(), 0) === -1) { throw new BAV_FileParserException_IO(); @@ -152,7 +156,8 @@ public function rewind() { * @param int $line * @param int $offset */ - public function seekLine($line, $offset = 0) { + public function seekLine($line, $offset = 0) + { if (fseek($this->getFileHandle(), $line * $this->lineLength + $offset) === -1) { throw new BAV_FileParserException_IO(); @@ -164,7 +169,8 @@ public function seekLine($line, $offset = 0) { * @param int $line * @return string */ - public function readLine($line) { + public function readLine($line) + { $this->seekLine($line); return self::$encoding->convert(fread($this->getFileHandle(), $this->lineLength), self::FILE_ENCODING); } @@ -174,7 +180,8 @@ public function readLine($line) { * @param int $line * @return string */ - public function getBankID($line) { + public function getBankID($line) + { $this->seekLine($line, self::BANKID_OFFSET); return self::$encoding->convert(fread($this->getFileHandle(), self::BANKID_LENGTH), self::FILE_ENCODING); } @@ -183,7 +190,8 @@ public function getBankID($line) { * @throws BAV_FileParserException_IO * @return resource */ - public function getFileHandle() { + public function getFileHandle() + { $this->init(); return $this->fp; } @@ -192,13 +200,15 @@ public function getFileHandle() { * @throws BAV_FileParserException_IO * @return int */ - public function getLineLength() { + public function getLineLength() + { $this->init(); return $this->lineLength; } /** */ - public function __destruct() { + public function __destruct() + { if (is_resource($this->fp)) { fclose($this->fp); @@ -209,7 +219,8 @@ public function __destruct() { * @param string $line * @return BAV_Bank */ - public function getBank(BAV_DataBackend $dataBackend, $line) { + public function getBank(BAV_DataBackend $dataBackend, $line) + { if (self::$encoding->strlen($line) < self::TYPE_OFFSET + self::TYPE_LENGTH) { throw new BAV_FileParserException_ParseError("Invalid line length in Line $line."); @@ -223,7 +234,8 @@ public function getBank(BAV_DataBackend $dataBackend, $line) { * @param string $line * @return BAV_Agency */ - public function getAgency(BAV_Bank $bank, $line) { + public function getAgency(BAV_Bank $bank, $line) + { if (self::$encoding->strlen($line) < self::ID_OFFSET + self::ID_LENGTH) { throw new BAV_FileParserException_ParseError("Invalid line length."); @@ -242,7 +254,8 @@ public function getAgency(BAV_Bank $bank, $line) { * @param string $line * @return bool */ - public function isMainAgency($line) { + public function isMainAgency($line) + { if (self::$encoding->strlen($line) < self::TYPE_OFFSET + self::TYPE_LENGTH) { throw new BAV_FileParserException_ParseError("Invalid line length."); @@ -252,7 +265,8 @@ public function isMainAgency($line) { /** * @return string */ - public function getFile() { + public function getFile() + { return $this->file; } diff --git a/classes/dataBackend/fileParser/BAV_FileParserContext.php b/classes/dataBackend/fileParser/BAV_FileParserContext.php index e69fa261..42fd2116 100644 --- a/classes/dataBackend/fileParser/BAV_FileParserContext.php +++ b/classes/dataBackend/fileParser/BAV_FileParserContext.php @@ -53,20 +53,23 @@ class BAV_FileParserContext extends BAV * @param string $bankID * @param int $line */ - public function __construct($line) { + public function __construct($line) + { $this->line = $line; } /** * @return int */ - public function getLine() { + public function getLine() + { return $this->line; } /** * @throws BAV_FileParserContextException_Undefined * @return int */ - public function getStart() { + public function getStart() + { if (is_null($this->start)) { throw new BAV_FileParserContextException_Undefined(); @@ -76,14 +79,16 @@ public function getStart() { /** * @return bool */ - public function isStartDefined() { + public function isStartDefined() + { return ! is_null($this->start); } /** * @throws BAV_FileParserContextException_Undefined * @return int */ - public function getEnd() { + public function getEnd() + { if (is_null($this->end)) { throw new BAV_FileParserContextException_Undefined(); @@ -93,19 +98,22 @@ public function getEnd() { /** * @return bool */ - public function isEndDefined() { + public function isEndDefined() + { return ! is_null($this->end); } /** * @param int $start */ - public function setStart($start) { + public function setStart($start) + { $this->start = $start; } /** * @param int $end */ - public function setEnd($end) { + public function setEnd($end) + { $this->end = $end; } diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php b/classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php index 8d7293cb..fb445e33 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php @@ -39,13 +39,15 @@ class BAV_FileParserException_FileNotExists extends BAV_FileParserException /** * @param string $file */ - public function __construct($parsedFile) { + public function __construct($parsedFile) + { $this->parsedFile = $parsedFile; } /** * @return string */ - public function getParsedFile() { + public function getParsedFile() + { return $this->parsedFile; } diff --git a/classes/encoding/BAV_Encoding.php b/classes/encoding/BAV_Encoding.php index e001dd90..c29abff8 100644 --- a/classes/encoding/BAV_Encoding.php +++ b/classes/encoding/BAV_Encoding.php @@ -47,7 +47,8 @@ abstract class BAV_Encoding extends BAV * @throws BAV_EncodingException_Unsupported * @param String $encoding */ - public function __construct($encoding = 'UTF-8') { + public function __construct($encoding = 'UTF-8') + { if (! $this->isSupported($encoding)) { throw new BAV_EncodingException_Unsupported($encoding); @@ -76,7 +77,8 @@ abstract public function convert($string, $from_encoding); * @param String * @return bool */ - public static function isSupported($encoding) { + public static function isSupported($encoding) + { return false; } /** @@ -84,7 +86,8 @@ public static function isSupported($encoding) { * @param String $encoding * @return BAV_Encoding */ - public static function getInstance($encoding) { + public static function getInstance($encoding) + { if (BAV_Encoding_Iconv::isSupported($encoding)) { return new BAV_Encoding_Iconv($encoding); diff --git a/classes/encoding/BAV_Encoding_ISO8859.php b/classes/encoding/BAV_Encoding_ISO8859.php index 43656175..662f2621 100644 --- a/classes/encoding/BAV_Encoding_ISO8859.php +++ b/classes/encoding/BAV_Encoding_ISO8859.php @@ -35,13 +35,15 @@ class BAV_Encoding_ISO8859 extends BAV_Encoding /** * @return bool */ - public static function isSupported($encoding) { + public static function isSupported($encoding) + { return preg_match('~^ISO-8859-([1-9]|1[0-5])$~', $encoding); } /** * @return int length of $string */ - public function strlen($string) { + public function strlen($string) + { return strlen($string); } /** @@ -50,7 +52,8 @@ public function strlen($string) { * @param int $length * @return String */ - public function substr($string, $offset, $length = null) { + public function substr($string, $offset, $length = null) + { return is_null($length) ? substr($string, $offset) : substr($string, $offset, $length); @@ -61,7 +64,8 @@ public function substr($string, $offset, $length = null) { * @param String $from_encoding * @return $string the encoded string */ - public function convert($string, $from_encoding) { + public function convert($string, $from_encoding) + { if ($from_encoding == $this->enc) { return $string; diff --git a/classes/encoding/BAV_Encoding_Iconv.php b/classes/encoding/BAV_Encoding_Iconv.php index cd74d328..33dbf77e 100644 --- a/classes/encoding/BAV_Encoding_Iconv.php +++ b/classes/encoding/BAV_Encoding_Iconv.php @@ -37,14 +37,16 @@ class BAV_Encoding_Iconv extends BAV_Encoding /** * @return bool */ - public static function isSupported($encoding) { + public static function isSupported($encoding) + { return function_exists("iconv_set_encoding"); } /** * @throws BAV_EncodingException_Unsupported * @param String $encoding */ - public function __construct($encoding = 'UTF-8') { + public function __construct($encoding = 'UTF-8') + { parent::__construct($encoding); iconv_set_encoding("internal_encoding", $encoding); @@ -52,7 +54,8 @@ public function __construct($encoding = 'UTF-8') { /** * @return int length of $string */ - public function strlen($string) { + public function strlen($string) + { return iconv_strlen($string); } /** @@ -61,7 +64,8 @@ public function strlen($string) { * @param int $length * @return String */ - public function substr($string, $offset, $length = null) { + public function substr($string, $offset, $length = null) + { return is_null($length) ? iconv_substr($string, $offset) : iconv_substr($string, $offset, $length); @@ -72,7 +76,8 @@ public function substr($string, $offset, $length = null) { * @param String $from_encoding * @return $string the encoded string */ - public function convert($string, $from_encoding) { + public function convert($string, $from_encoding) + { $encoded = iconv($from_encoding, $this->enc, $string); if ($encoded === false) { throw new BAV_EncodingException(); diff --git a/classes/encoding/BAV_Encoding_MB.php b/classes/encoding/BAV_Encoding_MB.php index 4a514850..7cfc34e4 100644 --- a/classes/encoding/BAV_Encoding_MB.php +++ b/classes/encoding/BAV_Encoding_MB.php @@ -35,7 +35,8 @@ class BAV_Encoding_MB extends BAV_Encoding /** * @return bool */ - public static function isSupported($encoding) { + public static function isSupported($encoding) + { return function_exists("mb_list_encodings") && in_array($encoding, mb_list_encodings()); } @@ -43,7 +44,8 @@ public static function isSupported($encoding) { * @throws BAV_EncodingException_Unsupported * @param String $encoding */ - public function __construct($encoding = 'UTF-8') { + public function __construct($encoding = 'UTF-8') + { parent::__construct($encoding); mb_internal_encoding($encoding); @@ -51,7 +53,8 @@ public function __construct($encoding = 'UTF-8') { /** * @return int length of $string */ - public function strlen($string) { + public function strlen($string) + { return mb_strlen($string); } /** @@ -60,7 +63,8 @@ public function strlen($string) { * @param int $length * @return String */ - public function substr($string, $offset, $length = null) { + public function substr($string, $offset, $length = null) + { return is_null($length) ? mb_substr($string, $offset) : mb_substr($string, $offset, $length); @@ -70,7 +74,8 @@ public function substr($string, $offset, $length = null) { * @param String $from_encoding * @return $string the encoded string */ - public function convert($string, $from_encoding) { + public function convert($string, $from_encoding) + { return mb_convert_encoding($string, $this->enc, $from_encoding); } diff --git a/classes/encoding/exception/BAV_EncodingException_Unsupported.php b/classes/encoding/exception/BAV_EncodingException_Unsupported.php index 4efea825..95b11f96 100644 --- a/classes/encoding/exception/BAV_EncodingException_Unsupported.php +++ b/classes/encoding/exception/BAV_EncodingException_Unsupported.php @@ -36,7 +36,8 @@ class BAV_EncodingException_Unsupported extends BAV_EncodingException $encoding = ''; - public function __construct($encoding) { + public function __construct($encoding) + { parent::__construct(); $this->encoding = $encoding; @@ -44,7 +45,8 @@ public function __construct($encoding) { /** * @return String */ - public function getEncoding() { + public function getEncoding() + { return $this->encoding; } diff --git a/classes/validator/BAV_Validator.php b/classes/validator/BAV_Validator.php index 09d2765b..ab91f319 100644 --- a/classes/validator/BAV_Validator.php +++ b/classes/validator/BAV_Validator.php @@ -60,7 +60,8 @@ abstract class BAV_Validator extends BAV $bank; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { $this->bank = $bank; $this->setChecknumberPosition(-1); } @@ -68,7 +69,8 @@ public function __construct(BAV_Bank $bank) { * @throws BAV_ValidatorException_NotExists * @return BAV_Validator */ - public static function getInstance(BAV_Bank $bank) { + public static function getInstance(BAV_Bank $bank) + { $type = trim(strtoupper($bank->getValidationType())); $class = "BAV_Validator_$type"; $file = __DIR__."/validators/$class.php"; @@ -85,7 +87,8 @@ public static function getInstance(BAV_Bank $bank) { * @param string $account * @return bool */ - public function isValid($account) { + public function isValid($account) + { try { $this->init($account); $this->validate(); @@ -98,16 +101,19 @@ public function isValid($account) { } - public function setChecknumberPosition($position) { + public function setChecknumberPosition($position) + { $this->checknumberPosition = $position; } - public function setNormalizedSize($size) { + public function setNormalizedSize($size) + { $this->normalizedSize = $size; } /** * @param string $account */ - protected function init($account) { + protected function init($account) + { $this->account = $account; if ($this->doNormalization) { $this->normalizeAccount($this->normalizedSize); @@ -124,7 +130,8 @@ abstract protected function getResult(); /** * @return string */ - protected function getChecknumber() { + protected function getChecknumber() + { return $this->account{$this->getNormalizedPosition($this->checknumberPosition)}; } /** @@ -134,7 +141,8 @@ protected function getChecknumber() { * @return int * @throws BAV_ValidatorException_OutOfBounds */ - protected function getNormalizedPosition($pos) { + protected function getNormalizedPosition($pos) + { if ($pos >= strlen($this->account) || $pos < -strlen($this->account)) { throw new BAV_ValidatorException_OutOfBounds("Cannot access offset $pos in String $this->account"); @@ -154,7 +162,8 @@ protected function getNormalizedPosition($pos) { * @param int $int * @return int */ - protected function crossSum($int) { + protected function crossSum($int) + { $sum = 0; $str_int = (string) $int; for ($i = 0; $i < strlen($str_int); $i++) { @@ -170,7 +179,8 @@ protected function crossSum($int) { * @throws BAV_ValidatorException_OutOfBounds * @param int $int */ - protected function normalizeAccount($size) { + protected function normalizeAccount($size) + { $account = (string) $this->account; if (strlen($account) > $size) { throw new BAV_ValidatorException_OutOfBounds("Can't normalize $account to size $size."); @@ -182,7 +192,8 @@ protected function normalizeAccount($size) { * @throws BAV_ValidatorException_ESER * @return string */ - protected function getESER8() { + protected function getESER8() + { $account = ltrim($this->account, '0'); if (strlen($account) != 8) { @@ -211,7 +222,8 @@ protected function getESER8() { * @throws BAV_ValidatorException_ESER * @return string */ - protected function getESER9() { + protected function getESER9() + { $bankID = $this->bank->getBankID(); $account = ltrim($this->account, '0'); @@ -236,13 +248,16 @@ protected function getESER9() { $eser = $blzPart0.$t.$blzPart1.$accountPart0.$p.$accountTail; return $eser; } - protected function getEserChecknumberPosition() { + protected function getEserChecknumberPosition() + { return $this->getNormalizedPosition($this->checknumberPosition + $this->eserChecknumberOffset); } - protected function getEserChecknumber() { + protected function getEserChecknumber() + { return $this->account{$this->getEserChecknumberPosition()}; } - protected function isBetween($a, $b) { + protected function isBetween($a, $b) + { $account = (int) ltrim($this->account, '0'); return $a < $b diff --git a/classes/validator/BAV_Validator_Chain.php b/classes/validator/BAV_Validator_Chain.php index 1fa35659..5d7baa04 100644 --- a/classes/validator/BAV_Validator_Chain.php +++ b/classes/validator/BAV_Validator_Chain.php @@ -48,7 +48,8 @@ class BAV_Validator_Chain extends BAV_Validator * * @return void */ - public function addValidator(BAV_Validator $validator) { + public function addValidator(BAV_Validator $validator) + { $this->validators[] = $validator; } @@ -58,7 +59,8 @@ public function addValidator(BAV_Validator $validator) { * * @return bool */ - protected function getResult() { + protected function getResult() + { foreach ($this->validators as $validator) { if (! $this->continueValidation($validator)) { return false; @@ -75,7 +77,8 @@ protected function getResult() { /** * should not be used */ - final protected function validate() { + final protected function validate() + { } /** * After each successless iteration step this method will be called and @@ -83,7 +86,8 @@ final protected function validate() { * * @return bool */ - protected function continueValidation(BAV_Validator $validator) { + protected function continueValidation(BAV_Validator $validator) + { return true; } /** @@ -91,7 +95,8 @@ protected function continueValidation(BAV_Validator $validator) { * * @return bool */ - protected function useValidator(BAV_Validator $validator) { + protected function useValidator(BAV_Validator $validator) + { return true; } diff --git a/classes/validator/BAV_Validator_Iteration.php b/classes/validator/BAV_Validator_Iteration.php index 940de593..cf36c069 100644 --- a/classes/validator/BAV_Validator_Iteration.php +++ b/classes/validator/BAV_Validator_Iteration.php @@ -59,7 +59,8 @@ abstract class BAV_Validator_Iteration extends BAV_Validator $end = 0; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setStart(-2); @@ -68,24 +69,28 @@ public function __construct(BAV_Bank $bank) { /** * @param int $start */ - public function setStart($start) { + public function setStart($start) + { $this->start = $start; } /** * @param int $end */ - public function setEnd($end) { + public function setEnd($end) + { $this->end = $end; } /** * @param string $account */ - protected function init($account) { + protected function init($account) + { parent::init($account); $this->accumulator = 0; } - protected function validate() { + protected function validate() + { $start = $this->getNormalizedPosition($this->start); $end = $this->getNormalizedPosition($this->end); $length = abs($end - $start) + 1; diff --git a/classes/validator/BAV_Validator_Iteration_Transformation.php b/classes/validator/BAV_Validator_Iteration_Transformation.php index 7264dddd..b626f7f4 100644 --- a/classes/validator/BAV_Validator_Iteration_Transformation.php +++ b/classes/validator/BAV_Validator_Iteration_Transformation.php @@ -43,12 +43,14 @@ abstract class BAV_Validator_Iteration_Transformation extends BAV_Validator_Iter /** * The iteration step */ - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->getTransformedNumber(); } /** */ - public function setMatrix(Array $matrix) { + public function setMatrix(Array $matrix) + { $this->matrix = $matrix; if (empty($this->rowIteration)) { for($i = 0; $i < count($matrix); $i++) { @@ -60,20 +62,23 @@ public function setMatrix(Array $matrix) { } /** */ - public function setRowIteration(Array $rowIteration) { + public function setRowIteration(Array $rowIteration) + { $this->rowIteration = $rowIteration; } /** * @return array */ - protected function getTransformationRow() { + protected function getTransformationRow() + { return $this->matrix[$this->rowIteration[$this->i % count($this->rowIteration)]]; } /** * @param int $i * @return int */ - protected function getTransformedNumber() { + protected function getTransformedNumber() + { $row = $this->getTransformationRow(); return array_key_exists($this->number, $row) ? $row[$this->number] diff --git a/classes/validator/BAV_Validator_Iteration_Weighted.php b/classes/validator/BAV_Validator_Iteration_Weighted.php index e82a2e4a..5bc95fe9 100644 --- a/classes/validator/BAV_Validator_Iteration_Weighted.php +++ b/classes/validator/BAV_Validator_Iteration_Weighted.php @@ -45,7 +45,8 @@ abstract class BAV_Validator_Iteration_Weighted extends BAV_Validator_Iteration /** */ - public function setWeights(Array $weights) { + public function setWeights(Array $weights) + { $this->weights = $weights; } @@ -53,7 +54,8 @@ public function setWeights(Array $weights) { /** * @param int $divisor */ - public function setDivisor($divisor) { + public function setDivisor($divisor) + { $this->divisor = $divisor; } @@ -61,7 +63,8 @@ public function setDivisor($divisor) { /** * @return int */ - protected function getWeight() { + protected function getWeight() + { return $this->weights[$this->i % count($this->weights)]; } diff --git a/classes/validator/exception/BAV_ValidatorException_NotExists.php b/classes/validator/exception/BAV_ValidatorException_NotExists.php index ee26bddf..67438d65 100644 --- a/classes/validator/exception/BAV_ValidatorException_NotExists.php +++ b/classes/validator/exception/BAV_ValidatorException_NotExists.php @@ -37,13 +37,15 @@ class BAV_ValidatorException_NotExists extends BAV_ValidatorException $bank; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { $this->bank = $bank; } /** * @return BAV_Bank */ - public function getBank() { + public function getBank() + { return $this->bank; } diff --git a/classes/validator/validators/BAV_Validator_00.php b/classes/validator/validators/BAV_Validator_00.php index f9112ad7..dc09a69b 100644 --- a/classes/validator/validators/BAV_Validator_00.php +++ b/classes/validator/validators/BAV_Validator_00.php @@ -28,7 +28,8 @@ class BAV_Validator_00 extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 1)); @@ -36,12 +37,14 @@ public function __construct(BAV_Bank $bank) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->crossSum($this->number * $this->getWeight()); } - protected function getResult() { + protected function getResult() + { $result = $this->divisor - ($this->accumulator % $this->divisor); $result = ($result == $this->divisor) ? 0 : $result; return (string)$result === $this->getCheckNumber(); diff --git a/classes/validator/validators/BAV_Validator_01.php b/classes/validator/validators/BAV_Validator_01.php index d2ed057d..9d0963a0 100644 --- a/classes/validator/validators/BAV_Validator_01.php +++ b/classes/validator/validators/BAV_Validator_01.php @@ -28,19 +28,22 @@ class BAV_Validator_01 extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(3, 7, 1)); } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { + protected function getResult() + { $result = (10 - ($this->accumulator % 10)) % 10; return (string)$result === $this->getCheckNumber(); } diff --git a/classes/validator/validators/BAV_Validator_02.php b/classes/validator/validators/BAV_Validator_02.php index 5f1683b7..4537b7bc 100644 --- a/classes/validator/validators/BAV_Validator_02.php +++ b/classes/validator/validators/BAV_Validator_02.php @@ -28,7 +28,8 @@ class BAV_Validator_02 extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9)); @@ -36,12 +37,14 @@ public function __construct(BAV_Bank $bank) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { + protected function getResult() + { $result = $this->divisor - $this->accumulator % $this->divisor; $result = ($result == $this->divisor) ? 0 : $result; return $result == 10 diff --git a/classes/validator/validators/BAV_Validator_03.php b/classes/validator/validators/BAV_Validator_03.php index 209976b1..af345746 100644 --- a/classes/validator/validators/BAV_Validator_03.php +++ b/classes/validator/validators/BAV_Validator_03.php @@ -28,7 +28,8 @@ class BAV_Validator_03 extends BAV_Validator_01 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 1)); diff --git a/classes/validator/validators/BAV_Validator_04.php b/classes/validator/validators/BAV_Validator_04.php index f0bd0ca0..8ae8e606 100644 --- a/classes/validator/validators/BAV_Validator_04.php +++ b/classes/validator/validators/BAV_Validator_04.php @@ -28,7 +28,8 @@ class BAV_Validator_04 extends BAV_Validator_02 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7)); diff --git a/classes/validator/validators/BAV_Validator_05.php b/classes/validator/validators/BAV_Validator_05.php index ae1dba71..529f2ae7 100644 --- a/classes/validator/validators/BAV_Validator_05.php +++ b/classes/validator/validators/BAV_Validator_05.php @@ -28,7 +28,8 @@ class BAV_Validator_05 extends BAV_Validator_01 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(7, 3, 1)); diff --git a/classes/validator/validators/BAV_Validator_06.php b/classes/validator/validators/BAV_Validator_06.php index fd5cc6b9..9a9c2d2a 100644 --- a/classes/validator/validators/BAV_Validator_06.php +++ b/classes/validator/validators/BAV_Validator_06.php @@ -28,7 +28,8 @@ class BAV_Validator_06 extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7)); @@ -36,12 +37,14 @@ public function __construct(BAV_Bank $bank) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { + protected function getResult() + { $result = $this->divisor - $this->accumulator % $this->divisor; $result = $result == $this->divisor ? 0 diff --git a/classes/validator/validators/BAV_Validator_07.php b/classes/validator/validators/BAV_Validator_07.php index 39c7afbc..80a378d9 100644 --- a/classes/validator/validators/BAV_Validator_07.php +++ b/classes/validator/validators/BAV_Validator_07.php @@ -28,7 +28,8 @@ class BAV_Validator_07 extends BAV_Validator_02 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 10)); diff --git a/classes/validator/validators/BAV_Validator_08.php b/classes/validator/validators/BAV_Validator_08.php index 358b9a7b..5ce7ac38 100644 --- a/classes/validator/validators/BAV_Validator_08.php +++ b/classes/validator/validators/BAV_Validator_08.php @@ -28,14 +28,16 @@ class BAV_Validator_08 extends BAV_Validator_00 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 1)); } - protected function getResult() { + protected function getResult() + { return ((int)$this->account<= 60000) ? false : parent::getResult(); diff --git a/classes/validator/validators/BAV_Validator_09.php b/classes/validator/validators/BAV_Validator_09.php index 03895019..54131c15 100644 --- a/classes/validator/validators/BAV_Validator_09.php +++ b/classes/validator/validators/BAV_Validator_09.php @@ -28,12 +28,14 @@ class BAV_Validator_09 extends BAV_Validator { - protected function validate() { + protected function validate() + { } /** * @return bool */ - protected function getResult() { + protected function getResult() + { return true; } diff --git a/classes/validator/validators/BAV_Validator_10.php b/classes/validator/validators/BAV_Validator_10.php index bc8e153c..089b277b 100644 --- a/classes/validator/validators/BAV_Validator_10.php +++ b/classes/validator/validators/BAV_Validator_10.php @@ -28,7 +28,8 @@ class BAV_Validator_10 extends BAV_Validator_06 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 10)); diff --git a/classes/validator/validators/BAV_Validator_11.php b/classes/validator/validators/BAV_Validator_11.php index bbac481c..e14c3609 100644 --- a/classes/validator/validators/BAV_Validator_11.php +++ b/classes/validator/validators/BAV_Validator_11.php @@ -28,14 +28,16 @@ class BAV_Validator_11 extends BAV_Validator_06 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 10)); } - protected function getResult() { + protected function getResult() + { $result = 11 - $this->accumulator % 11; switch ($result) { case 11: diff --git a/classes/validator/validators/BAV_Validator_13.php b/classes/validator/validators/BAV_Validator_13.php index 76b088fc..680c1adb 100644 --- a/classes/validator/validators/BAV_Validator_13.php +++ b/classes/validator/validators/BAV_Validator_13.php @@ -28,7 +28,8 @@ class BAV_Validator_13 extends BAV_Validator_00 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 1)); @@ -42,7 +43,8 @@ public function __construct(BAV_Bank $bank) { * @param string $account * @return bool */ - public function isValid($account) { + public function isValid($account) + { if (parent::isValid($account)) { return true; diff --git a/classes/validator/validators/BAV_Validator_14.php b/classes/validator/validators/BAV_Validator_14.php index 69301e06..0f126a30 100644 --- a/classes/validator/validators/BAV_Validator_14.php +++ b/classes/validator/validators/BAV_Validator_14.php @@ -28,7 +28,8 @@ class BAV_Validator_14 extends BAV_Validator_02 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7)); diff --git a/classes/validator/validators/BAV_Validator_15.php b/classes/validator/validators/BAV_Validator_15.php index 2bcdafee..014083c4 100644 --- a/classes/validator/validators/BAV_Validator_15.php +++ b/classes/validator/validators/BAV_Validator_15.php @@ -28,7 +28,8 @@ class BAV_Validator_15 extends BAV_Validator_06 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5)); diff --git a/classes/validator/validators/BAV_Validator_16.php b/classes/validator/validators/BAV_Validator_16.php index 53007ae6..8461f77c 100644 --- a/classes/validator/validators/BAV_Validator_16.php +++ b/classes/validator/validators/BAV_Validator_16.php @@ -28,14 +28,16 @@ class BAV_Validator_16 extends BAV_Validator_06 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7)); } - protected function getResult() { + protected function getResult() + { return $this->accumulator % 11 === 1 ? $this->getChecknumber() === $this->account{$this->getNormalizedPosition($this->checknumberPosition) - 1} : parent::getResult(); diff --git a/classes/validator/validators/BAV_Validator_17.php b/classes/validator/validators/BAV_Validator_17.php index 1a84a066..982b8bc8 100644 --- a/classes/validator/validators/BAV_Validator_17.php +++ b/classes/validator/validators/BAV_Validator_17.php @@ -28,7 +28,8 @@ class BAV_Validator_17 extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(1, 2)); @@ -38,12 +39,14 @@ public function __construct(BAV_Bank $bank) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->crossSum($this->number * $this->getWeight()); } - protected function getResult() { + protected function getResult() + { $result = (10 - ($this->accumulator - 1) % 11) % 10; return $this->accumulator != 0 && (string)$result === $this->getCheckNumber(); } diff --git a/classes/validator/validators/BAV_Validator_18.php b/classes/validator/validators/BAV_Validator_18.php index a55d4ad3..8173169c 100644 --- a/classes/validator/validators/BAV_Validator_18.php +++ b/classes/validator/validators/BAV_Validator_18.php @@ -28,7 +28,8 @@ class BAV_Validator_18 extends BAV_Validator_01 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(3, 9, 7, 1)); diff --git a/classes/validator/validators/BAV_Validator_19.php b/classes/validator/validators/BAV_Validator_19.php index e4db27ed..9054b31c 100644 --- a/classes/validator/validators/BAV_Validator_19.php +++ b/classes/validator/validators/BAV_Validator_19.php @@ -28,7 +28,8 @@ class BAV_Validator_19 extends BAV_Validator_06 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 1)); diff --git a/classes/validator/validators/BAV_Validator_20.php b/classes/validator/validators/BAV_Validator_20.php index 6f0a522f..67071d5b 100644 --- a/classes/validator/validators/BAV_Validator_20.php +++ b/classes/validator/validators/BAV_Validator_20.php @@ -28,7 +28,8 @@ class BAV_Validator_20 extends BAV_Validator_06 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 3)); diff --git a/classes/validator/validators/BAV_Validator_21.php b/classes/validator/validators/BAV_Validator_21.php index b4125d9e..69e63cdc 100644 --- a/classes/validator/validators/BAV_Validator_21.php +++ b/classes/validator/validators/BAV_Validator_21.php @@ -28,14 +28,16 @@ class BAV_Validator_21 extends BAV_Validator_00 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 1)); } - protected function getResult() { + protected function getResult() + { for ($result = $this->accumulator; $result >= 10; $result = $this->crossSum($result)); $result = 10 - $result; return (string)$result === $this->getCheckNumber(); diff --git a/classes/validator/validators/BAV_Validator_22.php b/classes/validator/validators/BAV_Validator_22.php index 3034bf29..2c1a5db4 100644 --- a/classes/validator/validators/BAV_Validator_22.php +++ b/classes/validator/validators/BAV_Validator_22.php @@ -28,19 +28,22 @@ class BAV_Validator_22 extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(3, 1)); } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += ($this->number * $this->getWeight()) % 10; } - protected function getResult() { + protected function getResult() + { $result = (10 - ($this->accumulator % 10)) % 10; return (string)$result === $this->getCheckNumber(); } diff --git a/classes/validator/validators/BAV_Validator_23.php b/classes/validator/validators/BAV_Validator_23.php index 2c032fa8..a6d308d4 100644 --- a/classes/validator/validators/BAV_Validator_23.php +++ b/classes/validator/validators/BAV_Validator_23.php @@ -28,7 +28,8 @@ class BAV_Validator_23 extends BAV_Validator_16 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7)); diff --git a/classes/validator/validators/BAV_Validator_24.php b/classes/validator/validators/BAV_Validator_24.php index 6d3b9a8e..01065a83 100644 --- a/classes/validator/validators/BAV_Validator_24.php +++ b/classes/validator/validators/BAV_Validator_24.php @@ -28,7 +28,8 @@ class BAV_Validator_24 extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(1, 2, 3)); @@ -37,19 +38,22 @@ public function __construct(BAV_Bank $bank) { } - protected function init($account) { + protected function init($account) + { parent::init($account); $this->account = preg_replace('~^([3456]|9..)?0*~', '', $this->account); } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += ($this->number * $this->getWeight() + $this->getWeight()) % 11; } - protected function getResult() { + protected function getResult() + { $result = $this->accumulator % 10; return (string)$result === $this->getCheckNumber(); } diff --git a/classes/validator/validators/BAV_Validator_25.php b/classes/validator/validators/BAV_Validator_25.php index cc4da9dc..080d27c0 100644 --- a/classes/validator/validators/BAV_Validator_25.php +++ b/classes/validator/validators/BAV_Validator_25.php @@ -28,19 +28,22 @@ class BAV_Validator_25 extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9)); } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { + protected function getResult() + { $result = 11 - ($this->accumulator % 11); switch ($result) { diff --git a/classes/validator/validators/BAV_Validator_26.php b/classes/validator/validators/BAV_Validator_26.php index adb96d0a..a8510f91 100644 --- a/classes/validator/validators/BAV_Validator_26.php +++ b/classes/validator/validators/BAV_Validator_26.php @@ -28,7 +28,8 @@ class BAV_Validator_26 extends BAV_Validator_06 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7)); @@ -38,7 +39,8 @@ public function __construct(BAV_Bank $bank) { } - protected function init($account) { + protected function init($account) + { parent::init($account); if (substr($this->account, 0, 2) === '00') { diff --git a/classes/validator/validators/BAV_Validator_27.php b/classes/validator/validators/BAV_Validator_27.php index 4d8b7204..68b61721 100644 --- a/classes/validator/validators/BAV_Validator_27.php +++ b/classes/validator/validators/BAV_Validator_27.php @@ -36,7 +36,8 @@ class BAV_Validator_27 extends BAV_Validator_Iteration_Transformation $validator00; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validator00 = new BAV_Validator_00($bank); @@ -52,7 +53,8 @@ public function __construct(BAV_Bank $bank) { * @param string $account * @return bool */ - public function isValid($account) { + public function isValid($account) + { return (int) $account <= 999999999 ? $this->validator00->isValid($account) : parent::isValid($account); @@ -60,7 +62,8 @@ public function isValid($account) { /** * @return bool */ - protected function getResult() { + protected function getResult() + { $result = (10 - ($this->accumulator % 10)) % 10; return (string)$result === $this->getCheckNumber(); } diff --git a/classes/validator/validators/BAV_Validator_28.php b/classes/validator/validators/BAV_Validator_28.php index 33cedd39..9cdf01a6 100644 --- a/classes/validator/validators/BAV_Validator_28.php +++ b/classes/validator/validators/BAV_Validator_28.php @@ -28,7 +28,8 @@ class BAV_Validator_28 extends BAV_Validator_06 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7, 8)); diff --git a/classes/validator/validators/BAV_Validator_29.php b/classes/validator/validators/BAV_Validator_29.php index c2f11c21..4e6a9b02 100644 --- a/classes/validator/validators/BAV_Validator_29.php +++ b/classes/validator/validators/BAV_Validator_29.php @@ -28,7 +28,8 @@ class BAV_Validator_29 extends BAV_Validator_Iteration_Transformation { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setMatrix(array( @@ -41,7 +42,8 @@ public function __construct(BAV_Bank $bank) { /** * @return bool */ - protected function getResult() { + protected function getResult() + { $result = (10 - ($this->accumulator % 10)) % 10; return (string)$result === $this->getCheckNumber(); } diff --git a/classes/validator/validators/BAV_Validator_30.php b/classes/validator/validators/BAV_Validator_30.php index 6e5d1c54..2fa369c8 100644 --- a/classes/validator/validators/BAV_Validator_30.php +++ b/classes/validator/validators/BAV_Validator_30.php @@ -28,7 +28,8 @@ class BAV_Validator_30 extends BAV_Validator_00 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 0, 0, 0, 0, 1, 2, 1, 2)); @@ -37,7 +38,8 @@ public function __construct(BAV_Bank $bank) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->number * $this->getWeight(); } diff --git a/classes/validator/validators/BAV_Validator_31.php b/classes/validator/validators/BAV_Validator_31.php index 6b5cf3c3..ad0807a7 100644 --- a/classes/validator/validators/BAV_Validator_31.php +++ b/classes/validator/validators/BAV_Validator_31.php @@ -28,19 +28,22 @@ class BAV_Validator_31 extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(9, 8, 7, 6, 5, 4, 3, 2, 1)); } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { + protected function getResult() + { $result = $this->accumulator % 11; if ($result == 11) { $result = 0; diff --git a/classes/validator/validators/BAV_Validator_32.php b/classes/validator/validators/BAV_Validator_32.php index e19e245f..feb59182 100644 --- a/classes/validator/validators/BAV_Validator_32.php +++ b/classes/validator/validators/BAV_Validator_32.php @@ -28,7 +28,8 @@ class BAV_Validator_32 extends BAV_Validator_06 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7)); diff --git a/classes/validator/validators/BAV_Validator_33.php b/classes/validator/validators/BAV_Validator_33.php index 33dba3b4..9793a216 100644 --- a/classes/validator/validators/BAV_Validator_33.php +++ b/classes/validator/validators/BAV_Validator_33.php @@ -28,7 +28,8 @@ class BAV_Validator_33 extends BAV_Validator_06 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6)); diff --git a/classes/validator/validators/BAV_Validator_34.php b/classes/validator/validators/BAV_Validator_34.php index 6eac55c9..fb421857 100644 --- a/classes/validator/validators/BAV_Validator_34.php +++ b/classes/validator/validators/BAV_Validator_34.php @@ -28,7 +28,8 @@ class BAV_Validator_34 extends BAV_Validator_28 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 4, 8, 5, 10, 9, 7)); diff --git a/classes/validator/validators/BAV_Validator_35.php b/classes/validator/validators/BAV_Validator_35.php index 4cf3f1d1..aa62d1be 100644 --- a/classes/validator/validators/BAV_Validator_35.php +++ b/classes/validator/validators/BAV_Validator_35.php @@ -28,19 +28,22 @@ class BAV_Validator_35 extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 10)); } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { + protected function getResult() + { $result = $this->accumulator % 11; if ($result === 10) { return $this->account{9} === $this->account{8}; diff --git a/classes/validator/validators/BAV_Validator_36.php b/classes/validator/validators/BAV_Validator_36.php index d6fba4be..0b32d541 100644 --- a/classes/validator/validators/BAV_Validator_36.php +++ b/classes/validator/validators/BAV_Validator_36.php @@ -28,7 +28,8 @@ class BAV_Validator_36 extends BAV_Validator_06 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 4, 8, 5)); diff --git a/classes/validator/validators/BAV_Validator_37.php b/classes/validator/validators/BAV_Validator_37.php index 961784dd..4deba088 100644 --- a/classes/validator/validators/BAV_Validator_37.php +++ b/classes/validator/validators/BAV_Validator_37.php @@ -28,7 +28,8 @@ class BAV_Validator_37 extends BAV_Validator_06 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 4, 8, 5, 10)); diff --git a/classes/validator/validators/BAV_Validator_38.php b/classes/validator/validators/BAV_Validator_38.php index a733cbc1..e63df043 100644 --- a/classes/validator/validators/BAV_Validator_38.php +++ b/classes/validator/validators/BAV_Validator_38.php @@ -28,7 +28,8 @@ class BAV_Validator_38 extends BAV_Validator_06 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 4, 8, 5, 10, 9)); diff --git a/classes/validator/validators/BAV_Validator_39.php b/classes/validator/validators/BAV_Validator_39.php index bc116700..0f6f6196 100644 --- a/classes/validator/validators/BAV_Validator_39.php +++ b/classes/validator/validators/BAV_Validator_39.php @@ -28,7 +28,8 @@ class BAV_Validator_39 extends BAV_Validator_06 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 4, 8, 5, 10, 9, 7)); diff --git a/classes/validator/validators/BAV_Validator_40.php b/classes/validator/validators/BAV_Validator_40.php index af7d5731..009e5824 100644 --- a/classes/validator/validators/BAV_Validator_40.php +++ b/classes/validator/validators/BAV_Validator_40.php @@ -28,7 +28,8 @@ class BAV_Validator_40 extends BAV_Validator_06 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 4, 8, 5, 10, 9, 7, 3, 6)); diff --git a/classes/validator/validators/BAV_Validator_41.php b/classes/validator/validators/BAV_Validator_41.php index d6beec2b..c07fd537 100644 --- a/classes/validator/validators/BAV_Validator_41.php +++ b/classes/validator/validators/BAV_Validator_41.php @@ -28,14 +28,16 @@ class BAV_Validator_41 extends BAV_Validator_00 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 1)); } - protected function init($account) { + protected function init($account) + { parent::init($account); if ($this->account{3} == 9) { diff --git a/classes/validator/validators/BAV_Validator_42.php b/classes/validator/validators/BAV_Validator_42.php index ad802967..dfb79fca 100644 --- a/classes/validator/validators/BAV_Validator_42.php +++ b/classes/validator/validators/BAV_Validator_42.php @@ -28,7 +28,8 @@ class BAV_Validator_42 extends BAV_Validator_06 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9)); diff --git a/classes/validator/validators/BAV_Validator_43.php b/classes/validator/validators/BAV_Validator_43.php index 41edd3fb..066b9d1e 100644 --- a/classes/validator/validators/BAV_Validator_43.php +++ b/classes/validator/validators/BAV_Validator_43.php @@ -28,19 +28,22 @@ class BAV_Validator_43 extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(1, 2, 3, 4, 5, 6, 7, 8, 9)); } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { + protected function getResult() + { $result = (10 - ($this->accumulator % 10)) % 10; return (string)$result === $this->getCheckNumber(); } diff --git a/classes/validator/validators/BAV_Validator_44.php b/classes/validator/validators/BAV_Validator_44.php index 40058832..b8db14b9 100644 --- a/classes/validator/validators/BAV_Validator_44.php +++ b/classes/validator/validators/BAV_Validator_44.php @@ -28,7 +28,8 @@ class BAV_Validator_44 extends BAV_Validator_33 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 4, 8, 5, 10, 0, 0, 0, 0)); diff --git a/classes/validator/validators/BAV_Validator_45.php b/classes/validator/validators/BAV_Validator_45.php index 15bd64fb..c0ee806b 100644 --- a/classes/validator/validators/BAV_Validator_45.php +++ b/classes/validator/validators/BAV_Validator_45.php @@ -28,7 +28,8 @@ class BAV_Validator_45 extends BAV_Validator_00 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 1)); @@ -36,7 +37,8 @@ public function __construct(BAV_Bank $bank) { /** * @return bool */ - protected function getResult() { + protected function getResult() + { return $this->account{0} === '0' || $this->account{4} === '1' || parent::getResult(); diff --git a/classes/validator/validators/BAV_Validator_46.php b/classes/validator/validators/BAV_Validator_46.php index 750d0b8a..c28e89bc 100644 --- a/classes/validator/validators/BAV_Validator_46.php +++ b/classes/validator/validators/BAV_Validator_46.php @@ -28,7 +28,8 @@ class BAV_Validator_46 extends BAV_Validator_06 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6)); diff --git a/classes/validator/validators/BAV_Validator_47.php b/classes/validator/validators/BAV_Validator_47.php index 644e73ac..c939e691 100644 --- a/classes/validator/validators/BAV_Validator_47.php +++ b/classes/validator/validators/BAV_Validator_47.php @@ -28,7 +28,8 @@ class BAV_Validator_47 extends BAV_Validator_06 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6)); diff --git a/classes/validator/validators/BAV_Validator_48.php b/classes/validator/validators/BAV_Validator_48.php index 5e1905df..4d087e62 100644 --- a/classes/validator/validators/BAV_Validator_48.php +++ b/classes/validator/validators/BAV_Validator_48.php @@ -28,7 +28,8 @@ class BAV_Validator_48 extends BAV_Validator_06 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7)); diff --git a/classes/validator/validators/BAV_Validator_49.php b/classes/validator/validators/BAV_Validator_49.php index 465993a0..b79ff94a 100644 --- a/classes/validator/validators/BAV_Validator_49.php +++ b/classes/validator/validators/BAV_Validator_49.php @@ -36,7 +36,8 @@ class BAV_Validator_49 extends BAV_Validator_Chain /** */ - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validators[] = new BAV_Validator_00($bank); diff --git a/classes/validator/validators/BAV_Validator_50.php b/classes/validator/validators/BAV_Validator_50.php index d5f38243..1392c2a6 100644 --- a/classes/validator/validators/BAV_Validator_50.php +++ b/classes/validator/validators/BAV_Validator_50.php @@ -28,7 +28,8 @@ class BAV_Validator_50 extends BAV_Validator_06 { - public function isValid($account) { + public function isValid($account) + { if (parent::isValid($account)) { return true; @@ -39,7 +40,8 @@ public function isValid($account) { } - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7)); diff --git a/classes/validator/validators/BAV_Validator_51.php b/classes/validator/validators/BAV_Validator_51.php index ab9857a2..71cd6647 100644 --- a/classes/validator/validators/BAV_Validator_51.php +++ b/classes/validator/validators/BAV_Validator_51.php @@ -50,7 +50,8 @@ class BAV_Validator_51 extends BAV_Validator_Chain $validatorD; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->defaultValidators[0] = new BAV_Validator_06($this->bank); @@ -79,7 +80,8 @@ public function __construct(BAV_Bank $bank) { /** * @return array */ - public static function getExceptionValidators(BAV_Bank $bank) { + public static function getExceptionValidators(BAV_Bank $bank) + { $exceptionValidators = array(); $exceptionValidators[] = new BAV_Validator_51x($bank); $exceptionValidators[] = new BAV_Validator_51x($bank); @@ -93,7 +95,8 @@ public static function getExceptionValidators(BAV_Bank $bank) { /** */ - protected function init($account) { + protected function init($account) + { parent::init($account); $this->validators = $this->account{2} == 9 @@ -102,7 +105,8 @@ protected function init($account) { } - protected function continueValidation(BAV_Validator $validator) { + protected function continueValidation(BAV_Validator $validator) + { if ($validator !== $this->validatorD) { return true; diff --git a/classes/validator/validators/BAV_Validator_51x.php b/classes/validator/validators/BAV_Validator_51x.php index d095bc81..cb62875c 100644 --- a/classes/validator/validators/BAV_Validator_51x.php +++ b/classes/validator/validators/BAV_Validator_51x.php @@ -28,7 +28,8 @@ class BAV_Validator_51x extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7, 8)); @@ -37,12 +38,14 @@ public function __construct(BAV_Bank $bank) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { + protected function getResult() + { $result = 11 - ($this->accumulator % 11); $result = $result == 11 ? 0 diff --git a/classes/validator/validators/BAV_Validator_52.php b/classes/validator/validators/BAV_Validator_52.php index a4193c46..59246933 100644 --- a/classes/validator/validators/BAV_Validator_52.php +++ b/classes/validator/validators/BAV_Validator_52.php @@ -42,7 +42,8 @@ class BAV_Validator_52 extends BAV_Validator_Iteration_Weighted implements BAV_V $checknumberWeight = 0; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4)); @@ -54,7 +55,8 @@ public function __construct(BAV_Bank $bank) { } - public function isValid($account) { + public function isValid($account) + { try { return strlen($account) == 10 && $account{0} == 9 ? $this->validator20->isValid($account) @@ -67,7 +69,8 @@ public function isValid($account) { } - protected function iterationStep() { + protected function iterationStep() + { if ($this->position == $this->getEserChecknumberPosition()) { $this->checknumberWeight = $this->getWeight(); @@ -78,12 +81,14 @@ protected function iterationStep() { } - protected function normalizeAccount($size) { + protected function normalizeAccount($size) + { $this->account = $this->getEser8(); } - protected function getResult() { + protected function getResult() + { return 10 === ($this->accumulator % 11 + $this->checknumberWeight * $this->getEserChecknumber()) % 11; } diff --git a/classes/validator/validators/BAV_Validator_53.php b/classes/validator/validators/BAV_Validator_53.php index 4474c4e7..5f0c2eb5 100644 --- a/classes/validator/validators/BAV_Validator_53.php +++ b/classes/validator/validators/BAV_Validator_53.php @@ -27,7 +27,8 @@ class BAV_Validator_53 extends BAV_Validator_52 { - protected function normalizeAccount($size) { + protected function normalizeAccount($size) + { $this->account = $this->getEser9(); } diff --git a/classes/validator/validators/BAV_Validator_54.php b/classes/validator/validators/BAV_Validator_54.php index 4cea386d..f88d3403 100644 --- a/classes/validator/validators/BAV_Validator_54.php +++ b/classes/validator/validators/BAV_Validator_54.php @@ -28,7 +28,8 @@ class BAV_Validator_54 extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7, 2)); @@ -36,12 +37,14 @@ public function __construct(BAV_Bank $bank) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { + protected function getResult() + { $result = 11 - ($this->accumulator % 11); return substr($this->account, 0, 2) === '49' && (string)$result === $this->getCheckNumber(); } diff --git a/classes/validator/validators/BAV_Validator_55.php b/classes/validator/validators/BAV_Validator_55.php index 159c03ca..e5c47eaf 100644 --- a/classes/validator/validators/BAV_Validator_55.php +++ b/classes/validator/validators/BAV_Validator_55.php @@ -28,7 +28,8 @@ class BAV_Validator_55 extends BAV_Validator_06 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7, 8, 7, 8)); diff --git a/classes/validator/validators/BAV_Validator_56.php b/classes/validator/validators/BAV_Validator_56.php index 7f10a06a..f00ca521 100644 --- a/classes/validator/validators/BAV_Validator_56.php +++ b/classes/validator/validators/BAV_Validator_56.php @@ -28,19 +28,22 @@ class BAV_Validator_56 extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7)); } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { + protected function getResult() + { $result = 11 - ($this->accumulator % 11); if ($this->account{0} == 9 && $result >= 10) { $result -= 3; diff --git a/classes/validator/validators/BAV_Validator_57.php b/classes/validator/validators/BAV_Validator_57.php index 390d50ba..2efd7c45 100644 --- a/classes/validator/validators/BAV_Validator_57.php +++ b/classes/validator/validators/BAV_Validator_57.php @@ -50,7 +50,8 @@ class BAV_Validator_57 extends BAV_Validator $mode2; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validator09 = new BAV_Validator_09($bank); @@ -106,7 +107,8 @@ public function __construct(BAV_Bank $bank) { } - protected function validate() { + protected function validate() + { $this->validator = null; switch ($this->getMode()) { case 0: @@ -143,14 +145,16 @@ protected function validate() { break; } } - protected function getResult() { + protected function getResult() + { return ! is_null($this->validator) && $this->validator->isValid($this->account); } /** * @return int */ - private function getMode() { + private function getMode() + { $firstTwo = substr($this->account, 0, 2); if ($firstTwo == '00') { diff --git a/classes/validator/validators/BAV_Validator_58.php b/classes/validator/validators/BAV_Validator_58.php index c277201f..c9bc30a8 100644 --- a/classes/validator/validators/BAV_Validator_58.php +++ b/classes/validator/validators/BAV_Validator_58.php @@ -28,7 +28,8 @@ class BAV_Validator_58 extends BAV_Validator_02 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 0, 0, 0, 0)); @@ -36,7 +37,8 @@ public function __construct(BAV_Bank $bank) { } - public function isValid($account) { + public function isValid($account) + { return strlen($account) >= 6 && parent::isValid($account); } diff --git a/classes/validator/validators/BAV_Validator_59.php b/classes/validator/validators/BAV_Validator_59.php index c56779df..148acaf3 100644 --- a/classes/validator/validators/BAV_Validator_59.php +++ b/classes/validator/validators/BAV_Validator_59.php @@ -28,14 +28,16 @@ class BAV_Validator_59 extends BAV_Validator_00 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 1)); } - public function isValid($account) { + public function isValid($account) + { return ltrim($account, "0") != "" && strlen($account) < 9 || parent::isValid($account); diff --git a/classes/validator/validators/BAV_Validator_60.php b/classes/validator/validators/BAV_Validator_60.php index d022fa6d..b185297c 100644 --- a/classes/validator/validators/BAV_Validator_60.php +++ b/classes/validator/validators/BAV_Validator_60.php @@ -28,7 +28,8 @@ class BAV_Validator_60 extends BAV_Validator_00 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 1)); diff --git a/classes/validator/validators/BAV_Validator_61.php b/classes/validator/validators/BAV_Validator_61.php index 46cb47d0..d82826d9 100644 --- a/classes/validator/validators/BAV_Validator_61.php +++ b/classes/validator/validators/BAV_Validator_61.php @@ -28,7 +28,8 @@ class BAV_Validator_61 extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setChecknumberPosition(-3); @@ -36,7 +37,8 @@ public function __construct(BAV_Bank $bank) { } - public function init($account) { + public function init($account) + { parent::init($account); @@ -52,12 +54,14 @@ public function init($account) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->crossSum($this->number * $this->getWeight()); } - protected function getResult() { + protected function getResult() + { $result = (10 - ($this->accumulator % 10)) % 10; return (string)$result === $this->getCheckNumber(); } diff --git a/classes/validator/validators/BAV_Validator_62.php b/classes/validator/validators/BAV_Validator_62.php index 64b22f94..0ea00333 100644 --- a/classes/validator/validators/BAV_Validator_62.php +++ b/classes/validator/validators/BAV_Validator_62.php @@ -28,7 +28,8 @@ class BAV_Validator_62 extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 1)); @@ -40,12 +41,14 @@ public function __construct(BAV_Bank $bank) { - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->crossSum($this->number * $this->getWeight()); } - protected function getResult() { + protected function getResult() + { $result = (10 - ($this->accumulator % 10)) % 10; return (string)$result === $this->getCheckNumber(); } diff --git a/classes/validator/validators/BAV_Validator_63.php b/classes/validator/validators/BAV_Validator_63.php index 783b2d4c..ef93e6b5 100644 --- a/classes/validator/validators/BAV_Validator_63.php +++ b/classes/validator/validators/BAV_Validator_63.php @@ -28,7 +28,8 @@ class BAV_Validator_63 extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 1)); @@ -38,7 +39,8 @@ public function __construct(BAV_Bank $bank) { } - public function isValid($account) { + public function isValid($account) + { if (parent::isValid($account)) { return true; @@ -51,12 +53,14 @@ public function isValid($account) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->crossSum($this->number * $this->getWeight()); } - protected function getResult() { + protected function getResult() + { $result = (10 - ($this->accumulator % 10)) % 10; return $this->account{0} == '0' && (string)$result === $this->getCheckNumber(); } diff --git a/classes/validator/validators/BAV_Validator_64.php b/classes/validator/validators/BAV_Validator_64.php index 7a566ac6..a4f8ba83 100644 --- a/classes/validator/validators/BAV_Validator_64.php +++ b/classes/validator/validators/BAV_Validator_64.php @@ -28,7 +28,8 @@ class BAV_Validator_64 extends BAV_Validator_06 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(9, 10, 5, 8, 4, 2)); diff --git a/classes/validator/validators/BAV_Validator_65.php b/classes/validator/validators/BAV_Validator_65.php index f08a7fcc..b9ff2410 100644 --- a/classes/validator/validators/BAV_Validator_65.php +++ b/classes/validator/validators/BAV_Validator_65.php @@ -28,7 +28,8 @@ class BAV_Validator_65 extends BAV_Validator_00 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 1, 2, 1, 2, 1, 2, 0, 1, 2)); @@ -37,7 +38,8 @@ public function __construct(BAV_Bank $bank) { } - protected function init($account) { + protected function init($account) + { parent::init($account); if ($this->account{8} == 9) { diff --git a/classes/validator/validators/BAV_Validator_66.php b/classes/validator/validators/BAV_Validator_66.php index ba020f61..8226355d 100644 --- a/classes/validator/validators/BAV_Validator_66.php +++ b/classes/validator/validators/BAV_Validator_66.php @@ -28,7 +28,8 @@ class BAV_Validator_66 extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 0, 0, 7)); @@ -37,12 +38,14 @@ public function __construct(BAV_Bank $bank) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { + protected function getResult() + { // update 2014-03-03 if ($this->account{1} == '9') { return true; diff --git a/classes/validator/validators/BAV_Validator_67.php b/classes/validator/validators/BAV_Validator_67.php index d3732ad9..21b9ecf2 100644 --- a/classes/validator/validators/BAV_Validator_67.php +++ b/classes/validator/validators/BAV_Validator_67.php @@ -28,7 +28,8 @@ class BAV_Validator_67 extends BAV_Validator_00 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 1)); diff --git a/classes/validator/validators/BAV_Validator_68.php b/classes/validator/validators/BAV_Validator_68.php index 9094123e..d69ea9ad 100644 --- a/classes/validator/validators/BAV_Validator_68.php +++ b/classes/validator/validators/BAV_Validator_68.php @@ -40,7 +40,8 @@ class BAV_Validator_68 extends BAV_Validator_Chain $validator10; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validator10 = new BAV_Validator_00($bank); @@ -53,7 +54,8 @@ public function __construct(BAV_Bank $bank) { } - public function isValid($account) { + public function isValid($account) + { switch (strlen($account)) { case 10: diff --git a/classes/validator/validators/BAV_Validator_69.php b/classes/validator/validators/BAV_Validator_69.php index 5e5fbf39..6707422f 100644 --- a/classes/validator/validators/BAV_Validator_69.php +++ b/classes/validator/validators/BAV_Validator_69.php @@ -34,7 +34,8 @@ class BAV_Validator_69 extends BAV_Validator_Chain { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validators[] = new BAV_Validator_28($bank); @@ -44,7 +45,8 @@ public function __construct(BAV_Bank $bank) { } - public function isValid($account) { + public function isValid($account) + { return ($account >= 9300000000 && $account <= 9399999999) || parent::isValid($account); } @@ -52,7 +54,8 @@ public function isValid($account) { /** * @return bool */ - protected function useValidator(BAV_Validator $validator) { + protected function useValidator(BAV_Validator $validator) + { if ($validator === $this->validators[0] && ($this->account >= 9700000000 && $this->account <= 9799999999)) { return false; diff --git a/classes/validator/validators/BAV_Validator_69b.php b/classes/validator/validators/BAV_Validator_69b.php index 4deadf80..f9cf1b17 100644 --- a/classes/validator/validators/BAV_Validator_69b.php +++ b/classes/validator/validators/BAV_Validator_69b.php @@ -28,7 +28,8 @@ class BAV_Validator_69b extends BAV_Validator_Iteration_Transformation { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setMatrix(array( @@ -41,7 +42,8 @@ public function __construct(BAV_Bank $bank) { /** * @return bool */ - protected function getResult() { + protected function getResult() + { $result = (10 - ($this->accumulator % 10)) % 10; return (string)$result === $this->getCheckNumber(); } diff --git a/classes/validator/validators/BAV_Validator_70.php b/classes/validator/validators/BAV_Validator_70.php index 051834c6..2eefb6a2 100644 --- a/classes/validator/validators/BAV_Validator_70.php +++ b/classes/validator/validators/BAV_Validator_70.php @@ -28,14 +28,16 @@ class BAV_Validator_70 extends BAV_Validator_06 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7)); } - protected function iterationStep() { + protected function iterationStep() + { if ($this->position <= 2 && ($this->account{3} == 5 || substr($this->account, 3, 2) == 69)) { return; diff --git a/classes/validator/validators/BAV_Validator_71.php b/classes/validator/validators/BAV_Validator_71.php index 841d97dc..74d343f6 100644 --- a/classes/validator/validators/BAV_Validator_71.php +++ b/classes/validator/validators/BAV_Validator_71.php @@ -28,7 +28,8 @@ class BAV_Validator_71 extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(6, 5, 4, 3, 2, 1)); @@ -37,12 +38,14 @@ public function __construct(BAV_Bank $bank) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { + protected function getResult() + { $result = 11 - ($this->accumulator % 11); $result = $result >= 10 ? 11 - $result diff --git a/classes/validator/validators/BAV_Validator_72.php b/classes/validator/validators/BAV_Validator_72.php index 670838c9..80f0d114 100644 --- a/classes/validator/validators/BAV_Validator_72.php +++ b/classes/validator/validators/BAV_Validator_72.php @@ -28,7 +28,8 @@ class BAV_Validator_72 extends BAV_Validator_00 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 1)); diff --git a/classes/validator/validators/BAV_Validator_73.php b/classes/validator/validators/BAV_Validator_73.php index a8f371aa..84c315ba 100644 --- a/classes/validator/validators/BAV_Validator_73.php +++ b/classes/validator/validators/BAV_Validator_73.php @@ -41,7 +41,8 @@ class BAV_Validator_73 extends BAV_Validator_Chain $exceptionValidators = array(); - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->defaultValidators[] = new BAV_Validator_00($bank); @@ -62,7 +63,8 @@ public function __construct(BAV_Bank $bank) { /** */ - protected function init($account) { + protected function init($account) + { parent::init($account); if ($this->account{2} == 9) { diff --git a/classes/validator/validators/BAV_Validator_74.php b/classes/validator/validators/BAV_Validator_74.php index ca09a066..61676366 100644 --- a/classes/validator/validators/BAV_Validator_74.php +++ b/classes/validator/validators/BAV_Validator_74.php @@ -28,19 +28,22 @@ class BAV_Validator_74 extends BAV_Validator_00 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 1)); } - public function isValid($account) { + public function isValid($account) + { return strlen($account) >= 2 && parent::isValid($account); } - protected function getResult() { + protected function getResult() + { if (parent::getResult()) { return true; diff --git a/classes/validator/validators/BAV_Validator_75.php b/classes/validator/validators/BAV_Validator_75.php index 50b5b43d..581a771a 100644 --- a/classes/validator/validators/BAV_Validator_75.php +++ b/classes/validator/validators/BAV_Validator_75.php @@ -28,7 +28,8 @@ class BAV_Validator_75 extends BAV_Validator_00 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 1)); @@ -37,7 +38,8 @@ public function __construct(BAV_Bank $bank) { } - public function isValid($account) { + public function isValid($account) + { $account = ltrim($account, '0'); $length = strlen($account); diff --git a/classes/validator/validators/BAV_Validator_76.php b/classes/validator/validators/BAV_Validator_76.php index c3a27672..b3ca13b7 100644 --- a/classes/validator/validators/BAV_Validator_76.php +++ b/classes/validator/validators/BAV_Validator_76.php @@ -28,7 +28,8 @@ class BAV_Validator_76 extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setChecknumberPosition(-3); @@ -37,7 +38,8 @@ public function __construct(BAV_Bank $bank) { } - public function isValid($account) { + public function isValid($account) + { if (parent::isValid($account)) { return true; @@ -48,17 +50,20 @@ public function isValid($account) { } - protected function getWeight() { + protected function getWeight() + { return $this->i + 2; } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { + protected function getResult() + { $result = $this->accumulator % 11; return array_search((int)$this->account{0}, array(0, 4, 6, 7, 8, 9)) !== false && $result != 10 diff --git a/classes/validator/validators/BAV_Validator_77.php b/classes/validator/validators/BAV_Validator_77.php index cc2bb9fc..8bcf130b 100644 --- a/classes/validator/validators/BAV_Validator_77.php +++ b/classes/validator/validators/BAV_Validator_77.php @@ -29,7 +29,8 @@ class BAV_Validator_77 extends BAV_Validator_Chain { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validators[] = new BAV_Validator_77a($bank); diff --git a/classes/validator/validators/BAV_Validator_77a.php b/classes/validator/validators/BAV_Validator_77a.php index 87dd1a85..0c502159 100644 --- a/classes/validator/validators/BAV_Validator_77a.php +++ b/classes/validator/validators/BAV_Validator_77a.php @@ -28,7 +28,8 @@ class BAV_Validator_77a extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setStart(-1); @@ -36,12 +37,14 @@ public function __construct(BAV_Bank $bank) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { + protected function getResult() + { $result = $this->accumulator % 11; return $result === 0; } diff --git a/classes/validator/validators/BAV_Validator_78.php b/classes/validator/validators/BAV_Validator_78.php index 43535810..3f93b991 100644 --- a/classes/validator/validators/BAV_Validator_78.php +++ b/classes/validator/validators/BAV_Validator_78.php @@ -28,14 +28,16 @@ class BAV_Validator_78 extends BAV_Validator_00 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 1)); } - public function isValid($account) { + public function isValid($account) + { return strlen($account) !== 8 && parent::isValid($account); } diff --git a/classes/validator/validators/BAV_Validator_79.php b/classes/validator/validators/BAV_Validator_79.php index 2c8431cb..94e32392 100644 --- a/classes/validator/validators/BAV_Validator_79.php +++ b/classes/validator/validators/BAV_Validator_79.php @@ -46,7 +46,8 @@ class BAV_Validator_79 extends BAV_Validator $mode2; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->mode1 = new BAV_Validator_00($bank); @@ -55,12 +56,14 @@ public function __construct(BAV_Bank $bank) { $this->mode2->setChecknumberPosition(-2); } - protected function init($account) { + protected function init($account) + { parent::init($account); $this->validator = null; } - protected function validate() { + protected function validate() + { if (array_search($this->account{0}, array(1, 2, 9)) !== false) { $this->validator = $this->mode2; @@ -75,7 +78,8 @@ protected function validate() { /** * @return bool */ - protected function getResult() { + protected function getResult() + { return ! is_null($this->validator) && $this->validator->isValid($this->account); } diff --git a/classes/validator/validators/BAV_Validator_80.php b/classes/validator/validators/BAV_Validator_80.php index 63b1aed8..4c98230a 100644 --- a/classes/validator/validators/BAV_Validator_80.php +++ b/classes/validator/validators/BAV_Validator_80.php @@ -41,7 +41,8 @@ class BAV_Validator_80 extends BAV_Validator_Chain $exceptionValidators = array(); - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->defaultValidators[] = new BAV_Validator_00($bank); @@ -57,7 +58,8 @@ public function __construct(BAV_Bank $bank) { /** */ - protected function init($account) { + protected function init($account) + { parent::init($account); $this->validators = $this->account{2} == 9 diff --git a/classes/validator/validators/BAV_Validator_81.php b/classes/validator/validators/BAV_Validator_81.php index fb2f700b..5c314e50 100644 --- a/classes/validator/validators/BAV_Validator_81.php +++ b/classes/validator/validators/BAV_Validator_81.php @@ -41,7 +41,8 @@ class BAV_Validator_81 extends BAV_Validator_Chain $exceptionValidators = array(); - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->defaultValidators[] = new BAV_Validator_32($bank); @@ -53,7 +54,8 @@ public function __construct(BAV_Bank $bank) { /** */ - protected function init($account) { + protected function init($account) + { parent::init($account); $this->validators = $this->account{2} == 9 diff --git a/classes/validator/validators/BAV_Validator_82.php b/classes/validator/validators/BAV_Validator_82.php index 317643ea..e0b05a4b 100644 --- a/classes/validator/validators/BAV_Validator_82.php +++ b/classes/validator/validators/BAV_Validator_82.php @@ -47,7 +47,8 @@ class BAV_Validator_82 extends BAV_Validator $mode2; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->mode1 = new BAV_Validator_33($bank); @@ -55,7 +56,8 @@ public function __construct(BAV_Bank $bank) { $this->mode2 = new BAV_Validator_10($bank); } - protected function validate() { + protected function validate() + { $this->validator = substr($this->account, 2 ,2) == 99 ? $this->mode2 : $this->mode1; @@ -63,7 +65,8 @@ protected function validate() { /** * @return bool */ - protected function getResult() { + protected function getResult() + { return $this->validator->isValid($this->account); } diff --git a/classes/validator/validators/BAV_Validator_83.php b/classes/validator/validators/BAV_Validator_83.php index 1dbe66d2..452b4ef3 100644 --- a/classes/validator/validators/BAV_Validator_83.php +++ b/classes/validator/validators/BAV_Validator_83.php @@ -46,7 +46,8 @@ class BAV_Validator_83 extends BAV_Validator_Chain $exceptionValidators = array(); - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->defaultValidators[] = new BAV_Validator_32($bank); @@ -69,7 +70,8 @@ public function __construct(BAV_Bank $bank) { /** */ - protected function init($account) { + protected function init($account) + { parent::init($account); $this->validators = substr($this->account, 2, 2) == 99 @@ -77,7 +79,8 @@ protected function init($account) { : $this->defaultValidators; } - protected function continueValidation(BAV_Validator $validator) { + protected function continueValidation(BAV_Validator $validator) + { return $validator !== $this->modeC || $this->account{9} < 7; } diff --git a/classes/validator/validators/BAV_Validator_83x.php b/classes/validator/validators/BAV_Validator_83x.php index c515af32..b16a17ef 100644 --- a/classes/validator/validators/BAV_Validator_83x.php +++ b/classes/validator/validators/BAV_Validator_83x.php @@ -28,7 +28,8 @@ class BAV_Validator_83x extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7, 8)); @@ -36,12 +37,14 @@ public function __construct(BAV_Bank $bank) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { + protected function getResult() + { $result = 11 - ($this->accumulator % 11); $result = $result >= 10 ? 0 : $result; return substr($this->account, 2, 2) == 99 && (string)$result === $this->getCheckNumber(); diff --git a/classes/validator/validators/BAV_Validator_84.php b/classes/validator/validators/BAV_Validator_84.php index 825d0917..764f10e7 100644 --- a/classes/validator/validators/BAV_Validator_84.php +++ b/classes/validator/validators/BAV_Validator_84.php @@ -42,7 +42,8 @@ class BAV_Validator_84 extends BAV_Validator_Chain $exceptionValidators = array(); - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->defaultValidators[0] = new BAV_Validator_33($bank); @@ -63,7 +64,8 @@ public function __construct(BAV_Bank $bank) { /** */ - protected function init($account) { + protected function init($account) + { parent::init($account); $this->validators = $this->account{2} == 9 diff --git a/classes/validator/validators/BAV_Validator_84b.php b/classes/validator/validators/BAV_Validator_84b.php index f9f9c4b0..85733bd6 100644 --- a/classes/validator/validators/BAV_Validator_84b.php +++ b/classes/validator/validators/BAV_Validator_84b.php @@ -28,7 +28,8 @@ class BAV_Validator_84b extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6)); @@ -36,12 +37,14 @@ public function __construct(BAV_Bank $bank) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { + protected function getResult() + { $result = 7 - ($this->accumulator % 7); $result = $result == 7 ? 0 : $result; return (string)$result === $this->getCheckNumber(); diff --git a/classes/validator/validators/BAV_Validator_85.php b/classes/validator/validators/BAV_Validator_85.php index 62b7f987..8eb5bb60 100644 --- a/classes/validator/validators/BAV_Validator_85.php +++ b/classes/validator/validators/BAV_Validator_85.php @@ -46,7 +46,8 @@ class BAV_Validator_85 extends BAV_Validator_Chain $exceptionValidators = array(); - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->defaultValidators[] = new BAV_Validator_06($bank); @@ -71,7 +72,8 @@ public function __construct(BAV_Bank $bank) { /** */ - protected function init($account) { + protected function init($account) + { parent::init($account); $this->validators = substr($this->account, 2, 2) == 99 @@ -79,7 +81,8 @@ protected function init($account) { : $this->defaultValidators; } - protected function continueValidation(BAV_Validator $validator) { + protected function continueValidation(BAV_Validator $validator) + { return $validator !== $this->modeC || $this->account{9} < 7; } diff --git a/classes/validator/validators/BAV_Validator_86.php b/classes/validator/validators/BAV_Validator_86.php index 871be971..6e4be7e4 100644 --- a/classes/validator/validators/BAV_Validator_86.php +++ b/classes/validator/validators/BAV_Validator_86.php @@ -42,7 +42,8 @@ class BAV_Validator_86 extends BAV_Validator_Chain $exceptionValidators = array(); - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->defaultValidators[] = new BAV_Validator_00($bank); @@ -59,7 +60,8 @@ public function __construct(BAV_Bank $bank) { /** */ - protected function init($account) { + protected function init($account) + { parent::init($account); $this->validators = $this->account{2} == 9 diff --git a/classes/validator/validators/BAV_Validator_87.php b/classes/validator/validators/BAV_Validator_87.php index d2b6d1c7..1f155c52 100644 --- a/classes/validator/validators/BAV_Validator_87.php +++ b/classes/validator/validators/BAV_Validator_87.php @@ -43,7 +43,8 @@ class BAV_Validator_87 extends BAV_Validator_Chain $exceptionValidators = array(); - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->defaultValidators[] = new BAV_Validator_87a($bank); @@ -60,7 +61,8 @@ public function __construct(BAV_Bank $bank) { /** */ - protected function init($account) { + protected function init($account) + { parent::init($account); $this->validators = $this->account{2} == 9 diff --git a/classes/validator/validators/BAV_Validator_87a.php b/classes/validator/validators/BAV_Validator_87a.php index b8fa271c..8c6bed48 100644 --- a/classes/validator/validators/BAV_Validator_87a.php +++ b/classes/validator/validators/BAV_Validator_87a.php @@ -33,12 +33,14 @@ class BAV_Validator_87a extends BAV_Validator { - protected function validate() { + protected function validate() + { } /** * @return bool */ - protected function getResult() { + protected function getResult() + { $accountID = $this->account; $i = 0; $c2 = 0; diff --git a/classes/validator/validators/BAV_Validator_87c.php b/classes/validator/validators/BAV_Validator_87c.php index db94c9eb..0febc4aa 100644 --- a/classes/validator/validators/BAV_Validator_87c.php +++ b/classes/validator/validators/BAV_Validator_87c.php @@ -28,7 +28,8 @@ class BAV_Validator_87c extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6)); @@ -36,12 +37,14 @@ public function __construct(BAV_Bank $bank) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { + protected function getResult() + { $result = 7 - ($this->accumulator % 7); $result = $result == 7 ? 0 : $result; return (string)$result === $this->getCheckNumber(); diff --git a/classes/validator/validators/BAV_Validator_88.php b/classes/validator/validators/BAV_Validator_88.php index c51f9c9c..0fd81fc7 100644 --- a/classes/validator/validators/BAV_Validator_88.php +++ b/classes/validator/validators/BAV_Validator_88.php @@ -28,7 +28,8 @@ class BAV_Validator_88 extends BAV_Validator_06 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7, 8)); @@ -36,7 +37,8 @@ public function __construct(BAV_Bank $bank) { } - protected function init($account) { + protected function init($account) + { parent::init($account); $this->setEnd($this->account{2} == 9 ? 2: 3); diff --git a/classes/validator/validators/BAV_Validator_89.php b/classes/validator/validators/BAV_Validator_89.php index b06c82ce..501ea734 100644 --- a/classes/validator/validators/BAV_Validator_89.php +++ b/classes/validator/validators/BAV_Validator_89.php @@ -36,7 +36,8 @@ class BAV_Validator_89 extends BAV_Validator_06 $validator10; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7)); @@ -46,12 +47,14 @@ public function __construct(BAV_Bank $bank) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->crossSum($this->number * $this->getWeight()); } - public function isValid($account) { + public function isValid($account) + { $length = strlen(ltrim($account, '0')); return (($length == 8 || $length == 9) && $this->validator10->isValid($account)) || ($length == 7 && parent::isValid($account)); diff --git a/classes/validator/validators/BAV_Validator_90.php b/classes/validator/validators/BAV_Validator_90.php index beca5ac5..6aaa45d2 100644 --- a/classes/validator/validators/BAV_Validator_90.php +++ b/classes/validator/validators/BAV_Validator_90.php @@ -43,7 +43,8 @@ class BAV_Validator_90 extends BAV_Validator_Chain $defaultValidators = array(); - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); @@ -68,7 +69,8 @@ public function __construct(BAV_Bank $bank) { /** */ - protected function init($account) { + protected function init($account) + { parent::init($account); $this->validators = $this->account{2} == 9 diff --git a/classes/validator/validators/BAV_Validator_90c.php b/classes/validator/validators/BAV_Validator_90c.php index 627ad4f8..7d1ac433 100644 --- a/classes/validator/validators/BAV_Validator_90c.php +++ b/classes/validator/validators/BAV_Validator_90c.php @@ -28,7 +28,8 @@ class BAV_Validator_90c extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6)); @@ -36,12 +37,14 @@ public function __construct(BAV_Bank $bank) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { + protected function getResult() + { $result = 7 - $this->accumulator % 7; $result = $result == 7 ? 0 diff --git a/classes/validator/validators/BAV_Validator_90d.php b/classes/validator/validators/BAV_Validator_90d.php index d2ad8942..d0f0c40f 100644 --- a/classes/validator/validators/BAV_Validator_90d.php +++ b/classes/validator/validators/BAV_Validator_90d.php @@ -28,7 +28,8 @@ class BAV_Validator_90d extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6)); @@ -36,12 +37,14 @@ public function __construct(BAV_Bank $bank) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { + protected function getResult() + { $result = 9 - $this->accumulator % 9; $result = $result == 9 ? 0 diff --git a/classes/validator/validators/BAV_Validator_90e.php b/classes/validator/validators/BAV_Validator_90e.php index 7ee85005..67d26b47 100644 --- a/classes/validator/validators/BAV_Validator_90e.php +++ b/classes/validator/validators/BAV_Validator_90e.php @@ -28,7 +28,8 @@ class BAV_Validator_90e extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 1)); @@ -36,12 +37,14 @@ public function __construct(BAV_Bank $bank) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { + protected function getResult() + { $result = (10 - $this->accumulator % 10) % 10; return (string)$result === $this->getCheckNumber(); } diff --git a/classes/validator/validators/BAV_Validator_90g.php b/classes/validator/validators/BAV_Validator_90g.php index 5addcf73..53b4af4e 100644 --- a/classes/validator/validators/BAV_Validator_90g.php +++ b/classes/validator/validators/BAV_Validator_90g.php @@ -25,7 +25,8 @@ class BAV_Validator_90g extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 1)); @@ -38,12 +39,14 @@ public function __construct(BAV_Bank $bank) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { + protected function getResult() + { $rest = $this->accumulator % 7; $checknumber = $rest == 0 ? 0 : (7 - $rest); return (string)$checknumber === $this->getCheckNumber(); diff --git a/classes/validator/validators/BAV_Validator_91.php b/classes/validator/validators/BAV_Validator_91.php index 0e0c459d..28e7c038 100644 --- a/classes/validator/validators/BAV_Validator_91.php +++ b/classes/validator/validators/BAV_Validator_91.php @@ -29,7 +29,8 @@ class BAV_Validator_91 extends BAV_Validator_Chain { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); for ($i = 0; $i < 4; $i++) { diff --git a/classes/validator/validators/BAV_Validator_92.php b/classes/validator/validators/BAV_Validator_92.php index 874695df..3dbe3ebe 100644 --- a/classes/validator/validators/BAV_Validator_92.php +++ b/classes/validator/validators/BAV_Validator_92.php @@ -28,7 +28,8 @@ class BAV_Validator_92 extends BAV_Validator_01 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(3, 7, 1)); diff --git a/classes/validator/validators/BAV_Validator_93.php b/classes/validator/validators/BAV_Validator_93.php index 40e9c4c3..ab9b8843 100644 --- a/classes/validator/validators/BAV_Validator_93.php +++ b/classes/validator/validators/BAV_Validator_93.php @@ -29,7 +29,8 @@ class BAV_Validator_93 extends BAV_Validator_Chain { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); @@ -48,7 +49,8 @@ public function __construct(BAV_Bank $bank) { * @throws BAV_ValidatorException_OutOfBounds * @param int $int */ - protected function normalizeAccount($size) { + protected function normalizeAccount($size) + { parent::normalizeAccount($size); if (substr($this->account, 0, 4) !== '0000') { $this->account = '0000'.substr($this->account, 0, 6); diff --git a/classes/validator/validators/BAV_Validator_94.php b/classes/validator/validators/BAV_Validator_94.php index ad834a0f..fad560d3 100644 --- a/classes/validator/validators/BAV_Validator_94.php +++ b/classes/validator/validators/BAV_Validator_94.php @@ -28,7 +28,8 @@ class BAV_Validator_94 extends BAV_Validator_00 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(1, 2)); diff --git a/classes/validator/validators/BAV_Validator_95.php b/classes/validator/validators/BAV_Validator_95.php index 7c57f65f..bd815914 100644 --- a/classes/validator/validators/BAV_Validator_95.php +++ b/classes/validator/validators/BAV_Validator_95.php @@ -28,14 +28,16 @@ class BAV_Validator_95 extends BAV_Validator_06 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7)); } - public function isValid($account) { + public function isValid($account) + { return parent::isValid($account) || $this->isBetween(1, 1999999) || $this->isBetween(9000000, 25999999) diff --git a/classes/validator/validators/BAV_Validator_96.php b/classes/validator/validators/BAV_Validator_96.php index e152b273..ebb7fdfa 100644 --- a/classes/validator/validators/BAV_Validator_96.php +++ b/classes/validator/validators/BAV_Validator_96.php @@ -30,7 +30,8 @@ class BAV_Validator_96 extends BAV_Validator_Chain { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); @@ -42,7 +43,8 @@ public function __construct(BAV_Bank $bank) { } - public function isValid($account) { + public function isValid($account) + { return parent::isValid($account) || $this->isBetween(1300000, 99399999); } diff --git a/classes/validator/validators/BAV_Validator_97.php b/classes/validator/validators/BAV_Validator_97.php index 0ea32c41..1df51364 100644 --- a/classes/validator/validators/BAV_Validator_97.php +++ b/classes/validator/validators/BAV_Validator_97.php @@ -39,7 +39,8 @@ class BAV_Validator_97 extends BAV_Validator $result = 0; - protected function validate() { + protected function validate() + { $account = (int) ltrim(substr($this->account, 0, -1), '0'); $this->result = $account - (int)($account / 11) * 11; @@ -47,7 +48,8 @@ protected function validate() { /** * @return bool */ - protected function getResult() { + protected function getResult() + { return strlen(ltrim($this->account, '0')) >= 5 && $this->result === (int) $this->getChecknumber(); } diff --git a/classes/validator/validators/BAV_Validator_98.php b/classes/validator/validators/BAV_Validator_98.php index 5ccd3861..8add11e2 100644 --- a/classes/validator/validators/BAV_Validator_98.php +++ b/classes/validator/validators/BAV_Validator_98.php @@ -30,7 +30,8 @@ class BAV_Validator_98 extends BAV_Validator_Chain { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_99.php b/classes/validator/validators/BAV_Validator_99.php index 1aa11b39..cb69ef0b 100644 --- a/classes/validator/validators/BAV_Validator_99.php +++ b/classes/validator/validators/BAV_Validator_99.php @@ -28,14 +28,16 @@ class BAV_Validator_99 extends BAV_Validator_06 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7)); } - public function isValid($account) { + public function isValid($account) + { return parent::isValid($account) || $this->isBetween(396000000, 499999999); } diff --git a/classes/validator/validators/BAV_Validator_A0.php b/classes/validator/validators/BAV_Validator_A0.php index 2c71b020..2391c70d 100644 --- a/classes/validator/validators/BAV_Validator_A0.php +++ b/classes/validator/validators/BAV_Validator_A0.php @@ -28,7 +28,8 @@ class BAV_Validator_A0 extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 4, 8, 5, 10, 0, 0, 0, 0)); @@ -36,12 +37,14 @@ public function __construct(BAV_Bank $bank) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { + protected function getResult() + { $result = $this->divisor - $this->accumulator % $this->divisor; $result = $result == $this->divisor ? 0 diff --git a/classes/validator/validators/BAV_Validator_A1.php b/classes/validator/validators/BAV_Validator_A1.php index b9641f89..50ef6826 100644 --- a/classes/validator/validators/BAV_Validator_A1.php +++ b/classes/validator/validators/BAV_Validator_A1.php @@ -28,14 +28,16 @@ class BAV_Validator_A1 extends BAV_Validator_00 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 1, 2, 1, 2, 1, 2, 0, 0)); } - protected function getResult() { + protected function getResult() + { $length = strlen(ltrim($this->account, '0')); return ($length == 8 || $length == 10) && parent::getResult(); } diff --git a/classes/validator/validators/BAV_Validator_A2.php b/classes/validator/validators/BAV_Validator_A2.php index 11cfc9b5..06412b55 100644 --- a/classes/validator/validators/BAV_Validator_A2.php +++ b/classes/validator/validators/BAV_Validator_A2.php @@ -30,7 +30,8 @@ class BAV_Validator_A2 extends BAV_Validator_Chain { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validators[] = new BAV_Validator_00($bank); diff --git a/classes/validator/validators/BAV_Validator_A3.php b/classes/validator/validators/BAV_Validator_A3.php index 508d5c94..5696668d 100644 --- a/classes/validator/validators/BAV_Validator_A3.php +++ b/classes/validator/validators/BAV_Validator_A3.php @@ -30,7 +30,8 @@ class BAV_Validator_A3 extends BAV_Validator_Chain { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validators[] = new BAV_Validator_00($bank); diff --git a/classes/validator/validators/BAV_Validator_A4.php b/classes/validator/validators/BAV_Validator_A4.php index 1b5932fe..13ec1889 100644 --- a/classes/validator/validators/BAV_Validator_A4.php +++ b/classes/validator/validators/BAV_Validator_A4.php @@ -31,7 +31,8 @@ class BAV_Validator_A4 extends BAV_Validator_Chain { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validators[] = new BAV_Validator_06($bank); @@ -53,7 +54,8 @@ public function __construct(BAV_Bank $bank) { * * @return bool */ - protected function useValidator(BAV_Validator $validator) { + protected function useValidator(BAV_Validator $validator) + { if (substr($this->account, 2, 2) == '99') { return $validator === $this->validators[2] || $validator === $this->validators[3]; diff --git a/classes/validator/validators/BAV_Validator_A4b.php b/classes/validator/validators/BAV_Validator_A4b.php index 7a6b2692..3869f764 100644 --- a/classes/validator/validators/BAV_Validator_A4b.php +++ b/classes/validator/validators/BAV_Validator_A4b.php @@ -28,7 +28,8 @@ class BAV_Validator_A4b extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7, 0, 0, 0)); @@ -36,12 +37,14 @@ public function __construct(BAV_Bank $bank) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { + protected function getResult() + { $result = 7 - $this->accumulator % 7; $result = $result == 7 ? 0 diff --git a/classes/validator/validators/BAV_Validator_A5.php b/classes/validator/validators/BAV_Validator_A5.php index 34115d37..a49992a1 100644 --- a/classes/validator/validators/BAV_Validator_A5.php +++ b/classes/validator/validators/BAV_Validator_A5.php @@ -30,7 +30,8 @@ class BAV_Validator_A5 extends BAV_Validator_Chain { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validators[] = new BAV_Validator_00($bank); @@ -41,7 +42,8 @@ public function __construct(BAV_Bank $bank) { } - protected function continueValidation(BAV_Validator $validator) { + protected function continueValidation(BAV_Validator $validator) + { if ($validator === $this->validators[1]) { return $this->account{0} !== '9'; diff --git a/classes/validator/validators/BAV_Validator_A6.php b/classes/validator/validators/BAV_Validator_A6.php index 676c888f..8f1feaab 100644 --- a/classes/validator/validators/BAV_Validator_A6.php +++ b/classes/validator/validators/BAV_Validator_A6.php @@ -47,7 +47,8 @@ class BAV_Validator_A6 extends BAV_Validator $mode2; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->mode1 = new BAV_Validator_00($bank); @@ -56,7 +57,8 @@ public function __construct(BAV_Bank $bank) { $this->mode2 = new BAV_Validator_01($bank); $this->mode2->setWeights(array(3, 7, 1)); } - protected function validate() { + protected function validate() + { $this->validator = $this->account{1} === '8' ? $this->mode1 : $this->mode2; @@ -64,7 +66,8 @@ protected function validate() { /** * @return bool */ - protected function getResult() { + protected function getResult() + { return $this->validator->isValid($this->account); } diff --git a/classes/validator/validators/BAV_Validator_A7.php b/classes/validator/validators/BAV_Validator_A7.php index 23f399c7..35706032 100644 --- a/classes/validator/validators/BAV_Validator_A7.php +++ b/classes/validator/validators/BAV_Validator_A7.php @@ -30,7 +30,8 @@ class BAV_Validator_A7 extends BAV_Validator_Chain { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validators[] = new BAV_Validator_00($bank); diff --git a/classes/validator/validators/BAV_Validator_A8.php b/classes/validator/validators/BAV_Validator_A8.php index ff6f0ab6..fa1ca1f2 100644 --- a/classes/validator/validators/BAV_Validator_A8.php +++ b/classes/validator/validators/BAV_Validator_A8.php @@ -46,7 +46,8 @@ class BAV_Validator_A8 extends BAV_Validator_Chain $exceptionValidators = array(); - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->defaultValidators[] = new BAV_Validator_06($bank); @@ -64,7 +65,8 @@ public function __construct(BAV_Bank $bank) { /** */ - protected function init($account) { + protected function init($account) + { parent::init($account); $this->validators = $this->account{2} == 9 diff --git a/classes/validator/validators/BAV_Validator_A9.php b/classes/validator/validators/BAV_Validator_A9.php index 61cb9848..7ed0ec65 100644 --- a/classes/validator/validators/BAV_Validator_A9.php +++ b/classes/validator/validators/BAV_Validator_A9.php @@ -30,7 +30,8 @@ class BAV_Validator_A9 extends BAV_Validator_Chain { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validators[] = new BAV_Validator_01($bank); diff --git a/classes/validator/validators/BAV_Validator_B0.php b/classes/validator/validators/BAV_Validator_B0.php index b4848d23..ec4dd7bb 100644 --- a/classes/validator/validators/BAV_Validator_B0.php +++ b/classes/validator/validators/BAV_Validator_B0.php @@ -47,7 +47,8 @@ class BAV_Validator_B0 extends BAV_Validator $mode2; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->mode1 = new BAV_Validator_09($bank); @@ -55,7 +56,8 @@ public function __construct(BAV_Bank $bank) { $this->mode2 = new BAV_Validator_06($bank); $this->mode2->setWeights(array(2, 3, 4, 5, 6, 7)); } - protected function validate() { + protected function validate() + { $this->validator = array_search($this->account{7}, array(1, 2, 3, 6)) !== false ? $this->mode1 : $this->mode2; @@ -63,7 +65,8 @@ protected function validate() { /** * @return bool */ - protected function getResult() { + protected function getResult() + { return strlen(ltrim($this->account, '0')) === 10 && $this->account{0} !== '8' && $this->validator->isValid($this->account); diff --git a/classes/validator/validators/BAV_Validator_B1.php b/classes/validator/validators/BAV_Validator_B1.php index 6735d856..ec2db06a 100644 --- a/classes/validator/validators/BAV_Validator_B1.php +++ b/classes/validator/validators/BAV_Validator_B1.php @@ -30,7 +30,8 @@ class BAV_Validator_B1 extends BAV_Validator_Chain { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validators[] = new BAV_Validator_05($bank); diff --git a/classes/validator/validators/BAV_Validator_B2.php b/classes/validator/validators/BAV_Validator_B2.php index 39b4c4a9..2992c1a3 100644 --- a/classes/validator/validators/BAV_Validator_B2.php +++ b/classes/validator/validators/BAV_Validator_B2.php @@ -47,7 +47,8 @@ class BAV_Validator_B2 extends BAV_Validator $mode2; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->mode1 = new BAV_Validator_02($bank); @@ -56,7 +57,8 @@ public function __construct(BAV_Bank $bank) { $this->mode2 = new BAV_Validator_00($bank); $this->mode2->setWeights(array(2, 1)); } - protected function validate() { + protected function validate() + { $this->validator = $this->account{0} <= 7 ? $this->mode1 : $this->mode2; @@ -64,7 +66,8 @@ protected function validate() { /** * @return bool */ - protected function getResult() { + protected function getResult() + { return $this->validator->isValid($this->account); } diff --git a/classes/validator/validators/BAV_Validator_B3.php b/classes/validator/validators/BAV_Validator_B3.php index a0212830..4688f084 100644 --- a/classes/validator/validators/BAV_Validator_B3.php +++ b/classes/validator/validators/BAV_Validator_B3.php @@ -47,7 +47,8 @@ class BAV_Validator_B3 extends BAV_Validator $mode2; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->mode1 = new BAV_Validator_32($bank); @@ -56,7 +57,8 @@ public function __construct(BAV_Bank $bank) { $this->mode2 = new BAV_Validator_06($bank); $this->mode2->setWeights(array(2, 3, 4, 5, 6, 7)); } - protected function validate() { + protected function validate() + { $this->validator = $this->account{0} != 9 ? $this->mode1 : $this->mode2; @@ -64,7 +66,8 @@ protected function validate() { /** * @return bool */ - protected function getResult() { + protected function getResult() + { return $this->validator->isValid($this->account); } diff --git a/classes/validator/validators/BAV_Validator_B4.php b/classes/validator/validators/BAV_Validator_B4.php index 6ae9743f..f50daeab 100644 --- a/classes/validator/validators/BAV_Validator_B4.php +++ b/classes/validator/validators/BAV_Validator_B4.php @@ -47,7 +47,8 @@ class BAV_Validator_B4 extends BAV_Validator $mode2; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->mode1 = new BAV_Validator_00($bank); @@ -56,7 +57,8 @@ public function __construct(BAV_Bank $bank) { $this->mode2 = new BAV_Validator_02($bank); $this->mode2->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 10)); } - protected function validate() { + protected function validate() + { $this->validator = $this->account{0} == 9 ? $this->mode1 : $this->mode2; @@ -64,7 +66,8 @@ protected function validate() { /** * @return bool */ - protected function getResult() { + protected function getResult() + { return $this->validator->isValid($this->account); } diff --git a/classes/validator/validators/BAV_Validator_B5.php b/classes/validator/validators/BAV_Validator_B5.php index e7f22a74..4b350a95 100644 --- a/classes/validator/validators/BAV_Validator_B5.php +++ b/classes/validator/validators/BAV_Validator_B5.php @@ -30,7 +30,8 @@ class BAV_Validator_B5 extends BAV_Validator_Chain { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validators[] = new BAV_Validator_01($bank); @@ -42,7 +43,8 @@ public function __construct(BAV_Bank $bank) { /** * @return bool */ - protected function continueValidation(BAV_Validator $validator) { + protected function continueValidation(BAV_Validator $validator) + { if ($validator === $this->validators[1]) { return $this->account{0} < 8; diff --git a/classes/validator/validators/BAV_Validator_B6.php b/classes/validator/validators/BAV_Validator_B6.php index b740a948..3f26bb5b 100644 --- a/classes/validator/validators/BAV_Validator_B6.php +++ b/classes/validator/validators/BAV_Validator_B6.php @@ -48,7 +48,8 @@ class BAV_Validator_B6 extends BAV_Validator implements BAV_Validator_BankDepend $mode2; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->mode1 = new BAV_Validator_20($bank); @@ -57,7 +58,8 @@ public function __construct(BAV_Bank $bank) { $this->mode2 = new BAV_Validator_53($bank); $this->mode2->setWeights(array(2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4)); } - protected function validate() { + protected function validate() + { if ($this->account{0} !== '0' || preg_match("/^0269[1-9]/", $this->account)) { $this->validator = $this->mode1; @@ -68,7 +70,8 @@ protected function validate() { /** * @return bool */ - protected function getResult() { + protected function getResult() + { return $this->validator->isValid($this->account, '0'); } diff --git a/classes/validator/validators/BAV_Validator_B7.php b/classes/validator/validators/BAV_Validator_B7.php index 8106177a..0cabbd6d 100644 --- a/classes/validator/validators/BAV_Validator_B7.php +++ b/classes/validator/validators/BAV_Validator_B7.php @@ -28,14 +28,16 @@ class BAV_Validator_B7 extends BAV_Validator_01 { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(3, 7, 1)); } - protected function getResult() { + protected function getResult() + { return ($this->isBetween(1000000, 5999999) || $this->isBetween(700000000, 899999999)) ? parent::getResult() : true; diff --git a/classes/validator/validators/BAV_Validator_B8.php b/classes/validator/validators/BAV_Validator_B8.php index 1ce31a75..3d821b46 100644 --- a/classes/validator/validators/BAV_Validator_B8.php +++ b/classes/validator/validators/BAV_Validator_B8.php @@ -37,7 +37,8 @@ class BAV_Validator_B8 extends BAV_Validator_Chain $_validator9; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validators[] = new BAV_Validator_20($bank); @@ -54,7 +55,8 @@ public function __construct(BAV_Bank $bank) { * * @return bool */ - protected function useValidator(BAV_Validator $validator) { + protected function useValidator(BAV_Validator $validator) + { if ($validator !== $this->_validator9) { return true; diff --git a/classes/validator/validators/BAV_Validator_B9.php b/classes/validator/validators/BAV_Validator_B9.php index cae8f710..3ecf9f07 100644 --- a/classes/validator/validators/BAV_Validator_B9.php +++ b/classes/validator/validators/BAV_Validator_B9.php @@ -47,7 +47,8 @@ class BAV_Validator_B9 extends BAV_Validator $mode2; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->mode1 = new BAV_Validator_B9a($bank); @@ -55,7 +56,8 @@ public function __construct(BAV_Bank $bank) { } - protected function validate() { + protected function validate() + { if (! preg_match('~^000?[^0]~', $this->account)) { $this->validator = null; return; @@ -70,7 +72,8 @@ protected function validate() { /** * @return bool */ - protected function getResult() { + protected function getResult() + { return ! is_null($this->validator) && $this->validator->isValid($this->account); } diff --git a/classes/validator/validators/BAV_Validator_B9a.php b/classes/validator/validators/BAV_Validator_B9a.php index 3823d665..76756700 100644 --- a/classes/validator/validators/BAV_Validator_B9a.php +++ b/classes/validator/validators/BAV_Validator_B9a.php @@ -28,7 +28,8 @@ class BAV_Validator_B9a extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(1, 3, 2)); @@ -36,12 +37,14 @@ public function __construct(BAV_Bank $bank) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += ($this->number * $this->getWeight() + $this->getWeight()) % 11; } - protected function getResult() { + protected function getResult() + { $result = $this->accumulator % 10; if ((string) $result === $this->getCheckNumber()) { return true; diff --git a/classes/validator/validators/BAV_Validator_B9b.php b/classes/validator/validators/BAV_Validator_B9b.php index d7d5b80d..189579e4 100644 --- a/classes/validator/validators/BAV_Validator_B9b.php +++ b/classes/validator/validators/BAV_Validator_B9b.php @@ -28,7 +28,8 @@ class BAV_Validator_B9b extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(1, 2, 3, 4, 5, 6)); @@ -36,12 +37,14 @@ public function __construct(BAV_Bank $bank) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { + protected function getResult() + { $result = $this->accumulator % 11; if ((string) $result === $this->getCheckNumber()) { return true; diff --git a/classes/validator/validators/BAV_Validator_C0.php b/classes/validator/validators/BAV_Validator_C0.php index 12a022fa..ed73ae60 100644 --- a/classes/validator/validators/BAV_Validator_C0.php +++ b/classes/validator/validators/BAV_Validator_C0.php @@ -31,7 +31,8 @@ class BAV_Validator_C0 extends BAV_Validator_Chain implements BAV_Validator_Bank { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validators[] = new BAV_Validator_52($bank); @@ -42,7 +43,8 @@ public function __construct(BAV_Bank $bank) { } - public function useValidator(BAV_Validator $validator) { + public function useValidator(BAV_Validator $validator) + { return $validator !== $this->validators[0] || preg_match('~^00[^0]~', $this->account); } diff --git a/classes/validator/validators/BAV_Validator_C1.php b/classes/validator/validators/BAV_Validator_C1.php index a5005b7b..df5e90ee 100644 --- a/classes/validator/validators/BAV_Validator_C1.php +++ b/classes/validator/validators/BAV_Validator_C1.php @@ -47,7 +47,8 @@ class BAV_Validator_C1 extends BAV_Validator $mode2; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->mode1 = new BAV_Validator_17($bank); @@ -55,7 +56,8 @@ public function __construct(BAV_Bank $bank) { $this->mode2 = new BAV_Validator_C1b($bank); } - protected function validate() { + protected function validate() + { $this->validator = $this->account{0} != '5' ? $this->mode1 : $this->mode2; @@ -63,7 +65,8 @@ protected function validate() { /** * @return bool */ - protected function getResult() { + protected function getResult() + { return $this->validator->isValid($this->account); } diff --git a/classes/validator/validators/BAV_Validator_C1b.php b/classes/validator/validators/BAV_Validator_C1b.php index 5f396e27..9aa18320 100644 --- a/classes/validator/validators/BAV_Validator_C1b.php +++ b/classes/validator/validators/BAV_Validator_C1b.php @@ -28,7 +28,8 @@ class BAV_Validator_C1b extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(1, 2)); @@ -37,12 +38,14 @@ public function __construct(BAV_Bank $bank) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->crossSum($this->number * $this->getWeight()); } - protected function getResult() { + protected function getResult() + { $result = (10 - (($this->accumulator - 1) % 11)) % 10; return (string)$result === $this->getCheckNumber(); } diff --git a/classes/validator/validators/BAV_Validator_C2.php b/classes/validator/validators/BAV_Validator_C2.php index ae732e20..a671e875 100644 --- a/classes/validator/validators/BAV_Validator_C2.php +++ b/classes/validator/validators/BAV_Validator_C2.php @@ -30,7 +30,8 @@ class BAV_Validator_C2 extends BAV_Validator_Chain { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validators[] = new BAV_Validator_22($bank); diff --git a/classes/validator/validators/BAV_Validator_C3.php b/classes/validator/validators/BAV_Validator_C3.php index f122dfd1..03b79247 100644 --- a/classes/validator/validators/BAV_Validator_C3.php +++ b/classes/validator/validators/BAV_Validator_C3.php @@ -47,7 +47,8 @@ class BAV_Validator_C3 extends BAV_Validator $mode2; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->mode1 = new BAV_Validator_00($bank); @@ -56,7 +57,8 @@ public function __construct(BAV_Bank $bank) { $this->mode2 = new BAV_Validator_58($bank); $this->mode2->setWeights(array(2, 3, 4, 5, 6, 0, 0, 0, 0)); } - protected function validate() { + protected function validate() + { $this->validator = $this->account{0} != '9' ? $this->mode1 : $this->mode2; @@ -64,7 +66,8 @@ protected function validate() { /** * @return bool */ - protected function getResult() { + protected function getResult() + { return $this->validator->isValid($this->account); } diff --git a/classes/validator/validators/BAV_Validator_C4.php b/classes/validator/validators/BAV_Validator_C4.php index 7ed5acdc..c59217cb 100644 --- a/classes/validator/validators/BAV_Validator_C4.php +++ b/classes/validator/validators/BAV_Validator_C4.php @@ -47,7 +47,8 @@ class BAV_Validator_C4 extends BAV_Validator $mode2; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->mode1 = new BAV_Validator_15($bank); @@ -56,7 +57,8 @@ public function __construct(BAV_Bank $bank) { $this->mode2 = new BAV_Validator_58($bank); $this->mode2->setWeights(array(2, 3, 4, 5, 6, 0, 0, 0, 0)); } - protected function validate() { + protected function validate() + { $this->validator = $this->account{0} != '9' ? $this->mode1 : $this->mode2; @@ -64,7 +66,8 @@ protected function validate() { /** * @return bool */ - protected function getResult() { + protected function getResult() + { return $this->validator->isValid($this->account); } diff --git a/classes/validator/validators/BAV_Validator_C5.php b/classes/validator/validators/BAV_Validator_C5.php index 9c6b2357..ac28239b 100644 --- a/classes/validator/validators/BAV_Validator_C5.php +++ b/classes/validator/validators/BAV_Validator_C5.php @@ -57,7 +57,8 @@ class BAV_Validator_C5 extends BAV_Validator $mode4; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->mode1 = new BAV_Validator_75($bank); @@ -65,7 +66,8 @@ public function __construct(BAV_Bank $bank) { $this->mode3 = new BAV_Validator_00($bank); $this->mode4 = new BAV_Validator_09($bank); } - protected function validate() { + protected function validate() + { $account = ltrim($this->account, '0'); $length = strlen($account); @@ -109,7 +111,8 @@ protected function validate() { /** * @return bool */ - protected function getResult() { + protected function getResult() + { return ! is_null($this->validator) && $this->validator->isValid($this->account); } diff --git a/classes/validator/validators/BAV_Validator_C6.php b/classes/validator/validators/BAV_Validator_C6.php index eb4afcb8..e7c644b0 100644 --- a/classes/validator/validators/BAV_Validator_C6.php +++ b/classes/validator/validators/BAV_Validator_C6.php @@ -60,14 +60,16 @@ class BAV_Validator_C6 extends BAV_Validator $validator; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validator = new BAV_Validator_00($bank); } - protected function validate() { + protected function validate() + { $transformation = array_key_exists($this->account{0}, self::$transformation) ? self::$transformation[$this->account{0}] : ''; @@ -79,7 +81,8 @@ protected function validate() { /** * @return bool */ - protected function getResult() { + protected function getResult() + { return in_array($this->account{0}, array_keys(self::$transformation)) ? $this->validator->isValid($this->transformedAccount) : false; diff --git a/classes/validator/validators/BAV_Validator_C7.php b/classes/validator/validators/BAV_Validator_C7.php index 1fa855a0..3db36015 100644 --- a/classes/validator/validators/BAV_Validator_C7.php +++ b/classes/validator/validators/BAV_Validator_C7.php @@ -30,7 +30,8 @@ class BAV_Validator_C7 extends BAV_Validator_Chain { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validators[] = new BAV_Validator_63($bank); diff --git a/classes/validator/validators/BAV_Validator_C8.php b/classes/validator/validators/BAV_Validator_C8.php index 1cbcbc79..fc0e6c5c 100644 --- a/classes/validator/validators/BAV_Validator_C8.php +++ b/classes/validator/validators/BAV_Validator_C8.php @@ -31,7 +31,8 @@ class BAV_Validator_C8 extends BAV_Validator_Chain { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validators[] = new BAV_Validator_00($bank); diff --git a/classes/validator/validators/BAV_Validator_C9.php b/classes/validator/validators/BAV_Validator_C9.php index 83f938b4..a9520f81 100644 --- a/classes/validator/validators/BAV_Validator_C9.php +++ b/classes/validator/validators/BAV_Validator_C9.php @@ -30,7 +30,8 @@ class BAV_Validator_C9 extends BAV_Validator_Chain { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validators[] = new BAV_Validator_00($bank); diff --git a/classes/validator/validators/BAV_Validator_D0.php b/classes/validator/validators/BAV_Validator_D0.php index a3726ee4..1914f926 100644 --- a/classes/validator/validators/BAV_Validator_D0.php +++ b/classes/validator/validators/BAV_Validator_D0.php @@ -42,12 +42,14 @@ class BAV_Validator_D0 extends BAV_Validator $validator; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); } - protected function validate() { + protected function validate() + { $this->validator = substr($this->account, 0, 2) !== self::SWITCH_PREFIX ? new BAV_Validator_20($this->bank) : new BAV_Validator_09($this->bank); @@ -57,7 +59,8 @@ protected function validate() { /** * @return bool */ - protected function getResult() { + protected function getResult() + { return $this->validator->isValid($this->account); } diff --git a/classes/validator/validators/BAV_Validator_D1.php b/classes/validator/validators/BAV_Validator_D1.php index 89649e8c..839e798e 100644 --- a/classes/validator/validators/BAV_Validator_D1.php +++ b/classes/validator/validators/BAV_Validator_D1.php @@ -60,14 +60,16 @@ class BAV_Validator_D1 extends BAV_Validator $validator; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validator = new BAV_Validator_00($bank); } - protected function validate() { + protected function validate() + { $transformationIndex = $this->_getTransformationIndex(); if (! array_key_exists($transformationIndex, self::$_transformation)) { return; @@ -83,7 +85,8 @@ protected function validate() { /** * @return bool */ - protected function getResult() { + protected function getResult() + { return array_key_exists( $this->_getTransformationIndex(), @@ -97,7 +100,8 @@ protected function getResult() { /** * @return int */ - private function _getTransformationIndex() { + private function _getTransformationIndex() + { return $this->account{0}; } diff --git a/classes/validator/validators/BAV_Validator_D2.php b/classes/validator/validators/BAV_Validator_D2.php index 2b87e70b..c49092d8 100644 --- a/classes/validator/validators/BAV_Validator_D2.php +++ b/classes/validator/validators/BAV_Validator_D2.php @@ -41,7 +41,8 @@ class BAV_Validator_D2 extends BAV_Validator_Chain $doNormalization = false; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validators[] = new BAV_Validator_95($bank); diff --git a/classes/validator/validators/BAV_Validator_D3.php b/classes/validator/validators/BAV_Validator_D3.php index 53fa1141..6f5756cf 100644 --- a/classes/validator/validators/BAV_Validator_D3.php +++ b/classes/validator/validators/BAV_Validator_D3.php @@ -33,7 +33,8 @@ class BAV_Validator_D3 extends BAV_Validator_Chain { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validators[] = new BAV_Validator_00($bank); diff --git a/classes/validator/validators/BAV_Validator_D4.php b/classes/validator/validators/BAV_Validator_D4.php index f3d84cae..8b65cb97 100644 --- a/classes/validator/validators/BAV_Validator_D4.php +++ b/classes/validator/validators/BAV_Validator_D4.php @@ -46,7 +46,8 @@ class BAV_Validator_D4 extends BAV_Validator const TRANSFORMATION = 428259; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validator = new BAV_Validator_00($bank); @@ -54,7 +55,8 @@ public function __construct(BAV_Bank $bank) { } - protected function validate() { + protected function validate() + { $this->transformedAccount = self::TRANSFORMATION.$this->account; } @@ -62,7 +64,8 @@ protected function validate() { /** * @return bool */ - protected function getResult() { + protected function getResult() + { return $this->account{0} != 0 && $this->validator->isValid($this->transformedAccount); } diff --git a/classes/validator/validators/BAV_Validator_D5.php b/classes/validator/validators/BAV_Validator_D5.php index 8c560e89..190b6364 100644 --- a/classes/validator/validators/BAV_Validator_D5.php +++ b/classes/validator/validators/BAV_Validator_D5.php @@ -47,7 +47,8 @@ class BAV_Validator_D5 extends BAV_Validator */ $_validatorChain; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->_validator1 = new BAV_Validator_06($bank); @@ -76,7 +77,8 @@ public function __construct(BAV_Bank $bank) { * * @return bool */ - protected function getResult() { + protected function getResult() + { return $this->_validator->isValid($this->account); } @@ -86,7 +88,8 @@ protected function getResult() { * * @return void */ - protected function validate() { + protected function validate() + { $this->_validator = substr($this->account, 2, 2) == 99 ? $this->_validator1 diff --git a/classes/validator/validators/BAV_Validator_D6.php b/classes/validator/validators/BAV_Validator_D6.php index 6d73dfef..cd5bb4bc 100644 --- a/classes/validator/validators/BAV_Validator_D6.php +++ b/classes/validator/validators/BAV_Validator_D6.php @@ -34,7 +34,8 @@ class BAV_Validator_D6 extends BAV_Validator_Chain { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validators[] = new BAV_Validator_07($bank); diff --git a/classes/validator/validators/BAV_Validator_D7.php b/classes/validator/validators/BAV_Validator_D7.php index 216aab36..4f6b577e 100644 --- a/classes/validator/validators/BAV_Validator_D7.php +++ b/classes/validator/validators/BAV_Validator_D7.php @@ -32,7 +32,8 @@ class BAV_Validator_D7 extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(2, 1)); @@ -40,12 +41,14 @@ public function __construct(BAV_Bank $bank) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += $this->crossSum($this->number * $this->getWeight()); } - protected function getResult() { + protected function getResult() + { $result = $this->accumulator % $this->divisor; return (string)$result === $this->getCheckNumber(); } diff --git a/classes/validator/validators/BAV_Validator_D8.php b/classes/validator/validators/BAV_Validator_D8.php index 332024ed..a6f8bab3 100644 --- a/classes/validator/validators/BAV_Validator_D8.php +++ b/classes/validator/validators/BAV_Validator_D8.php @@ -40,14 +40,16 @@ class BAV_Validator_D8 extends BAV_Validator $_validator; - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->_validator = new BAV_Validator_00($bank); } - protected function validate() { + protected function validate() + { } @@ -55,7 +57,8 @@ protected function validate() { /** * @return bool */ - protected function getResult() { + protected function getResult() + { if ($this->account{0} != 0) { return $this->_validator->isValid($this->account); diff --git a/classes/validator/validators/BAV_Validator_D9.php b/classes/validator/validators/BAV_Validator_D9.php index 5193784a..a33ed0d4 100644 --- a/classes/validator/validators/BAV_Validator_D9.php +++ b/classes/validator/validators/BAV_Validator_D9.php @@ -34,7 +34,8 @@ class BAV_Validator_D9 extends BAV_Validator_Chain { - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->validators[] = new BAV_Validator_00($bank); diff --git a/classes/validator/validators/BAV_Validator_E0.php b/classes/validator/validators/BAV_Validator_E0.php index b15c5fd2..5ab989a5 100644 --- a/classes/validator/validators/BAV_Validator_E0.php +++ b/classes/validator/validators/BAV_Validator_E0.php @@ -27,7 +27,8 @@ class BAV_Validator_E0 extends BAV_Validator_00 { - protected function validate() { + protected function validate() + { parent::validate(); $this->accumulator += 7; } diff --git a/classes/validator/validators/BAV_Validator_E1.php b/classes/validator/validators/BAV_Validator_E1.php index a3bdcb07..2f0a49b7 100644 --- a/classes/validator/validators/BAV_Validator_E1.php +++ b/classes/validator/validators/BAV_Validator_E1.php @@ -28,7 +28,8 @@ class BAV_Validator_E1 extends BAV_Validator_Iteration_Weighted private static $subsitutions = array(48, 49, 50, 51, 52, 53, 54, 55, 56, 57); - public function __construct(BAV_Bank $bank) { + public function __construct(BAV_Bank $bank) + { parent::__construct($bank); $this->setWeights(array(1, 2, 3, 4, 5, 6, 11, 10, 9)); @@ -36,12 +37,14 @@ public function __construct(BAV_Bank $bank) { } - protected function iterationStep() { + protected function iterationStep() + { $this->accumulator += self::$subsitutions[$this->number] * $this->getWeight(); } - protected function getResult() { + protected function getResult() + { $result = $this->accumulator % $this->divisor; if ($result == 10) { return false; diff --git a/classes/verify/BAV_VerifyImport.php b/classes/verify/BAV_VerifyImport.php index 2e1ad8c2..273cc2ea 100644 --- a/classes/verify/BAV_VerifyImport.php +++ b/classes/verify/BAV_VerifyImport.php @@ -66,13 +66,15 @@ class BAV_VerifyImport extends BAV /** * @param BAV_DataBackend $dataBackend The backend is needed to get the validation algorithm. */ - public function __construct(BAV_DataBackend $dataBackend) { + public function __construct(BAV_DataBackend $dataBackend) + { $this->dataBackend = $dataBackend; } /** * @return String */ - private function getFile($file) { + private function getFile($file) + { return is_null($file) ? __DIR__.'/../../data/verify.ini' : $file; @@ -83,7 +85,8 @@ private function getFile($file) { * @param string $file * @throws BAV_VerifyException */ - public function importVerifyFile($file = NULL) { + public function importVerifyFile($file = NULL) + { $file = $this->getFile($file); $verify = parse_ini_file($file, true); if (! $verify) { @@ -97,7 +100,8 @@ public function importVerifyFile($file = NULL) { /** * Merges a string array of an existing verify.ini */ - private function mergeVerifyArray($verifyArray, & $targetArray) { + private function mergeVerifyArray($verifyArray, & $targetArray) + { if (! is_array($verifyArray)) { return; @@ -120,7 +124,8 @@ private function mergeVerifyArray($verifyArray, & $targetArray) { * @throws BAV_DataBackendException_BankNotFound * @throws BAV_DataBackendException */ - public function import($bankID, $accountID, $isValid = true) { + public function import($bankID, $accountID, $isValid = true) + { $bankID = $this->normalize($bankID); $accountID = $this->normalize($accountID); $bank = $this->dataBackend->getBank($bankID); @@ -141,14 +146,16 @@ public function import($bankID, $accountID, $isValid = true) { * @param string $id * @return string */ - private function normalize($id) { + private function normalize($id) + { return (string) preg_replace('~\D+~', '', $id); } /** * @param string $filePath The file where the arrays are saved (default's to ../../data/verify.ini) * @throws BAV_VerifyException_IO */ - public function save($file = null) { + public function save($file = null) + { $file = $this->getFile($file); $fp = fopen($file, 'w'); if (! is_resource($fp)) { @@ -172,7 +179,8 @@ public function save($file = null) { * @param String $name Name of the section * @throws BAV_VerifyException_IO */ - private function saveArray($fp, Array $array, $name) { + private function saveArray($fp, Array $array, $name) + { if (! fwrite($fp, "\n\n".'['.$name.']')) { throw new BAV_VerifyException_IO(); @@ -202,7 +210,8 @@ private function saveArray($fp, Array $array, $name) { * @throws BAV_DataBackendException_BankNotFound * @throws BAV_DataBackendException */ - private function bankIDToType($bankID) { + private function bankIDToType($bankID) + { return $this->dataBackend->getBank($bankID)->getValidationType(); } diff --git a/classes/verify/testAPI/BAV_TestAPI.php b/classes/verify/testAPI/BAV_TestAPI.php index dd569619..0a30db49 100644 --- a/classes/verify/testAPI/BAV_TestAPI.php +++ b/classes/verify/testAPI/BAV_TestAPI.php @@ -50,7 +50,8 @@ abstract class BAV_TestAPI extends BAV abstract protected function isValid(BAV_Bank $bank, $account); - public function __construct() { + public function __construct() + { $this->setName(get_class($this)); } @@ -58,7 +59,8 @@ public function __construct() { /** * @param string $name */ - protected function setName($name) { + protected function setName($name) + { $this->name = $name; } @@ -66,7 +68,8 @@ protected function setName($name) { * @param int $account * @return BAV_TestAPIResult */ - public function getResult(BAV_Bank $bank, $account) { + public function getResult(BAV_Bank $bank, $account) + { try { $result = $this->isValid($bank, $account) ? BAV_TestAPIResult::VALID @@ -87,7 +90,8 @@ public function getResult(BAV_Bank $bank, $account) { /** * @return String */ - public function getName() { + public function getName() + { return $this->name; } diff --git a/classes/verify/testAPI/BAV_TestAPIResult.php b/classes/verify/testAPI/BAV_TestAPIResult.php index 28ad2612..aa09a403 100644 --- a/classes/verify/testAPI/BAV_TestAPIResult.php +++ b/classes/verify/testAPI/BAV_TestAPIResult.php @@ -53,7 +53,8 @@ class BAV_TestAPIResult extends BAV * @param BAV_TestAPI $testAPI * @param int $result */ - public function __construct(BAV_TestAPI $testAPI, $result) { + public function __construct(BAV_TestAPI $testAPI, $result) + { $this->testAPI = $testAPI; $this->result = $result; } @@ -62,7 +63,8 @@ public function __construct(BAV_TestAPI $testAPI, $result) { /** * @return BAV_TestAPI */ - public function getTestAPI() { + public function getTestAPI() + { return $this->testAPI; } @@ -70,7 +72,8 @@ public function getTestAPI() { /** * @return int */ - public function getResult() { + public function getResult() + { return $this->result; } diff --git a/classes/verify/testAPI/BAV_TestAPIResult_Error.php b/classes/verify/testAPI/BAV_TestAPIResult_Error.php index 5f333bf4..b304bf1e 100644 --- a/classes/verify/testAPI/BAV_TestAPIResult_Error.php +++ b/classes/verify/testAPI/BAV_TestAPIResult_Error.php @@ -43,7 +43,8 @@ class BAV_TestAPIResult_Error extends BAV_TestAPIResult * @param int $result * @param String $message */ - public function __construct(BAV_TestAPI $testAPI, $result, $message = '') { + public function __construct(BAV_TestAPI $testAPI, $result, $message = '') + { parent::__construct($testAPI, $result); $this->message = $message; @@ -53,7 +54,8 @@ public function __construct(BAV_TestAPI $testAPI, $result, $message = '') { /** * @return String */ - public function getMessage() { + public function getMessage() + { return $this->message; } diff --git a/classes/verify/testAPI/BAV_TestAPI_BAV.php b/classes/verify/testAPI/BAV_TestAPI_BAV.php index 73eb5cf3..9e414383 100644 --- a/classes/verify/testAPI/BAV_TestAPI_BAV.php +++ b/classes/verify/testAPI/BAV_TestAPI_BAV.php @@ -32,7 +32,8 @@ class BAV_TestAPI_BAV extends BAV_TestAPI { - public function __construct() { + public function __construct() + { parent::__construct(); $this->setName("bav"); @@ -45,7 +46,8 @@ public function __construct() { * @return bool * @throws BAV_TestAPIException_Validation_BankNotFound */ - protected function isValid(BAV_Bank $bank, $account) { + protected function isValid(BAV_Bank $bank, $account) + { try { return $bank->isValid($account); diff --git a/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php b/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php index e52ebc09..6506a9bc 100644 --- a/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php +++ b/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php @@ -46,7 +46,8 @@ class BAV_TestAPI_Kontocheck extends BAV_TestAPI * @param int $lutVersion * @throws BAV_TestAPIException */ - public function __construct($lutFile, $lutVersion) { + public function __construct($lutFile, $lutVersion) + { parent::__construct(); $this->setName("kc"); @@ -66,7 +67,8 @@ public function __construct($lutFile, $lutVersion) { * @throws BAV_TestAPIException_Validation_NotInitialized * @throws BAV_TestAPIException_Validation_BankNotFound */ - protected function isValid(BAV_Bank $bank, $account) { + protected function isValid(BAV_Bank $bank, $account) + { $isValid = kto_check_blz($bank->getBankID(), $account); switch ($isValid) { diff --git a/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php b/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php index 050c52bf..3ecaaeec 100644 --- a/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php +++ b/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php @@ -57,7 +57,8 @@ class BAV_TestAPI_Ktoblzcheck extends BAV_TestAPI * @param String $binary * @throws BAV_TestAPIException */ - public function __construct($bankdata, $binary = null) { + public function __construct($bankdata, $binary = null) + { parent::__construct(); $this->setName("ktoblzcheck"); @@ -74,7 +75,8 @@ public function __construct($bankdata, $binary = null) { * @throws BAV_TestAPIException_Validation_NotInitialized * @throws BAV_TestAPIException_Validation_BankNotFound */ - protected function isValid(BAV_Bank $bank, $account) { + protected function isValid(BAV_Bank $bank, $account) + { exec( "$this->binary --file=$this->bankdata {$bank->getBankID()} $account", $out, diff --git a/tests/AgencyQueryTest.php b/tests/AgencyQueryTest.php index c892f7c7..26b8b645 100755 --- a/tests/AgencyQueryTest.php +++ b/tests/AgencyQueryTest.php @@ -39,26 +39,30 @@ class AgencyQueryTest extends PHPUnit_Framework_TestCase /** */ - protected function setUp() { + protected function setUp() + { $this->backend = new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); } - public function testOnlyID() { + public function testOnlyID() + { $agencies = $this->backend->getAgencies( 'SELECT id FROM bav_agency LIMIT 100'); $this->assertAgencies($agencies, 100); } - public function testIDAndBank() { + public function testIDAndBank() + { $agencies = $this->backend->getAgencies( 'SELECT id, bank FROM bav_agency LIMIT 100'); $this->assertAgencies($agencies, 100); } - public function testNoBank() { + public function testNoBank() + { $agencies = $this->backend->getAgencies( 'SELECT id, name, postcode, city, shortTerm, pan, bic FROM bav_agency LIMIT 100'); $this->assertAgencies($agencies, 100); @@ -68,14 +72,16 @@ public function testNoBank() { /** * @expectedException BAV_DataBackendException_IO_MissingAttributes */ - public function testNoID() { + public function testNoID() + { $result = $this->backend->getAgencies( 'SELECT name, postcode, city, shortTerm, pan, bic, bank FROM bav_agency LIMIT 1' ); } - private function assertAgencies(Array $agencies, $count) { + private function assertAgencies(Array $agencies, $count) + { $this->assertEquals($count, count($agencies)); foreach ($agencies as $agency) { diff --git a/tests/BackendTest.php b/tests/BackendTest.php index b1e2d6c6..3cae8cf9 100755 --- a/tests/BackendTest.php +++ b/tests/BackendTest.php @@ -41,7 +41,8 @@ class BackendTest extends PHPUnit_Framework_TestCase /** * Defines the reference backend */ - public static function classConstructor() { + public static function classConstructor() + { self::$referenceBackend = new BAV_DataBackend_File(); } @@ -49,7 +50,8 @@ public static function classConstructor() { /** * @return Array The tested backends */ - public function provideBackends() { + public function provideBackends() + { return array( array(new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test'))), array(new BAV_DataBackend_File()) @@ -59,7 +61,8 @@ public function provideBackends() { /** */ - public function provideInstallationBackends() { + public function provideInstallationBackends() + { return array( array(new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test'), 'bavtest_')), array(new BAV_DataBackend_File(tempnam(BAV_DataBackend_File::getTempdir(), 'bavtest'))) @@ -70,7 +73,8 @@ public function provideInstallationBackends() { /** * @return Array */ - public function provideBanks() { + public function provideBanks() + { $banks = array(); foreach($this->provideBackends() as $backendArray) { $backend = $backendArray[0]; @@ -87,7 +91,8 @@ public function provideBanks() { /** * @return Array */ - public function provideAgencies() { + public function provideAgencies() + { $agencies = array(); foreach($this->provideBanks() as $banks) { $referenceBank = $banks[0]; @@ -115,7 +120,8 @@ public function provideAgencies() { /** * @dataProvider provideInstallationBackends */ - public function testInstallation(BAV_DataBackend $backend) { + public function testInstallation(BAV_DataBackend $backend) + { $backend->install(); $backend->update(); $backend->uninstall(); @@ -125,7 +131,8 @@ public function testInstallation(BAV_DataBackend $backend) { /** * @dataProvider provideInstallationBackends */ - public function testInstallationIsComplete(BAV_DataBackend $backend) { + public function testInstallationIsComplete(BAV_DataBackend $backend) + { $this->markTestIncomplete(); //TODO test if the installation process fills all banks } @@ -137,7 +144,8 @@ public function testInstallationIsComplete(BAV_DataBackend $backend) { * * @dataProvider provideBackends */ - public function testSingleInstances(BAV_DataBackend $backend) { + public function testSingleInstances(BAV_DataBackend $backend) + { foreach (self::$referenceBackend->getAllBanks() as $refBank) { $this->assertTrue( $backend->getBank($refBank->getBankID()) === $backend->getBank($refBank->getBankID()), @@ -150,7 +158,8 @@ public function testSingleInstances(BAV_DataBackend $backend) { /** * @dataProvider provideBackends */ - public function testGetAllBanks(BAV_DataBackend $backend) { + public function testGetAllBanks(BAV_DataBackend $backend) + { $this->assertEquals( count(self::$referenceBackend->getAllBanks()), count($backend->getAllBanks()) @@ -161,7 +170,8 @@ public function testGetAllBanks(BAV_DataBackend $backend) { /** * @dataProvider provideBanks */ - public function testBanks(BAV_Bank $referenceBank, BAV_Bank $testedBank) { + public function testBanks(BAV_Bank $referenceBank, BAV_Bank $testedBank) + { $this->assertEquals( $referenceBank->getValidationType(), $testedBank->getValidationType() @@ -182,12 +192,14 @@ public function testBanks(BAV_Bank $referenceBank, BAV_Bank $testedBank) { /** * @dataProvider provideAgencies */ - public function testAgencies(BAV_Agency $referenceAgency, BAV_Agency $testedAgency) { + public function testAgencies(BAV_Agency $referenceAgency, BAV_Agency $testedAgency) + { $this->assertEqualAgency($referenceAgency, $testedAgency); } - private function assertEqualAgency(BAV_Agency $a, BAV_Agency $b) { + private function assertEqualAgency(BAV_Agency $a, BAV_Agency $b) + { $this->assertTrue($a->getBank()->getBankID() === $b->getBank()->getBankID()); $this->assertTrue($a->getID() === $b->getID()); $this->assertTrue($a->getPostcode() === $b->getPostcode()); diff --git a/tests/CrossProjectTest.php b/tests/CrossProjectTest.php index 1d921b65..95ab9c63 100755 --- a/tests/CrossProjectTest.php +++ b/tests/CrossProjectTest.php @@ -54,7 +54,8 @@ class CrossProjectTest extends PHPUnit_Framework_TestCase /** * @return Array */ - protected function setUp() { + protected function setUp() + { $ktoblzcheckPath = __DIR__ . "/../tmp/ktoblzcheck/ktoblzcheck-1.21/src"; $this->testAPIs = array( @@ -71,7 +72,8 @@ protected function setUp() { /** * @return Array */ - public function provideBanks() { + public function provideBanks() + { $banks = array(); $backend = new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); foreach ($backend->getAllBanks() as $bank) { @@ -85,7 +87,8 @@ public function provideBanks() { /** * @dataProvider provideBanks */ - public function testCrossProjects(BAV_Bank $bank) { + public function testCrossProjects(BAV_Bank $bank) + { try { $isSkip = $bank->getValidator() instanceof BAV_Validator_BankDependent ? array_key_exists($bank->getValidationType(), $this->failedBankDependentValidators) @@ -119,7 +122,8 @@ public function testCrossProjects(BAV_Bank $bank) { } - private function assertSameResult(BAV_Bank $bank, $account) { + private function assertSameResult(BAV_Bank $bank, $account) + { $results = array(); $resultValues = array(); foreach ($this->testAPIs as $key => $testAPI) { @@ -143,7 +147,8 @@ private function assertSameResult(BAV_Bank $bank, $account) { * @param array $results * @return String */ - private function getErrorMessage(BAV_Bank $bank, $account, Array $results) { + private function getErrorMessage(BAV_Bank $bank, $account, Array $results) + { $resultTranslation = array( BAV_TestAPIResult::VALID => "valid", BAV_TestAPIResult::INVALID => "invalid", diff --git a/tests/DataConstraintTest.php b/tests/DataConstraintTest.php index bae95499..90500465 100755 --- a/tests/DataConstraintTest.php +++ b/tests/DataConstraintTest.php @@ -19,7 +19,8 @@ class DataConstraintTest extends PHPUnit_Framework_TestCase $pdo; - public static function classConstructor() { + public static function classConstructor() + { self::$pdo = new PDO('mysql:host=localhost;dbname=test', 'test'); self::$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); @@ -85,7 +86,8 @@ public static function classConstructor() { /** * @return Array */ - public function provideParsedLines() { + public function provideParsedLines() + { $parser = new BAV_FileParser(); $lines = array(); @@ -104,7 +106,8 @@ public function provideParsedLines() { /** * @dataProvider provideParsedLines */ - public function testParser($blz, $type) { + public function testParser($blz, $type) + { $this->assertRegExp('~^\d{8}$~', $blz); $this->assertRegExp('~^[\dA-Z]\d$~', $type); } @@ -113,7 +116,8 @@ public function testParser($blz, $type) { /** * Every bankID should have exact one validator */ - public function testValidatorCount() { + public function testValidatorCount() + { $statement = self::$pdo->query(" SELECT blz FROM bank GROUP BY blz HAVING count(DISTINCT validator) != 1 "); @@ -127,7 +131,8 @@ public function testValidatorCount() { /** * Every bankID should have exact one mainAgency */ - public function testMainAgency () { + public function testMainAgency () + { $statement = self::$pdo->query("SELECT blz FROM bank GROUP BY blz HAVING SUM(isMain) != 1"); $this->assertFalse( $statement->fetch(), @@ -136,7 +141,8 @@ public function testMainAgency () { } - public function testBLZDatatype () { + public function testBLZDatatype () + { $statement = self::$pdo->query("SELECT blz FROM bank WHERE blz LIKE '0%'"); $this->assertFalse( $statement->fetch(), diff --git a/tests/TestSuite.php b/tests/TestSuite.php index 7805712e..ffc9f081 100644 --- a/tests/TestSuite.php +++ b/tests/TestSuite.php @@ -36,7 +36,8 @@ class TestSuite extends PHPUnit_Framework_TestSuite /** * @return TestSuite */ - public static function suite() { + public static function suite() + { $suite = new self(); $suite->addTestSuite('AgencyQueryTest'); diff --git a/tests/ValidatorTest.php b/tests/ValidatorTest.php index 45ec45f6..441a3951 100755 --- a/tests/ValidatorTest.php +++ b/tests/ValidatorTest.php @@ -51,7 +51,8 @@ class ValidatorTest extends PHPUnit_Framework_TestCase * @throws BAV_FileParserException_IO * @throws BAV_FileParserException_FileNotExists */ - protected function setUp() { + protected function setUp() + { if (! empty(self::$dataBackend)) { return; @@ -70,7 +71,8 @@ protected function setUp() { /** * @return Array */ - public function provideBanks() { + public function provideBanks() + { $this->setUp(); $banks = array(); @@ -96,7 +98,8 @@ public function provideBanks() { /** * @return Array */ - public function provideAccountsAndBanksInAllLengths() { + public function provideAccountsAndBanksInAllLengths() + { $providedAccountsAndBanks = array(); foreach ($this->provideBanks() as $bank) { $bank = $bank[0]; @@ -118,7 +121,8 @@ public function provideAccountsAndBanksInAllLengths() { * @throws BAV_ClassFileException_MissingClass * @dataProvider provideBanks */ - public function testFindParseErrors(BAV_Bank $bank) { + public function testFindParseErrors(BAV_Bank $bank) + { /** * testing 10 random bank accounts */ @@ -137,7 +141,8 @@ public function testFindParseErrors(BAV_Bank $bank) { * @throws BAV_ClassFileException_MissingClass * @dataProvider provideBanks */ - public function testNullIsInvalid(BAV_Bank $bank) { + public function testNullIsInvalid(BAV_Bank $bank) + { for ($length = 0; $length <= 10; $length++) { $account = str_pad("0", $length, "0", STR_PAD_LEFT); $this->assertFalse( @@ -157,7 +162,8 @@ public function testNullIsInvalid(BAV_Bank $bank) { * @throws BAV_ClassFileException_MissingClass * @dataProvider provideAccountsAndBanksInAllLengths */ - public function testAccountLength(BAV_Bank $bank, $account) { + public function testAccountLength(BAV_Bank $bank, $account) + { $bank->isValid($account); } @@ -165,7 +171,8 @@ public function testAccountLength(BAV_Bank $bank, $account) { /** * @return Array */ - public function provideTestAccounts() { + public function provideTestAccounts() + { $verifyArray = parse_ini_file(__DIR__.'/../data/verify.ini', true); if (! $verifyArray) { throw new RuntimeException("couldn't parse verify.ini."); @@ -181,7 +188,8 @@ public function provideTestAccounts() { /** * @return Array */ - private function getTestAccounts(Array $testAccounts, $expectedValidation) { + private function getTestAccounts(Array $testAccounts, $expectedValidation) + { $accounts = array(); foreach ($testAccounts as $typeOrBankID => $tests) { $accounts[] = array( @@ -198,7 +206,8 @@ private function getTestAccounts(Array $testAccounts, $expectedValidation) { /** * @dataProvider provideTestAccounts */ - public function testAccount($typeOrBankID, Array $accountIDs, $expectedValidation) { + public function testAccount($typeOrBankID, Array $accountIDs, $expectedValidation) + { if (strlen($typeOrBankID) <= 2) { $typeOrBankID = (strlen($typeOrBankID) < 2 ? '0' : '').$typeOrBankID; $this->assertArrayHasKey($typeOrBankID, self::$implementedBanks); diff --git a/tests/VerifyImportTest.php b/tests/VerifyImportTest.php index 4cee627a..38637fd9 100755 --- a/tests/VerifyImportTest.php +++ b/tests/VerifyImportTest.php @@ -49,7 +49,8 @@ class VerifyImportTest extends PHPUnit_Framework_TestCase $databack; - protected function setUp() { + protected function setUp() + { $this->databack = new BAV_DataBackend_File(); $this->verifyArray = parse_ini_file(__DIR__.'/../data/verify.ini', true); @@ -66,14 +67,16 @@ protected function setUp() { } - public function testFileImport() { + public function testFileImport() + { $importer = new BAV_VerifyImport($this->databack); $importer->importVerifyFile(); $this->assertImporter($importer); } - public function testSequentialImport() { + public function testSequentialImport() + { $importer = new BAV_VerifyImport($this->databack); $notSupported = array(); foreach ($this->verifyArray as $expect => $array) { @@ -99,7 +102,8 @@ public function testSequentialImport() { } - private function assertImporter(BAV_VerifyImport $importer, Array $notSupported = array()) { + private function assertImporter(BAV_VerifyImport $importer, Array $notSupported = array()) + { $file = tempnam('/tmp', 'BAV'); $this->assertFileExists($file); @@ -140,7 +144,8 @@ private function assertImporter(BAV_VerifyImport $importer, Array $notSupported * @param String $validationType * @return BAV_Bank */ - private function getBank($validationType) { + private function getBank($validationType) + { if (! isset($this->validationMap[$validationType])) { throw new BAV_DataBackendException_BankNotFound($validationType); diff --git a/tests/checkAgainstTestAPIs.php b/tests/checkAgainstTestAPIs.php index 73c52f21..44e7db36 100755 --- a/tests/checkAgainstTestAPIs.php +++ b/tests/checkAgainstTestAPIs.php @@ -63,7 +63,8 @@ class BAV_CheckAgainstTestAPIs extends BAV $testAPIs = array(); - public function __construct() { + public function __construct() + { $ktoblzcheckPath = __DIR__ . "/../tmp/ktoblzcheck/ktoblzcheck-1.21/src"; $this->testAPIs[] = new BAV_TestAPI_BAV(); @@ -149,7 +150,8 @@ public function __construct() { } - private function testAccount(BAV_Bank $bank, $account) { + private function testAccount(BAV_Bank $bank, $account) + { $results = array(); $resultValues = array(); foreach ($this->testAPIs as $key => $testAPI) { From d862b2f38d5a5603794e38ac5af4735492f06418 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 20:42:17 +0200 Subject: [PATCH 031/303] BAV --- classes/BAV.php | 42 ++++++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/classes/BAV.php b/classes/BAV.php index fd1de756..6f8ec28c 100644 --- a/classes/BAV.php +++ b/classes/BAV.php @@ -1,9 +1,5 @@ Date: Fri, 23 May 2014 20:47:38 +0200 Subject: [PATCH 032/303] no ?> at end of file --- classes/BAV_Version.php | 1 - classes/bank/BAV_Agency.php | 1 - classes/bank/BAV_Bank.php | 1 - classes/bank/exception/BAV_AgencyException.php | 1 - .../bank/exception/BAV_AgencyException_UndefinedAttribute.php | 1 - classes/class/BAV_ClassFile.php | 1 - classes/class/exception/BAV_ClassFileException.php | 1 - classes/class/exception/BAV_ClassFileException_IO.php | 1 - classes/class/exception/BAV_ClassFileException_MissingClass.php | 1 - classes/dataBackend/BAV_DataBackend.php | 1 - classes/dataBackend/BAV_DataBackend_PDO.php | 1 - classes/dataBackend/exception/BAV_DataBackendException.php | 1 - .../exception/BAV_DataBackendException_BankNotFound.php | 1 - classes/dataBackend/exception/BAV_DataBackendException_IO.php | 1 - .../exception/BAV_DataBackendException_IO_MissingAttributes.php | 1 - .../exception/BAV_DataBackendException_NoMainAgency.php | 1 - classes/dataBackend/fileParser/BAV_FileParser.php | 1 - classes/dataBackend/fileParser/BAV_FileParserContext.php | 1 - .../fileParser/exception/BAV_FileParserContextException.php | 1 - .../exception/BAV_FileParserContextException_Undefined.php | 1 - .../fileParser/exception/BAV_FileParserException.php | 1 - .../exception/BAV_FileParserException_FileNotExists.php | 1 - .../fileParser/exception/BAV_FileParserException_IO.php | 1 - .../fileParser/exception/BAV_FileParserException_ParseError.php | 1 - classes/encoding/BAV_Encoding.php | 1 - classes/encoding/BAV_Encoding_ISO8859.php | 1 - classes/encoding/BAV_Encoding_Iconv.php | 1 - classes/encoding/BAV_Encoding_MB.php | 1 - classes/encoding/exception/BAV_EncodingException.php | 1 - .../encoding/exception/BAV_EncodingException_Unsupported.php | 1 - classes/validator/BAV_Validator.php | 1 - classes/validator/BAV_Validator_BankDependent.php | 1 - classes/validator/BAV_Validator_Chain.php | 1 - classes/validator/BAV_Validator_Iteration.php | 1 - classes/validator/BAV_Validator_Iteration_Transformation.php | 1 - classes/validator/BAV_Validator_Iteration_Weighted.php | 1 - classes/validator/exception/BAV_ValidatorException.php | 1 - classes/validator/exception/BAV_ValidatorException_ESER.php | 1 - .../validator/exception/BAV_ValidatorException_NotExists.php | 1 - .../validator/exception/BAV_ValidatorException_OutOfBounds.php | 1 - classes/validator/validators/BAV_Validator_00.php | 1 - classes/validator/validators/BAV_Validator_01.php | 1 - classes/validator/validators/BAV_Validator_02.php | 1 - classes/validator/validators/BAV_Validator_03.php | 1 - classes/validator/validators/BAV_Validator_04.php | 1 - classes/validator/validators/BAV_Validator_05.php | 1 - classes/validator/validators/BAV_Validator_06.php | 1 - classes/validator/validators/BAV_Validator_07.php | 1 - classes/validator/validators/BAV_Validator_08.php | 1 - classes/validator/validators/BAV_Validator_09.php | 1 - classes/validator/validators/BAV_Validator_10.php | 1 - classes/validator/validators/BAV_Validator_11.php | 1 - classes/validator/validators/BAV_Validator_13.php | 1 - classes/validator/validators/BAV_Validator_14.php | 1 - classes/validator/validators/BAV_Validator_15.php | 1 - classes/validator/validators/BAV_Validator_16.php | 1 - classes/validator/validators/BAV_Validator_17.php | 1 - classes/validator/validators/BAV_Validator_18.php | 1 - classes/validator/validators/BAV_Validator_19.php | 1 - classes/validator/validators/BAV_Validator_20.php | 1 - classes/validator/validators/BAV_Validator_21.php | 1 - classes/validator/validators/BAV_Validator_22.php | 1 - classes/validator/validators/BAV_Validator_23.php | 1 - classes/validator/validators/BAV_Validator_24.php | 1 - classes/validator/validators/BAV_Validator_25.php | 1 - classes/validator/validators/BAV_Validator_26.php | 1 - classes/validator/validators/BAV_Validator_27.php | 1 - classes/validator/validators/BAV_Validator_28.php | 1 - classes/validator/validators/BAV_Validator_29.php | 1 - classes/validator/validators/BAV_Validator_30.php | 1 - classes/validator/validators/BAV_Validator_31.php | 1 - classes/validator/validators/BAV_Validator_32.php | 1 - classes/validator/validators/BAV_Validator_33.php | 1 - classes/validator/validators/BAV_Validator_34.php | 1 - classes/validator/validators/BAV_Validator_35.php | 1 - classes/validator/validators/BAV_Validator_36.php | 1 - classes/validator/validators/BAV_Validator_37.php | 1 - classes/validator/validators/BAV_Validator_38.php | 1 - classes/validator/validators/BAV_Validator_39.php | 1 - classes/validator/validators/BAV_Validator_40.php | 1 - classes/validator/validators/BAV_Validator_41.php | 1 - classes/validator/validators/BAV_Validator_42.php | 1 - classes/validator/validators/BAV_Validator_43.php | 1 - classes/validator/validators/BAV_Validator_44.php | 1 - classes/validator/validators/BAV_Validator_45.php | 1 - classes/validator/validators/BAV_Validator_46.php | 1 - classes/validator/validators/BAV_Validator_47.php | 1 - classes/validator/validators/BAV_Validator_48.php | 1 - classes/validator/validators/BAV_Validator_49.php | 1 - classes/validator/validators/BAV_Validator_50.php | 1 - classes/validator/validators/BAV_Validator_51.php | 1 - classes/validator/validators/BAV_Validator_51x.php | 1 - classes/validator/validators/BAV_Validator_52.php | 1 - classes/validator/validators/BAV_Validator_53.php | 1 - classes/validator/validators/BAV_Validator_54.php | 1 - classes/validator/validators/BAV_Validator_55.php | 1 - classes/validator/validators/BAV_Validator_56.php | 1 - classes/validator/validators/BAV_Validator_57.php | 1 - classes/validator/validators/BAV_Validator_58.php | 1 - classes/validator/validators/BAV_Validator_59.php | 1 - classes/validator/validators/BAV_Validator_60.php | 1 - classes/validator/validators/BAV_Validator_61.php | 1 - classes/validator/validators/BAV_Validator_62.php | 1 - classes/validator/validators/BAV_Validator_63.php | 1 - classes/validator/validators/BAV_Validator_64.php | 1 - classes/validator/validators/BAV_Validator_65.php | 1 - classes/validator/validators/BAV_Validator_66.php | 1 - classes/validator/validators/BAV_Validator_67.php | 1 - classes/validator/validators/BAV_Validator_68.php | 1 - classes/validator/validators/BAV_Validator_69.php | 1 - classes/validator/validators/BAV_Validator_69b.php | 1 - classes/validator/validators/BAV_Validator_70.php | 1 - classes/validator/validators/BAV_Validator_71.php | 1 - classes/validator/validators/BAV_Validator_72.php | 1 - classes/validator/validators/BAV_Validator_73.php | 1 - classes/validator/validators/BAV_Validator_74.php | 1 - classes/validator/validators/BAV_Validator_75.php | 1 - classes/validator/validators/BAV_Validator_76.php | 1 - classes/validator/validators/BAV_Validator_77.php | 1 - classes/validator/validators/BAV_Validator_77a.php | 1 - classes/validator/validators/BAV_Validator_78.php | 1 - classes/validator/validators/BAV_Validator_79.php | 1 - classes/validator/validators/BAV_Validator_80.php | 1 - classes/validator/validators/BAV_Validator_81.php | 1 - classes/validator/validators/BAV_Validator_82.php | 1 - classes/validator/validators/BAV_Validator_83.php | 1 - classes/validator/validators/BAV_Validator_83x.php | 1 - classes/validator/validators/BAV_Validator_84.php | 1 - classes/validator/validators/BAV_Validator_84b.php | 1 - classes/validator/validators/BAV_Validator_85.php | 1 - classes/validator/validators/BAV_Validator_86.php | 1 - classes/validator/validators/BAV_Validator_87.php | 1 - classes/validator/validators/BAV_Validator_87a.php | 1 - classes/validator/validators/BAV_Validator_87c.php | 1 - classes/validator/validators/BAV_Validator_88.php | 1 - classes/validator/validators/BAV_Validator_89.php | 1 - classes/validator/validators/BAV_Validator_90.php | 2 +- classes/validator/validators/BAV_Validator_90c.php | 1 - classes/validator/validators/BAV_Validator_90d.php | 1 - classes/validator/validators/BAV_Validator_90e.php | 1 - classes/validator/validators/BAV_Validator_91.php | 1 - classes/validator/validators/BAV_Validator_92.php | 1 - classes/validator/validators/BAV_Validator_93.php | 1 - classes/validator/validators/BAV_Validator_94.php | 1 - classes/validator/validators/BAV_Validator_95.php | 1 - classes/validator/validators/BAV_Validator_96.php | 1 - classes/validator/validators/BAV_Validator_97.php | 1 - classes/validator/validators/BAV_Validator_98.php | 1 - classes/validator/validators/BAV_Validator_99.php | 1 - classes/validator/validators/BAV_Validator_A0.php | 1 - classes/validator/validators/BAV_Validator_A1.php | 1 - classes/validator/validators/BAV_Validator_A2.php | 1 - classes/validator/validators/BAV_Validator_A3.php | 1 - classes/validator/validators/BAV_Validator_A4.php | 1 - classes/validator/validators/BAV_Validator_A4b.php | 1 - classes/validator/validators/BAV_Validator_A5.php | 1 - classes/validator/validators/BAV_Validator_A6.php | 1 - classes/validator/validators/BAV_Validator_A7.php | 1 - classes/validator/validators/BAV_Validator_A8.php | 1 - classes/validator/validators/BAV_Validator_A9.php | 1 - classes/validator/validators/BAV_Validator_B0.php | 1 - classes/validator/validators/BAV_Validator_B1.php | 1 - classes/validator/validators/BAV_Validator_B2.php | 1 - classes/validator/validators/BAV_Validator_B3.php | 1 - classes/validator/validators/BAV_Validator_B4.php | 1 - classes/validator/validators/BAV_Validator_B5.php | 1 - classes/validator/validators/BAV_Validator_B6.php | 1 - classes/validator/validators/BAV_Validator_B7.php | 1 - classes/validator/validators/BAV_Validator_B8.php | 1 - classes/validator/validators/BAV_Validator_B9.php | 1 - classes/validator/validators/BAV_Validator_B9a.php | 1 - classes/validator/validators/BAV_Validator_B9b.php | 1 - classes/validator/validators/BAV_Validator_C0.php | 1 - classes/validator/validators/BAV_Validator_C1.php | 1 - classes/validator/validators/BAV_Validator_C1b.php | 1 - classes/validator/validators/BAV_Validator_C2.php | 1 - classes/validator/validators/BAV_Validator_C3.php | 1 - classes/validator/validators/BAV_Validator_C4.php | 1 - classes/validator/validators/BAV_Validator_C5.php | 2 +- classes/validator/validators/BAV_Validator_C7.php | 1 - classes/validator/validators/BAV_Validator_C8.php | 1 - classes/validator/validators/BAV_Validator_C9.php | 1 - classes/validator/validators/BAV_Validator_D0.php | 1 - classes/validator/validators/BAV_Validator_D2.php | 1 - classes/validator/validators/BAV_Validator_D3.php | 1 - classes/validator/validators/BAV_Validator_D7.php | 1 - classes/validator/validators/BAV_Validator_E1.php | 1 - classes/verify/BAV_VerifyImport.php | 1 - classes/verify/exception/BAV_VerifyException.php | 1 - classes/verify/exception/BAV_VerifyException_IO.php | 1 - classes/verify/testAPI/BAV_TestAPI.php | 1 - classes/verify/testAPI/BAV_TestAPIResult.php | 1 - classes/verify/testAPI/BAV_TestAPIResult_Error.php | 1 - classes/verify/testAPI/BAV_TestAPI_BAV.php | 1 - classes/verify/testAPI/BAV_TestAPI_Kontocheck.php | 1 - classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php | 1 - classes/verify/testAPI/exception/BAV_TestAPIException.php | 1 - .../testAPI/exception/BAV_TestAPIException_Validation.php | 1 - .../exception/BAV_TestAPIException_Validation_BankNotFound.php | 1 - .../BAV_TestAPIException_Validation_NotInitialized.php | 1 - tests/AgencyQueryTest.php | 1 - tests/CrossProjectTest.php | 1 - tests/DataConstraintTest.php | 1 - tests/TestSuite.php | 1 - tests/VerifyImportTest.php | 1 - tests/checkAgainstTestAPIs.php | 1 - 206 files changed, 2 insertions(+), 206 deletions(-) diff --git a/classes/BAV_Version.php b/classes/BAV_Version.php index 89311cc4..f0229911 100644 --- a/classes/BAV_Version.php +++ b/classes/BAV_Version.php @@ -168,4 +168,3 @@ public static function getPHPVersion() } -?> \ No newline at end of file diff --git a/classes/bank/BAV_Agency.php b/classes/bank/BAV_Agency.php index 66819a3b..0546a4ce 100644 --- a/classes/bank/BAV_Agency.php +++ b/classes/bank/BAV_Agency.php @@ -186,4 +186,3 @@ public function getBIC() } -?> \ No newline at end of file diff --git a/classes/bank/BAV_Bank.php b/classes/bank/BAV_Bank.php index 5158cabb..68cb308a 100644 --- a/classes/bank/BAV_Bank.php +++ b/classes/bank/BAV_Bank.php @@ -150,4 +150,3 @@ public function getValidator() } -?> \ No newline at end of file diff --git a/classes/bank/exception/BAV_AgencyException.php b/classes/bank/exception/BAV_AgencyException.php index 186ad7ea..0837cf8f 100644 --- a/classes/bank/exception/BAV_AgencyException.php +++ b/classes/bank/exception/BAV_AgencyException.php @@ -52,4 +52,3 @@ public function getAgency() } -?> \ No newline at end of file diff --git a/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php b/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php index f0a07737..b8bcb19e 100644 --- a/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php +++ b/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php @@ -57,4 +57,3 @@ public function getAttribute() } -?> \ No newline at end of file diff --git a/classes/class/BAV_ClassFile.php b/classes/class/BAV_ClassFile.php index 49d5d66a..fc867dfa 100644 --- a/classes/class/BAV_ClassFile.php +++ b/classes/class/BAV_ClassFile.php @@ -199,4 +199,3 @@ public function getName() } -?> \ No newline at end of file diff --git a/classes/class/exception/BAV_ClassFileException.php b/classes/class/exception/BAV_ClassFileException.php index 7be15978..08bcef54 100644 --- a/classes/class/exception/BAV_ClassFileException.php +++ b/classes/class/exception/BAV_ClassFileException.php @@ -31,4 +31,3 @@ class BAV_ClassFileException extends RuntimeException } -?> \ No newline at end of file diff --git a/classes/class/exception/BAV_ClassFileException_IO.php b/classes/class/exception/BAV_ClassFileException_IO.php index d588f344..a82b79f4 100644 --- a/classes/class/exception/BAV_ClassFileException_IO.php +++ b/classes/class/exception/BAV_ClassFileException_IO.php @@ -32,4 +32,3 @@ class BAV_ClassFileException_IO extends BAV_ClassFileException } -?> \ No newline at end of file diff --git a/classes/class/exception/BAV_ClassFileException_MissingClass.php b/classes/class/exception/BAV_ClassFileException_MissingClass.php index bfe46ac0..cb972eed 100644 --- a/classes/class/exception/BAV_ClassFileException_MissingClass.php +++ b/classes/class/exception/BAV_ClassFileException_MissingClass.php @@ -68,4 +68,3 @@ public function getMissingClassName() } -?> \ No newline at end of file diff --git a/classes/dataBackend/BAV_DataBackend.php b/classes/dataBackend/BAV_DataBackend.php index c2709fb1..ec8add9d 100644 --- a/classes/dataBackend/BAV_DataBackend.php +++ b/classes/dataBackend/BAV_DataBackend.php @@ -157,4 +157,3 @@ abstract public function _getAgencies(BAV_Bank $bank); } -?> \ No newline at end of file diff --git a/classes/dataBackend/BAV_DataBackend_PDO.php b/classes/dataBackend/BAV_DataBackend_PDO.php index 4fc40895..80db401b 100644 --- a/classes/dataBackend/BAV_DataBackend_PDO.php +++ b/classes/dataBackend/BAV_DataBackend_PDO.php @@ -516,4 +516,3 @@ public function _getAgencies(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/dataBackend/exception/BAV_DataBackendException.php b/classes/dataBackend/exception/BAV_DataBackendException.php index 8e4190ec..1caa1a50 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException.php +++ b/classes/dataBackend/exception/BAV_DataBackendException.php @@ -31,4 +31,3 @@ class BAV_DataBackendException extends RuntimeException } -?> \ No newline at end of file diff --git a/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php b/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php index f70a2421..56896942 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php +++ b/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php @@ -53,4 +53,3 @@ public function getBankID() } -?> \ No newline at end of file diff --git a/classes/dataBackend/exception/BAV_DataBackendException_IO.php b/classes/dataBackend/exception/BAV_DataBackendException_IO.php index 95eca651..5ff68284 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException_IO.php +++ b/classes/dataBackend/exception/BAV_DataBackendException_IO.php @@ -32,4 +32,3 @@ class BAV_DataBackendException_IO extends BAV_DataBackendException } -?> \ No newline at end of file diff --git a/classes/dataBackend/exception/BAV_DataBackendException_IO_MissingAttributes.php b/classes/dataBackend/exception/BAV_DataBackendException_IO_MissingAttributes.php index 7e8f3f8e..80ea05ea 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException_IO_MissingAttributes.php +++ b/classes/dataBackend/exception/BAV_DataBackendException_IO_MissingAttributes.php @@ -32,4 +32,3 @@ class BAV_DataBackendException_IO_MissingAttributes extends BAV_DataBackendExcep } -?> \ No newline at end of file diff --git a/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php b/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php index 7ddcff5f..06cc6950 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php +++ b/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php @@ -55,4 +55,3 @@ public function getBank() } -?> \ No newline at end of file diff --git a/classes/dataBackend/fileParser/BAV_FileParser.php b/classes/dataBackend/fileParser/BAV_FileParser.php index abe827c4..a40a3c4f 100644 --- a/classes/dataBackend/fileParser/BAV_FileParser.php +++ b/classes/dataBackend/fileParser/BAV_FileParser.php @@ -273,4 +273,3 @@ public function getFile() } -?> \ No newline at end of file diff --git a/classes/dataBackend/fileParser/BAV_FileParserContext.php b/classes/dataBackend/fileParser/BAV_FileParserContext.php index 42fd2116..9bac6904 100644 --- a/classes/dataBackend/fileParser/BAV_FileParserContext.php +++ b/classes/dataBackend/fileParser/BAV_FileParserContext.php @@ -121,4 +121,3 @@ public function setEnd($end) } -?> \ No newline at end of file diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserContextException.php b/classes/dataBackend/fileParser/exception/BAV_FileParserContextException.php index 9eab1628..06a10fbd 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserContextException.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserContextException.php @@ -31,4 +31,3 @@ class BAV_FileParserContextException extends RuntimeException } -?> \ No newline at end of file diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserContextException_Undefined.php b/classes/dataBackend/fileParser/exception/BAV_FileParserContextException_Undefined.php index a395246b..227b8171 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserContextException_Undefined.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserContextException_Undefined.php @@ -32,4 +32,3 @@ class BAV_FileParserContextException_Undefined extends BAV_FileParserContextExce } -?> \ No newline at end of file diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserException.php b/classes/dataBackend/fileParser/exception/BAV_FileParserException.php index b7ae5d4c..a88b6ec9 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserException.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserException.php @@ -31,4 +31,3 @@ class BAV_FileParserException extends RuntimeException } -?> \ No newline at end of file diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php b/classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php index fb445e33..190820a3 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php @@ -55,4 +55,3 @@ public function getParsedFile() } -?> \ No newline at end of file diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserException_IO.php b/classes/dataBackend/fileParser/exception/BAV_FileParserException_IO.php index 69f99863..9587121f 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserException_IO.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserException_IO.php @@ -32,4 +32,3 @@ class BAV_FileParserException_IO extends BAV_FileParserException } -?> \ No newline at end of file diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserException_ParseError.php b/classes/dataBackend/fileParser/exception/BAV_FileParserException_ParseError.php index d9653375..8b71fe03 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserException_ParseError.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserException_ParseError.php @@ -32,4 +32,3 @@ class BAV_FileParserException_ParseError extends BAV_FileParserException } -?> \ No newline at end of file diff --git a/classes/encoding/BAV_Encoding.php b/classes/encoding/BAV_Encoding.php index c29abff8..02fcfd46 100644 --- a/classes/encoding/BAV_Encoding.php +++ b/classes/encoding/BAV_Encoding.php @@ -107,4 +107,3 @@ public static function getInstance($encoding) } -?> \ No newline at end of file diff --git a/classes/encoding/BAV_Encoding_ISO8859.php b/classes/encoding/BAV_Encoding_ISO8859.php index 662f2621..04dfabf2 100644 --- a/classes/encoding/BAV_Encoding_ISO8859.php +++ b/classes/encoding/BAV_Encoding_ISO8859.php @@ -77,4 +77,3 @@ public function convert($string, $from_encoding) } -?> \ No newline at end of file diff --git a/classes/encoding/BAV_Encoding_Iconv.php b/classes/encoding/BAV_Encoding_Iconv.php index 33dbf77e..2361972d 100644 --- a/classes/encoding/BAV_Encoding_Iconv.php +++ b/classes/encoding/BAV_Encoding_Iconv.php @@ -90,4 +90,3 @@ public function convert($string, $from_encoding) } -?> \ No newline at end of file diff --git a/classes/encoding/BAV_Encoding_MB.php b/classes/encoding/BAV_Encoding_MB.php index 7cfc34e4..9621ea02 100644 --- a/classes/encoding/BAV_Encoding_MB.php +++ b/classes/encoding/BAV_Encoding_MB.php @@ -83,4 +83,3 @@ public function convert($string, $from_encoding) } -?> \ No newline at end of file diff --git a/classes/encoding/exception/BAV_EncodingException.php b/classes/encoding/exception/BAV_EncodingException.php index af4f8e77..f20ba9c3 100644 --- a/classes/encoding/exception/BAV_EncodingException.php +++ b/classes/encoding/exception/BAV_EncodingException.php @@ -31,4 +31,3 @@ class BAV_EncodingException extends RuntimeException } -?> \ No newline at end of file diff --git a/classes/encoding/exception/BAV_EncodingException_Unsupported.php b/classes/encoding/exception/BAV_EncodingException_Unsupported.php index 95b11f96..64d4b3de 100644 --- a/classes/encoding/exception/BAV_EncodingException_Unsupported.php +++ b/classes/encoding/exception/BAV_EncodingException_Unsupported.php @@ -54,4 +54,3 @@ public function getEncoding() } -?> \ No newline at end of file diff --git a/classes/validator/BAV_Validator.php b/classes/validator/BAV_Validator.php index ab91f319..71138003 100644 --- a/classes/validator/BAV_Validator.php +++ b/classes/validator/BAV_Validator.php @@ -268,4 +268,3 @@ protected function isBetween($a, $b) } -?> \ No newline at end of file diff --git a/classes/validator/BAV_Validator_BankDependent.php b/classes/validator/BAV_Validator_BankDependent.php index 1811d84a..f4151271 100644 --- a/classes/validator/BAV_Validator_BankDependent.php +++ b/classes/validator/BAV_Validator_BankDependent.php @@ -30,4 +30,3 @@ interface BAV_Validator_BankDependent { } -?> \ No newline at end of file diff --git a/classes/validator/BAV_Validator_Chain.php b/classes/validator/BAV_Validator_Chain.php index 5d7baa04..64ba1a4d 100644 --- a/classes/validator/BAV_Validator_Chain.php +++ b/classes/validator/BAV_Validator_Chain.php @@ -104,4 +104,3 @@ protected function useValidator(BAV_Validator $validator) } -?> \ No newline at end of file diff --git a/classes/validator/BAV_Validator_Iteration.php b/classes/validator/BAV_Validator_Iteration.php index cf36c069..a5dcfe07 100644 --- a/classes/validator/BAV_Validator_Iteration.php +++ b/classes/validator/BAV_Validator_Iteration.php @@ -117,4 +117,3 @@ abstract protected function iterationStep(); } -?> \ No newline at end of file diff --git a/classes/validator/BAV_Validator_Iteration_Transformation.php b/classes/validator/BAV_Validator_Iteration_Transformation.php index b626f7f4..e6b20e24 100644 --- a/classes/validator/BAV_Validator_Iteration_Transformation.php +++ b/classes/validator/BAV_Validator_Iteration_Transformation.php @@ -88,4 +88,3 @@ protected function getTransformedNumber() } -?> \ No newline at end of file diff --git a/classes/validator/BAV_Validator_Iteration_Weighted.php b/classes/validator/BAV_Validator_Iteration_Weighted.php index 5bc95fe9..e3626e1d 100644 --- a/classes/validator/BAV_Validator_Iteration_Weighted.php +++ b/classes/validator/BAV_Validator_Iteration_Weighted.php @@ -72,4 +72,3 @@ protected function getWeight() } -?> \ No newline at end of file diff --git a/classes/validator/exception/BAV_ValidatorException.php b/classes/validator/exception/BAV_ValidatorException.php index 39a2d064..7c5f3dee 100644 --- a/classes/validator/exception/BAV_ValidatorException.php +++ b/classes/validator/exception/BAV_ValidatorException.php @@ -31,4 +31,3 @@ class BAV_ValidatorException extends RuntimeException } -?> \ No newline at end of file diff --git a/classes/validator/exception/BAV_ValidatorException_ESER.php b/classes/validator/exception/BAV_ValidatorException_ESER.php index aec2abad..efc43c5e 100644 --- a/classes/validator/exception/BAV_ValidatorException_ESER.php +++ b/classes/validator/exception/BAV_ValidatorException_ESER.php @@ -32,4 +32,3 @@ class BAV_ValidatorException_ESER extends BAV_ValidatorException } -?> \ No newline at end of file diff --git a/classes/validator/exception/BAV_ValidatorException_NotExists.php b/classes/validator/exception/BAV_ValidatorException_NotExists.php index 67438d65..947ea21c 100644 --- a/classes/validator/exception/BAV_ValidatorException_NotExists.php +++ b/classes/validator/exception/BAV_ValidatorException_NotExists.php @@ -53,4 +53,3 @@ public function getBank() } -?> \ No newline at end of file diff --git a/classes/validator/exception/BAV_ValidatorException_OutOfBounds.php b/classes/validator/exception/BAV_ValidatorException_OutOfBounds.php index edba71a6..0632115b 100644 --- a/classes/validator/exception/BAV_ValidatorException_OutOfBounds.php +++ b/classes/validator/exception/BAV_ValidatorException_OutOfBounds.php @@ -32,4 +32,3 @@ class BAV_ValidatorException_OutOfBounds extends BAV_ValidatorException } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_00.php b/classes/validator/validators/BAV_Validator_00.php index dc09a69b..ee51b5b1 100644 --- a/classes/validator/validators/BAV_Validator_00.php +++ b/classes/validator/validators/BAV_Validator_00.php @@ -52,4 +52,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_01.php b/classes/validator/validators/BAV_Validator_01.php index 9d0963a0..fa2c71be 100644 --- a/classes/validator/validators/BAV_Validator_01.php +++ b/classes/validator/validators/BAV_Validator_01.php @@ -51,4 +51,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_02.php b/classes/validator/validators/BAV_Validator_02.php index 4537b7bc..a0d61e26 100644 --- a/classes/validator/validators/BAV_Validator_02.php +++ b/classes/validator/validators/BAV_Validator_02.php @@ -55,4 +55,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_03.php b/classes/validator/validators/BAV_Validator_03.php index af345746..8413878c 100644 --- a/classes/validator/validators/BAV_Validator_03.php +++ b/classes/validator/validators/BAV_Validator_03.php @@ -38,4 +38,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_04.php b/classes/validator/validators/BAV_Validator_04.php index 8ae8e606..65df646a 100644 --- a/classes/validator/validators/BAV_Validator_04.php +++ b/classes/validator/validators/BAV_Validator_04.php @@ -38,4 +38,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_05.php b/classes/validator/validators/BAV_Validator_05.php index 529f2ae7..5cd22615 100644 --- a/classes/validator/validators/BAV_Validator_05.php +++ b/classes/validator/validators/BAV_Validator_05.php @@ -38,4 +38,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_06.php b/classes/validator/validators/BAV_Validator_06.php index 9a9c2d2a..9fd9db50 100644 --- a/classes/validator/validators/BAV_Validator_06.php +++ b/classes/validator/validators/BAV_Validator_06.php @@ -55,4 +55,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_07.php b/classes/validator/validators/BAV_Validator_07.php index 80a378d9..f1873ab5 100644 --- a/classes/validator/validators/BAV_Validator_07.php +++ b/classes/validator/validators/BAV_Validator_07.php @@ -38,4 +38,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_08.php b/classes/validator/validators/BAV_Validator_08.php index 5ce7ac38..042fd7f8 100644 --- a/classes/validator/validators/BAV_Validator_08.php +++ b/classes/validator/validators/BAV_Validator_08.php @@ -46,4 +46,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_09.php b/classes/validator/validators/BAV_Validator_09.php index 54131c15..7fb458b1 100644 --- a/classes/validator/validators/BAV_Validator_09.php +++ b/classes/validator/validators/BAV_Validator_09.php @@ -41,4 +41,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_10.php b/classes/validator/validators/BAV_Validator_10.php index 089b277b..4e335981 100644 --- a/classes/validator/validators/BAV_Validator_10.php +++ b/classes/validator/validators/BAV_Validator_10.php @@ -38,4 +38,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_11.php b/classes/validator/validators/BAV_Validator_11.php index e14c3609..a8b141ab 100644 --- a/classes/validator/validators/BAV_Validator_11.php +++ b/classes/validator/validators/BAV_Validator_11.php @@ -53,4 +53,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_13.php b/classes/validator/validators/BAV_Validator_13.php index 680c1adb..a725a17b 100644 --- a/classes/validator/validators/BAV_Validator_13.php +++ b/classes/validator/validators/BAV_Validator_13.php @@ -58,4 +58,3 @@ public function isValid($account) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_14.php b/classes/validator/validators/BAV_Validator_14.php index 0f126a30..99a8b6b8 100644 --- a/classes/validator/validators/BAV_Validator_14.php +++ b/classes/validator/validators/BAV_Validator_14.php @@ -41,4 +41,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_15.php b/classes/validator/validators/BAV_Validator_15.php index 014083c4..ce712c47 100644 --- a/classes/validator/validators/BAV_Validator_15.php +++ b/classes/validator/validators/BAV_Validator_15.php @@ -41,4 +41,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_16.php b/classes/validator/validators/BAV_Validator_16.php index 8461f77c..18319b4d 100644 --- a/classes/validator/validators/BAV_Validator_16.php +++ b/classes/validator/validators/BAV_Validator_16.php @@ -47,4 +47,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_17.php b/classes/validator/validators/BAV_Validator_17.php index 982b8bc8..d84b7b08 100644 --- a/classes/validator/validators/BAV_Validator_17.php +++ b/classes/validator/validators/BAV_Validator_17.php @@ -53,4 +53,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_18.php b/classes/validator/validators/BAV_Validator_18.php index 8173169c..82a83565 100644 --- a/classes/validator/validators/BAV_Validator_18.php +++ b/classes/validator/validators/BAV_Validator_18.php @@ -38,4 +38,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_19.php b/classes/validator/validators/BAV_Validator_19.php index 9054b31c..f41bedf3 100644 --- a/classes/validator/validators/BAV_Validator_19.php +++ b/classes/validator/validators/BAV_Validator_19.php @@ -38,4 +38,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_20.php b/classes/validator/validators/BAV_Validator_20.php index 67071d5b..3ea15eb6 100644 --- a/classes/validator/validators/BAV_Validator_20.php +++ b/classes/validator/validators/BAV_Validator_20.php @@ -38,4 +38,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_21.php b/classes/validator/validators/BAV_Validator_21.php index 69e63cdc..8b883997 100644 --- a/classes/validator/validators/BAV_Validator_21.php +++ b/classes/validator/validators/BAV_Validator_21.php @@ -46,4 +46,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_22.php b/classes/validator/validators/BAV_Validator_22.php index 2c1a5db4..13229b3f 100644 --- a/classes/validator/validators/BAV_Validator_22.php +++ b/classes/validator/validators/BAV_Validator_22.php @@ -52,4 +52,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_23.php b/classes/validator/validators/BAV_Validator_23.php index a6d308d4..23e415a5 100644 --- a/classes/validator/validators/BAV_Validator_23.php +++ b/classes/validator/validators/BAV_Validator_23.php @@ -41,4 +41,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_24.php b/classes/validator/validators/BAV_Validator_24.php index 01065a83..66d0af49 100644 --- a/classes/validator/validators/BAV_Validator_24.php +++ b/classes/validator/validators/BAV_Validator_24.php @@ -60,4 +60,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_25.php b/classes/validator/validators/BAV_Validator_25.php index 080d27c0..f617dfe6 100644 --- a/classes/validator/validators/BAV_Validator_25.php +++ b/classes/validator/validators/BAV_Validator_25.php @@ -68,4 +68,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_26.php b/classes/validator/validators/BAV_Validator_26.php index a8510f91..2812796c 100644 --- a/classes/validator/validators/BAV_Validator_26.php +++ b/classes/validator/validators/BAV_Validator_26.php @@ -53,4 +53,3 @@ protected function init($account) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_27.php b/classes/validator/validators/BAV_Validator_27.php index 68b61721..0da77f79 100644 --- a/classes/validator/validators/BAV_Validator_27.php +++ b/classes/validator/validators/BAV_Validator_27.php @@ -70,4 +70,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_28.php b/classes/validator/validators/BAV_Validator_28.php index 9cdf01a6..56644d6d 100644 --- a/classes/validator/validators/BAV_Validator_28.php +++ b/classes/validator/validators/BAV_Validator_28.php @@ -42,4 +42,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_29.php b/classes/validator/validators/BAV_Validator_29.php index 4e6a9b02..6bdf8c1f 100644 --- a/classes/validator/validators/BAV_Validator_29.php +++ b/classes/validator/validators/BAV_Validator_29.php @@ -50,4 +50,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_30.php b/classes/validator/validators/BAV_Validator_30.php index 2fa369c8..27eaf26d 100644 --- a/classes/validator/validators/BAV_Validator_30.php +++ b/classes/validator/validators/BAV_Validator_30.php @@ -46,4 +46,3 @@ protected function iterationStep() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_31.php b/classes/validator/validators/BAV_Validator_31.php index ad0807a7..06a3f721 100644 --- a/classes/validator/validators/BAV_Validator_31.php +++ b/classes/validator/validators/BAV_Validator_31.php @@ -58,4 +58,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_32.php b/classes/validator/validators/BAV_Validator_32.php index feb59182..85499462 100644 --- a/classes/validator/validators/BAV_Validator_32.php +++ b/classes/validator/validators/BAV_Validator_32.php @@ -40,4 +40,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_33.php b/classes/validator/validators/BAV_Validator_33.php index 9793a216..b10a33fc 100644 --- a/classes/validator/validators/BAV_Validator_33.php +++ b/classes/validator/validators/BAV_Validator_33.php @@ -40,4 +40,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_34.php b/classes/validator/validators/BAV_Validator_34.php index fb421857..9b0536a8 100644 --- a/classes/validator/validators/BAV_Validator_34.php +++ b/classes/validator/validators/BAV_Validator_34.php @@ -39,4 +39,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_35.php b/classes/validator/validators/BAV_Validator_35.php index aa62d1be..b00db73b 100644 --- a/classes/validator/validators/BAV_Validator_35.php +++ b/classes/validator/validators/BAV_Validator_35.php @@ -55,4 +55,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_36.php b/classes/validator/validators/BAV_Validator_36.php index 0b32d541..c05caa6a 100644 --- a/classes/validator/validators/BAV_Validator_36.php +++ b/classes/validator/validators/BAV_Validator_36.php @@ -40,4 +40,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_37.php b/classes/validator/validators/BAV_Validator_37.php index 4deba088..1afc2ff6 100644 --- a/classes/validator/validators/BAV_Validator_37.php +++ b/classes/validator/validators/BAV_Validator_37.php @@ -40,4 +40,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_38.php b/classes/validator/validators/BAV_Validator_38.php index e63df043..363944cb 100644 --- a/classes/validator/validators/BAV_Validator_38.php +++ b/classes/validator/validators/BAV_Validator_38.php @@ -40,4 +40,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_39.php b/classes/validator/validators/BAV_Validator_39.php index 0f6f6196..c025d95d 100644 --- a/classes/validator/validators/BAV_Validator_39.php +++ b/classes/validator/validators/BAV_Validator_39.php @@ -40,4 +40,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_40.php b/classes/validator/validators/BAV_Validator_40.php index 009e5824..d6b9f405 100644 --- a/classes/validator/validators/BAV_Validator_40.php +++ b/classes/validator/validators/BAV_Validator_40.php @@ -39,4 +39,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_41.php b/classes/validator/validators/BAV_Validator_41.php index c07fd537..a2655e96 100644 --- a/classes/validator/validators/BAV_Validator_41.php +++ b/classes/validator/validators/BAV_Validator_41.php @@ -53,4 +53,3 @@ protected function init($account) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_42.php b/classes/validator/validators/BAV_Validator_42.php index dfb79fca..56bb9799 100644 --- a/classes/validator/validators/BAV_Validator_42.php +++ b/classes/validator/validators/BAV_Validator_42.php @@ -40,4 +40,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_43.php b/classes/validator/validators/BAV_Validator_43.php index 066b9d1e..f966e733 100644 --- a/classes/validator/validators/BAV_Validator_43.php +++ b/classes/validator/validators/BAV_Validator_43.php @@ -50,4 +50,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_44.php b/classes/validator/validators/BAV_Validator_44.php index b8db14b9..c3a2c4c4 100644 --- a/classes/validator/validators/BAV_Validator_44.php +++ b/classes/validator/validators/BAV_Validator_44.php @@ -38,4 +38,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_45.php b/classes/validator/validators/BAV_Validator_45.php index c0ee806b..117edf03 100644 --- a/classes/validator/validators/BAV_Validator_45.php +++ b/classes/validator/validators/BAV_Validator_45.php @@ -48,4 +48,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_46.php b/classes/validator/validators/BAV_Validator_46.php index c28e89bc..ea8062cc 100644 --- a/classes/validator/validators/BAV_Validator_46.php +++ b/classes/validator/validators/BAV_Validator_46.php @@ -42,4 +42,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_47.php b/classes/validator/validators/BAV_Validator_47.php index c939e691..8582a518 100644 --- a/classes/validator/validators/BAV_Validator_47.php +++ b/classes/validator/validators/BAV_Validator_47.php @@ -42,4 +42,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_48.php b/classes/validator/validators/BAV_Validator_48.php index 4d087e62..a20355ce 100644 --- a/classes/validator/validators/BAV_Validator_48.php +++ b/classes/validator/validators/BAV_Validator_48.php @@ -42,4 +42,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_49.php b/classes/validator/validators/BAV_Validator_49.php index b79ff94a..a8fc3130 100644 --- a/classes/validator/validators/BAV_Validator_49.php +++ b/classes/validator/validators/BAV_Validator_49.php @@ -48,4 +48,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_50.php b/classes/validator/validators/BAV_Validator_50.php index 1392c2a6..af395585 100644 --- a/classes/validator/validators/BAV_Validator_50.php +++ b/classes/validator/validators/BAV_Validator_50.php @@ -54,4 +54,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_51.php b/classes/validator/validators/BAV_Validator_51.php index 71cd6647..72e97190 100644 --- a/classes/validator/validators/BAV_Validator_51.php +++ b/classes/validator/validators/BAV_Validator_51.php @@ -125,4 +125,3 @@ protected function continueValidation(BAV_Validator $validator) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_51x.php b/classes/validator/validators/BAV_Validator_51x.php index cb62875c..7fc24a52 100644 --- a/classes/validator/validators/BAV_Validator_51x.php +++ b/classes/validator/validators/BAV_Validator_51x.php @@ -55,4 +55,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_52.php b/classes/validator/validators/BAV_Validator_52.php index 59246933..3ed74aa9 100644 --- a/classes/validator/validators/BAV_Validator_52.php +++ b/classes/validator/validators/BAV_Validator_52.php @@ -94,4 +94,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_53.php b/classes/validator/validators/BAV_Validator_53.php index 5f0c2eb5..cbe2c126 100644 --- a/classes/validator/validators/BAV_Validator_53.php +++ b/classes/validator/validators/BAV_Validator_53.php @@ -36,4 +36,3 @@ protected function normalizeAccount($size) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_54.php b/classes/validator/validators/BAV_Validator_54.php index f88d3403..09278494 100644 --- a/classes/validator/validators/BAV_Validator_54.php +++ b/classes/validator/validators/BAV_Validator_54.php @@ -51,4 +51,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_55.php b/classes/validator/validators/BAV_Validator_55.php index e5c47eaf..efabb2c2 100644 --- a/classes/validator/validators/BAV_Validator_55.php +++ b/classes/validator/validators/BAV_Validator_55.php @@ -39,4 +39,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_56.php b/classes/validator/validators/BAV_Validator_56.php index f00ca521..df74f5a1 100644 --- a/classes/validator/validators/BAV_Validator_56.php +++ b/classes/validator/validators/BAV_Validator_56.php @@ -54,4 +54,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_57.php b/classes/validator/validators/BAV_Validator_57.php index 2efd7c45..16899320 100644 --- a/classes/validator/validators/BAV_Validator_57.php +++ b/classes/validator/validators/BAV_Validator_57.php @@ -189,4 +189,3 @@ private function getMode() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_58.php b/classes/validator/validators/BAV_Validator_58.php index c9bc30a8..b3a7c8f9 100644 --- a/classes/validator/validators/BAV_Validator_58.php +++ b/classes/validator/validators/BAV_Validator_58.php @@ -46,4 +46,3 @@ public function isValid($account) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_59.php b/classes/validator/validators/BAV_Validator_59.php index 148acaf3..54e0d4b8 100644 --- a/classes/validator/validators/BAV_Validator_59.php +++ b/classes/validator/validators/BAV_Validator_59.php @@ -47,4 +47,3 @@ public function isValid($account) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_60.php b/classes/validator/validators/BAV_Validator_60.php index b185297c..96995fea 100644 --- a/classes/validator/validators/BAV_Validator_60.php +++ b/classes/validator/validators/BAV_Validator_60.php @@ -40,4 +40,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_61.php b/classes/validator/validators/BAV_Validator_61.php index d82826d9..416c01b8 100644 --- a/classes/validator/validators/BAV_Validator_61.php +++ b/classes/validator/validators/BAV_Validator_61.php @@ -69,4 +69,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_62.php b/classes/validator/validators/BAV_Validator_62.php index 0ea00333..7e506e18 100644 --- a/classes/validator/validators/BAV_Validator_62.php +++ b/classes/validator/validators/BAV_Validator_62.php @@ -56,4 +56,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_63.php b/classes/validator/validators/BAV_Validator_63.php index ef93e6b5..c4587f03 100644 --- a/classes/validator/validators/BAV_Validator_63.php +++ b/classes/validator/validators/BAV_Validator_63.php @@ -68,4 +68,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_64.php b/classes/validator/validators/BAV_Validator_64.php index a4f8ba83..9e1812db 100644 --- a/classes/validator/validators/BAV_Validator_64.php +++ b/classes/validator/validators/BAV_Validator_64.php @@ -42,4 +42,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_65.php b/classes/validator/validators/BAV_Validator_65.php index b9ff2410..db09d596 100644 --- a/classes/validator/validators/BAV_Validator_65.php +++ b/classes/validator/validators/BAV_Validator_65.php @@ -55,4 +55,3 @@ protected function init($account) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_66.php b/classes/validator/validators/BAV_Validator_66.php index 8226355d..6f41f2c8 100644 --- a/classes/validator/validators/BAV_Validator_66.php +++ b/classes/validator/validators/BAV_Validator_66.php @@ -58,4 +58,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_67.php b/classes/validator/validators/BAV_Validator_67.php index 21b9ecf2..69f2b7f2 100644 --- a/classes/validator/validators/BAV_Validator_67.php +++ b/classes/validator/validators/BAV_Validator_67.php @@ -41,4 +41,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_68.php b/classes/validator/validators/BAV_Validator_68.php index d69ea9ad..31f8d559 100644 --- a/classes/validator/validators/BAV_Validator_68.php +++ b/classes/validator/validators/BAV_Validator_68.php @@ -80,4 +80,3 @@ public function isValid($account) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_69.php b/classes/validator/validators/BAV_Validator_69.php index 6707422f..893c8384 100644 --- a/classes/validator/validators/BAV_Validator_69.php +++ b/classes/validator/validators/BAV_Validator_69.php @@ -67,4 +67,3 @@ protected function useValidator(BAV_Validator $validator) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_69b.php b/classes/validator/validators/BAV_Validator_69b.php index f9cf1b17..7e6dceee 100644 --- a/classes/validator/validators/BAV_Validator_69b.php +++ b/classes/validator/validators/BAV_Validator_69b.php @@ -50,4 +50,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_70.php b/classes/validator/validators/BAV_Validator_70.php index 2eefb6a2..66ce2712 100644 --- a/classes/validator/validators/BAV_Validator_70.php +++ b/classes/validator/validators/BAV_Validator_70.php @@ -48,4 +48,3 @@ protected function iterationStep() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_71.php b/classes/validator/validators/BAV_Validator_71.php index 74d343f6..9873ad79 100644 --- a/classes/validator/validators/BAV_Validator_71.php +++ b/classes/validator/validators/BAV_Validator_71.php @@ -55,4 +55,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_72.php b/classes/validator/validators/BAV_Validator_72.php index 80f0d114..1dca1cc5 100644 --- a/classes/validator/validators/BAV_Validator_72.php +++ b/classes/validator/validators/BAV_Validator_72.php @@ -39,4 +39,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_73.php b/classes/validator/validators/BAV_Validator_73.php index 84c315ba..c8c6264e 100644 --- a/classes/validator/validators/BAV_Validator_73.php +++ b/classes/validator/validators/BAV_Validator_73.php @@ -79,4 +79,3 @@ protected function init($account) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_74.php b/classes/validator/validators/BAV_Validator_74.php index 61676366..f0084bca 100644 --- a/classes/validator/validators/BAV_Validator_74.php +++ b/classes/validator/validators/BAV_Validator_74.php @@ -62,4 +62,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_75.php b/classes/validator/validators/BAV_Validator_75.php index 581a771a..866088d1 100644 --- a/classes/validator/validators/BAV_Validator_75.php +++ b/classes/validator/validators/BAV_Validator_75.php @@ -63,4 +63,3 @@ public function isValid($account) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_76.php b/classes/validator/validators/BAV_Validator_76.php index b3ca13b7..207dc4f5 100644 --- a/classes/validator/validators/BAV_Validator_76.php +++ b/classes/validator/validators/BAV_Validator_76.php @@ -72,4 +72,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_77.php b/classes/validator/validators/BAV_Validator_77.php index 8bcf130b..27cc5441 100644 --- a/classes/validator/validators/BAV_Validator_77.php +++ b/classes/validator/validators/BAV_Validator_77.php @@ -43,4 +43,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_77a.php b/classes/validator/validators/BAV_Validator_77a.php index 0c502159..2202f07c 100644 --- a/classes/validator/validators/BAV_Validator_77a.php +++ b/classes/validator/validators/BAV_Validator_77a.php @@ -51,4 +51,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_78.php b/classes/validator/validators/BAV_Validator_78.php index 3f93b991..a786b575 100644 --- a/classes/validator/validators/BAV_Validator_78.php +++ b/classes/validator/validators/BAV_Validator_78.php @@ -44,4 +44,3 @@ public function isValid($account) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_79.php b/classes/validator/validators/BAV_Validator_79.php index 94e32392..f327c408 100644 --- a/classes/validator/validators/BAV_Validator_79.php +++ b/classes/validator/validators/BAV_Validator_79.php @@ -87,4 +87,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_80.php b/classes/validator/validators/BAV_Validator_80.php index 4c98230a..e7c288ff 100644 --- a/classes/validator/validators/BAV_Validator_80.php +++ b/classes/validator/validators/BAV_Validator_80.php @@ -70,4 +70,3 @@ protected function init($account) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_81.php b/classes/validator/validators/BAV_Validator_81.php index 5c314e50..955f1840 100644 --- a/classes/validator/validators/BAV_Validator_81.php +++ b/classes/validator/validators/BAV_Validator_81.php @@ -66,4 +66,3 @@ protected function init($account) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_82.php b/classes/validator/validators/BAV_Validator_82.php index e0b05a4b..d9711579 100644 --- a/classes/validator/validators/BAV_Validator_82.php +++ b/classes/validator/validators/BAV_Validator_82.php @@ -74,4 +74,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_83.php b/classes/validator/validators/BAV_Validator_83.php index 452b4ef3..3ab76f3d 100644 --- a/classes/validator/validators/BAV_Validator_83.php +++ b/classes/validator/validators/BAV_Validator_83.php @@ -87,4 +87,3 @@ protected function continueValidation(BAV_Validator $validator) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_83x.php b/classes/validator/validators/BAV_Validator_83x.php index b16a17ef..e79199c3 100644 --- a/classes/validator/validators/BAV_Validator_83x.php +++ b/classes/validator/validators/BAV_Validator_83x.php @@ -52,4 +52,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_84.php b/classes/validator/validators/BAV_Validator_84.php index 764f10e7..9cbe1361 100644 --- a/classes/validator/validators/BAV_Validator_84.php +++ b/classes/validator/validators/BAV_Validator_84.php @@ -76,4 +76,3 @@ protected function init($account) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_84b.php b/classes/validator/validators/BAV_Validator_84b.php index 85733bd6..3ce95565 100644 --- a/classes/validator/validators/BAV_Validator_84b.php +++ b/classes/validator/validators/BAV_Validator_84b.php @@ -52,4 +52,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_85.php b/classes/validator/validators/BAV_Validator_85.php index 8eb5bb60..e9bfa2cc 100644 --- a/classes/validator/validators/BAV_Validator_85.php +++ b/classes/validator/validators/BAV_Validator_85.php @@ -89,4 +89,3 @@ protected function continueValidation(BAV_Validator $validator) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_86.php b/classes/validator/validators/BAV_Validator_86.php index 6e4be7e4..3dc338bb 100644 --- a/classes/validator/validators/BAV_Validator_86.php +++ b/classes/validator/validators/BAV_Validator_86.php @@ -72,4 +72,3 @@ protected function init($account) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_87.php b/classes/validator/validators/BAV_Validator_87.php index 1f155c52..86d38dd9 100644 --- a/classes/validator/validators/BAV_Validator_87.php +++ b/classes/validator/validators/BAV_Validator_87.php @@ -74,4 +74,3 @@ protected function init($account) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_87a.php b/classes/validator/validators/BAV_Validator_87a.php index 8c6bed48..96555237 100644 --- a/classes/validator/validators/BAV_Validator_87a.php +++ b/classes/validator/validators/BAV_Validator_87a.php @@ -157,4 +157,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_87c.php b/classes/validator/validators/BAV_Validator_87c.php index 0febc4aa..1b01136d 100644 --- a/classes/validator/validators/BAV_Validator_87c.php +++ b/classes/validator/validators/BAV_Validator_87c.php @@ -52,4 +52,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_88.php b/classes/validator/validators/BAV_Validator_88.php index 0fd81fc7..470badc2 100644 --- a/classes/validator/validators/BAV_Validator_88.php +++ b/classes/validator/validators/BAV_Validator_88.php @@ -47,4 +47,3 @@ protected function init($account) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_89.php b/classes/validator/validators/BAV_Validator_89.php index 501ea734..ea669395 100644 --- a/classes/validator/validators/BAV_Validator_89.php +++ b/classes/validator/validators/BAV_Validator_89.php @@ -63,4 +63,3 @@ public function isValid($account) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_90.php b/classes/validator/validators/BAV_Validator_90.php index 6aaa45d2..3951ba9a 100644 --- a/classes/validator/validators/BAV_Validator_90.php +++ b/classes/validator/validators/BAV_Validator_90.php @@ -82,4 +82,4 @@ protected function init($account) } -?> + diff --git a/classes/validator/validators/BAV_Validator_90c.php b/classes/validator/validators/BAV_Validator_90c.php index 7d1ac433..52164dd9 100644 --- a/classes/validator/validators/BAV_Validator_90c.php +++ b/classes/validator/validators/BAV_Validator_90c.php @@ -55,4 +55,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_90d.php b/classes/validator/validators/BAV_Validator_90d.php index d0f0c40f..2b1c1f25 100644 --- a/classes/validator/validators/BAV_Validator_90d.php +++ b/classes/validator/validators/BAV_Validator_90d.php @@ -55,4 +55,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_90e.php b/classes/validator/validators/BAV_Validator_90e.php index 67d26b47..ad2195ae 100644 --- a/classes/validator/validators/BAV_Validator_90e.php +++ b/classes/validator/validators/BAV_Validator_90e.php @@ -52,4 +52,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_91.php b/classes/validator/validators/BAV_Validator_91.php index 28e7c038..95788f66 100644 --- a/classes/validator/validators/BAV_Validator_91.php +++ b/classes/validator/validators/BAV_Validator_91.php @@ -51,4 +51,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_92.php b/classes/validator/validators/BAV_Validator_92.php index 3dbe3ebe..a285c171 100644 --- a/classes/validator/validators/BAV_Validator_92.php +++ b/classes/validator/validators/BAV_Validator_92.php @@ -39,4 +39,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_93.php b/classes/validator/validators/BAV_Validator_93.php index ab9b8843..acebeb4c 100644 --- a/classes/validator/validators/BAV_Validator_93.php +++ b/classes/validator/validators/BAV_Validator_93.php @@ -62,4 +62,3 @@ protected function normalizeAccount($size) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_94.php b/classes/validator/validators/BAV_Validator_94.php index fad560d3..795eb083 100644 --- a/classes/validator/validators/BAV_Validator_94.php +++ b/classes/validator/validators/BAV_Validator_94.php @@ -39,4 +39,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_95.php b/classes/validator/validators/BAV_Validator_95.php index bd815914..0c501ad0 100644 --- a/classes/validator/validators/BAV_Validator_95.php +++ b/classes/validator/validators/BAV_Validator_95.php @@ -50,4 +50,3 @@ public function isValid($account) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_96.php b/classes/validator/validators/BAV_Validator_96.php index ebb7fdfa..3acae36e 100644 --- a/classes/validator/validators/BAV_Validator_96.php +++ b/classes/validator/validators/BAV_Validator_96.php @@ -53,4 +53,3 @@ public function isValid($account) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_97.php b/classes/validator/validators/BAV_Validator_97.php index 1df51364..495fe006 100644 --- a/classes/validator/validators/BAV_Validator_97.php +++ b/classes/validator/validators/BAV_Validator_97.php @@ -60,4 +60,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_98.php b/classes/validator/validators/BAV_Validator_98.php index 8add11e2..2eb5a02b 100644 --- a/classes/validator/validators/BAV_Validator_98.php +++ b/classes/validator/validators/BAV_Validator_98.php @@ -46,4 +46,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_99.php b/classes/validator/validators/BAV_Validator_99.php index cb69ef0b..2c22cc44 100644 --- a/classes/validator/validators/BAV_Validator_99.php +++ b/classes/validator/validators/BAV_Validator_99.php @@ -45,4 +45,3 @@ public function isValid($account) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_A0.php b/classes/validator/validators/BAV_Validator_A0.php index 2391c70d..69fb88b1 100644 --- a/classes/validator/validators/BAV_Validator_A0.php +++ b/classes/validator/validators/BAV_Validator_A0.php @@ -55,4 +55,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_A1.php b/classes/validator/validators/BAV_Validator_A1.php index 50ef6826..f64d40f6 100644 --- a/classes/validator/validators/BAV_Validator_A1.php +++ b/classes/validator/validators/BAV_Validator_A1.php @@ -45,4 +45,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_A2.php b/classes/validator/validators/BAV_Validator_A2.php index 06412b55..1b72ef9e 100644 --- a/classes/validator/validators/BAV_Validator_A2.php +++ b/classes/validator/validators/BAV_Validator_A2.php @@ -45,4 +45,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_A3.php b/classes/validator/validators/BAV_Validator_A3.php index 5696668d..0d5e3e23 100644 --- a/classes/validator/validators/BAV_Validator_A3.php +++ b/classes/validator/validators/BAV_Validator_A3.php @@ -45,4 +45,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_A4.php b/classes/validator/validators/BAV_Validator_A4.php index 13ec1889..18a832f3 100644 --- a/classes/validator/validators/BAV_Validator_A4.php +++ b/classes/validator/validators/BAV_Validator_A4.php @@ -70,4 +70,3 @@ protected function useValidator(BAV_Validator $validator) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_A4b.php b/classes/validator/validators/BAV_Validator_A4b.php index 3869f764..4847519a 100644 --- a/classes/validator/validators/BAV_Validator_A4b.php +++ b/classes/validator/validators/BAV_Validator_A4b.php @@ -55,4 +55,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_A5.php b/classes/validator/validators/BAV_Validator_A5.php index a49992a1..52b9e61f 100644 --- a/classes/validator/validators/BAV_Validator_A5.php +++ b/classes/validator/validators/BAV_Validator_A5.php @@ -55,4 +55,3 @@ protected function continueValidation(BAV_Validator $validator) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_A6.php b/classes/validator/validators/BAV_Validator_A6.php index 8f1feaab..db4edce7 100644 --- a/classes/validator/validators/BAV_Validator_A6.php +++ b/classes/validator/validators/BAV_Validator_A6.php @@ -75,4 +75,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_A7.php b/classes/validator/validators/BAV_Validator_A7.php index 35706032..2f8818d4 100644 --- a/classes/validator/validators/BAV_Validator_A7.php +++ b/classes/validator/validators/BAV_Validator_A7.php @@ -44,4 +44,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_A8.php b/classes/validator/validators/BAV_Validator_A8.php index fa1ca1f2..ef69b154 100644 --- a/classes/validator/validators/BAV_Validator_A8.php +++ b/classes/validator/validators/BAV_Validator_A8.php @@ -78,4 +78,3 @@ protected function init($account) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_A9.php b/classes/validator/validators/BAV_Validator_A9.php index 7ed0ec65..c23bb319 100644 --- a/classes/validator/validators/BAV_Validator_A9.php +++ b/classes/validator/validators/BAV_Validator_A9.php @@ -45,4 +45,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_B0.php b/classes/validator/validators/BAV_Validator_B0.php index ec4dd7bb..42f95c18 100644 --- a/classes/validator/validators/BAV_Validator_B0.php +++ b/classes/validator/validators/BAV_Validator_B0.php @@ -76,4 +76,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_B1.php b/classes/validator/validators/BAV_Validator_B1.php index ec2db06a..fa596400 100644 --- a/classes/validator/validators/BAV_Validator_B1.php +++ b/classes/validator/validators/BAV_Validator_B1.php @@ -45,4 +45,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_B2.php b/classes/validator/validators/BAV_Validator_B2.php index 2992c1a3..7cceb4f0 100644 --- a/classes/validator/validators/BAV_Validator_B2.php +++ b/classes/validator/validators/BAV_Validator_B2.php @@ -75,4 +75,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_B3.php b/classes/validator/validators/BAV_Validator_B3.php index 4688f084..77b1be42 100644 --- a/classes/validator/validators/BAV_Validator_B3.php +++ b/classes/validator/validators/BAV_Validator_B3.php @@ -75,4 +75,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_B4.php b/classes/validator/validators/BAV_Validator_B4.php index f50daeab..11b23234 100644 --- a/classes/validator/validators/BAV_Validator_B4.php +++ b/classes/validator/validators/BAV_Validator_B4.php @@ -75,4 +75,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_B5.php b/classes/validator/validators/BAV_Validator_B5.php index 4b350a95..7b0c454b 100644 --- a/classes/validator/validators/BAV_Validator_B5.php +++ b/classes/validator/validators/BAV_Validator_B5.php @@ -56,4 +56,3 @@ protected function continueValidation(BAV_Validator $validator) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_B6.php b/classes/validator/validators/BAV_Validator_B6.php index 3f26bb5b..a40f2af0 100644 --- a/classes/validator/validators/BAV_Validator_B6.php +++ b/classes/validator/validators/BAV_Validator_B6.php @@ -79,4 +79,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_B7.php b/classes/validator/validators/BAV_Validator_B7.php index 0cabbd6d..f08c71ea 100644 --- a/classes/validator/validators/BAV_Validator_B7.php +++ b/classes/validator/validators/BAV_Validator_B7.php @@ -46,4 +46,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_B8.php b/classes/validator/validators/BAV_Validator_B8.php index 3d821b46..b66db20e 100644 --- a/classes/validator/validators/BAV_Validator_B8.php +++ b/classes/validator/validators/BAV_Validator_B8.php @@ -71,4 +71,3 @@ protected function useValidator(BAV_Validator $validator) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_B9.php b/classes/validator/validators/BAV_Validator_B9.php index 3ecf9f07..91f95e77 100644 --- a/classes/validator/validators/BAV_Validator_B9.php +++ b/classes/validator/validators/BAV_Validator_B9.php @@ -81,4 +81,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_B9a.php b/classes/validator/validators/BAV_Validator_B9a.php index 76756700..c72389b3 100644 --- a/classes/validator/validators/BAV_Validator_B9a.php +++ b/classes/validator/validators/BAV_Validator_B9a.php @@ -60,4 +60,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_B9b.php b/classes/validator/validators/BAV_Validator_B9b.php index 189579e4..aae1142b 100644 --- a/classes/validator/validators/BAV_Validator_B9b.php +++ b/classes/validator/validators/BAV_Validator_B9b.php @@ -60,4 +60,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_C0.php b/classes/validator/validators/BAV_Validator_C0.php index ed73ae60..1beb4e42 100644 --- a/classes/validator/validators/BAV_Validator_C0.php +++ b/classes/validator/validators/BAV_Validator_C0.php @@ -53,4 +53,3 @@ public function useValidator(BAV_Validator $validator) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_C1.php b/classes/validator/validators/BAV_Validator_C1.php index df5e90ee..140071ab 100644 --- a/classes/validator/validators/BAV_Validator_C1.php +++ b/classes/validator/validators/BAV_Validator_C1.php @@ -74,4 +74,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_C1b.php b/classes/validator/validators/BAV_Validator_C1b.php index 9aa18320..ef5a55f9 100644 --- a/classes/validator/validators/BAV_Validator_C1b.php +++ b/classes/validator/validators/BAV_Validator_C1b.php @@ -52,4 +52,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_C2.php b/classes/validator/validators/BAV_Validator_C2.php index a671e875..cfcfec50 100644 --- a/classes/validator/validators/BAV_Validator_C2.php +++ b/classes/validator/validators/BAV_Validator_C2.php @@ -45,4 +45,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_C3.php b/classes/validator/validators/BAV_Validator_C3.php index 03b79247..ad03375f 100644 --- a/classes/validator/validators/BAV_Validator_C3.php +++ b/classes/validator/validators/BAV_Validator_C3.php @@ -75,4 +75,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_C4.php b/classes/validator/validators/BAV_Validator_C4.php index c59217cb..5a84bd10 100644 --- a/classes/validator/validators/BAV_Validator_C4.php +++ b/classes/validator/validators/BAV_Validator_C4.php @@ -75,4 +75,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_C5.php b/classes/validator/validators/BAV_Validator_C5.php index ac28239b..3d065a9f 100644 --- a/classes/validator/validators/BAV_Validator_C5.php +++ b/classes/validator/validators/BAV_Validator_C5.php @@ -120,4 +120,4 @@ protected function getResult() } -?> + diff --git a/classes/validator/validators/BAV_Validator_C7.php b/classes/validator/validators/BAV_Validator_C7.php index 3db36015..02dbe796 100644 --- a/classes/validator/validators/BAV_Validator_C7.php +++ b/classes/validator/validators/BAV_Validator_C7.php @@ -44,4 +44,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_C8.php b/classes/validator/validators/BAV_Validator_C8.php index fc0e6c5c..4783a07a 100644 --- a/classes/validator/validators/BAV_Validator_C8.php +++ b/classes/validator/validators/BAV_Validator_C8.php @@ -44,4 +44,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_C9.php b/classes/validator/validators/BAV_Validator_C9.php index a9520f81..ce7c5785 100644 --- a/classes/validator/validators/BAV_Validator_C9.php +++ b/classes/validator/validators/BAV_Validator_C9.php @@ -42,4 +42,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_D0.php b/classes/validator/validators/BAV_Validator_D0.php index 1914f926..535ff9b3 100644 --- a/classes/validator/validators/BAV_Validator_D0.php +++ b/classes/validator/validators/BAV_Validator_D0.php @@ -68,4 +68,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_D2.php b/classes/validator/validators/BAV_Validator_D2.php index c49092d8..d33a40f7 100644 --- a/classes/validator/validators/BAV_Validator_D2.php +++ b/classes/validator/validators/BAV_Validator_D2.php @@ -54,4 +54,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_D3.php b/classes/validator/validators/BAV_Validator_D3.php index 6f5756cf..54069566 100644 --- a/classes/validator/validators/BAV_Validator_D3.php +++ b/classes/validator/validators/BAV_Validator_D3.php @@ -45,4 +45,3 @@ public function __construct(BAV_Bank $bank) } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_D7.php b/classes/validator/validators/BAV_Validator_D7.php index 4f6b577e..e29be020 100644 --- a/classes/validator/validators/BAV_Validator_D7.php +++ b/classes/validator/validators/BAV_Validator_D7.php @@ -55,4 +55,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_E1.php b/classes/validator/validators/BAV_Validator_E1.php index 2f0a49b7..cb504731 100644 --- a/classes/validator/validators/BAV_Validator_E1.php +++ b/classes/validator/validators/BAV_Validator_E1.php @@ -55,4 +55,3 @@ protected function getResult() } -?> \ No newline at end of file diff --git a/classes/verify/BAV_VerifyImport.php b/classes/verify/BAV_VerifyImport.php index 273cc2ea..54a54ecb 100644 --- a/classes/verify/BAV_VerifyImport.php +++ b/classes/verify/BAV_VerifyImport.php @@ -219,4 +219,3 @@ private function bankIDToType($bankID) } -?> \ No newline at end of file diff --git a/classes/verify/exception/BAV_VerifyException.php b/classes/verify/exception/BAV_VerifyException.php index 05ac3834..822ce078 100644 --- a/classes/verify/exception/BAV_VerifyException.php +++ b/classes/verify/exception/BAV_VerifyException.php @@ -31,4 +31,3 @@ class BAV_VerifyException extends RuntimeException } -?> \ No newline at end of file diff --git a/classes/verify/exception/BAV_VerifyException_IO.php b/classes/verify/exception/BAV_VerifyException_IO.php index c3de1911..19f87048 100644 --- a/classes/verify/exception/BAV_VerifyException_IO.php +++ b/classes/verify/exception/BAV_VerifyException_IO.php @@ -32,4 +32,3 @@ class BAV_VerifyException_IO extends BAV_VerifyException } -?> \ No newline at end of file diff --git a/classes/verify/testAPI/BAV_TestAPI.php b/classes/verify/testAPI/BAV_TestAPI.php index 0a30db49..f9864d17 100644 --- a/classes/verify/testAPI/BAV_TestAPI.php +++ b/classes/verify/testAPI/BAV_TestAPI.php @@ -99,4 +99,3 @@ public function getName() } -?> \ No newline at end of file diff --git a/classes/verify/testAPI/BAV_TestAPIResult.php b/classes/verify/testAPI/BAV_TestAPIResult.php index aa09a403..c5f69a14 100644 --- a/classes/verify/testAPI/BAV_TestAPIResult.php +++ b/classes/verify/testAPI/BAV_TestAPIResult.php @@ -81,4 +81,3 @@ public function getResult() } -?> \ No newline at end of file diff --git a/classes/verify/testAPI/BAV_TestAPIResult_Error.php b/classes/verify/testAPI/BAV_TestAPIResult_Error.php index b304bf1e..01ccf131 100644 --- a/classes/verify/testAPI/BAV_TestAPIResult_Error.php +++ b/classes/verify/testAPI/BAV_TestAPIResult_Error.php @@ -63,4 +63,3 @@ public function getMessage() } -?> \ No newline at end of file diff --git a/classes/verify/testAPI/BAV_TestAPI_BAV.php b/classes/verify/testAPI/BAV_TestAPI_BAV.php index 9e414383..c22b5438 100644 --- a/classes/verify/testAPI/BAV_TestAPI_BAV.php +++ b/classes/verify/testAPI/BAV_TestAPI_BAV.php @@ -62,4 +62,3 @@ protected function isValid(BAV_Bank $bank, $account) } -?> \ No newline at end of file diff --git a/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php b/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php index 6506a9bc..c47827fb 100644 --- a/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php +++ b/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php @@ -98,4 +98,3 @@ protected function isValid(BAV_Bank $bank, $account) } -?> \ No newline at end of file diff --git a/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php b/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php index 3ecaaeec..90923ba1 100644 --- a/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php +++ b/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php @@ -104,4 +104,3 @@ protected function isValid(BAV_Bank $bank, $account) } -?> \ No newline at end of file diff --git a/classes/verify/testAPI/exception/BAV_TestAPIException.php b/classes/verify/testAPI/exception/BAV_TestAPIException.php index 0a92bcd1..b383b088 100644 --- a/classes/verify/testAPI/exception/BAV_TestAPIException.php +++ b/classes/verify/testAPI/exception/BAV_TestAPIException.php @@ -29,4 +29,3 @@ class BAV_TestAPIException extends RuntimeException } -?> \ No newline at end of file diff --git a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation.php b/classes/verify/testAPI/exception/BAV_TestAPIException_Validation.php index bd722f28..d45717b1 100644 --- a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation.php +++ b/classes/verify/testAPI/exception/BAV_TestAPIException_Validation.php @@ -31,4 +31,3 @@ class BAV_TestAPIException_Validation extends BAV_TestAPIException } -?> \ No newline at end of file diff --git a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_BankNotFound.php b/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_BankNotFound.php index 153eb6cb..0900dcef 100644 --- a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_BankNotFound.php +++ b/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_BankNotFound.php @@ -31,4 +31,3 @@ class BAV_TestAPIException_Validation_BankNotFound extends BAV_TestAPIException_ } -?> \ No newline at end of file diff --git a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_NotInitialized.php b/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_NotInitialized.php index a10bf883..27e69455 100644 --- a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_NotInitialized.php +++ b/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_NotInitialized.php @@ -31,4 +31,3 @@ class BAV_TestAPIException_Validation_NotInitialized extends BAV_TestAPIExceptio } -?> \ No newline at end of file diff --git a/tests/AgencyQueryTest.php b/tests/AgencyQueryTest.php index 26b8b645..fb78a097 100755 --- a/tests/AgencyQueryTest.php +++ b/tests/AgencyQueryTest.php @@ -116,4 +116,3 @@ private function assertAgencies(Array $agencies, $count) } -?> \ No newline at end of file diff --git a/tests/CrossProjectTest.php b/tests/CrossProjectTest.php index 95ab9c63..5cfec782 100755 --- a/tests/CrossProjectTest.php +++ b/tests/CrossProjectTest.php @@ -176,4 +176,3 @@ private function getErrorMessage(BAV_Bank $bank, $account, Array $results) } -?> \ No newline at end of file diff --git a/tests/DataConstraintTest.php b/tests/DataConstraintTest.php index 90500465..4bd4876e 100755 --- a/tests/DataConstraintTest.php +++ b/tests/DataConstraintTest.php @@ -153,4 +153,3 @@ public function testBLZDatatype () } -?> \ No newline at end of file diff --git a/tests/TestSuite.php b/tests/TestSuite.php index ffc9f081..95a2d57e 100644 --- a/tests/TestSuite.php +++ b/tests/TestSuite.php @@ -53,4 +53,3 @@ public static function suite() } -?> \ No newline at end of file diff --git a/tests/VerifyImportTest.php b/tests/VerifyImportTest.php index 38637fd9..7bb87c15 100755 --- a/tests/VerifyImportTest.php +++ b/tests/VerifyImportTest.php @@ -156,4 +156,3 @@ private function getBank($validationType) } -?> \ No newline at end of file diff --git a/tests/checkAgainstTestAPIs.php b/tests/checkAgainstTestAPIs.php index 44e7db36..8b075fad 100755 --- a/tests/checkAgainstTestAPIs.php +++ b/tests/checkAgainstTestAPIs.php @@ -196,4 +196,3 @@ private function testAccount(BAV_Bank $bank, $account) new BAV_CheckAgainstTestAPIs(); -?> \ No newline at end of file From e12f00179f1c9dc6e5fb5903acdede1739f3456a Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 20:53:50 +0200 Subject: [PATCH 033/303] BAV_Version --- classes/BAV_Version.php | 28 ++++++---------------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/classes/BAV_Version.php b/classes/BAV_Version.php index f0229911..e3cdd1c4 100644 --- a/classes/BAV_Version.php +++ b/classes/BAV_Version.php @@ -29,24 +29,20 @@ class BAV_Version extends BAV { - - private static /** * @var BAV_Version */ - $phpVersion; - + private static $phpVersion; - private /** * @var array */ - $elements = array(), + private $elements = array(); + /** * @var string */ - $separator = ''; - + private $separator = ''; /** * @param string $version @@ -58,7 +54,6 @@ public function __construct($version, $separator = '.') $this->elements = explode($separator, $version); } - /** * @return boolean */ @@ -69,7 +64,7 @@ public function isGreater(BAV_Version $version) foreach ($thisElements as $i => $thisElement) { if ($thoseElements[$i] !== $thisElement) { - return $this->_isGreater($thisElement, $thoseElements[$i]); + return $this->isGreater($thisElement, $thoseElements[$i]); } @@ -77,7 +72,6 @@ public function isGreater(BAV_Version $version) return false; } - /** * @return boolean */ @@ -89,7 +83,6 @@ public function equals(BAV_Version $version) return $thoseElements == $thisElements; } - /** * @return boolean */ @@ -98,7 +91,6 @@ public function isLesser(BAV_Version $version) return ! $this->equals($version) && ! $this->isGreater($version); } - /** * @return string */ @@ -107,7 +99,6 @@ public function getString() return implode($this->separator, $this->elements); } - /** * @return string */ @@ -126,18 +117,16 @@ public function getNormalizedVersion() return implode($this->separator, $elements); } - /** * @param string $left * @param string $right * @return boolean */ - private function _isGreater($left, $right) + private function isGreater($left, $right) { return $left > $right; } - /** * @param int $padding * @return array @@ -151,7 +140,6 @@ private function getElements($padding = null) return array_pad($this->elements, $padding, '0'); } - /** * @return BAV_Version */ @@ -163,8 +151,4 @@ public static function getPHPVersion() } return self::$phpVersion; } - - } - - From 0094a4e01c606c493b174b0645970055ade53870 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 20:54:04 +0200 Subject: [PATCH 034/303] BAV_Version --- classes/BAV_Version.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/classes/BAV_Version.php b/classes/BAV_Version.php index e3cdd1c4..6cb36f7c 100644 --- a/classes/BAV_Version.php +++ b/classes/BAV_Version.php @@ -1,7 +1,5 @@ Date: Fri, 23 May 2014 20:56:43 +0200 Subject: [PATCH 035/303] BAV_Autoloader --- classes/autoloader/BAV_Autoloader.php | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/classes/autoloader/BAV_Autoloader.php b/classes/autoloader/BAV_Autoloader.php index 9211ec2c..62c94c92 100644 --- a/classes/autoloader/BAV_Autoloader.php +++ b/classes/autoloader/BAV_Autoloader.php @@ -7,19 +7,19 @@ */ require_once __DIR__ . "/../../autoloader/autoloader.php"; -BAV_Autoloader::_triggerDeprecationWarning(); +BAV_Autoloader::triggerDeprecationWarning(); /** * Deprecated Autoloader * * This autoloader was removed. * - * @deprecated + * @deprecated 0.27 */ class BAV_Autoloader { - public static function _triggerDeprecationWarning() + public static function triggerDeprecationWarning() { trigger_error( "BAV_Autoloader is deprecated. Include bav/autoloader/autoloader.php instead.", @@ -29,48 +29,47 @@ public static function _triggerDeprecationWarning() public function register($classPath) { - self::_triggerDeprecationWarning(); + self::triggerDeprecationWarning(); } public function loadDirectly() { - self::_triggerDeprecationWarning(); + self::triggerDeprecationWarning(); } public function loadDeferred() { - self::_triggerDeprecationWarning(); + self::triggerDeprecationWarning(); } public function ignoreErrors() { - self::_triggerDeprecationWarning(); + self::triggerDeprecationWarning(); } public function dontIgnoreErrors() { - self::_triggerDeprecationWarning(); + self::triggerDeprecationWarning(); } public function autoload($className) { - self::_triggerDeprecationWarning(); + self::triggerDeprecationWarning(); } public function getPath($className) { - self::_triggerDeprecationWarning(); + self::triggerDeprecationWarning(); } public static function getInstance() { - self::_triggerDeprecationWarning(); + self::triggerDeprecationWarning(); return new self(); } public static function add($classPath) { - self::_triggerDeprecationWarning(); + self::triggerDeprecationWarning(); } - } From feaebb6b8b1d0825953e7d6b6685466bc0d8038c Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 20:59:47 +0200 Subject: [PATCH 036/303] BAV_Agency --- classes/bank/BAV_Agency.php | 45 +++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/classes/bank/BAV_Agency.php b/classes/bank/BAV_Agency.php index 0546a4ce..1b4751e0 100644 --- a/classes/bank/BAV_Agency.php +++ b/classes/bank/BAV_Agency.php @@ -1,9 +1,5 @@ getMainAgency() @@ -94,6 +94,7 @@ public function __construct($id, BAV_Bank $bank, $name, $shortTerm, $city, $post $this->shortTerm = $shortTerm; $this->pan = $pan; } + /** * @return bool */ @@ -101,6 +102,7 @@ public function isMainAgency() { return $this->bank->getMainAgency() === $this; } + /** * @return BAV_Bank */ @@ -108,6 +110,7 @@ public function getBank() { return $this->bank; } + /** * @return int */ @@ -115,6 +118,7 @@ public function getID() { return $this->id; } + /** * @return string */ @@ -122,6 +126,7 @@ public function getPostcode() { return $this->postcode; } + /** * @return string */ @@ -129,6 +134,7 @@ public function getCity() { return $this->city; } + /** * @return string */ @@ -136,6 +142,7 @@ public function getName() { return $this->name; } + /** * @return string */ @@ -143,6 +150,7 @@ public function getShortTerm() { return $this->shortTerm; } + /** * @return bool */ @@ -150,6 +158,7 @@ public function hasPAN() { return ! empty($this->pan); } + /** * @return bool */ @@ -157,6 +166,7 @@ public function hasBIC() { return ! empty($this->bic); } + /** * @throws BAV_AgencyException_UndefinedAttribute * @return string @@ -169,6 +179,7 @@ public function getPAN() } return $this->pan; } + /** * @throws BAV_AgencyException_UndefinedAttribute * @return string @@ -181,8 +192,4 @@ public function getBIC() } return $this->bic; } - - } - - From 0492221d73b39a2637d5bdd621b745ec70bd78f9 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 21:02:06 +0200 Subject: [PATCH 037/303] BAV_Bank --- classes/bank/BAV_Bank.php | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/classes/bank/BAV_Bank.php b/classes/bank/BAV_Bank.php index 68cb308a..d083e8ec 100644 --- a/classes/bank/BAV_Bank.php +++ b/classes/bank/BAV_Bank.php @@ -1,9 +1,5 @@ isValid(String $account)) and * has a bank ID, a main agency (BAV_Bank->getMainAgency()) and optionally some @@ -39,33 +35,35 @@ class BAV_Bank extends BAV { - - private /** * @var string */ - $bankID = '', + private $bankID = ''; + /** * @var string */ - $validationType = '', + private $validationType = ''; + /** * @var BAV_Validator */ - $validator, + private $validator; + /** * @var BAV_DataBackend */ - $dataBackend, + private $dataBackend; + /** * @var BAV_Agency */ - $mainAgency, + private $mainAgency; + /** * @var Array */ - $agencies; - + private $agencies; /** * Do not even think to use new BAV_Bank()! @@ -80,6 +78,7 @@ public function __construct(BAV_DataBackend $dataBackend, $bankID, $validationTy $this->bankID = $bankID; $this->validationType = $validationType; } + /** * @return string */ @@ -87,6 +86,7 @@ public function getValidationType() { return $this->validationType; } + /** * @return string */ @@ -94,6 +94,7 @@ public function getBankID() { return (string) $this->bankID; } + /** * Every bank has one main agency. This agency is not included in getAgencies(). * @@ -108,6 +109,7 @@ public function getMainAgency() } return $this->mainAgency; } + /** * A bank may have more agencies. * @@ -122,6 +124,7 @@ public function getAgencies() } return $this->agencies; } + /** * Use this method to check your bank account. * @@ -133,6 +136,7 @@ public function isValid($account) { return $this->getValidator()->isValid($account); } + /** * @throws BAV_ValidatorException_NotExists * @return BAV_Validator @@ -145,8 +149,4 @@ public function getValidator() } return $this->validator; } - - } - - From 0f1122290d0a6bbc75811ececedc8ff3fc4227ac Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 21:04:19 +0200 Subject: [PATCH 038/303] BAV_AgencyException* --- classes/bank/exception/BAV_AgencyException.php | 12 ++---------- .../BAV_AgencyException_UndefinedAttribute.php | 13 ++----------- 2 files changed, 4 insertions(+), 21 deletions(-) diff --git a/classes/bank/exception/BAV_AgencyException.php b/classes/bank/exception/BAV_AgencyException.php index 0837cf8f..cd889478 100644 --- a/classes/bank/exception/BAV_AgencyException.php +++ b/classes/bank/exception/BAV_AgencyException.php @@ -1,7 +1,5 @@ * @@ -28,18 +26,16 @@ class BAV_AgencyException extends RuntimeException { - - private /** * @var BAV_Agency */ - $agency; - + private $agency; public function __construct(BAV_Agency $agency) { $this->agency = $agency; } + /** * @return BAV_Agency */ @@ -47,8 +43,4 @@ public function getAgency() { return $this->agency; } - - } - - diff --git a/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php b/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php index b8bcb19e..42ea6f38 100644 --- a/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php +++ b/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php @@ -1,8 +1,5 @@ * @@ -29,13 +26,10 @@ class BAV_AgencyException_UndefinedAttribute extends BAV_AgencyException { - - private /** * @var string */ - $attribute = ''; - + private $attribute = ''; /** * @param string $attribute @@ -45,6 +39,7 @@ public function __construct(BAV_Agency $agency, $attribute) parent::__construct($agency); $this->attribute = $attribute; } + /** * @return string */ @@ -52,8 +47,4 @@ public function getAttribute() { return $this->attribute; } - - } - - From 773f15110181852d4cfed0583bc9f1af96290e04 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 21:46:14 +0200 Subject: [PATCH 039/303] 1 space after comma in function call --- classes/class/BAV_ClassFile.php | 2 +- classes/dataBackend/BAV_DataBackend_File.php | 2 +- classes/dataBackend/BAV_DataBackend_PDO.php | 18 +++++++------- .../dataBackend/fileParser/BAV_FileParser.php | 4 ++-- .../validator/validators/BAV_Validator_B7.php | 2 +- classes/verify/BAV_VerifyImport.php | 4 ++-- tests/DataConstraintTest.php | 24 +++++++++---------- tests/ValidatorTest.php | 2 +- tests/checkAgainstTestAPIs.php | 2 +- 9 files changed, 30 insertions(+), 30 deletions(-) diff --git a/classes/class/BAV_ClassFile.php b/classes/class/BAV_ClassFile.php index fc867dfa..5b03122a 100644 --- a/classes/class/BAV_ClassFile.php +++ b/classes/class/BAV_ClassFile.php @@ -99,7 +99,7 @@ private function __construct($path) * check needed classes */ preg_match_all(':new +([a-zA-Z0-9_]+)\(:', $this->getClassDefinition(), $matchesNew); - preg_match_all('/([a-zA-Z0-9_]+)::/', $this->getClassDefinition(), $matchesStatic); + preg_match_all('/([a-zA-Z0-9_]+)::/', $this->getClassDefinition(), $matchesStatic); foreach (array_merge($matchesNew[1], $matchesStatic[1]) as $match) { if (! isset($this->neededClasses[$match])) { throw new BAV_ClassFileException_MissingClass($this->name, $match); diff --git a/classes/dataBackend/BAV_DataBackend_File.php b/classes/dataBackend/BAV_DataBackend_File.php index 7767bae5..abf9c13f 100644 --- a/classes/dataBackend/BAV_DataBackend_File.php +++ b/classes/dataBackend/BAV_DataBackend_File.php @@ -209,7 +209,7 @@ public function update() } $path = implode('/', $pathParts); $urlParts = parse_url(self::DOWNLOAD_URI); - $url = sprintf("%s://%s%s", $urlParts["scheme"], $urlParts["host"], $path); + $url = sprintf("%s://%s%s", $urlParts["scheme"], $urlParts["host"], $path); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FILE, $tempH); diff --git a/classes/dataBackend/BAV_DataBackend_PDO.php b/classes/dataBackend/BAV_DataBackend_PDO.php index 80db401b..5f0b5d49 100644 --- a/classes/dataBackend/BAV_DataBackend_PDO.php +++ b/classes/dataBackend/BAV_DataBackend_PDO.php @@ -401,21 +401,21 @@ protected function getNewBank($bankID) */ private function isValidBankResult(Array $result) { - return array_key_exists('id', $result) - && array_key_exists('validator', $result); + return array_key_exists('id', $result) + && array_key_exists('validator', $result); } /** * @return bool */ private function isValidAgencyResult(Array $result) { - return array_key_exists('id', $result) - && array_key_exists('name', $result) - && array_key_exists('shortTerm', $result) - && array_key_exists('city', $result) - && array_key_exists('postcode', $result) - && array_key_exists('bic', $result) - && array_key_exists('pan', $result); + return array_key_exists('id', $result) + && array_key_exists('name', $result) + && array_key_exists('shortTerm', $result) + && array_key_exists('city', $result) + && array_key_exists('postcode', $result) + && array_key_exists('bic', $result) + && array_key_exists('pan', $result); } /** * @return BAV_Bank diff --git a/classes/dataBackend/fileParser/BAV_FileParser.php b/classes/dataBackend/fileParser/BAV_FileParser.php index a40a3c4f..2027e59f 100644 --- a/classes/dataBackend/fileParser/BAV_FileParser.php +++ b/classes/dataBackend/fileParser/BAV_FileParser.php @@ -225,8 +225,8 @@ public function getBank(BAV_DataBackend $dataBackend, $line) throw new BAV_FileParserException_ParseError("Invalid line length in Line $line."); } - $type = self::$encoding->substr($line, self::TYPE_OFFSET, self::TYPE_LENGTH); - $bankID = self::$encoding->substr($line, self::BANKID_OFFSET, self::BANKID_LENGTH); + $type = self::$encoding->substr($line, self::TYPE_OFFSET, self::TYPE_LENGTH); + $bankID = self::$encoding->substr($line, self::BANKID_OFFSET, self::BANKID_LENGTH); return new BAV_Bank($dataBackend, $bankID, $type); } /** diff --git a/classes/validator/validators/BAV_Validator_B7.php b/classes/validator/validators/BAV_Validator_B7.php index f08c71ea..5959d9eb 100644 --- a/classes/validator/validators/BAV_Validator_B7.php +++ b/classes/validator/validators/BAV_Validator_B7.php @@ -38,7 +38,7 @@ public function __construct(BAV_Bank $bank) protected function getResult() { - return ($this->isBetween(1000000, 5999999) || $this->isBetween(700000000, 899999999)) + return ($this->isBetween(1000000, 5999999) || $this->isBetween(700000000, 899999999)) ? parent::getResult() : true; } diff --git a/classes/verify/BAV_VerifyImport.php b/classes/verify/BAV_VerifyImport.php index 54a54ecb..f0cffdab 100644 --- a/classes/verify/BAV_VerifyImport.php +++ b/classes/verify/BAV_VerifyImport.php @@ -94,7 +94,7 @@ public function importVerifyFile($file = NULL) } - $this->mergeVerifyArray($verify['valid'], $this->validNumbers); + $this->mergeVerifyArray($verify['valid'], $this->validNumbers); $this->mergeVerifyArray($verify['invalid'], $this->invalidNumbers); } /** @@ -164,7 +164,7 @@ public function save($file = null) } try { $this->saveArray($fp, $this->invalidNumbers, 'invalid'); - $this->saveArray($fp, $this->validNumbers, 'valid'); + $this->saveArray($fp, $this->validNumbers, 'valid'); fclose($fp); } catch (BAV_VerifyException_IO $e) { diff --git a/tests/DataConstraintTest.php b/tests/DataConstraintTest.php index 4bd4876e..c3c6e5ec 100755 --- a/tests/DataConstraintTest.php +++ b/tests/DataConstraintTest.php @@ -53,16 +53,16 @@ public static function classConstructor() INSERT INTO bank ( id, blz, isMain, name, plz, city, shortterm, pan, bic, validator) VALUES (:id, :blz, :isMain, :name, :plz, :city, :shortTerm, :pan, :bic, :validator)"); - $insert->bindParam(':id', $id); - $insert->bindParam(':blz', $blz); - $insert->bindParam(':isMain', $isMain); - $insert->bindParam(':name', $name); - $insert->bindParam(':plz', $plz); - $insert->bindParam(':city', $city); - $insert->bindParam(':shortTerm', $shortTerm); - $insert->bindParam(':pan', $pan); - $insert->bindParam(':bic', $bic); - $insert->bindParam(':validator', $validator); + $insert->bindParam(':id', $id); + $insert->bindParam(':blz', $blz); + $insert->bindParam(':isMain', $isMain); + $insert->bindParam(':name', $name); + $insert->bindParam(':plz', $plz); + $insert->bindParam(':city', $city); + $insert->bindParam(':shortTerm', $shortTerm); + $insert->bindParam(':pan', $pan); + $insert->bindParam(':bic', $bic); + $insert->bindParam(':validator', $validator); while ($line = fgets($fp)) { $blz = substr($line, 0, 8); @@ -108,8 +108,8 @@ public function provideParsedLines() */ public function testParser($blz, $type) { - $this->assertRegExp('~^\d{8}$~', $blz); - $this->assertRegExp('~^[\dA-Z]\d$~', $type); + $this->assertRegExp('~^\d{8}$~', $blz); + $this->assertRegExp('~^[\dA-Z]\d$~', $type); } diff --git a/tests/ValidatorTest.php b/tests/ValidatorTest.php index 441a3951..8a90dada 100755 --- a/tests/ValidatorTest.php +++ b/tests/ValidatorTest.php @@ -179,7 +179,7 @@ public function provideTestAccounts() } return array_merge( - $this->getTestAccounts($verifyArray['valid'], true), + $this->getTestAccounts($verifyArray['valid'], true), $this->getTestAccounts($verifyArray['invalid'], false) ); } diff --git a/tests/checkAgainstTestAPIs.php b/tests/checkAgainstTestAPIs.php index 8b075fad..3c5a38e4 100755 --- a/tests/checkAgainstTestAPIs.php +++ b/tests/checkAgainstTestAPIs.php @@ -174,7 +174,7 @@ private function testAccount(BAV_Bank $bank, $account) ); echo "{$bank->getBankID()}/{$bank->getValidationType()}\t", - str_pad($account, strlen($this->lastAccount)), "\t"; + str_pad($account, strlen($this->lastAccount)), "\t"; foreach ($results as $result) { echo "{$result->getTestAPI()->getName()}: ", From 90f976bd26e33e8dfada407dd618bfd5fea03bd6 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 21:50:17 +0200 Subject: [PATCH 040/303] for ( --- classes/class/BAV_ClassFile.php | 2 +- classes/validator/BAV_Validator_Iteration.php | 2 +- classes/validator/BAV_Validator_Iteration_Transformation.php | 2 +- tests/CrossProjectTest.php | 2 +- tests/DataConstraintTest.php | 2 +- tests/checkAgainstTestAPIs.php | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/classes/class/BAV_ClassFile.php b/classes/class/BAV_ClassFile.php index 5b03122a..78312feb 100644 --- a/classes/class/BAV_ClassFile.php +++ b/classes/class/BAV_ClassFile.php @@ -155,7 +155,7 @@ public function getInstance() } $argStr = ''; $args = func_get_args(); - for($i = 0; $i < func_num_args(); $i++) { + for ($i = 0; $i < func_num_args(); $i++) { $argStr .= '$args['.$i.'], '; } diff --git a/classes/validator/BAV_Validator_Iteration.php b/classes/validator/BAV_Validator_Iteration.php index a5dcfe07..b7dc76ba 100644 --- a/classes/validator/BAV_Validator_Iteration.php +++ b/classes/validator/BAV_Validator_Iteration.php @@ -99,7 +99,7 @@ protected function validate() $stepping = (($end - $start < 0) ? -1 : +1); - for($this->i = 0; $this->i < $length; $this->i++) { + for ($this->i = 0; $this->i < $length; $this->i++) { $this->number = (int)$this->account{$this->position}; $this->iterationStep(); $this->position += $stepping; diff --git a/classes/validator/BAV_Validator_Iteration_Transformation.php b/classes/validator/BAV_Validator_Iteration_Transformation.php index e6b20e24..70c7061e 100644 --- a/classes/validator/BAV_Validator_Iteration_Transformation.php +++ b/classes/validator/BAV_Validator_Iteration_Transformation.php @@ -53,7 +53,7 @@ public function setMatrix(Array $matrix) { $this->matrix = $matrix; if (empty($this->rowIteration)) { - for($i = 0; $i < count($matrix); $i++) { + for ($i = 0; $i < count($matrix); $i++) { $this->rowIteration[] = $i; } diff --git a/tests/CrossProjectTest.php b/tests/CrossProjectTest.php index 5cfec782..1ca8b0fd 100755 --- a/tests/CrossProjectTest.php +++ b/tests/CrossProjectTest.php @@ -100,7 +100,7 @@ public function testCrossProjects(BAV_Bank $bank) } for ($account = $this->lastAccount; $account >= 0; $account--) { - for($pad = strlen($account); $pad <= strlen($this->lastAccount); $pad++) { + for ($pad = strlen($account); $pad <= strlen($this->lastAccount); $pad++) { $paddedAccount = str_pad($account, $pad, "0", STR_PAD_LEFT); $this->assertSameResult($bank, $paddedAccount); diff --git a/tests/DataConstraintTest.php b/tests/DataConstraintTest.php index c3c6e5ec..d55b170c 100755 --- a/tests/DataConstraintTest.php +++ b/tests/DataConstraintTest.php @@ -91,7 +91,7 @@ public function provideParsedLines() $parser = new BAV_FileParser(); $lines = array(); - for($i = 0; $i < $parser->getLines(); $i++) { + for ($i = 0; $i < $parser->getLines(); $i++) { $line = $parser->readLine($i); $blz = mb_substr($line, 0, 8, 'UTF-8'); $type = mb_substr($line, BAV_FileParser::TYPE_OFFSET, BAV_FileParser::TYPE_LENGTH, 'UTF-8'); diff --git a/tests/checkAgainstTestAPIs.php b/tests/checkAgainstTestAPIs.php index 3c5a38e4..06168db4 100755 --- a/tests/checkAgainstTestAPIs.php +++ b/tests/checkAgainstTestAPIs.php @@ -129,7 +129,7 @@ public function __construct() } for ($account = $firstAccount; $account != $afterLastAccount; $account += $increment) { - for($pad = strlen($account); $pad <= $padLength; $pad++) { + for ($pad = strlen($account); $pad <= $padLength; $pad++) { $paddedAccount = str_pad($account, $pad, "0", STR_PAD_LEFT); $differences = count($this->differences); $this->testAccount($bank, $paddedAccount); From 6074115035a3d6aa6346196be89c7dde5b86a315 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 21:53:54 +0200 Subject: [PATCH 041/303] BAV_ClassFile --- classes/class/BAV_ClassFile.php | 42 +++++++++++++++------------------ 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/classes/class/BAV_ClassFile.php b/classes/class/BAV_ClassFile.php index 78312feb..fa4766e5 100644 --- a/classes/class/BAV_ClassFile.php +++ b/classes/class/BAV_ClassFile.php @@ -1,9 +1,5 @@ path = $path; - $this->name = basename($path, '.php'); + $this->path = $path; + $this->name = basename($path, '.php'); /** @@ -107,6 +102,7 @@ private function __construct($path) } } } + /** * @throws BAV_ClassFileException_MissingClass * @param string $path @@ -120,6 +116,7 @@ public static function getClassFile($path) } return self::$instances[$path]; } + /** * @throws BAV_ClassFileException_IO * @throws BAV_ClassFileException_MissingClass @@ -144,6 +141,7 @@ public static function getClassFiles($dir) closedir($dh); return $classFiles; } + /** * @return BAV a new instance of {@link $name} */ @@ -162,6 +160,7 @@ public function getInstance() eval('$instance = new $this->name('.substr($argStr, 0, -2).');'); return $instance; } + /** * @throws BAV_ClassFileException_IO * @return string @@ -187,6 +186,7 @@ public function getClassDefinition() } return $this->classDefinition; } + /** * @return string */ @@ -194,8 +194,4 @@ public function getName() { return $this->name; } - - -} - - +} From badc782f586b5b0defad14e96e12ff44b257a6cd Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 21:55:56 +0200 Subject: [PATCH 042/303] BAV_ClassFileException* --- .../class/exception/BAV_ClassFileException.php | 3 --- .../exception/BAV_ClassFileException_IO.php | 4 ---- .../BAV_ClassFileException_MissingClass.php | 16 +++++----------- 3 files changed, 5 insertions(+), 18 deletions(-) diff --git a/classes/class/exception/BAV_ClassFileException.php b/classes/class/exception/BAV_ClassFileException.php index 08bcef54..fecc28f0 100644 --- a/classes/class/exception/BAV_ClassFileException.php +++ b/classes/class/exception/BAV_ClassFileException.php @@ -1,6 +1,5 @@ * @@ -29,5 +28,3 @@ class BAV_ClassFileException extends RuntimeException } - - diff --git a/classes/class/exception/BAV_ClassFileException_IO.php b/classes/class/exception/BAV_ClassFileException_IO.php index a82b79f4..6b0edd60 100644 --- a/classes/class/exception/BAV_ClassFileException_IO.php +++ b/classes/class/exception/BAV_ClassFileException_IO.php @@ -1,7 +1,5 @@ * @@ -30,5 +28,3 @@ class BAV_ClassFileException_IO extends BAV_ClassFileException } - - diff --git a/classes/class/exception/BAV_ClassFileException_MissingClass.php b/classes/class/exception/BAV_ClassFileException_MissingClass.php index cb972eed..09dc43ed 100644 --- a/classes/class/exception/BAV_ClassFileException_MissingClass.php +++ b/classes/class/exception/BAV_ClassFileException_MissingClass.php @@ -1,7 +1,5 @@ * @@ -28,17 +26,15 @@ class BAV_ClassFileException_MissingClass extends BAV_ClassFileException { - - private /** * @var string */ - $className = '', + private $className = ''; + /** * @var string */ - $missingClassName = ''; - + private $missingClassName = ''; /** * @param string $className @@ -49,6 +45,7 @@ public function __construct($className, $missingClassName) $this->className = $className; $this->missingClassName = $missingClassName; } + /** * @return string */ @@ -56,6 +53,7 @@ public function getClassName() { return $this->className; } + /** * @return string */ @@ -63,8 +61,4 @@ public function getMissingClassName() { return $this->missingClassName; } - - } - - From 6f27a71c0c907cfdf5bc4d1914d5f3161f57a0ab Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 22:07:38 +0200 Subject: [PATCH 043/303] BAV_DataBackend --- classes/bank/BAV_Bank.php | 4 +-- classes/dataBackend/BAV_DataBackend.php | 35 +++++++++----------- classes/dataBackend/BAV_DataBackend_File.php | 8 ++--- classes/dataBackend/BAV_DataBackend_PDO.php | 8 ++--- 4 files changed, 25 insertions(+), 30 deletions(-) diff --git a/classes/bank/BAV_Bank.php b/classes/bank/BAV_Bank.php index d083e8ec..741ee8b5 100644 --- a/classes/bank/BAV_Bank.php +++ b/classes/bank/BAV_Bank.php @@ -104,7 +104,7 @@ public function getBankID() public function getMainAgency() { if (is_null($this->mainAgency)) { - $this->mainAgency = $this->dataBackend->_getMainAgency($this); + $this->mainAgency = $this->dataBackend->getMainAgency($this); } return $this->mainAgency; @@ -119,7 +119,7 @@ public function getMainAgency() public function getAgencies() { if (is_null($this->agencies)) { - $this->agencies = $this->dataBackend->_getAgencies($this); + $this->agencies = $this->dataBackend->getAgencies($this); } return $this->agencies; diff --git a/classes/dataBackend/BAV_DataBackend.php b/classes/dataBackend/BAV_DataBackend.php index ec8add9d..10762275 100644 --- a/classes/dataBackend/BAV_DataBackend.php +++ b/classes/dataBackend/BAV_DataBackend.php @@ -1,14 +1,12 @@ instances[$bankID]; } + /** * Perhaps you just want to know if a bank exists. * @@ -105,6 +104,7 @@ public function bankExists($bankID) } } + /** * Returns an array with all banks. If you implement this method you should * also take care that $instances is used an will be filled correctly in order @@ -114,6 +114,7 @@ public function bankExists($bankID) * @return array */ abstract public function getAllBanks(); + /** * This method will be called by getBank() if getBank() thinks it is necessary to * create a new object. You have to return the new object and have not to take care @@ -126,10 +127,8 @@ abstract public function getAllBanks(); * @return BAV_Bank */ abstract protected function getNewBank($bankID); + /** - * YOU SHOULD NOT CALL THIS METHOD! - * Use BAV_Bank->getMainAgency() - * * If you implement this method you should return the appropriate BAV_Agency object. This * method is called by BAV_Bank->getMainAgency(), if the BAV_Bank object doesn't know its * main agency. @@ -137,12 +136,11 @@ abstract protected function getNewBank($bankID); * @throws BAV_DataBackendException * @return BAV_Agency * @see BAV_Bank::getMainAgency() + * @internal YOU SHOULD NOT CALL THIS METHOD! Use BAV_Bank->getMainAgency() */ - abstract public function _getMainAgency(BAV_Bank $bank); + abstract public function getMainAgency(BAV_Bank $bank); + /** - * YOU SHOULD NOT CALL THIS METHOD! - * Use BAV_Bank->getAgencies() - * * If you implement this method you should return an array with the appropriate BAV_Agency * objects. This method is called by BAV_Bank->getAgencies(), if the BAV_Bank object doesn't * know its agencies. A bank may have no agencies and will return an empty array. @@ -150,10 +148,7 @@ abstract public function _getMainAgency(BAV_Bank $bank); * @throws BAV_DataBackendException * @see BAV_Bank::getAgencies() * @return array + * @internal YOU SHOULD NOT CALL THIS METHOD! Use BAV_Bank->getMainAgency() */ - abstract public function _getAgencies(BAV_Bank $bank); - - + abstract public function getAgencies(BAV_Bank $bank); } - - diff --git a/classes/dataBackend/BAV_DataBackend_File.php b/classes/dataBackend/BAV_DataBackend_File.php index abf9c13f..db5e026c 100644 --- a/classes/dataBackend/BAV_DataBackend_File.php +++ b/classes/dataBackend/BAV_DataBackend_File.php @@ -405,12 +405,12 @@ private function findBank($bankID, $offset, $end) } } /** - * @see BAV_DataBackend::_getMainAgency() + * @see BAV_DataBackend::getMainAgency() * @throws BAV_DataBackendException * @throws BAV_DataBackendException_NoMainAgency * @return BAV_Agency */ - public function _getMainAgency(BAV_Bank $bank) + public function getMainAgency(BAV_Bank $bank) { try { $context = $this->defineContextInterval($bank->getBankID()); @@ -436,12 +436,12 @@ public function _getMainAgency(BAV_Bank $bank) } } /** - * @see BAV_DataBackend::_getAgencies() + * @see BAV_DataBackend::getAgencies() * @throws BAV_DataBackendException_IO * @throws BAV_DataBackendException * @return array */ - public function _getAgencies(BAV_Bank $bank) + public function getAgencies(BAV_Bank $bank) { try { $context = $this->defineContextInterval($bank->getBankID()); diff --git a/classes/dataBackend/BAV_DataBackend_PDO.php b/classes/dataBackend/BAV_DataBackend_PDO.php index 5f0b5d49..16ac8f62 100644 --- a/classes/dataBackend/BAV_DataBackend_PDO.php +++ b/classes/dataBackend/BAV_DataBackend_PDO.php @@ -456,9 +456,9 @@ private function getAgencyObject(BAV_Bank $bank, Array $fetchedResult) /** * @throws BAV_DataBackendException * @return BAV_Agency - * @see BAV_DataBackend::_getMainAgency() + * @see BAV_DataBackend::getMainAgency() */ - public function _getMainAgency(BAV_Bank $bank) + public function getMainAgency(BAV_Bank $bank) { try { $this->prepareStatements(); @@ -484,9 +484,9 @@ public function _getMainAgency(BAV_Bank $bank) /** * @throws BAV_DataBackendException * @return array - * @see BAV_DataBackend::_getAgencies() + * @see BAV_DataBackend::getAgencies() */ - public function _getAgencies(BAV_Bank $bank) + public function getAgencies(BAV_Bank $bank) { try { $this->prepareStatements(); From 567c9e8105763d4264ee9f3f0528a7b1c4dc6b18 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 23:08:38 +0200 Subject: [PATCH 044/303] Expected "foreach (...) --- classes/dataBackend/BAV_DataBackend_File.php | 2 +- tests/BackendTest.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/classes/dataBackend/BAV_DataBackend_File.php b/classes/dataBackend/BAV_DataBackend_File.php index db5e026c..f7d8f3d0 100644 --- a/classes/dataBackend/BAV_DataBackend_File.php +++ b/classes/dataBackend/BAV_DataBackend_File.php @@ -196,7 +196,7 @@ public function update() } $pathParts = explode('/', $path); - foreach($pathParts as $i => $part) { + foreach ($pathParts as $i => $part) { switch ($part) { case '..': unset($pathParts[$i-1]); diff --git a/tests/BackendTest.php b/tests/BackendTest.php index 3cae8cf9..c9edb99e 100755 --- a/tests/BackendTest.php +++ b/tests/BackendTest.php @@ -76,7 +76,7 @@ public function provideInstallationBackends() public function provideBanks() { $banks = array(); - foreach($this->provideBackends() as $backendArray) { + foreach ($this->provideBackends() as $backendArray) { $backend = $backendArray[0]; foreach (self::$referenceBackend->getAllBanks() as $bank) { $comparedBank = $backend->getBank($bank->getBankID()); @@ -94,7 +94,7 @@ public function provideBanks() public function provideAgencies() { $agencies = array(); - foreach($this->provideBanks() as $banks) { + foreach ($this->provideBanks() as $banks) { $referenceBank = $banks[0]; $testedBank = $banks[1]; From 5fa6f0e0f619d333cd15e8768f5326d469fcd5cf Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 23:19:22 +0200 Subject: [PATCH 045/303] BAV_DataBackend_File --- classes/dataBackend/BAV_DataBackend_File.php | 62 +++++++------------- 1 file changed, 22 insertions(+), 40 deletions(-) diff --git a/classes/dataBackend/BAV_DataBackend_File.php b/classes/dataBackend/BAV_DataBackend_File.php index f7d8f3d0..ee7ddd00 100644 --- a/classes/dataBackend/BAV_DataBackend_File.php +++ b/classes/dataBackend/BAV_DataBackend_File.php @@ -1,18 +1,5 @@ parser = new BAV_FileParser($file); } - /** * For the file of March 8th 2010 (blz_20100308.txt) * Bundesbank appended new banks at the end of the file. @@ -113,7 +96,6 @@ private function sortFile($file) $this->safeRename($temp, $file); } - /** * @see BAV_DataBackend::uninstall() * @throws BAV_DataBackendException_IO @@ -125,6 +107,7 @@ public function uninstall() } } + /** * @see BAV_DataBackend::install() * @throws BAV_DataBackendException_IO @@ -133,6 +116,7 @@ public function install() { $this->update(); } + /** * This method works only if your PHP is compiled with cURL. * TODO: test this with a proxy @@ -200,6 +184,7 @@ public function update() switch ($part) { case '..': unset($pathParts[$i-1]); + // fall-through as the current part ("..") should be removed as well. case '.': unset($pathParts[$i]); @@ -216,9 +201,7 @@ public function update() if (! curl_exec($ch)) { fclose($tempH); unlink($temp); - throw new BAV_DataBackendException_IO( - curl_error($ch), curl_errno($ch) - ); + throw new BAV_DataBackendException_IO(curl_error($ch), curl_errno($ch)); } fclose($tempH); @@ -255,7 +238,6 @@ public function update() chmod($this->parser->getFile(), 0644); } - /** * Renames a file atomically between different filesystems. * @@ -297,7 +279,6 @@ private function safeRename($source, $destination) } } - /** * @throws BAV_DataBackendException_IO * @throws BAV_DataBackendException @@ -327,6 +308,7 @@ public function getAllBanks() } } + /** * @throws BAV_DataBackendException_IO * @throws BAV_DataBackendException_BankNotFound @@ -344,9 +326,10 @@ public function getNewBank($bankID) */ if (isset($this->contextCache[$bankID])) { return $this->findBank( - $bankID, - $this->contextCache[$bankID]->getLine(), - $this->contextCache[$bankID]->getLine()); + $bankID, + $this->contextCache[$bankID]->getLine(), + $this->contextCache[$bankID]->getLine() + ); } else { return $this->findBank($bankID, 0, $this->parser->getLines()); @@ -358,6 +341,7 @@ public function getNewBank($bankID) } } + /** * @throws BAV_DataBackendException_BankNotFound * @throws BAV_FileParserException_ParseError @@ -380,7 +364,7 @@ private function findBank($bankID, $offset, $end) * This handling is bad, as it may double the work */ if ($blz == '00000000') { - try { + try { return $this->findBank($bankID, $offset, $line - 1); } catch (BAV_DataBackendException_BankNotFound $e) { @@ -389,7 +373,7 @@ private function findBank($bankID, $offset, $end) } } elseif (! isset($this->contextCache[$blz])) { - $this->contextCache[$blz] = new BAV_FileParserContext($line); + $this->contextCache[$blz] = new BAV_FileParserContext($line); } @@ -404,6 +388,7 @@ private function findBank($bankID, $offset, $end) } } + /** * @see BAV_DataBackend::getMainAgency() * @throws BAV_DataBackendException @@ -435,6 +420,7 @@ public function getMainAgency(BAV_Bank $bank) } } + /** * @see BAV_DataBackend::getAgencies() * @throws BAV_DataBackendException_IO @@ -467,7 +453,6 @@ public function getAgencies(BAV_Bank $bank) } } - /** * @return BAV_FileParserContext */ @@ -507,7 +492,6 @@ private function defineContextInterval($bankID) return $context; } - /** * @throws BAV_DataBackendException_IO * @return String a writable directory for temporary files @@ -524,11 +508,11 @@ function_exists('sys_get_temp_dir') ? sys_get_temp_dir() : false, ); foreach ($tmpDirs as $tmpDir) { - if ($tmpDir && is_writable($tmpDir)) { - return realpath($tmpDir); - - } - + if ($tmpDir && is_writable($tmpDir)) { + return realpath($tmpDir); + + } + } $tempfile = tempnam(uniqid(mt_rand(), true), ''); @@ -540,6 +524,4 @@ function_exists('sys_get_temp_dir') ? sys_get_temp_dir() : false, throw new BAV_DataBackendException_IO(); } - - } From 302e486543790f68f9a006e14efe91d28fc496b1 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 23:27:18 +0200 Subject: [PATCH 046/303] replaces tabs with spaces --- classes/dataBackend/BAV_DataBackend_PDO.php | 68 ++--- classes/validator/BAV_Validator.php | 20 +- .../validator/BAV_Validator_BankDependent.php | 2 +- .../validator/validators/BAV_Validator_13.php | 14 +- .../validator/validators/BAV_Validator_16.php | 6 +- .../validator/validators/BAV_Validator_24.php | 2 +- .../validator/validators/BAV_Validator_50.php | 2 +- .../validator/validators/BAV_Validator_76.php | 2 +- .../validator/validators/BAV_Validator_C6.php | 22 +- .../validator/validators/BAV_Validator_D1.php | 10 +- .../validator/validators/BAV_Validator_D2.php | 14 +- classes/verify/testAPI/BAV_TestAPI.php | 74 ++--- classes/verify/testAPI/BAV_TestAPIResult.php | 68 ++--- .../testAPI/BAV_TestAPIResult_Error.php | 44 +-- classes/verify/testAPI/BAV_TestAPI_BAV.php | 42 +-- .../verify/testAPI/BAV_TestAPI_Kontocheck.php | 106 +++---- .../testAPI/BAV_TestAPI_Ktoblzcheck.php | 72 ++--- tests/AgencyQueryTest.php | 14 +- tests/BackendTest.php | 64 ++-- tests/CrossProjectTest.php | 192 ++++++------ tests/DataConstraintTest.php | 14 +- tests/TestSuite.php | 14 +- tests/ValidatorTest.php | 30 +- tests/VerifyImportTest.php | 22 +- tests/checkAgainstTestAPIs.php | 280 +++++++++--------- 25 files changed, 599 insertions(+), 599 deletions(-) diff --git a/classes/dataBackend/BAV_DataBackend_PDO.php b/classes/dataBackend/BAV_DataBackend_PDO.php index 16ac8f62..6b4a7a95 100644 --- a/classes/dataBackend/BAV_DataBackend_PDO.php +++ b/classes/dataBackend/BAV_DataBackend_PDO.php @@ -217,33 +217,33 @@ public function update() $this->pdo->exec("DELETE FROM {$this->prefix}bank"); foreach ($fileBackend->getAllBanks() as $bank) { - try { - $insertBank->execute(array( - ":bankID" => $bank->getBankID(), - ":validator" => $bank->getValidationType(), - ":mainAgency" => $bank->getMainAgency()->getID(), - )); - $agencies = $bank->getAgencies(); - $agencies[] = $bank->getMainAgency(); - foreach ($agencies as $agency) { - $insertAgency->execute(array( - ":id" => $agency->getID(), - ":name" => $agency->getName(), - ":postcode" => $agency->getPostcode(), - ":city" => $agency->getCity(), - ":shortTerm" => $agency->getShortTerm(), - ":bank" => $bank->getBankID(), - ":pan" => $agency->hasPAN() ? $agency->getPAN() : null, - ":bic" => $agency->hasBIC() ? $agency->getBIC() : null - )); - - } - } catch(BAV_DataBackendException_NoMainAgency $e) { - trigger_error( + try { + $insertBank->execute(array( + ":bankID" => $bank->getBankID(), + ":validator" => $bank->getValidationType(), + ":mainAgency" => $bank->getMainAgency()->getID(), + )); + $agencies = $bank->getAgencies(); + $agencies[] = $bank->getMainAgency(); + foreach ($agencies as $agency) { + $insertAgency->execute(array( + ":id" => $agency->getID(), + ":name" => $agency->getName(), + ":postcode" => $agency->getPostcode(), + ":city" => $agency->getCity(), + ":shortTerm" => $agency->getShortTerm(), + ":bank" => $bank->getBankID(), + ":pan" => $agency->hasPAN() ? $agency->getPAN() : null, + ":bic" => $agency->hasBIC() ? $agency->getBIC() : null + )); + + } + } catch(BAV_DataBackendException_NoMainAgency $e) { + trigger_error( "Skipping bank {$e->getBank()->getBankID()} without any main agency." - ); - - } + ); + + } } if ($useTA) { $this->pdo->commit(); @@ -278,14 +278,14 @@ public function update() public function install() { try { - $createOptions = ''; - switch ($this->pdo->getAttribute(PDO::ATTR_DRIVER_NAME)) { - - case 'mysql': - $createOptions .= " engine=InnoDB"; - break; - - } + $createOptions = ''; + switch ($this->pdo->getAttribute(PDO::ATTR_DRIVER_NAME)) { + + case 'mysql': + $createOptions .= " engine=InnoDB"; + break; + + } $this->pdo->exec(" CREATE TABLE {$this->prefix}bank( diff --git a/classes/validator/BAV_Validator.php b/classes/validator/BAV_Validator.php index 71138003..49caa8c9 100644 --- a/classes/validator/BAV_Validator.php +++ b/classes/validator/BAV_Validator.php @@ -89,15 +89,15 @@ public static function getInstance(BAV_Bank $bank) */ public function isValid($account) { - try { + try { $this->init($account); $this->validate(); return ltrim($account, "0") != "" && $this->getResult(); - } catch (BAV_ValidatorException_OutOfBounds $e) { - return false; - - } + } catch (BAV_ValidatorException_OutOfBounds $e) { + return false; + + } } @@ -143,11 +143,11 @@ protected function getChecknumber() */ protected function getNormalizedPosition($pos) { - if ($pos >= strlen($this->account) || $pos < -strlen($this->account)) { - throw new BAV_ValidatorException_OutOfBounds("Cannot access offset $pos in String $this->account"); - - } - + if ($pos >= strlen($this->account) || $pos < -strlen($this->account)) { + throw new BAV_ValidatorException_OutOfBounds("Cannot access offset $pos in String $this->account"); + + } + if ($pos >= 0) { return $pos; diff --git a/classes/validator/BAV_Validator_BankDependent.php b/classes/validator/BAV_Validator_BankDependent.php index f4151271..8718459b 100644 --- a/classes/validator/BAV_Validator_BankDependent.php +++ b/classes/validator/BAV_Validator_BankDependent.php @@ -26,7 +26,7 @@ * @copyright Copyright (C) 2009 Markus Malkusch */ interface BAV_Validator_BankDependent { - + } diff --git a/classes/validator/validators/BAV_Validator_13.php b/classes/validator/validators/BAV_Validator_13.php index a725a17b..9d4b1561 100644 --- a/classes/validator/validators/BAV_Validator_13.php +++ b/classes/validator/validators/BAV_Validator_13.php @@ -45,13 +45,13 @@ public function __construct(BAV_Bank $bank) */ public function isValid($account) { - if (parent::isValid($account)) { - return true; - - } - $account = ltrim($account, '0') . '00'; - return strlen($account) <= $this->normalizedSize - && parent::isValid($account); + if (parent::isValid($account)) { + return true; + + } + $account = ltrim($account, '0') . '00'; + return strlen($account) <= $this->normalizedSize + && parent::isValid($account); } diff --git a/classes/validator/validators/BAV_Validator_16.php b/classes/validator/validators/BAV_Validator_16.php index 18319b4d..b040b5bf 100644 --- a/classes/validator/validators/BAV_Validator_16.php +++ b/classes/validator/validators/BAV_Validator_16.php @@ -38,9 +38,9 @@ public function __construct(BAV_Bank $bank) protected function getResult() { - return $this->accumulator % 11 === 1 - ? $this->getChecknumber() === $this->account{$this->getNormalizedPosition($this->checknumberPosition) - 1} - : parent::getResult(); + return $this->accumulator % 11 === 1 + ? $this->getChecknumber() === $this->account{$this->getNormalizedPosition($this->checknumberPosition) - 1} + : parent::getResult(); } diff --git a/classes/validator/validators/BAV_Validator_24.php b/classes/validator/validators/BAV_Validator_24.php index 66d0af49..e70807f5 100644 --- a/classes/validator/validators/BAV_Validator_24.php +++ b/classes/validator/validators/BAV_Validator_24.php @@ -40,7 +40,7 @@ public function __construct(BAV_Bank $bank) protected function init($account) { - parent::init($account); + parent::init($account); $this->account = preg_replace('~^([3456]|9..)?0*~', '', $this->account); } diff --git a/classes/validator/validators/BAV_Validator_50.php b/classes/validator/validators/BAV_Validator_50.php index af395585..9f70c8dd 100644 --- a/classes/validator/validators/BAV_Validator_50.php +++ b/classes/validator/validators/BAV_Validator_50.php @@ -30,7 +30,7 @@ class BAV_Validator_50 extends BAV_Validator_06 public function isValid($account) { - if (parent::isValid($account)) { + if (parent::isValid($account)) { return true; } diff --git a/classes/validator/validators/BAV_Validator_76.php b/classes/validator/validators/BAV_Validator_76.php index 207dc4f5..a1ca661d 100644 --- a/classes/validator/validators/BAV_Validator_76.php +++ b/classes/validator/validators/BAV_Validator_76.php @@ -40,7 +40,7 @@ public function __construct(BAV_Bank $bank) public function isValid($account) { - if (parent::isValid($account)) { + if (parent::isValid($account)) { return true; } diff --git a/classes/validator/validators/BAV_Validator_C6.php b/classes/validator/validators/BAV_Validator_C6.php index e7c644b0..9085850b 100644 --- a/classes/validator/validators/BAV_Validator_C6.php +++ b/classes/validator/validators/BAV_Validator_C6.php @@ -29,13 +29,13 @@ */ class BAV_Validator_C6 extends BAV_Validator { - - - private static - /** - * @var Array - */ - $transformation = array( + + + private static + /** + * @var Array + */ + $transformation = array( 0 => 4451970, 1 => 4451981, 2 => 4451992, @@ -46,7 +46,7 @@ class BAV_Validator_C6 extends BAV_Validator 7 => 5499570, 8 => 4451994, 9 => 5499579 - ); + ); protected @@ -70,9 +70,9 @@ public function __construct(BAV_Bank $bank) protected function validate() { - $transformation = array_key_exists($this->account{0}, self::$transformation) - ? self::$transformation[$this->account{0}] - : ''; + $transformation = array_key_exists($this->account{0}, self::$transformation) + ? self::$transformation[$this->account{0}] + : ''; $this->transformedAccount = $transformation . substr($this->account, 1); $this->validator->setNormalizedSize(9 + strlen($transformation)); } diff --git a/classes/validator/validators/BAV_Validator_D1.php b/classes/validator/validators/BAV_Validator_D1.php index 839e798e..c95f81c9 100644 --- a/classes/validator/validators/BAV_Validator_D1.php +++ b/classes/validator/validators/BAV_Validator_D1.php @@ -33,10 +33,10 @@ class BAV_Validator_D1 extends BAV_Validator private static - /** - * @var Array - */ - $_transformation = array( + /** + * @var Array + */ + $_transformation = array( 0 => 4363380, 1 => 4363381, 2 => 4363382, @@ -46,7 +46,7 @@ class BAV_Validator_D1 extends BAV_Validator 6 => 4363386, 7 => 4363387, 9 => 4363389 - ); + ); protected diff --git a/classes/validator/validators/BAV_Validator_D2.php b/classes/validator/validators/BAV_Validator_D2.php index d33a40f7..90929b9b 100644 --- a/classes/validator/validators/BAV_Validator_D2.php +++ b/classes/validator/validators/BAV_Validator_D2.php @@ -32,13 +32,13 @@ */ class BAV_Validator_D2 extends BAV_Validator_Chain { - - - protected - /** - * @var bool - */ - $doNormalization = false; + + + protected + /** + * @var bool + */ + $doNormalization = false; public function __construct(BAV_Bank $bank) diff --git a/classes/verify/testAPI/BAV_TestAPI.php b/classes/verify/testAPI/BAV_TestAPI.php index f9864d17..b0c23768 100644 --- a/classes/verify/testAPI/BAV_TestAPI.php +++ b/classes/verify/testAPI/BAV_TestAPI.php @@ -33,41 +33,41 @@ */ abstract class BAV_TestAPI extends BAV { - - - private - /** - * @var String - */ - $name = ''; - - - /** + + + private + /** + * @var String + */ + $name = ''; + + + /** * @param int $account * @return bool * @throws BAV_TestAPIException_Validation */ abstract protected function isValid(BAV_Bank $bank, $account); - - public function __construct() + + public function __construct() { - $this->setName(get_class($this)); - } - - - /** - * @param string $name - */ - protected function setName($name) + $this->setName(get_class($this)); + } + + + /** + * @param string $name + */ + protected function setName($name) { - $this->name = $name; - } - - /** - * @param int $account - * @return BAV_TestAPIResult - */ + $this->name = $name; + } + + /** + * @param int $account + * @return BAV_TestAPIResult + */ public function getResult(BAV_Bank $bank, $account) { try { @@ -85,17 +85,17 @@ public function getResult(BAV_Bank $bank, $account) } } - - - /** - * @return String - */ - public function getName() + + + /** + * @return String + */ + public function getName() { - return $this->name; - } - - + return $this->name; + } + + } diff --git a/classes/verify/testAPI/BAV_TestAPIResult.php b/classes/verify/testAPI/BAV_TestAPIResult.php index c5f69a14..dce83343 100644 --- a/classes/verify/testAPI/BAV_TestAPIResult.php +++ b/classes/verify/testAPI/BAV_TestAPIResult.php @@ -31,44 +31,44 @@ class BAV_TestAPIResult extends BAV { - - const VALID = 1; + + const VALID = 1; const INVALID = 2; const BANK_NOT_FOUND = 3; const ERROR = 4; - - private - /** - * @var BAV_TestAPI - */ - $testAPI, - /** - * @var int - */ - $result; - - - /** - * @param BAV_TestAPI $testAPI - * @param int $result - */ - public function __construct(BAV_TestAPI $testAPI, $result) + + private + /** + * @var BAV_TestAPI + */ + $testAPI, + /** + * @var int + */ + $result; + + + /** + * @param BAV_TestAPI $testAPI + * @param int $result + */ + public function __construct(BAV_TestAPI $testAPI, $result) { - $this->testAPI = $testAPI; - $this->result = $result; - } - - - /** - * @return BAV_TestAPI - */ - public function getTestAPI() + $this->testAPI = $testAPI; + $this->result = $result; + } + + + /** + * @return BAV_TestAPI + */ + public function getTestAPI() { - return $this->testAPI; - } - - + return $this->testAPI; + } + + /** * @return int */ @@ -76,8 +76,8 @@ public function getResult() { return $this->result; } - - + + } diff --git a/classes/verify/testAPI/BAV_TestAPIResult_Error.php b/classes/verify/testAPI/BAV_TestAPIResult_Error.php index 01ccf131..e55ac768 100644 --- a/classes/verify/testAPI/BAV_TestAPIResult_Error.php +++ b/classes/verify/testAPI/BAV_TestAPIResult_Error.php @@ -30,27 +30,27 @@ class BAV_TestAPIResult_Error extends BAV_TestAPIResult { - - private - /** - * @var String - */ - $message = ''; - - - /** - * @param BAV_TestAPI $testAPI - * @param int $result - * @param String $message - */ - public function __construct(BAV_TestAPI $testAPI, $result, $message = '') + + private + /** + * @var String + */ + $message = ''; + + + /** + * @param BAV_TestAPI $testAPI + * @param int $result + * @param String $message + */ + public function __construct(BAV_TestAPI $testAPI, $result, $message = '') { - parent::__construct($testAPI, $result); - - $this->message = $message; - } - - + parent::__construct($testAPI, $result); + + $this->message = $message; + } + + /** * @return String */ @@ -58,8 +58,8 @@ public function getMessage() { return $this->message; } - - + + } diff --git a/classes/verify/testAPI/BAV_TestAPI_BAV.php b/classes/verify/testAPI/BAV_TestAPI_BAV.php index c22b5438..cc34c6b0 100644 --- a/classes/verify/testAPI/BAV_TestAPI_BAV.php +++ b/classes/verify/testAPI/BAV_TestAPI_BAV.php @@ -30,35 +30,35 @@ */ class BAV_TestAPI_BAV extends BAV_TestAPI { - - + + public function __construct() { - parent::__construct(); - - $this->setName("bav"); + parent::__construct(); + + $this->setName("bav"); } - - - /** - * @param int $bankCode - * @param int $account - * @return bool - * @throws BAV_TestAPIException_Validation_BankNotFound - */ - protected function isValid(BAV_Bank $bank, $account) + + + /** + * @param int $bankCode + * @param int $account + * @return bool + * @throws BAV_TestAPIException_Validation_BankNotFound + */ + protected function isValid(BAV_Bank $bank, $account) { - try { + try { return $bank->isValid($account); - - } catch (Exception $e) { + + } catch (Exception $e) { echo $e->getMessage(), "\n", $e->getTraceAsString(); exit(1); - } - } - - + } + } + + } diff --git a/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php b/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php index c47827fb..02fcb67f 100644 --- a/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php +++ b/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php @@ -32,51 +32,51 @@ */ class BAV_TestAPI_Kontocheck extends BAV_TestAPI { - - - const NOT_INITIALIZED = -40; - const BANK_NOT_FOUND = -4; - const INVALID_NULL = -12; - const INVALID_KTO = -3; - const INVALID_FALSE = 0; - - - /** - * @param String $lutFile - * @param int $lutVersion - * @throws BAV_TestAPIException - */ - public function __construct($lutFile, $lutVersion) + + + const NOT_INITIALIZED = -40; + const BANK_NOT_FOUND = -4; + const INVALID_NULL = -12; + const INVALID_KTO = -3; + const INVALID_FALSE = 0; + + + /** + * @param String $lutFile + * @param int $lutVersion + * @throws BAV_TestAPIException + */ + public function __construct($lutFile, $lutVersion) { - parent::__construct(); - - $this->setName("kc"); - - if (! lut_init($lutFile, $lutVersion)) { - throw new BAV_TestAPIException("Could not initialize LUT."); - - } - } - - - /** - * @param int $bank - * @param int $account - * @return bool - * @throws BAV_TestAPIException_Validation - * @throws BAV_TestAPIException_Validation_NotInitialized - * @throws BAV_TestAPIException_Validation_BankNotFound - */ - protected function isValid(BAV_Bank $bank, $account) + parent::__construct(); + + $this->setName("kc"); + + if (! lut_init($lutFile, $lutVersion)) { + throw new BAV_TestAPIException("Could not initialize LUT."); + + } + } + + + /** + * @param int $bank + * @param int $account + * @return bool + * @throws BAV_TestAPIException_Validation + * @throws BAV_TestAPIException_Validation_NotInitialized + * @throws BAV_TestAPIException_Validation_BankNotFound + */ + protected function isValid(BAV_Bank $bank, $account) { - $isValid = kto_check_blz($bank->getBankID(), $account); - - switch ($isValid) { - - case self::NOT_INITIALIZED: - throw new BAV_TestAPIException_Validation_NotInitialized("LUT not initialized"); - - case self::BANK_NOT_FOUND: + $isValid = kto_check_blz($bank->getBankID(), $account); + + switch ($isValid) { + + case self::NOT_INITIALIZED: + throw new BAV_TestAPIException_Validation_NotInitialized("LUT not initialized"); + + case self::BANK_NOT_FOUND: throw new BAV_TestAPIException_Validation_BankNotFound($bank->getBankID()); case self::INVALID_NULL: @@ -85,16 +85,16 @@ protected function isValid(BAV_Bank $bank, $account) return false; default: - if ($isValid < 0) { - throw new BAV_TestAPIException_Validation("unknown code $isValid"); - - } - return true; - - } - } - - + if ($isValid < 0) { + throw new BAV_TestAPIException_Validation("unknown code $isValid"); + + } + return true; + + } + } + + } diff --git a/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php b/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php index 90923ba1..0e4f32d9 100644 --- a/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php +++ b/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php @@ -40,42 +40,42 @@ class BAV_TestAPI_Ktoblzcheck extends BAV_TestAPI const BANK_NOT_FOUND = 3; - - private - /** + + private + /** + * @var String + */ + $binary = '', + /** * @var String */ - $binary = '', - /** - * @var String - */ - $bankdata = ''; - - - /** - * @param String $bankdata - * @param String $binary - * @throws BAV_TestAPIException - */ - public function __construct($bankdata, $binary = null) + $bankdata = ''; + + + /** + * @param String $bankdata + * @param String $binary + * @throws BAV_TestAPIException + */ + public function __construct($bankdata, $binary = null) { - parent::__construct(); - - $this->setName("ktoblzcheck"); - - $this->bankdata = realpath($bankdata); - $this->binary = is_null($binary) ? self::BINARY : realpath($binary); - } - - - /** - * @param int $account - * @return bool - * @throws BAV_TestAPIException_Validation - * @throws BAV_TestAPIException_Validation_NotInitialized - * @throws BAV_TestAPIException_Validation_BankNotFound - */ - protected function isValid(BAV_Bank $bank, $account) + parent::__construct(); + + $this->setName("ktoblzcheck"); + + $this->bankdata = realpath($bankdata); + $this->binary = is_null($binary) ? self::BINARY : realpath($binary); + } + + + /** + * @param int $account + * @return bool + * @throws BAV_TestAPIException_Validation + * @throws BAV_TestAPIException_Validation_NotInitialized + * @throws BAV_TestAPIException_Validation_BankNotFound + */ + protected function isValid(BAV_Bank $bank, $account) { exec( "$this->binary --file=$this->bankdata {$bank->getBankID()} $account", @@ -98,9 +98,9 @@ protected function isValid(BAV_Bank $bank, $account) throw new BAV_TestAPIException_Validation("unknown code $result: " . implode("\n", $out)); } - } - - + } + + } diff --git a/tests/AgencyQueryTest.php b/tests/AgencyQueryTest.php index fb78a097..4ece17b9 100755 --- a/tests/AgencyQueryTest.php +++ b/tests/AgencyQueryTest.php @@ -82,11 +82,11 @@ public function testNoID() private function assertAgencies(Array $agencies, $count) { - $this->assertEquals($count, count($agencies)); - + $this->assertEquals($count, count($agencies)); + foreach ($agencies as $agency) { if ($agency->isMainAgency()) { - $this->assertTrue( + $this->assertTrue( $agency->getBank()->getMainAgency() === $agency, "Inconsistent Main Agency" ); @@ -98,10 +98,10 @@ private function assertAgencies(Array $agencies, $count) } else { $includedCount = 0; foreach ($agency->getBank()->getAgencies() as $banksAgency) { - $this->assertTrue( - $banksAgency->getBank() === $agency->getBank(), - "Inconsistent bank" - ); + $this->assertTrue( + $banksAgency->getBank() === $agency->getBank(), + "Inconsistent bank" + ); if ($banksAgency === $agency) { $includedCount++; diff --git a/tests/BackendTest.php b/tests/BackendTest.php index c9edb99e..5202c2fe 100755 --- a/tests/BackendTest.php +++ b/tests/BackendTest.php @@ -75,16 +75,16 @@ public function provideInstallationBackends() */ public function provideBanks() { - $banks = array(); - foreach ($this->provideBackends() as $backendArray) { - $backend = $backendArray[0]; - foreach (self::$referenceBackend->getAllBanks() as $bank) { - $comparedBank = $backend->getBank($bank->getBankID()); - $banks[] = array($bank, $comparedBank); - - } - } - return $banks; + $banks = array(); + foreach ($this->provideBackends() as $backendArray) { + $backend = $backendArray[0]; + foreach (self::$referenceBackend->getAllBanks() as $bank) { + $comparedBank = $backend->getBank($bank->getBankID()); + $banks[] = array($bank, $comparedBank); + + } + } + return $banks; } @@ -100,18 +100,18 @@ public function provideAgencies() $referenceAgencies = array(); foreach ($referenceBank->getAgencies() as $agency) { - $referenceAgencies[$agency->getID()] = $agency; - + $referenceAgencies[$agency->getID()] = $agency; + } foreach ($testedBank->getAgencies() as $agency) { - $agencies[] = array( - $referenceAgencies[$agency->getID()], - $agency - ); + $agencies[] = array( + $referenceAgencies[$agency->getID()], + $agency + ); } - + } return $agencies; } @@ -122,9 +122,9 @@ public function provideAgencies() */ public function testInstallation(BAV_DataBackend $backend) { - $backend->install(); - $backend->update(); - $backend->uninstall(); + $backend->install(); + $backend->update(); + $backend->uninstall(); } @@ -147,10 +147,10 @@ public function testInstallationIsComplete(BAV_DataBackend $backend) public function testSingleInstances(BAV_DataBackend $backend) { foreach (self::$referenceBackend->getAllBanks() as $refBank) { - $this->assertTrue( - $backend->getBank($refBank->getBankID()) === $backend->getBank($refBank->getBankID()), - "Different objects for bank {$refBank->getBankID()}" - ); + $this->assertTrue( + $backend->getBank($refBank->getBankID()) === $backend->getBank($refBank->getBankID()), + "Different objects for bank {$refBank->getBankID()}" + ); } } @@ -160,7 +160,7 @@ public function testSingleInstances(BAV_DataBackend $backend) */ public function testGetAllBanks(BAV_DataBackend $backend) { - $this->assertEquals( + $this->assertEquals( count(self::$referenceBackend->getAllBanks()), count($backend->getAllBanks()) ); @@ -181,7 +181,7 @@ public function testBanks(BAV_Bank $referenceBank, BAV_Bank $testedBank) $referenceBank->getMainAgency(), $testedBank->getMainAgency() ); - + $this->assertEquals( count($referenceBank->getAgencies()), count($testedBank->getAgencies()) @@ -194,13 +194,13 @@ public function testBanks(BAV_Bank $referenceBank, BAV_Bank $testedBank) */ public function testAgencies(BAV_Agency $referenceAgency, BAV_Agency $testedAgency) { - $this->assertEqualAgency($referenceAgency, $testedAgency); + $this->assertEqualAgency($referenceAgency, $testedAgency); } private function assertEqualAgency(BAV_Agency $a, BAV_Agency $b) { - $this->assertTrue($a->getBank()->getBankID() === $b->getBank()->getBankID()); + $this->assertTrue($a->getBank()->getBankID() === $b->getBank()->getBankID()); $this->assertTrue($a->getID() === $b->getID()); $this->assertTrue($a->getPostcode() === $b->getPostcode()); $this->assertTrue($a->getCity() === $b->getCity()); @@ -209,12 +209,12 @@ private function assertEqualAgency(BAV_Agency $a, BAV_Agency $b) $this->assertTrue($a->hasPAN() === $b->hasPAN()); $this->assertTrue($a->hasBIC() === $b->hasBIC()); if ($a->hasPAN()) { - $this->assertTrue($a->getPAN() === $b->getPAN()); - + $this->assertTrue($a->getPAN() === $b->getPAN()); + } if ($a->hasBIC()) { - $this->assertTrue($a->getBIC() === $b->getBIC()); - + $this->assertTrue($a->getBIC() === $b->getBIC()); + } } diff --git a/tests/CrossProjectTest.php b/tests/CrossProjectTest.php index 1ca8b0fd..5a70f201 100755 --- a/tests/CrossProjectTest.php +++ b/tests/CrossProjectTest.php @@ -29,36 +29,36 @@ class CrossProjectTest extends PHPUnit_Framework_TestCase { - - - private - /** - * @var int - */ - #$lastAccount = 9999999999, - $lastAccount = 99999, - /** - * @var Array - */ - $testedValidators = array(), - /** + + + private + /** + * @var int + */ + #$lastAccount = 9999999999, + $lastAccount = 99999, + /** + * @var Array + */ + $testedValidators = array(), + /** * @var Array */ $failedBankDependentValidators = array(), - /** - * @var Array - */ - $testAPIs = array(); - - - /** - * @return Array - */ - protected function setUp() + /** + * @var Array + */ + $testAPIs = array(); + + + /** + * @return Array + */ + protected function setUp() { $ktoblzcheckPath = __DIR__ . "/../tmp/ktoblzcheck/ktoblzcheck-1.21/src"; - - $this->testAPIs = array( + + $this->testAPIs = array( new BAV_TestAPI_BAV(), new BAV_TestAPI_Kontocheck('/etc/blz.lut2', 2), new BAV_TestAPI_Ktoblzcheck( @@ -66,90 +66,90 @@ protected function setUp() "$ktoblzcheckPath/bin/ktoblzcheck" ) ); - } - - - /** - * @return Array - */ - public function provideBanks() + } + + + /** + * @return Array + */ + public function provideBanks() { - $banks = array(); - $backend = new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); - foreach ($backend->getAllBanks() as $bank) { - $banks[] = array($bank); - - } - return $banks; - } - - - /** - * @dataProvider provideBanks - */ - public function testCrossProjects(BAV_Bank $bank) + $banks = array(); + $backend = new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); + foreach ($backend->getAllBanks() as $bank) { + $banks[] = array($bank); + + } + return $banks; + } + + + /** + * @dataProvider provideBanks + */ + public function testCrossProjects(BAV_Bank $bank) { try { - $isSkip = $bank->getValidator() instanceof BAV_Validator_BankDependent - ? array_key_exists($bank->getValidationType(), $this->failedBankDependentValidators) - : array_key_exists($bank->getValidationType(), $this->testedValidators); - - if ($isSkip) { - return; - - } + $isSkip = $bank->getValidator() instanceof BAV_Validator_BankDependent + ? array_key_exists($bank->getValidationType(), $this->failedBankDependentValidators) + : array_key_exists($bank->getValidationType(), $this->testedValidators); + + if ($isSkip) { + return; + + } - for ($account = $this->lastAccount; $account >= 0; $account--) { - for ($pad = strlen($account); $pad <= strlen($this->lastAccount); $pad++) { - $paddedAccount = str_pad($account, $pad, "0", STR_PAD_LEFT); - $this->assertSameResult($bank, $paddedAccount); - - } - } - + for ($account = $this->lastAccount; $account >= 0; $account--) { + for ($pad = strlen($account); $pad <= strlen($this->lastAccount); $pad++) { + $paddedAccount = str_pad($account, $pad, "0", STR_PAD_LEFT); + $this->assertSameResult($bank, $paddedAccount); + + } + } + } catch (BAV_TestAPIException_Validation_BankNotFound $e) { - return; - + return; + } catch (Exception $e) { if ($bank instanceof BAV_Validator_BankDependent) { - $this->failedBankDependentValidators[$bank->getValidationType()] = true; - + $this->failedBankDependentValidators[$bank->getValidationType()] = true; + } - throw $e; - + throw $e; + } $this->testedValidators[$bank->getValidationType()] = true; - } - - - private function assertSameResult(BAV_Bank $bank, $account) + } + + + private function assertSameResult(BAV_Bank $bank, $account) { - $results = array(); - $resultValues = array(); - foreach ($this->testAPIs as $key => $testAPI) { - $result = $testAPI->getResult($bank, $account); - $results[] = $result; - $resultValues[] = $result->getResult(); - - } - - $this->assertEquals( + $results = array(); + $resultValues = array(); + foreach ($this->testAPIs as $key => $testAPI) { + $result = $testAPI->getResult($bank, $account); + $results[] = $result; + $resultValues[] = $result->getResult(); + + } + + $this->assertEquals( 1, count(array_unique($resultValues)), $this->getErrorMessage($bank, $account, $results) ); - } - - - /** - * @param BAV_Bank $bank - * @param String $account - * @param array $results - * @return String - */ - private function getErrorMessage(BAV_Bank $bank, $account, Array $results) + } + + + /** + * @param BAV_Bank $bank + * @param String $account + * @param array $results + * @return String + */ + private function getErrorMessage(BAV_Bank $bank, $account, Array $results) { - $resultTranslation = array( + $resultTranslation = array( BAV_TestAPIResult::VALID => "valid", BAV_TestAPIResult::INVALID => "invalid", BAV_TestAPIResult::ERROR => "error" @@ -170,9 +170,9 @@ private function getErrorMessage(BAV_Bank $bank, $account, Array $results) } return $message; - } - - + } + + } diff --git a/tests/DataConstraintTest.php b/tests/DataConstraintTest.php index d55b170c..85d01f7f 100755 --- a/tests/DataConstraintTest.php +++ b/tests/DataConstraintTest.php @@ -88,18 +88,18 @@ public static function classConstructor() */ public function provideParsedLines() { - $parser = new BAV_FileParser(); - $lines = array(); - - for ($i = 0; $i < $parser->getLines(); $i++) { + $parser = new BAV_FileParser(); + $lines = array(); + + for ($i = 0; $i < $parser->getLines(); $i++) { $line = $parser->readLine($i); $blz = mb_substr($line, 0, 8, 'UTF-8'); $type = mb_substr($line, BAV_FileParser::TYPE_OFFSET, BAV_FileParser::TYPE_LENGTH, 'UTF-8'); $lines[] = array($blz, $type); - } - - return $lines; + } + + return $lines; } diff --git a/tests/TestSuite.php b/tests/TestSuite.php index 95a2d57e..a1c9b37c 100644 --- a/tests/TestSuite.php +++ b/tests/TestSuite.php @@ -31,11 +31,11 @@ class TestSuite extends PHPUnit_Framework_TestSuite { - - - /** - * @return TestSuite - */ + + + /** + * @return TestSuite + */ public static function suite() { $suite = new self(); @@ -48,8 +48,8 @@ public static function suite() return $suite; } - - + + } diff --git a/tests/ValidatorTest.php b/tests/ValidatorTest.php index 8a90dada..9cda175c 100755 --- a/tests/ValidatorTest.php +++ b/tests/ValidatorTest.php @@ -53,10 +53,10 @@ class ValidatorTest extends PHPUnit_Framework_TestCase */ protected function setUp() { - if (! empty(self::$dataBackend)) { - return; - - } + if (! empty(self::$dataBackend)) { + return; + + } #self::$dataBackend = new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); self::$dataBackend = new BAV_DataBackend_File(); @@ -73,9 +73,9 @@ protected function setUp() */ public function provideBanks() { - $this->setUp(); - - $banks = array(); + $this->setUp(); + + $banks = array(); $files = BAV_ClassFile::getClassFiles(__DIR__.'/../classes/validator/validators/'); foreach ($files as $class) { if (! preg_match('~^BAV_Validator_([A-Z0-9]{2})$~', $class->getName(), $matchType)) { @@ -123,7 +123,7 @@ public function provideAccountsAndBanksInAllLengths() */ public function testFindParseErrors(BAV_Bank $bank) { - /** + /** * testing 10 random bank accounts */ for ($i = 0; $i < 10; $i++) { @@ -143,14 +143,14 @@ public function testFindParseErrors(BAV_Bank $bank) */ public function testNullIsInvalid(BAV_Bank $bank) { - for ($length = 0; $length <= 10; $length++) { - $account = str_pad("0", $length, "0", STR_PAD_LEFT); - $this->assertFalse( + for ($length = 0; $length <= 10; $length++) { + $account = str_pad("0", $length, "0", STR_PAD_LEFT); + $this->assertFalse( $bank->isValid($account), "{$bank->getBankID()}/{$bank->getValidationType()} $account should be invalid." ); - - } + + } } @@ -190,7 +190,7 @@ public function provideTestAccounts() */ private function getTestAccounts(Array $testAccounts, $expectedValidation) { - $accounts = array(); + $accounts = array(); foreach ($testAccounts as $typeOrBankID => $tests) { $accounts[] = array( $typeOrBankID, @@ -216,7 +216,7 @@ public function testAccount($typeOrBankID, Array $accountIDs, $expectedValidatio $this->assertEquals($typeOrBankID, $bank->getValidationType()); } else { - try { + try { $bank = self::$dataBackend->getBank($typeOrBankID); } catch (BAV_DataBackendException_BankNotFound $e) { diff --git a/tests/VerifyImportTest.php b/tests/VerifyImportTest.php index 7bb87c15..11074006 100755 --- a/tests/VerifyImportTest.php +++ b/tests/VerifyImportTest.php @@ -119,17 +119,17 @@ private function assertImporter(BAV_VerifyImport $importer, Array $notSupported foreach ($this->verifyArray as $expect => $array) { foreach ($array as $type => $accounts) { - $actualAccounts = @$checkArray[$expect][$type]; - unset($checkArray[$expect][$type]); - if (array_search($type, $notSupported) !== false) { - continue; - - } - $this->assertEquals( - preg_replace('~\D~', '', $accounts), - preg_replace('~\D~', '', $actualAccounts), - "[$expect]$type is not equal!" - ); + $actualAccounts = @$checkArray[$expect][$type]; + unset($checkArray[$expect][$type]); + if (array_search($type, $notSupported) !== false) { + continue; + + } + $this->assertEquals( + preg_replace('~\D~', '', $accounts), + preg_replace('~\D~', '', $actualAccounts), + "[$expect]$type is not equal!" + ); } diff --git a/tests/checkAgainstTestAPIs.php b/tests/checkAgainstTestAPIs.php index 06168db4..1e73e3ea 100755 --- a/tests/checkAgainstTestAPIs.php +++ b/tests/checkAgainstTestAPIs.php @@ -31,167 +31,167 @@ class BAV_CheckAgainstTestAPIs extends BAV { - - - const VALID = 1; - const INVALID = 2; - const BANK_NOT_FOUND = 3; - const ERROR = 4; + + + const VALID = 1; + const INVALID = 2; + const BANK_NOT_FOUND = 3; + const ERROR = 4; - - private - /** - * @var int - */ - #$firstAccount = 9999999999, - $firstAccount = 999, - /** - * @var int - */ - $lastAccount = 1, - /** - * @var Array - */ - $testedValidators = array(), - /** - * @var Array - */ - $differences = array(), - /** - * @var Array - */ - $testAPIs = array(); - - - public function __construct() + + private + /** + * @var int + */ + #$firstAccount = 9999999999, + $firstAccount = 999, + /** + * @var int + */ + $lastAccount = 1, + /** + * @var Array + */ + $testedValidators = array(), + /** + * @var Array + */ + $differences = array(), + /** + * @var Array + */ + $testAPIs = array(); + + + public function __construct() { $ktoblzcheckPath = __DIR__ . "/../tmp/ktoblzcheck/ktoblzcheck-1.21/src"; - - $this->testAPIs[] = new BAV_TestAPI_BAV(); - $this->testAPIs[] = new BAV_TestAPI_Kontocheck('/etc/blz.lut', 2); - $this->testAPIs[] = new BAV_TestAPI_Ktoblzcheck( + + $this->testAPIs[] = new BAV_TestAPI_BAV(); + $this->testAPIs[] = new BAV_TestAPI_Kontocheck('/etc/blz.lut', 2); + $this->testAPIs[] = new BAV_TestAPI_Ktoblzcheck( "$ktoblzcheckPath/bankdata/bankdata.txt", - "$ktoblzcheckPath/bin/ktoblzcheck" + "$ktoblzcheckPath/bin/ktoblzcheck" ); - - - #$backend = new BAV_DataBackend_File(); - $backend = new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); - - - if (! empty($GLOBALS['argv'][1])) { + + + #$backend = new BAV_DataBackend_File(); + $backend = new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); + + + if (! empty($GLOBALS['argv'][1])) { $nodeNumber = $GLOBALS['argv'][1]; $nodeCount = @$GLOBALS['argv'][2]; if ($nodeNumber * $nodeCount == 0 || min($nodeNumber, $nodeCount) < 0) { - trigger_error( + trigger_error( 'Expect two numeric arguments > 0: $nodeNumber $nodeCount', - E_USER_ERROR - ); - + E_USER_ERROR + ); + } if ($nodeNumber > $nodeCount) { - trigger_error( - 'Expect first argument ($nodeNumber) <= second argument ($nodeCount)', - E_USER_ERROR - ); - + trigger_error( + 'Expect first argument ($nodeNumber) <= second argument ($nodeCount)', + E_USER_ERROR + ); + } - - } else { - $nodeNumber = 1; + + } else { + $nodeNumber = 1; $nodeCount = 1; - - } - - $increment = $this->lastAccount > $this->firstAccount ? 1 : -1; + + } + + $increment = $this->lastAccount > $this->firstAccount ? 1 : -1; $padLength = strlen(max($this->lastAccount, $this->firstAccount)); - $count = ceil(abs($this->lastAccount - $this->firstAccount) / $nodeCount); - $firstAccount = $this->firstAccount + $increment * ($nodeNumber - 1) * ($count + 1); - - if ($nodeCount == $nodeNumber) { - $afterLastAccount = $this->lastAccount + $increment; - - } else { - $afterLastAccount = $firstAccount + $increment * ($count + 1); - - } - - foreach ($backend->getAllBanks() as $bank) { - try { - if ( array_key_exists($bank->getValidationType(), $this->testedValidators) - && ! $bank->getValidator() instanceof BAV_Validator_BankDependent) { - - continue; - - } - - for ($account = $firstAccount; $account != $afterLastAccount; $account += $increment) { - for ($pad = strlen($account); $pad <= $padLength; $pad++) { - $paddedAccount = str_pad($account, $pad, "0", STR_PAD_LEFT); - $differences = count($this->differences); - $this->testAccount($bank, $paddedAccount); - if (count($this->differences) > $differences) { - break 2; - - } - } - } - - $this->testedValidators[$bank->getValidationType()] = true; - - } catch (BAV_TestAPIException_Validation_BankNotFound $e) { - continue; - - } - } - } - - - private function testAccount(BAV_Bank $bank, $account) + $count = ceil(abs($this->lastAccount - $this->firstAccount) / $nodeCount); + $firstAccount = $this->firstAccount + $increment * ($nodeNumber - 1) * ($count + 1); + + if ($nodeCount == $nodeNumber) { + $afterLastAccount = $this->lastAccount + $increment; + + } else { + $afterLastAccount = $firstAccount + $increment * ($count + 1); + + } + + foreach ($backend->getAllBanks() as $bank) { + try { + if ( array_key_exists($bank->getValidationType(), $this->testedValidators) + && ! $bank->getValidator() instanceof BAV_Validator_BankDependent) { + + continue; + + } + + for ($account = $firstAccount; $account != $afterLastAccount; $account += $increment) { + for ($pad = strlen($account); $pad <= $padLength; $pad++) { + $paddedAccount = str_pad($account, $pad, "0", STR_PAD_LEFT); + $differences = count($this->differences); + $this->testAccount($bank, $paddedAccount); + if (count($this->differences) > $differences) { + break 2; + + } + } + } + + $this->testedValidators[$bank->getValidationType()] = true; + + } catch (BAV_TestAPIException_Validation_BankNotFound $e) { + continue; + + } + } + } + + + private function testAccount(BAV_Bank $bank, $account) { - $results = array(); - $resultValues = array(); - foreach ($this->testAPIs as $key => $testAPI) { - $result = $testAPI->getResult($bank, $account); - $results[] = $result; - $resultValues[] = $result->getResult(); - - } - - if (count(array_unique($resultValues)) == 1) { - return; - - } - - - $resultTranslation = array( + $results = array(); + $resultValues = array(); + foreach ($this->testAPIs as $key => $testAPI) { + $result = $testAPI->getResult($bank, $account); + $results[] = $result; + $resultValues[] = $result->getResult(); + + } + + if (count(array_unique($resultValues)) == 1) { + return; + + } + + + $resultTranslation = array( BAV_TestAPIResult::VALID => "valid", BAV_TestAPIResult::INVALID => "invalid", BAV_TestAPIResult::ERROR => "error" - ); - - echo "{$bank->getBankID()}/{$bank->getValidationType()}\t", - str_pad($account, strlen($this->lastAccount)), "\t"; - - foreach ($results as $result) { - echo "{$result->getTestAPI()->getName()}: ", - str_pad($resultTranslation[$result->getResult()], 8); - if ($result instanceof BAV_TestAPIResult_Error) { - echo " {$result->getMessage()}"; - - } - echo "\t"; - - } - echo "\n"; - - $this->differences[] = array($bank, $account, $results); - } - - + ); + + echo "{$bank->getBankID()}/{$bank->getValidationType()}\t", + str_pad($account, strlen($this->lastAccount)), "\t"; + + foreach ($results as $result) { + echo "{$result->getTestAPI()->getName()}: ", + str_pad($resultTranslation[$result->getResult()], 8); + if ($result instanceof BAV_TestAPIResult_Error) { + echo " {$result->getMessage()}"; + + } + echo "\t"; + + } + echo "\n"; + + $this->differences[] = array($bank, $account, $results); + } + + } new BAV_CheckAgainstTestAPIs(); From 683beaa394f5649a660c2ee2c2eee060686caea2 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 23:33:01 +0200 Subject: [PATCH 047/303] BAV_DataBackend_PDO --- classes/dataBackend/BAV_DataBackend_PDO.php | 101 ++++++++++---------- 1 file changed, 48 insertions(+), 53 deletions(-) diff --git a/classes/dataBackend/BAV_DataBackend_PDO.php b/classes/dataBackend/BAV_DataBackend_PDO.php index 6b4a7a95..603e6444 100644 --- a/classes/dataBackend/BAV_DataBackend_PDO.php +++ b/classes/dataBackend/BAV_DataBackend_PDO.php @@ -1,15 +1,5 @@ pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } - /** * @return string */ @@ -96,7 +89,6 @@ public function getPrefix() return $this->prefix; } - /** * You may use an arbitrary SQL statement to receive BAV_Agency objects. * Your statement should at least return the id of the agencies. @@ -156,7 +148,6 @@ public function getAgencies($sql) } } - /** * @throws PDOException */ @@ -173,19 +164,22 @@ private function prepareStatements() $this->selectMainAgency = $this->pdo->prepare( "SELECT $agencyAttributes FROM {$this->prefix}bank b INNER JOIN {$this->prefix}agency a ON b.mainAgency = a.id - WHERE b.id = :bankID"); + WHERE b.id = :bankID" + ); $this->selectAgencies = $this->pdo->prepare( "SELECT $agencyAttributes FROM {$this->prefix}agency a - WHERE bank = :bankID AND id != :mainAgency"); + WHERE bank = :bankID AND id != :mainAgency" + ); $this->selectAgency = $this->pdo->prepare( "SELECT $agencyAttributes, bank FROM {$this->prefix}agency a - WHERE id = :agency"); + WHERE id = :agency" + ); $this->selectAgencysBank = $this->pdo->prepare( "SELECT bank FROM {$this->prefix}agency - WHERE id = :agency"); + WHERE id = :agency" + ); } - /** * @see BAV_DataBackend::update() * @throws BAV_DataBackendException @@ -200,11 +194,13 @@ public function update() $insertBank = $this->pdo->prepare( "INSERT INTO {$this->prefix}bank (id, validator, mainAgency) - VALUES(:bankID, :validator, :mainAgency)"); + VALUES(:bankID, :validator, :mainAgency)" + ); $insertAgency = $this->pdo->prepare( "INSERT INTO {$this->prefix}agency (id, name, postcode, city, shortTerm, pan, bic, bank) - VALUES (:id, :name, :postcode, :city, :shortTerm, :pan, :bic, :bank)"); + VALUES (:id, :name, :postcode, :city, :shortTerm, :pan, :bic, :bank)" + ); try { $this->pdo->beginTransaction(); $useTA = true; @@ -238,10 +234,10 @@ public function update() )); } - } catch(BAV_DataBackendException_NoMainAgency $e) { - trigger_error( + } catch (BAV_DataBackendException_NoMainAgency $e) { + trigger_error( "Skipping bank {$e->getBank()->getBankID()} without any main agency." - ); + ); } } @@ -270,7 +266,6 @@ public function update() } } - /** * @see BAV_DataBackend::install() * @throws BAV_DataBackendException_IO @@ -286,20 +281,17 @@ public function install() break; } - $this->pdo->exec(" - - CREATE TABLE {$this->prefix}bank( + $this->pdo->exec( + "CREATE TABLE {$this->prefix}bank( id int primary key, validator char(2) NOT NULL, mainAgency int NOT NULL /* FOREIGN KEY (mainAgency) REFERENCES {$this->prefix}agency(id) */ - )$createOptions - - "); - $this->pdo->exec(" - - CREATE TABLE {$this->prefix}agency( + )$createOptions" + ); + $this->pdo->exec( + "CREATE TABLE {$this->prefix}agency( id int primary key, name varchar(".BAV_FileParser::NAME_LENGTH.") NOT NULL, postcode varchar(".BAV_FileParser::POSTCODE_LENGTH.") NOT NULL, @@ -310,9 +302,8 @@ public function install() bic varchar(".BAV_FileParser::BIC_LENGTH.") NULL, FOREIGN KEY (bank) REFERENCES {$this->prefix}bank(id) - )$createOptions - - "); + )$createOptions" + ); $this->update(); } catch (PDOException $e) { @@ -320,6 +311,7 @@ public function install() } } + /** * @see BAV_DataBackend::uninstall() * @throws BAV_DataBackendException_IO @@ -335,7 +327,6 @@ public function uninstall() } } - /** * @see BAV_DataBackend::getAllBanks() @@ -365,6 +356,7 @@ public function getAllBanks() } } + /** * @throws BAV_DataBackendException * @throws BAV_DataBackendException_BankNotFound @@ -396,6 +388,7 @@ protected function getNewBank($bankID) } } + /** * @return bool */ @@ -404,6 +397,7 @@ private function isValidBankResult(Array $result) return array_key_exists('id', $result) && array_key_exists('validator', $result); } + /** * @return bool */ @@ -417,6 +411,7 @@ private function isValidAgencyResult(Array $result) && array_key_exists('bic', $result) && array_key_exists('pan', $result); } + /** * @return BAV_Bank * @throws BAV_DataBackendException_IO_MissingAttributes @@ -429,6 +424,7 @@ private function getBankObject(Array $fetchedResult) } return new BAV_Bank($this, $fetchedResult['id'], $fetchedResult['validator']); } + /** * @return BAV_Agency * @throws BAV_DataBackendException_IO_MissingAttributes @@ -448,11 +444,13 @@ private function getAgencyObject(BAV_Bank $bank, Array $fetchedResult) $fetchedResult['city'], $fetchedResult['postcode'], $fetchedResult['bic'], - $fetchedResult['pan']); + $fetchedResult['pan'] + ); } return $this->agencies[$fetchedResult['id']]; } + /** * @throws BAV_DataBackendException * @return BAV_Agency @@ -481,6 +479,7 @@ public function getMainAgency(BAV_Bank $bank) } } + /** * @throws BAV_DataBackendException * @return array @@ -511,8 +510,4 @@ public function getAgencies(BAV_Bank $bank) } } - - } - - From 684dbf866577baf43fec81df5bdd3e5883c5065f Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 23:35:54 +0200 Subject: [PATCH 048/303] BAV_DataBackendException* --- .../exception/BAV_DataBackendException.php | 4 ---- .../BAV_DataBackendException_BankNotFound.php | 12 ++---------- .../exception/BAV_DataBackendException_IO.php | 5 ----- ...BAV_DataBackendException_IO_MissingAttributes.php | 5 ----- .../BAV_DataBackendException_NoMainAgency.php | 12 +----------- 5 files changed, 3 insertions(+), 35 deletions(-) diff --git a/classes/dataBackend/exception/BAV_DataBackendException.php b/classes/dataBackend/exception/BAV_DataBackendException.php index 1caa1a50..bc403399 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException.php +++ b/classes/dataBackend/exception/BAV_DataBackendException.php @@ -1,6 +1,5 @@ * @@ -27,7 +26,4 @@ class BAV_DataBackendException extends RuntimeException { - } - - diff --git a/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php b/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php index 56896942..f6c52704 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php +++ b/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php @@ -1,7 +1,5 @@ * @@ -28,19 +26,17 @@ class BAV_DataBackendException_BankNotFound extends BAV_DataBackendException { - - private /** * @var string */ - $bankID; - + private $bankID; public function __construct($bankID) { parent::__construct("bank $bankID not found"); $this->bankID = $bankID; } + /** * @return string */ @@ -48,8 +44,4 @@ public function getBankID() { return $this->bankID; } - - } - - diff --git a/classes/dataBackend/exception/BAV_DataBackendException_IO.php b/classes/dataBackend/exception/BAV_DataBackendException_IO.php index 5ff68284..e0b0822d 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException_IO.php +++ b/classes/dataBackend/exception/BAV_DataBackendException_IO.php @@ -1,7 +1,5 @@ * @@ -28,7 +26,4 @@ class BAV_DataBackendException_IO extends BAV_DataBackendException { - } - - diff --git a/classes/dataBackend/exception/BAV_DataBackendException_IO_MissingAttributes.php b/classes/dataBackend/exception/BAV_DataBackendException_IO_MissingAttributes.php index 80ea05ea..3c29cf16 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException_IO_MissingAttributes.php +++ b/classes/dataBackend/exception/BAV_DataBackendException_IO_MissingAttributes.php @@ -1,7 +1,5 @@ * @@ -28,7 +26,4 @@ class BAV_DataBackendException_IO_MissingAttributes extends BAV_DataBackendException_IO { - } - - diff --git a/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php b/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php index 06cc6950..f5d33ddf 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php +++ b/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php @@ -1,7 +1,5 @@ * @@ -28,13 +26,10 @@ class BAV_DataBackendException_NoMainAgency extends BAV_DataBackendException { - - private /** * @var BAV_Bank */ - $bank; - + private $bank; public function __construct(BAV_Bank $bank) { @@ -42,7 +37,6 @@ public function __construct(BAV_Bank $bank) $this->bank = $bank; } - /** * @return BAV_Bank */ @@ -50,8 +44,4 @@ public function getBank() { return $this->bank; } - - } - - From 280ba8c0167844b33a43b12824102421ed4c46fc Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 23:42:25 +0200 Subject: [PATCH 049/303] removed spaces at end of lines --- classes/BAV.php | 6 +- classes/BAV_Version.php | 40 ++--- classes/autoloader/BAV_Autoloader.php | 12 +- classes/bank/BAV_Agency.php | 6 +- classes/bank/BAV_Bank.php | 6 +- .../bank/exception/BAV_AgencyException.php | 2 +- ...BAV_AgencyException_UndefinedAttribute.php | 2 +- classes/class/BAV_ClassFile.php | 38 ++--- .../BAV_ClassFileException_MissingClass.php | 2 +- classes/dataBackend/BAV_DataBackend.php | 8 +- classes/dataBackend/BAV_DataBackend_File.php | 140 +++++++++--------- classes/dataBackend/BAV_DataBackend_PDO.php | 60 ++++---- .../BAV_DataBackendException_BankNotFound.php | 2 +- .../BAV_DataBackendException_NoMainAgency.php | 4 +- .../dataBackend/fileParser/BAV_FileParser.php | 42 +++--- .../fileParser/BAV_FileParserContext.php | 8 +- .../BAV_FileParserException_FileNotExists.php | 4 +- classes/encoding/BAV_Encoding.php | 8 +- classes/encoding/BAV_Encoding_ISO8859.php | 2 +- classes/encoding/BAV_Encoding_Iconv.php | 2 +- .../BAV_EncodingException_Unsupported.php | 6 +- classes/validator/BAV_Validator.php | 38 ++--- .../validator/BAV_Validator_BankDependent.php | 4 +- classes/validator/BAV_Validator_Chain.php | 8 +- classes/validator/BAV_Validator_Iteration.php | 12 +- ...BAV_Validator_Iteration_Transformation.php | 8 +- .../BAV_Validator_Iteration_Weighted.php | 16 +- .../BAV_ValidatorException_NotExists.php | 4 +- .../validator/validators/BAV_Validator_00.php | 2 +- .../validator/validators/BAV_Validator_08.php | 4 +- .../validator/validators/BAV_Validator_11.php | 4 +- .../validator/validators/BAV_Validator_13.php | 8 +- .../validator/validators/BAV_Validator_14.php | 2 +- .../validator/validators/BAV_Validator_15.php | 2 +- .../validator/validators/BAV_Validator_16.php | 6 +- .../validator/validators/BAV_Validator_17.php | 2 +- .../validator/validators/BAV_Validator_21.php | 4 +- .../validator/validators/BAV_Validator_22.php | 2 +- .../validator/validators/BAV_Validator_24.php | 8 +- .../validator/validators/BAV_Validator_25.php | 18 +-- .../validator/validators/BAV_Validator_26.php | 6 +- .../validator/validators/BAV_Validator_27.php | 8 +- .../validator/validators/BAV_Validator_28.php | 2 +- .../validator/validators/BAV_Validator_29.php | 2 +- .../validator/validators/BAV_Validator_30.php | 4 +- .../validator/validators/BAV_Validator_31.php | 6 +- .../validator/validators/BAV_Validator_35.php | 2 +- .../validator/validators/BAV_Validator_41.php | 10 +- .../validator/validators/BAV_Validator_43.php | 2 +- .../validator/validators/BAV_Validator_44.php | 2 +- .../validator/validators/BAV_Validator_45.php | 2 +- .../validator/validators/BAV_Validator_46.php | 2 +- .../validator/validators/BAV_Validator_47.php | 2 +- .../validator/validators/BAV_Validator_48.php | 2 +- .../validator/validators/BAV_Validator_49.php | 2 +- .../validator/validators/BAV_Validator_50.php | 4 +- .../validator/validators/BAV_Validator_51.php | 32 ++-- .../validators/BAV_Validator_51x.php | 2 +- .../validator/validators/BAV_Validator_52.php | 20 +-- .../validator/validators/BAV_Validator_53.php | 2 +- .../validator/validators/BAV_Validator_54.php | 2 +- .../validator/validators/BAV_Validator_56.php | 4 +- .../validator/validators/BAV_Validator_57.php | 52 +++---- .../validator/validators/BAV_Validator_58.php | 4 +- .../validator/validators/BAV_Validator_59.php | 4 +- .../validator/validators/BAV_Validator_61.php | 10 +- .../validator/validators/BAV_Validator_62.php | 2 +- .../validator/validators/BAV_Validator_63.php | 8 +- .../validator/validators/BAV_Validator_65.php | 10 +- .../validator/validators/BAV_Validator_66.php | 2 +- .../validator/validators/BAV_Validator_68.php | 22 +-- .../validator/validators/BAV_Validator_69.php | 14 +- .../validators/BAV_Validator_69b.php | 4 +- .../validator/validators/BAV_Validator_70.php | 2 +- .../validator/validators/BAV_Validator_71.php | 2 +- .../validator/validators/BAV_Validator_73.php | 16 +- .../validator/validators/BAV_Validator_74.php | 14 +- .../validator/validators/BAV_Validator_75.php | 14 +- .../validator/validators/BAV_Validator_76.php | 12 +- .../validator/validators/BAV_Validator_77.php | 2 +- .../validators/BAV_Validator_77a.php | 4 +- .../validator/validators/BAV_Validator_78.php | 4 +- .../validator/validators/BAV_Validator_79.php | 14 +- .../validator/validators/BAV_Validator_80.php | 10 +- .../validator/validators/BAV_Validator_81.php | 8 +- .../validator/validators/BAV_Validator_82.php | 6 +- .../validator/validators/BAV_Validator_83.php | 14 +- .../validators/BAV_Validator_83x.php | 2 +- .../validator/validators/BAV_Validator_84.php | 12 +- .../validators/BAV_Validator_84b.php | 2 +- .../validator/validators/BAV_Validator_85.php | 14 +- .../validator/validators/BAV_Validator_86.php | 10 +- .../validator/validators/BAV_Validator_87.php | 12 +- .../validators/BAV_Validator_87a.php | 4 +- .../validators/BAV_Validator_87c.php | 2 +- .../validator/validators/BAV_Validator_88.php | 8 +- .../validator/validators/BAV_Validator_89.php | 10 +- .../validator/validators/BAV_Validator_90.php | 14 +- .../validator/validators/BAV_Validator_91.php | 4 +- .../validator/validators/BAV_Validator_92.php | 2 +- .../validator/validators/BAV_Validator_93.php | 10 +- .../validator/validators/BAV_Validator_95.php | 4 +- .../validator/validators/BAV_Validator_96.php | 8 +- .../validator/validators/BAV_Validator_97.php | 10 +- .../validator/validators/BAV_Validator_98.php | 4 +- .../validator/validators/BAV_Validator_99.php | 4 +- .../validator/validators/BAV_Validator_A1.php | 4 +- .../validator/validators/BAV_Validator_A2.php | 6 +- .../validator/validators/BAV_Validator_A3.php | 6 +- .../validator/validators/BAV_Validator_A4.php | 18 +-- .../validator/validators/BAV_Validator_A5.php | 12 +- .../validator/validators/BAV_Validator_A6.php | 6 +- .../validator/validators/BAV_Validator_A7.php | 6 +- .../validator/validators/BAV_Validator_A8.php | 18 +-- .../validator/validators/BAV_Validator_A9.php | 6 +- .../validator/validators/BAV_Validator_B0.php | 6 +- .../validator/validators/BAV_Validator_B1.php | 6 +- .../validator/validators/BAV_Validator_B2.php | 6 +- .../validator/validators/BAV_Validator_B3.php | 6 +- .../validator/validators/BAV_Validator_B4.php | 6 +- .../validator/validators/BAV_Validator_B5.php | 8 +- .../validator/validators/BAV_Validator_B6.php | 6 +- .../validator/validators/BAV_Validator_B7.php | 4 +- .../validator/validators/BAV_Validator_B8.php | 8 +- .../validator/validators/BAV_Validator_B9.php | 14 +- .../validators/BAV_Validator_B9a.php | 6 +- .../validators/BAV_Validator_B9b.php | 6 +- .../validator/validators/BAV_Validator_C0.php | 10 +- .../validator/validators/BAV_Validator_C1.php | 6 +- .../validators/BAV_Validator_C1b.php | 2 +- .../validator/validators/BAV_Validator_C2.php | 6 +- .../validator/validators/BAV_Validator_C3.php | 6 +- .../validator/validators/BAV_Validator_C4.php | 6 +- .../validator/validators/BAV_Validator_C5.php | 20 +-- .../validator/validators/BAV_Validator_C6.php | 18 +-- .../validator/validators/BAV_Validator_C7.php | 4 +- .../validator/validators/BAV_Validator_D0.php | 10 +- .../validator/validators/BAV_Validator_D1.php | 18 +-- .../validator/validators/BAV_Validator_D2.php | 4 +- .../validator/validators/BAV_Validator_D4.php | 14 +- .../validator/validators/BAV_Validator_D8.php | 8 +- .../validator/validators/BAV_Validator_E1.php | 2 +- classes/verify/BAV_VerifyImport.php | 4 +- classes/verify/testAPI/BAV_TestAPI.php | 34 ++--- classes/verify/testAPI/BAV_TestAPIResult.php | 24 +-- .../testAPI/BAV_TestAPIResult_Error.php | 18 +-- classes/verify/testAPI/BAV_TestAPI_BAV.php | 20 +-- .../verify/testAPI/BAV_TestAPI_Kontocheck.php | 38 ++--- .../testAPI/BAV_TestAPI_Ktoblzcheck.php | 36 ++--- tests/AgencyQueryTest.php | 24 +-- tests/BackendTest.php | 68 ++++----- tests/CrossProjectTest.php | 62 ++++---- tests/DataConstraintTest.php | 46 +++--- tests/TestSuite.php | 12 +- tests/ValidatorTest.php | 60 ++++---- tests/VerifyImportTest.php | 52 +++---- tests/checkAgainstTestAPIs.php | 88 +++++------ 157 files changed, 973 insertions(+), 973 deletions(-) diff --git a/classes/BAV.php b/classes/BAV.php index 6f8ec28c..4dd8f4b1 100644 --- a/classes/BAV.php +++ b/classes/BAV.php @@ -1,4 +1,4 @@ - * @copyright Copyright (C) 2006 Markus Malkusch @@ -31,7 +31,7 @@ class BAV_Version extends BAV * @var BAV_Version */ private static $phpVersion; - + /** * @var array */ @@ -41,7 +41,7 @@ class BAV_Version extends BAV * @var string */ private $separator = ''; - + /** * @param string $version * @param string $separator @@ -51,7 +51,7 @@ public function __construct($version, $separator = '.') $this->separator = $separator; $this->elements = explode($separator, $version); } - + /** * @return boolean */ @@ -59,17 +59,17 @@ public function isGreater(BAV_Version $version) { $thoseElements = $version->getElements(count($this->elements)); $thisElements = $this->getElements(count($thoseElements)); - + foreach ($thisElements as $i => $thisElement) { if ($thoseElements[$i] !== $thisElement) { return $this->isGreater($thisElement, $thoseElements[$i]); - + } - + } return false; } - + /** * @return boolean */ @@ -77,10 +77,10 @@ public function equals(BAV_Version $version) { $thoseElements = $version->getElements(count($this->elements)); $thisElements = $this->getElements(count($thoseElements)); - + return $thoseElements == $thisElements; } - + /** * @return boolean */ @@ -88,7 +88,7 @@ public function isLesser(BAV_Version $version) { return ! $this->equals($version) && ! $this->isGreater($version); } - + /** * @return string */ @@ -96,7 +96,7 @@ public function getString() { return implode($this->separator, $this->elements); } - + /** * @return string */ @@ -108,13 +108,13 @@ public function getNormalizedVersion() if ($lastElement !== '0') { $elements[] = $lastElement; break; - + } - + } return implode($this->separator, $elements); } - + /** * @param string $left * @param string $right @@ -124,7 +124,7 @@ private function isGreater($left, $right) { return $left > $right; } - + /** * @param int $padding * @return array @@ -133,11 +133,11 @@ private function getElements($padding = null) { if (is_null($padding) || count($this->elements) >= $padding) { return $this->elements; - + } return array_pad($this->elements, $padding, '0'); } - + /** * @return BAV_Version */ @@ -145,7 +145,7 @@ public static function getPHPVersion() { if (empty(self::$phpVersion)) { self::$phpVersion = new BAV_Version(phpversion()); - + } return self::$phpVersion; } diff --git a/classes/autoloader/BAV_Autoloader.php b/classes/autoloader/BAV_Autoloader.php index 62c94c92..3e784687 100644 --- a/classes/autoloader/BAV_Autoloader.php +++ b/classes/autoloader/BAV_Autoloader.php @@ -3,7 +3,7 @@ /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ /** - * include the real autoloader + * include the real autoloader */ require_once __DIR__ . "/../../autoloader/autoloader.php"; @@ -11,14 +11,14 @@ /** * Deprecated Autoloader - * + * * This autoloader was removed. * * @deprecated 0.27 */ class BAV_Autoloader { - + public static function triggerDeprecationWarning() { trigger_error( @@ -31,12 +31,12 @@ public function register($classPath) { self::triggerDeprecationWarning(); } - + public function loadDirectly() { self::triggerDeprecationWarning(); } - + public function loadDeferred() { self::triggerDeprecationWarning(); @@ -56,7 +56,7 @@ public function autoload($className) { self::triggerDeprecationWarning(); } - + public function getPath($className) { self::triggerDeprecationWarning(); diff --git a/classes/bank/BAV_Agency.php b/classes/bank/BAV_Agency.php index 1b4751e0..8c80be9d 100644 --- a/classes/bank/BAV_Agency.php +++ b/classes/bank/BAV_Agency.php @@ -4,7 +4,7 @@ * The agency belongs to one bank. Every bank has one main agency and may have * some more agencies in different cities. Don't create this object directly. * Use BAV_Bank->getMainAgency() or BAV_Bank->getAgencies(). - * + * * * Copyright (C) 2006 Markus Malkusch * @@ -175,7 +175,7 @@ public function getPAN() { if (! $this->hasPAN()) { throw new BAV_AgencyException_UndefinedAttribute($this, 'pan'); - + } return $this->pan; } @@ -188,7 +188,7 @@ public function getBIC() { if (! $this->hasBIC()) { throw new BAV_AgencyException_UndefinedAttribute($this, 'bic'); - + } return $this->bic; } diff --git a/classes/bank/BAV_Bank.php b/classes/bank/BAV_Bank.php index 741ee8b5..7eb04aa7 100644 --- a/classes/bank/BAV_Bank.php +++ b/classes/bank/BAV_Bank.php @@ -105,7 +105,7 @@ public function getMainAgency() { if (is_null($this->mainAgency)) { $this->mainAgency = $this->dataBackend->getMainAgency($this); - + } return $this->mainAgency; } @@ -120,7 +120,7 @@ public function getAgencies() { if (is_null($this->agencies)) { $this->agencies = $this->dataBackend->getAgencies($this); - + } return $this->agencies; } @@ -145,7 +145,7 @@ public function getValidator() { if (is_null($this->validator)) { $this->validator = BAV_Validator::getInstance($this); - + } return $this->validator; } diff --git a/classes/bank/exception/BAV_AgencyException.php b/classes/bank/exception/BAV_AgencyException.php index cd889478..8fdf67aa 100644 --- a/classes/bank/exception/BAV_AgencyException.php +++ b/classes/bank/exception/BAV_AgencyException.php @@ -30,7 +30,7 @@ class BAV_AgencyException extends RuntimeException * @var BAV_Agency */ private $agency; - + public function __construct(BAV_Agency $agency) { $this->agency = $agency; diff --git a/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php b/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php index 42ea6f38..8abbbf92 100644 --- a/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php +++ b/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php @@ -30,7 +30,7 @@ class BAV_AgencyException_UndefinedAttribute extends BAV_AgencyException * @var string */ private $attribute = ''; - + /** * @param string $attribute */ diff --git a/classes/class/BAV_ClassFile.php b/classes/class/BAV_ClassFile.php index fa4766e5..bdd8bc0d 100644 --- a/classes/class/BAV_ClassFile.php +++ b/classes/class/BAV_ClassFile.php @@ -19,8 +19,8 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * + * + * * @package classes */ class BAV_ClassFile extends BAV @@ -50,12 +50,12 @@ class BAV_ClassFile extends BAV * @var string The class definition */ private $classDefinition = ''; - + /** * @var array */ private static $instances = array(); - + /** * The constructor loads the class definition and parses it to initialize * {@link $parent} and {@link $neededClasses}. @@ -67,14 +67,14 @@ private function __construct($path) { $this->path = $path; $this->name = basename($path, '.php'); - - + + /** * Load the class definition */ require_once $this->path; - - + + /** * check parent class */ @@ -82,14 +82,14 @@ private function __construct($path) foreach ($matches[1] as $match) { if (! isset($this->neededClasses[$match])) { throw new BAV_ClassFileException_MissingClass($this->name, $match); - + } $this->parent = $this->neededClasses[$match]; $this->neededClasses['parent'] = $this->parent; break; } - - + + /** * check needed classes */ @@ -98,7 +98,7 @@ private function __construct($path) foreach (array_merge($matchesNew[1], $matchesStatic[1]) as $match) { if (! isset($this->neededClasses[$match])) { throw new BAV_ClassFileException_MissingClass($this->name, $match); - + } } } @@ -112,7 +112,7 @@ public static function getClassFile($path) { if (! isset(self::$instances[$path])) { self::$instances[$path] = new self($path); - + } return self::$instances[$path]; } @@ -129,13 +129,13 @@ public static function getClassFiles($dir) $dh = opendir($dir); if (! $dh) { throw new BAV_ClassFileException_IO(); - + } while (($file = readdir($dh)) !== false) { $path = $dir.$file; if (is_file($path)) { $classFiles[] = self::getClassFile($path); - + } } closedir($dh); @@ -172,17 +172,17 @@ public function getClassDefinition() $fp = fopen($this->path, 'r'); if (! $fp) { throw new BAV_ClassFileException_IO(); - + } $this->classDefinition = fread($fp, filesize($this->path)); fclose($fp); - - + + /** * delete comments */ $this->classDefinition = preg_replace('_/\*.*\*/_sU', '', $this->classDefinition); - + } return $this->classDefinition; } diff --git a/classes/class/exception/BAV_ClassFileException_MissingClass.php b/classes/class/exception/BAV_ClassFileException_MissingClass.php index 09dc43ed..6f92ed13 100644 --- a/classes/class/exception/BAV_ClassFileException_MissingClass.php +++ b/classes/class/exception/BAV_ClassFileException_MissingClass.php @@ -35,7 +35,7 @@ class BAV_ClassFileException_MissingClass extends BAV_ClassFileException * @var string */ private $missingClassName = ''; - + /** * @param string $className * @param string $missingClassName diff --git a/classes/dataBackend/BAV_DataBackend.php b/classes/dataBackend/BAV_DataBackend.php index 10762275..cc18b361 100644 --- a/classes/dataBackend/BAV_DataBackend.php +++ b/classes/dataBackend/BAV_DataBackend.php @@ -7,7 +7,7 @@ * * install(), update(), uninstall(), getNewBank(), getAllBanks(), getMainAgency(), * getAgencies() - * + * * When you use this class you should create only one object. The BAV_DataBackend * is designed to keep all created BAV_Bank objects in an array. So you won't get * copies of identical BAV_Bank objects. That means if you call two times the @@ -43,7 +43,7 @@ abstract class BAV_DataBackend extends BAV * @var array All created BAV_Bank objects */ protected $instances = array(); - + /** * You have to call this method to synchronize you're datastructure to the * data of the Bundesbank. @@ -98,10 +98,10 @@ public function bankExists($bankID) try { $this->getBank($bankID); return true; - + } catch (BAV_DataBackendException_BankNotFound $e) { return false; - + } } diff --git a/classes/dataBackend/BAV_DataBackend_File.php b/classes/dataBackend/BAV_DataBackend_File.php index ee7ddd00..2b4da6db 100644 --- a/classes/dataBackend/BAV_DataBackend_File.php +++ b/classes/dataBackend/BAV_DataBackend_File.php @@ -20,7 +20,7 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * + * * @FIXME BAV_DataBackend_File is broken as Bundesbank appends new Banks at the end of the file */ class BAV_DataBackend_File extends BAV_DataBackend @@ -45,15 +45,15 @@ public function __construct($file = null) { $this->parser = new BAV_FileParser($file); } - + /** * For the file of March 8th 2010 (blz_20100308.txt) * Bundesbank appended new banks at the end of the file. * That broked binary search. This method sorts the lines so * that binary search is working again. - * + * * Be aware that this needs some amount of memory. - * + * * @param String $file * @throws BAV_DataBackendException_IO */ @@ -63,39 +63,39 @@ private function sortFile($file) $lines = file($file); if (! is_array($lines) || empty($lines)) { throw new BAV_DataBackendException_IO("Could not read lines in '$file'."); - + } - + //build a sorted index for the bankIDs $index = array(); foreach ($lines as $line => $data) { $bankID = substr($data, BAV_FileParser::BANKID_OFFSET, BAV_FileParser::BANKID_LENGTH); $index[$line] = $bankID; - + } asort($index); - + //write a sorted bank file atomically $temp = tempnam(self::getTempdir(), "BAV_"); $tempH = fopen($temp, 'w'); if (! ($temp && $tempH)) { throw new BAV_DataBackendException_IO("Could not open a temporary file."); - + } foreach (array_keys($index) as $line) { $data = $lines[$line]; - + $writtenBytes = fputs($tempH, $data); if ($writtenBytes != strlen($data)) { throw new BAV_DataBackendException_IO("Could not write sorted data: '$data' into $temp."); - + } - + } fclose($tempH); $this->safeRename($temp, $file); } - + /** * @see BAV_DataBackend::uninstall() * @throws BAV_DataBackendException_IO @@ -104,7 +104,7 @@ public function uninstall() { if (! unlink($this->parser->getFile())) { throw new BAV_DataBackendException_IO(); - + } } @@ -120,7 +120,7 @@ public function install() /** * This method works only if your PHP is compiled with cURL. * TODO: test this with a proxy - * + * * @see BAV_DataBackend::update() * @throws BAV_DataBackendException_IO */ @@ -129,7 +129,7 @@ public function update() $ch = curl_init(self::DOWNLOAD_URI); if (! is_resource($ch)) { throw new BAV_DataBackendException_IO(); - + } curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $content = curl_exec($ch); @@ -147,37 +147,37 @@ public function update() throw new BAV_DataBackendException_IO( "Failed to download '" . self::DOWNLOAD_URI . "'." ); - + } $isTXT = preg_match('/Bankleitzahlendateien ungepackt.+href *= *"([^"]+\.txt[^"]*)"/sU', $content, $txtMatches); $isZIP = (exec('unzip -v') == '') ? false : preg_match('/Bankleitzahlendateien gepackt.+href *= *"([^"]+\.zip[^"]*)"/sU', $content, $zipMatches); - + /** * There is an unresolved bug, that doesn't allow to uncompress * the zip archive. Zip support is disabled until it's repaired. - * + * * @see http://sourceforge.net/forum/message.php?msg_id=7555232 * TODO enable Zip support */ $isZIP = false; - + if (! ($isTXT || $isZIP)) { throw new BAV_DataBackendException("Could not find a file."); - + } - + $temp = tempnam(self::getTempdir(), "BAV_"); $tempH = fopen($temp, 'w'); if (! ($temp && $tempH)) { throw new BAV_DataBackendException_IO(); - + } $path = $isZIP ? $zipMatches[1] : $txtMatches[1]; if (strlen($path) > 0 && $path{0} != "/") { $path = sprintf("/%s/%s", dirname(self::DOWNLOAD_URI), $path); - + } $pathParts = explode('/', $path); foreach ($pathParts as $i => $part) { @@ -185,7 +185,7 @@ public function update() case '..': unset($pathParts[$i-1]); // fall-through as the current part ("..") should be removed as well. - + case '.': unset($pathParts[$i]); break; @@ -195,14 +195,14 @@ public function update() $path = implode('/', $pathParts); $urlParts = parse_url(self::DOWNLOAD_URI); $url = sprintf("%s://%s%s", $urlParts["scheme"], $urlParts["host"], $path); - + curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FILE, $tempH); if (! curl_exec($ch)) { fclose($tempH); unlink($temp); throw new BAV_DataBackendException_IO(curl_error($ch), curl_errno($ch)); - + } fclose($tempH); curl_close($ch); @@ -212,18 +212,18 @@ public function update() if (! $file) { unlink($temp); throw new BAV_DataBackendException_IO(); - + } system('unzip -qqp '.$temp.' > '.$file, $error); if (! unlink($temp) || $error !== 0) { unlink($file); throw new BAV_DataBackendException_IO(); - + } - + } else { $file = $temp; - + } // blz_20100308.txt is not sorted. @@ -291,7 +291,7 @@ public function getAllBanks() for ($i = 0; $i < $this->parser->getLines(); $i++) { if (isset($this->instances[$this->parser->getBankID($i)])) { continue; - + } $line = $this->parser->readLine($i); $bank = $this->parser->getBank($this, $line); @@ -299,13 +299,13 @@ public function getAllBanks() $this->contextCache[$bank->getBankID()] = new BAV_FileParserContext($i); } return array_values($this->instances); - + } catch (BAV_FileParserException_IO $e) { throw new BAV_DataBackendException_IO(); - + } catch (BAV_FileParserException $e) { throw new BAV_DataBackendException(); - + } } @@ -330,15 +330,15 @@ public function getNewBank($bankID) $this->contextCache[$bankID]->getLine(), $this->contextCache[$bankID]->getLine() ); - + } else { return $this->findBank($bankID, 0, $this->parser->getLines()); - + } - + } catch (BAV_FileParserException $e) { throw new BAV_DataBackendException_IO(); - + } } @@ -355,37 +355,37 @@ private function findBank($bankID, $offset, $end) { if ($end - $offset < 0) { throw new BAV_DataBackendException_BankNotFound($bankID); - + } $line = $offset + (int)(($end - $offset) / 2); $blz = $this->parser->getBankID($line); - + /** * This handling is bad, as it may double the work */ if ($blz == '00000000') { try { return $this->findBank($bankID, $offset, $line - 1); - + } catch (BAV_DataBackendException_BankNotFound $e) { return $this->findBank($bankID, $line + 1, $end); - + } - + } elseif (! isset($this->contextCache[$blz])) { $this->contextCache[$blz] = new BAV_FileParserContext($line); } - + if ($blz < $bankID) { return $this->findBank($bankID, $line + 1, $end); - + } elseif ($blz > $bankID) { return $this->findBank($bankID, $offset, $line - 1); - + } else { return $this->parser->getBank($this, $this->parser->readLine($line)); - + } } @@ -403,21 +403,21 @@ public function getMainAgency(BAV_Bank $bank) $content = $this->parser->readLine($line); if ($this->parser->isMainAgency($content)) { return $this->parser->getAgency($bank, $content); - + } } // Maybe there are banks without a main agency throw new BAV_DataBackendException_NoMainAgency($bank); - + } catch (BAV_FileParserContextException_Undefined $e) { throw new LogicException("Start and end should be defined."); - + } catch (BAV_FileParserException_IO $e) { throw new BAV_DataBackendException_IO("Parser Exception at bank {$bank->getBankID()}"); - + } catch (BAV_FileParserException_ParseError $e) { throw new BAV_DataBackendException(get_class($e) . ": " . $e->getMessage()); - + } } @@ -436,23 +436,23 @@ public function getAgencies(BAV_Bank $bank) $content = $this->parser->readLine($line); if (! $this->parser->isMainAgency($content)) { $agencies[] = $this->parser->getAgency($bank, $content); - + } } return $agencies; - + } catch (BAV_FileParserContextException_Undefined $e) { throw new LogicException("Start and end should be defined."); - + } catch (BAV_FileParserException_IO $e) { throw new BAV_DataBackendException_IO(); - + } catch (BAV_FileParserException_ParseError $e) { throw new BAV_DataBackendException(); - + } } - + /** * @return BAV_FileParserContext */ @@ -470,11 +470,11 @@ private function defineContextInterval($bankID) for ($start = $context->getLine() - 1; $start >= 0; $start--) { if ($this->parser->getBankID($start) != $bankID) { break; - + } } $context->setStart($start + 1); - + } /** * Find end @@ -483,15 +483,15 @@ private function defineContextInterval($bankID) for ($end = $context->getLine() + 1; $end <= $this->parser->getLines(); $end++) { if ($this->parser->getBankID($end) != $bankID) { break; - + } } $context->setEnd($end - 1); - + } return $context; } - + /** * @throws BAV_DataBackendException_IO * @return String a writable directory for temporary files @@ -506,22 +506,22 @@ function_exists('sys_get_temp_dir') ? sys_get_temp_dir() : false, ini_get('upload_tmp_dir'), '/tmp' ); - + foreach ($tmpDirs as $tmpDir) { if ($tmpDir && is_writable($tmpDir)) { return realpath($tmpDir); - + } - + } - + $tempfile = tempnam(uniqid(mt_rand(), true), ''); if (file_exists($tempfile)) { unlink($tempfile); return realpath(dirname($tempfile)); - + } - + throw new BAV_DataBackendException_IO(); } } diff --git a/classes/dataBackend/BAV_DataBackend_PDO.php b/classes/dataBackend/BAV_DataBackend_PDO.php index 603e6444..219df967 100644 --- a/classes/dataBackend/BAV_DataBackend_PDO.php +++ b/classes/dataBackend/BAV_DataBackend_PDO.php @@ -108,7 +108,7 @@ public function getAgencies($sql) try { $this->prepareStatements(); $agencies = array(); - + foreach ($this->pdo->query($sql) as $result) { if (! $this->isValidAgencyResult($result)) { if (! array_key_exists('id', $result)) { @@ -147,7 +147,7 @@ public function getAgencies($sql) } } - + /** * @throws PDOException */ @@ -156,9 +156,9 @@ private function prepareStatements() if (! is_null($this->selectBank)) { return; } - + $this->selectBank = $this->pdo->prepare("SELECT id, validator FROM {$this->prefix}bank WHERE id = :bankID"); - + $agencyAttributes = "a.id, name, postcode, city, shortTerm AS 'shortTerm', pan, bic"; $this->selectMainAgency = $this->pdo->prepare( @@ -190,7 +190,7 @@ public function update() try { $fileBackend = new BAV_DataBackend_File(tempnam(BAV_DataBackend_File::getTempdir(), 'bav')); $fileBackend->install(); - + $insertBank = $this->pdo->prepare( "INSERT INTO {$this->prefix}bank (id, validator, mainAgency) @@ -204,14 +204,14 @@ public function update() try { $this->pdo->beginTransaction(); $useTA = true; - + } catch (PDOException $e) { trigger_error("Your DBS doesn't support transactions. Your data may be corrupted."); - + } $this->pdo->exec("DELETE FROM {$this->prefix}agency"); $this->pdo->exec("DELETE FROM {$this->prefix}bank"); - + foreach ($fileBackend->getAllBanks() as $bank) { try { $insertBank->execute(array( @@ -232,22 +232,22 @@ public function update() ":pan" => $agency->hasPAN() ? $agency->getPAN() : null, ":bic" => $agency->hasBIC() ? $agency->getBIC() : null )); - + } } catch (BAV_DataBackendException_NoMainAgency $e) { trigger_error( "Skipping bank {$e->getBank()->getBankID()} without any main agency." ); - + } } if ($useTA) { $this->pdo->commit(); $useTA = false; - + } $fileBackend->uninstall(); - + } catch (Exception $e) { try { if ($useTA) { @@ -255,14 +255,14 @@ public function update() } throw $e; - + } catch (PDOException $e2) { throw new BAV_DataBackendException_IO( get_class($e) . ": {$e->getMessage()}\nadditionally: {$e2->getMessage()}" ); - + } - + } } @@ -275,18 +275,18 @@ public function install() try { $createOptions = ''; switch ($this->pdo->getAttribute(PDO::ATTR_DRIVER_NAME)) { - + case 'mysql': $createOptions .= " engine=InnoDB"; break; - + } $this->pdo->exec( "CREATE TABLE {$this->prefix}bank( id int primary key, validator char(2) NOT NULL, mainAgency int NOT NULL - + /* FOREIGN KEY (mainAgency) REFERENCES {$this->prefix}agency(id) */ )$createOptions" ); @@ -300,15 +300,15 @@ public function install() bank int NOT NULL, pan char(".BAV_FileParser::PAN_LENGTH.") NULL, bic varchar(".BAV_FileParser::BIC_LENGTH.") NULL, - + FOREIGN KEY (bank) REFERENCES {$this->prefix}bank(id) )$createOptions" ); $this->update(); - + } catch (PDOException $e) { throw new BAV_DataBackendException_IO($e->getMessage()); - + } } @@ -321,10 +321,10 @@ public function uninstall() try { $this->pdo->exec("DROP TABLE {$this->prefix}bank"); $this->pdo->exec("DROP TABLE {$this->prefix}agency"); - + } catch (PDOException $e) { throw new BAV_DataBackendException_IO(); - + } } @@ -339,17 +339,17 @@ public function getAllBanks() foreach ($this->pdo->query("SELECT id, validator FROM {$this->prefix}bank") as $bankResult) { if (isset($this->instances[$bankResult['id']])) { continue; - + } $bank = $this->getBankObject($bankResult); $this->instances[$bank->getBankID()] = $bank; - + } return array_values($this->instances); - + } catch (PDOException $e) { throw new BAV_DataBackendException_IO(); - + } catch (BAV_DataBackendException_IO_MissingAttributes $e) { $this->selectBank->closeCursor(); throw new LogicException($e); @@ -373,15 +373,15 @@ protected function getNewBank($bankID) if ($result === false) { $this->selectBank->closeCursor(); throw new BAV_DataBackendException_BankNotFound($bankID); - + } $this->selectBank->closeCursor(); return $this->getBankObject($result); - + } catch (PDOException $e) { $this->selectBank->closeCursor(); throw new BAV_DataBackendException_IO(); - + } catch (BAV_DataBackendException_IO_MissingAttributes $e) { $this->selectBank->closeCursor(); throw new LogicException($e); diff --git a/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php b/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php index f6c52704..fa1460bd 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php +++ b/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php @@ -30,7 +30,7 @@ class BAV_DataBackendException_BankNotFound extends BAV_DataBackendException * @var string */ private $bankID; - + public function __construct($bankID) { parent::__construct("bank $bankID not found"); diff --git a/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php b/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php index f5d33ddf..eff1c7f6 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php +++ b/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php @@ -30,13 +30,13 @@ class BAV_DataBackendException_NoMainAgency extends BAV_DataBackendException * @var BAV_Bank */ private $bank; - + public function __construct(BAV_Bank $bank) { parent::__construct("bank {$bank->getBankID()} has no main agency."); $this->bank = $bank; } - + /** * @return BAV_Bank */ diff --git a/classes/dataBackend/fileParser/BAV_FileParser.php b/classes/dataBackend/fileParser/BAV_FileParser.php index 2027e59f..8303673f 100644 --- a/classes/dataBackend/fileParser/BAV_FileParser.php +++ b/classes/dataBackend/fileParser/BAV_FileParser.php @@ -37,7 +37,7 @@ class BAV_FileParser extends BAV { - + const FILE_ENCODING = 'ISO-8859-15'; const BANKID_OFFSET = 0; const BANKID_LENGTH = 8; @@ -59,8 +59,8 @@ class BAV_FileParser extends BAV const TYPE_LENGTH = 2; const ID_OFFSET = 152; const ID_LENGTH = 6; - - + + private /** * @var resource @@ -78,8 +78,8 @@ class BAV_FileParser extends BAV * @var int */ $lineLength = 0; - - + + /** * @param String $file The data source */ @@ -97,36 +97,36 @@ private function init() { if (is_resource($this->fp)) { return; - + } $this->fp = @fopen($this->file, 'r'); if (! is_resource($this->fp)) { if (! file_exists($this->file)) { throw new BAV_FileParserException_FileNotExists($this->file); - + } else { throw new BAV_FileParserException_IO(); - + } - + } - - + + $dummyLine = fgets($this->fp, 1024); if (! $dummyLine) { throw new BAV_FileParserException_IO(); - + } $this->lineLength = strlen($dummyLine); - + clearstatcache(); // filesize() seems to be 0 sometimes $filesize = filesize($this->file); if (! $filesize) { throw new BAV_FileParserException_IO( "Could not read filesize for '$this->file'." ); - - } + + } $this->lines = floor(($filesize - 1) / $this->lineLength); } /** @@ -147,7 +147,7 @@ public function rewind() { if (fseek($this->getFileHandle(), 0) === -1) { throw new BAV_FileParserException_IO(); - + } } /** @@ -160,7 +160,7 @@ public function seekLine($line, $offset = 0) { if (fseek($this->getFileHandle(), $line * $this->lineLength + $offset) === -1) { throw new BAV_FileParserException_IO(); - + } } /** @@ -223,7 +223,7 @@ public function getBank(BAV_DataBackend $dataBackend, $line) { if (self::$encoding->strlen($line) < self::TYPE_OFFSET + self::TYPE_LENGTH) { throw new BAV_FileParserException_ParseError("Invalid line length in Line $line."); - + } $type = self::$encoding->substr($line, self::TYPE_OFFSET, self::TYPE_LENGTH); $bankID = self::$encoding->substr($line, self::BANKID_OFFSET, self::BANKID_LENGTH); @@ -238,7 +238,7 @@ public function getAgency(BAV_Bank $bank, $line) { if (self::$encoding->strlen($line) < self::ID_OFFSET + self::ID_LENGTH) { throw new BAV_FileParserException_ParseError("Invalid line length."); - + } $id = trim(self::$encoding->substr($line, self::ID_OFFSET, self::ID_LENGTH)); $name = trim(self::$encoding->substr($line, self::NAME_OFFSET, self::NAME_LENGTH)); @@ -258,7 +258,7 @@ public function isMainAgency($line) { if (self::$encoding->strlen($line) < self::TYPE_OFFSET + self::TYPE_LENGTH) { throw new BAV_FileParserException_ParseError("Invalid line length."); - + } return self::$encoding->substr($line, self::ISMAIN_OFFSET, 1) === '1'; } @@ -269,7 +269,7 @@ public function getFile() { return $this->file; } - + } diff --git a/classes/dataBackend/fileParser/BAV_FileParserContext.php b/classes/dataBackend/fileParser/BAV_FileParserContext.php index 9bac6904..ab9929bc 100644 --- a/classes/dataBackend/fileParser/BAV_FileParserContext.php +++ b/classes/dataBackend/fileParser/BAV_FileParserContext.php @@ -47,8 +47,8 @@ class BAV_FileParserContext extends BAV * @var int the last line of the context */ $end = null; - - + + /** * @param string $bankID * @param int $line @@ -72,7 +72,7 @@ public function getStart() { if (is_null($this->start)) { throw new BAV_FileParserContextException_Undefined(); - + } return $this->start; } @@ -91,7 +91,7 @@ public function getEnd() { if (is_null($this->end)) { throw new BAV_FileParserContextException_Undefined(); - + } return $this->end; } diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php b/classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php index 190820a3..9804d07b 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php @@ -34,8 +34,8 @@ class BAV_FileParserException_FileNotExists extends BAV_FileParserException * @var string */ $parsedFile = ''; - - + + /** * @param string $file */ diff --git a/classes/encoding/BAV_Encoding.php b/classes/encoding/BAV_Encoding.php index 02fcfd46..493a670f 100644 --- a/classes/encoding/BAV_Encoding.php +++ b/classes/encoding/BAV_Encoding.php @@ -51,7 +51,7 @@ public function __construct($encoding = 'UTF-8') { if (! $this->isSupported($encoding)) { throw new BAV_EncodingException_Unsupported($encoding); - + } $this->enc = $encoding; } @@ -90,13 +90,13 @@ public static function getInstance($encoding) { if (BAV_Encoding_Iconv::isSupported($encoding)) { return new BAV_Encoding_Iconv($encoding); - + } elseif (BAV_Encoding_MB::isSupported($encoding)) { return new BAV_Encoding_MB($encoding); - + } elseif (BAV_Encoding_ISO8859::isSupported($encoding)) { return new BAV_Encoding_ISO8859($encoding); - + } else { throw new BAV_EncodingException_Unsupported($encoding); diff --git a/classes/encoding/BAV_Encoding_ISO8859.php b/classes/encoding/BAV_Encoding_ISO8859.php index 04dfabf2..ceb2648c 100644 --- a/classes/encoding/BAV_Encoding_ISO8859.php +++ b/classes/encoding/BAV_Encoding_ISO8859.php @@ -68,7 +68,7 @@ public function convert($string, $from_encoding) { if ($from_encoding == $this->enc) { return $string; - + } throw new BAV_EncodingException(); } diff --git a/classes/encoding/BAV_Encoding_Iconv.php b/classes/encoding/BAV_Encoding_Iconv.php index 2361972d..6c3f7c8d 100644 --- a/classes/encoding/BAV_Encoding_Iconv.php +++ b/classes/encoding/BAV_Encoding_Iconv.php @@ -81,7 +81,7 @@ public function convert($string, $from_encoding) $encoded = iconv($from_encoding, $this->enc, $string); if ($encoded === false) { throw new BAV_EncodingException(); - + } return $encoded; } diff --git a/classes/encoding/exception/BAV_EncodingException_Unsupported.php b/classes/encoding/exception/BAV_EncodingException_Unsupported.php index 64d4b3de..9cbb2db5 100644 --- a/classes/encoding/exception/BAV_EncodingException_Unsupported.php +++ b/classes/encoding/exception/BAV_EncodingException_Unsupported.php @@ -34,12 +34,12 @@ class BAV_EncodingException_Unsupported extends BAV_EncodingException * @var String */ $encoding = ''; - - + + public function __construct($encoding) { parent::__construct(); - + $this->encoding = $encoding; } /** diff --git a/classes/validator/BAV_Validator.php b/classes/validator/BAV_Validator.php index 49caa8c9..06e38399 100644 --- a/classes/validator/BAV_Validator.php +++ b/classes/validator/BAV_Validator.php @@ -81,8 +81,8 @@ public static function getInstance(BAV_Bank $bank) require_once $file; return new $class($bank); } - - + + /** * @param string $account * @return bool @@ -93,14 +93,14 @@ public function isValid($account) $this->init($account); $this->validate(); return ltrim($account, "0") != "" && $this->getResult(); - + } catch (BAV_ValidatorException_OutOfBounds $e) { return false; - + } } - - + + public function setChecknumberPosition($position) { $this->checknumberPosition = $position; @@ -117,7 +117,7 @@ protected function init($account) $this->account = $account; if ($this->doNormalization) { $this->normalizeAccount($this->normalizedSize); - + } } abstract protected function validate(); @@ -125,8 +125,8 @@ abstract protected function validate(); * @return bool */ abstract protected function getResult(); - - + + /** * @return string */ @@ -145,17 +145,17 @@ protected function getNormalizedPosition($pos) { if ($pos >= strlen($this->account) || $pos < -strlen($this->account)) { throw new BAV_ValidatorException_OutOfBounds("Cannot access offset $pos in String $this->account"); - + } - + if ($pos >= 0) { return $pos; } return strlen($this->account) + $pos; } - - + + /** * Some validators need this * @@ -173,8 +173,8 @@ protected function crossSum($int) } return $sum; } - - + + /** * @throws BAV_ValidatorException_OutOfBounds * @param int $int @@ -195,7 +195,7 @@ protected function normalizeAccount($size) protected function getESER8() { $account = ltrim($this->account, '0'); - + if (strlen($account) != 8) { throw new BAV_ValidatorException_ESER(); @@ -206,9 +206,9 @@ protected function getESER8() } $blzPart = ltrim(substr($bankID, 4), '0'); - + $this->eserChecknumberOffset = -(4 - strlen($blzPart)); - + if (empty($blzPart)) { throw new BAV_ValidatorException_ESER(); @@ -259,7 +259,7 @@ protected function getEserChecknumber() protected function isBetween($a, $b) { $account = (int) ltrim($this->account, '0'); - + return $a < $b ? $account >= $a && $account <= $b : $account >= $b && $account <= $a; diff --git a/classes/validator/BAV_Validator_BankDependent.php b/classes/validator/BAV_Validator_BankDependent.php index 8718459b..3ab32e62 100644 --- a/classes/validator/BAV_Validator_BankDependent.php +++ b/classes/validator/BAV_Validator_BankDependent.php @@ -2,7 +2,7 @@ /** * This interfaces marks validators which depend on the bank. - * + * * Copyright (C) 2009 Markus Malkusch * * This program is free software; you can redistribute it and/or modify @@ -26,7 +26,7 @@ * @copyright Copyright (C) 2009 Markus Malkusch */ interface BAV_Validator_BankDependent { - + } diff --git a/classes/validator/BAV_Validator_Chain.php b/classes/validator/BAV_Validator_Chain.php index 64ba1a4d..ae2b352c 100644 --- a/classes/validator/BAV_Validator_Chain.php +++ b/classes/validator/BAV_Validator_Chain.php @@ -64,13 +64,13 @@ protected function getResult() foreach ($this->validators as $validator) { if (! $this->continueValidation($validator)) { return false; - + } if ($this->useValidator($validator) && $validator->isValid($this->account)) { return true; - + } - + } return false; } @@ -99,7 +99,7 @@ protected function useValidator(BAV_Validator $validator) { return true; } - + } diff --git a/classes/validator/BAV_Validator_Iteration.php b/classes/validator/BAV_Validator_Iteration.php index b7dc76ba..54378df0 100644 --- a/classes/validator/BAV_Validator_Iteration.php +++ b/classes/validator/BAV_Validator_Iteration.php @@ -46,8 +46,8 @@ abstract class BAV_Validator_Iteration extends BAV_Validator * @var int an accumulator for the iteration */ $accumulator = 0; - - + + private /** * @var int The inclusive beginning point of the iteration @@ -62,7 +62,7 @@ abstract class BAV_Validator_Iteration extends BAV_Validator public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setStart(-2); $this->setEnd(0); } @@ -94,11 +94,11 @@ protected function validate() $start = $this->getNormalizedPosition($this->start); $end = $this->getNormalizedPosition($this->end); $length = abs($end - $start) + 1; - + $this->position = $start; $stepping = (($end - $start < 0) ? -1 : +1); - - + + for ($this->i = 0; $this->i < $length; $this->i++) { $this->number = (int)$this->account{$this->position}; $this->iterationStep(); diff --git a/classes/validator/BAV_Validator_Iteration_Transformation.php b/classes/validator/BAV_Validator_Iteration_Transformation.php index 70c7061e..5c17e8d4 100644 --- a/classes/validator/BAV_Validator_Iteration_Transformation.php +++ b/classes/validator/BAV_Validator_Iteration_Transformation.php @@ -38,8 +38,8 @@ abstract class BAV_Validator_Iteration_Transformation extends BAV_Validator_Iter * @var Array */ $matrix = array(); - - + + /** * The iteration step */ @@ -55,9 +55,9 @@ public function setMatrix(Array $matrix) if (empty($this->rowIteration)) { for ($i = 0; $i < count($matrix); $i++) { $this->rowIteration[] = $i; - + } - + } } /** diff --git a/classes/validator/BAV_Validator_Iteration_Weighted.php b/classes/validator/BAV_Validator_Iteration_Weighted.php index e3626e1d..9ea4f129 100644 --- a/classes/validator/BAV_Validator_Iteration_Weighted.php +++ b/classes/validator/BAV_Validator_Iteration_Weighted.php @@ -34,23 +34,23 @@ abstract class BAV_Validator_Iteration_Weighted extends BAV_Validator_Iteration * @var int */ $divisor = 0; - - + + private /** * @var Array an array of rotating weights */ $weights = array(); - - + + /** */ public function setWeights(Array $weights) { $this->weights = $weights; } - - + + /** * @param int $divisor */ @@ -58,8 +58,8 @@ public function setDivisor($divisor) { $this->divisor = $divisor; } - - + + /** * @return int */ diff --git a/classes/validator/exception/BAV_ValidatorException_NotExists.php b/classes/validator/exception/BAV_ValidatorException_NotExists.php index 947ea21c..492a4195 100644 --- a/classes/validator/exception/BAV_ValidatorException_NotExists.php +++ b/classes/validator/exception/BAV_ValidatorException_NotExists.php @@ -35,8 +35,8 @@ class BAV_ValidatorException_NotExists extends BAV_ValidatorException * @var BAV_Bank */ $bank; - - + + public function __construct(BAV_Bank $bank) { $this->bank = $bank; diff --git a/classes/validator/validators/BAV_Validator_00.php b/classes/validator/validators/BAV_Validator_00.php index ee51b5b1..f78a5d89 100644 --- a/classes/validator/validators/BAV_Validator_00.php +++ b/classes/validator/validators/BAV_Validator_00.php @@ -31,7 +31,7 @@ class BAV_Validator_00 extends BAV_Validator_Iteration_Weighted public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(2, 1)); $this->setDivisor(10); } diff --git a/classes/validator/validators/BAV_Validator_08.php b/classes/validator/validators/BAV_Validator_08.php index 042fd7f8..1c36ffff 100644 --- a/classes/validator/validators/BAV_Validator_08.php +++ b/classes/validator/validators/BAV_Validator_08.php @@ -34,8 +34,8 @@ public function __construct(BAV_Bank $bank) $this->setWeights(array(2, 1)); } - - + + protected function getResult() { return ((int)$this->account<= 60000) diff --git a/classes/validator/validators/BAV_Validator_11.php b/classes/validator/validators/BAV_Validator_11.php index a8b141ab..001fafed 100644 --- a/classes/validator/validators/BAV_Validator_11.php +++ b/classes/validator/validators/BAV_Validator_11.php @@ -34,8 +34,8 @@ public function __construct(BAV_Bank $bank) $this->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 10)); } - - + + protected function getResult() { $result = 11 - $this->accumulator % 11; diff --git a/classes/validator/validators/BAV_Validator_13.php b/classes/validator/validators/BAV_Validator_13.php index 9d4b1561..d666e35c 100644 --- a/classes/validator/validators/BAV_Validator_13.php +++ b/classes/validator/validators/BAV_Validator_13.php @@ -31,14 +31,14 @@ class BAV_Validator_13 extends BAV_Validator_00 public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(2, 1)); $this->setStart(6); $this->setEnd(1); $this->setChecknumberPosition(7); } - - + + /** * @param string $account * @return bool @@ -47,7 +47,7 @@ public function isValid($account) { if (parent::isValid($account)) { return true; - + } $account = ltrim($account, '0') . '00'; return strlen($account) <= $this->normalizedSize diff --git a/classes/validator/validators/BAV_Validator_14.php b/classes/validator/validators/BAV_Validator_14.php index 99a8b6b8..c5e62e2f 100644 --- a/classes/validator/validators/BAV_Validator_14.php +++ b/classes/validator/validators/BAV_Validator_14.php @@ -31,7 +31,7 @@ class BAV_Validator_14 extends BAV_Validator_02 public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(2, 3, 4, 5, 6, 7)); $this->setStart(-2); $this->setEnd(3); diff --git a/classes/validator/validators/BAV_Validator_15.php b/classes/validator/validators/BAV_Validator_15.php index ce712c47..ff8d8b01 100644 --- a/classes/validator/validators/BAV_Validator_15.php +++ b/classes/validator/validators/BAV_Validator_15.php @@ -31,7 +31,7 @@ class BAV_Validator_15 extends BAV_Validator_06 public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(2, 3, 4, 5)); $this->setStart(-2); $this->setEnd(5); diff --git a/classes/validator/validators/BAV_Validator_16.php b/classes/validator/validators/BAV_Validator_16.php index b040b5bf..169360c3 100644 --- a/classes/validator/validators/BAV_Validator_16.php +++ b/classes/validator/validators/BAV_Validator_16.php @@ -31,11 +31,11 @@ class BAV_Validator_16 extends BAV_Validator_06 public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(2, 3, 4, 5, 6, 7)); } - - + + protected function getResult() { return $this->accumulator % 11 === 1 diff --git a/classes/validator/validators/BAV_Validator_17.php b/classes/validator/validators/BAV_Validator_17.php index d84b7b08..07ff81cc 100644 --- a/classes/validator/validators/BAV_Validator_17.php +++ b/classes/validator/validators/BAV_Validator_17.php @@ -31,7 +31,7 @@ class BAV_Validator_17 extends BAV_Validator_Iteration_Weighted public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(1, 2)); $this->setStart(1); $this->setEnd(6); diff --git a/classes/validator/validators/BAV_Validator_21.php b/classes/validator/validators/BAV_Validator_21.php index 8b883997..ce11f4e9 100644 --- a/classes/validator/validators/BAV_Validator_21.php +++ b/classes/validator/validators/BAV_Validator_21.php @@ -34,8 +34,8 @@ public function __construct(BAV_Bank $bank) $this->setWeights(array(2, 1)); } - - + + protected function getResult() { for ($result = $this->accumulator; $result >= 10; $result = $this->crossSum($result)); diff --git a/classes/validator/validators/BAV_Validator_22.php b/classes/validator/validators/BAV_Validator_22.php index 13229b3f..56f4b449 100644 --- a/classes/validator/validators/BAV_Validator_22.php +++ b/classes/validator/validators/BAV_Validator_22.php @@ -31,7 +31,7 @@ class BAV_Validator_22 extends BAV_Validator_Iteration_Weighted public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(3, 1)); } diff --git a/classes/validator/validators/BAV_Validator_24.php b/classes/validator/validators/BAV_Validator_24.php index e70807f5..6915a0d6 100644 --- a/classes/validator/validators/BAV_Validator_24.php +++ b/classes/validator/validators/BAV_Validator_24.php @@ -31,17 +31,17 @@ class BAV_Validator_24 extends BAV_Validator_Iteration_Weighted public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(1, 2, 3)); $this->setStart(0); $this->setEnd(-2); } - - + + protected function init($account) { parent::init($account); - + $this->account = preg_replace('~^([3456]|9..)?0*~', '', $this->account); } diff --git a/classes/validator/validators/BAV_Validator_25.php b/classes/validator/validators/BAV_Validator_25.php index f617dfe6..60efc35a 100644 --- a/classes/validator/validators/BAV_Validator_25.php +++ b/classes/validator/validators/BAV_Validator_25.php @@ -31,22 +31,22 @@ class BAV_Validator_25 extends BAV_Validator_Iteration_Weighted public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9)); } - - + + protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - - + + protected function getResult() { $result = 11 - ($this->accumulator % 11); switch ($result) { - + case 10: $result = 0; if ($this->account{1} != 8 && $this->account{1} != 9) { @@ -54,12 +54,12 @@ protected function getResult() } break; - + case 11: $result = 0; break; - - + + } return (string)$result === $this->getCheckNumber(); } diff --git a/classes/validator/validators/BAV_Validator_26.php b/classes/validator/validators/BAV_Validator_26.php index 2812796c..a6d990b1 100644 --- a/classes/validator/validators/BAV_Validator_26.php +++ b/classes/validator/validators/BAV_Validator_26.php @@ -37,12 +37,12 @@ public function __construct(BAV_Bank $bank) $this->setEnd(0); $this->setChecknumberPosition(7); } - - + + protected function init($account) { parent::init($account); - + if (substr($this->account, 0, 2) === '00') { $this->account = substr($this->account, 2).'00'; diff --git a/classes/validator/validators/BAV_Validator_27.php b/classes/validator/validators/BAV_Validator_27.php index 0da77f79..609726aa 100644 --- a/classes/validator/validators/BAV_Validator_27.php +++ b/classes/validator/validators/BAV_Validator_27.php @@ -34,14 +34,14 @@ class BAV_Validator_27 extends BAV_Validator_Iteration_Transformation * @var BAV_Validator_00 */ $validator00; - - + + public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->validator00 = new BAV_Validator_00($bank); - + $this->setMatrix(array( array(0,1,5,9,3,7,4,8,2,6), array(0,1,7,6,9,8,3,2,5,4), diff --git a/classes/validator/validators/BAV_Validator_28.php b/classes/validator/validators/BAV_Validator_28.php index 56644d6d..8d1fb90a 100644 --- a/classes/validator/validators/BAV_Validator_28.php +++ b/classes/validator/validators/BAV_Validator_28.php @@ -31,7 +31,7 @@ class BAV_Validator_28 extends BAV_Validator_06 public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(2, 3, 4, 5, 6, 7, 8)); $this->setStart(-4); $this->setEnd(0); diff --git a/classes/validator/validators/BAV_Validator_29.php b/classes/validator/validators/BAV_Validator_29.php index 6bdf8c1f..f6b0b186 100644 --- a/classes/validator/validators/BAV_Validator_29.php +++ b/classes/validator/validators/BAV_Validator_29.php @@ -31,7 +31,7 @@ class BAV_Validator_29 extends BAV_Validator_Iteration_Transformation public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setMatrix(array( array (0, 1, 5, 9, 3, 7, 4, 8, 2, 6), array (0, 1, 7, 6, 9, 8, 3, 2, 5, 4), diff --git a/classes/validator/validators/BAV_Validator_30.php b/classes/validator/validators/BAV_Validator_30.php index 27eaf26d..cb47b7d0 100644 --- a/classes/validator/validators/BAV_Validator_30.php +++ b/classes/validator/validators/BAV_Validator_30.php @@ -36,8 +36,8 @@ public function __construct(BAV_Bank $bank) $this->setStart(0); $this->setEnd(-2); } - - + + protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); diff --git a/classes/validator/validators/BAV_Validator_31.php b/classes/validator/validators/BAV_Validator_31.php index 06a3f721..f25fa687 100644 --- a/classes/validator/validators/BAV_Validator_31.php +++ b/classes/validator/validators/BAV_Validator_31.php @@ -31,7 +31,7 @@ class BAV_Validator_31 extends BAV_Validator_Iteration_Weighted public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(9, 8, 7, 6, 5, 4, 3, 2, 1)); } @@ -47,10 +47,10 @@ protected function getResult() $result = $this->accumulator % 11; if ($result == 11) { $result = 0; - + } elseif ($result == 10) { return false; - + } return (string)$result === $this->getCheckNumber(); } diff --git a/classes/validator/validators/BAV_Validator_35.php b/classes/validator/validators/BAV_Validator_35.php index b00db73b..4585eaa4 100644 --- a/classes/validator/validators/BAV_Validator_35.php +++ b/classes/validator/validators/BAV_Validator_35.php @@ -47,7 +47,7 @@ protected function getResult() $result = $this->accumulator % 11; if ($result === 10) { return $this->account{9} === $this->account{8}; - + } return (string)$result === $this->getCheckNumber(); } diff --git a/classes/validator/validators/BAV_Validator_41.php b/classes/validator/validators/BAV_Validator_41.php index a2655e96..bd2acfe1 100644 --- a/classes/validator/validators/BAV_Validator_41.php +++ b/classes/validator/validators/BAV_Validator_41.php @@ -34,18 +34,18 @@ public function __construct(BAV_Bank $bank) $this->setWeights(array(2, 1)); } - - + + protected function init($account) { parent::init($account); - + if ($this->account{3} == 9) { $this->setEnd(3); - + } else { $this->setEnd(0); - + } } diff --git a/classes/validator/validators/BAV_Validator_43.php b/classes/validator/validators/BAV_Validator_43.php index f966e733..e538644f 100644 --- a/classes/validator/validators/BAV_Validator_43.php +++ b/classes/validator/validators/BAV_Validator_43.php @@ -31,7 +31,7 @@ class BAV_Validator_43 extends BAV_Validator_Iteration_Weighted public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(1, 2, 3, 4, 5, 6, 7, 8, 9)); } diff --git a/classes/validator/validators/BAV_Validator_44.php b/classes/validator/validators/BAV_Validator_44.php index c3a2c4c4..8b33de87 100644 --- a/classes/validator/validators/BAV_Validator_44.php +++ b/classes/validator/validators/BAV_Validator_44.php @@ -31,7 +31,7 @@ class BAV_Validator_44 extends BAV_Validator_33 public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(2, 4, 8, 5, 10, 0, 0, 0, 0)); } diff --git a/classes/validator/validators/BAV_Validator_45.php b/classes/validator/validators/BAV_Validator_45.php index 117edf03..a1318750 100644 --- a/classes/validator/validators/BAV_Validator_45.php +++ b/classes/validator/validators/BAV_Validator_45.php @@ -31,7 +31,7 @@ class BAV_Validator_45 extends BAV_Validator_00 public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(2, 1)); } /** diff --git a/classes/validator/validators/BAV_Validator_46.php b/classes/validator/validators/BAV_Validator_46.php index ea8062cc..1ba346ee 100644 --- a/classes/validator/validators/BAV_Validator_46.php +++ b/classes/validator/validators/BAV_Validator_46.php @@ -31,7 +31,7 @@ class BAV_Validator_46 extends BAV_Validator_06 public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(2, 3, 4, 5, 6)); $this->setStart(-4); $this->setEnd(2); diff --git a/classes/validator/validators/BAV_Validator_47.php b/classes/validator/validators/BAV_Validator_47.php index 8582a518..9b978715 100644 --- a/classes/validator/validators/BAV_Validator_47.php +++ b/classes/validator/validators/BAV_Validator_47.php @@ -31,7 +31,7 @@ class BAV_Validator_47 extends BAV_Validator_06 public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(2, 3, 4, 5, 6)); $this->setStart(-3); $this->setEnd(3); diff --git a/classes/validator/validators/BAV_Validator_48.php b/classes/validator/validators/BAV_Validator_48.php index a20355ce..5ca1def3 100644 --- a/classes/validator/validators/BAV_Validator_48.php +++ b/classes/validator/validators/BAV_Validator_48.php @@ -31,7 +31,7 @@ class BAV_Validator_48 extends BAV_Validator_06 public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(2, 3, 4, 5, 6, 7)); $this->setStart(-3); $this->setEnd(2); diff --git a/classes/validator/validators/BAV_Validator_49.php b/classes/validator/validators/BAV_Validator_49.php index a8fc3130..cfea623a 100644 --- a/classes/validator/validators/BAV_Validator_49.php +++ b/classes/validator/validators/BAV_Validator_49.php @@ -39,7 +39,7 @@ class BAV_Validator_49 extends BAV_Validator_Chain public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->validators[] = new BAV_Validator_00($bank); $this->validators[] = new BAV_Validator_01($bank); } diff --git a/classes/validator/validators/BAV_Validator_50.php b/classes/validator/validators/BAV_Validator_50.php index 9f70c8dd..ef919eff 100644 --- a/classes/validator/validators/BAV_Validator_50.php +++ b/classes/validator/validators/BAV_Validator_50.php @@ -32,7 +32,7 @@ public function isValid($account) { if (parent::isValid($account)) { return true; - + } $account = ltrim($account, '0') . '000'; return strlen($account) <= $this->normalizedSize @@ -43,7 +43,7 @@ public function isValid($account) public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(2, 3, 4, 5, 6, 7)); $this->setStart(-5); $this->setEnd(0); diff --git a/classes/validator/validators/BAV_Validator_51.php b/classes/validator/validators/BAV_Validator_51.php index 72e97190..9bc0f371 100644 --- a/classes/validator/validators/BAV_Validator_51.php +++ b/classes/validator/validators/BAV_Validator_51.php @@ -48,25 +48,25 @@ class BAV_Validator_51 extends BAV_Validator_Chain * @var BAV_Validator_33 */ $validatorD; - - + + public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->defaultValidators[0] = new BAV_Validator_06($this->bank); $this->defaultValidators[0]->setWeights(array(2, 3, 4, 5, 6, 7)); $this->defaultValidators[0]->setEnd(3); - + $this->defaultValidators[1] = new BAV_Validator_33($this->bank); $this->defaultValidators[1]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators[1]->setEnd(4); - + $this->defaultValidators[2] = new BAV_Validator_00($this->bank); $this->defaultValidators[2]->setWeights(array(2, 1)); $this->defaultValidators[2]->setEnd(3); $this->defaultValidators[2]->setDivisor(10); - + $this->validatorD = new BAV_Validator_33($this->bank); $this->defaultValidators[3] = $this->validatorD; $this->defaultValidators[3]->setWeights(array(2, 3, 4, 5, 6)); @@ -75,8 +75,8 @@ public function __construct(BAV_Bank $bank) $this->exceptionValidators = self::getExceptionValidators($bank); } - - + + /** * @return array */ @@ -85,10 +85,10 @@ public static function getExceptionValidators(BAV_Bank $bank) $exceptionValidators = array(); $exceptionValidators[] = new BAV_Validator_51x($bank); $exceptionValidators[] = new BAV_Validator_51x($bank); - + $exceptionValidators[1]->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 10)); $exceptionValidators[1]->setEnd(0); - + return $exceptionValidators; } @@ -98,26 +98,26 @@ public static function getExceptionValidators(BAV_Bank $bank) protected function init($account) { parent::init($account); - + $this->validators = $this->account{2} == 9 ? $this->exceptionValidators : $this->defaultValidators; } - - + + protected function continueValidation(BAV_Validator $validator) { if ($validator !== $this->validatorD) { return true; - + } switch ($this->account{9}) { case 7: case 8: case 9: return false; - + default: return true; - + } } diff --git a/classes/validator/validators/BAV_Validator_51x.php b/classes/validator/validators/BAV_Validator_51x.php index 7fc24a52..2748dc92 100644 --- a/classes/validator/validators/BAV_Validator_51x.php +++ b/classes/validator/validators/BAV_Validator_51x.php @@ -31,7 +31,7 @@ class BAV_Validator_51x extends BAV_Validator_Iteration_Weighted public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(2, 3, 4, 5, 6, 7, 8)); $this->setStart(-2); $this->setEnd(2); diff --git a/classes/validator/validators/BAV_Validator_52.php b/classes/validator/validators/BAV_Validator_52.php index 3ed74aa9..b5d75a69 100644 --- a/classes/validator/validators/BAV_Validator_52.php +++ b/classes/validator/validators/BAV_Validator_52.php @@ -45,26 +45,26 @@ class BAV_Validator_52 extends BAV_Validator_Iteration_Weighted implements BAV_V public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4)); $this->setStart(-1); $this->setEnd(0); $this->setChecknumberPosition(5); - + $this->validator20 = new BAV_Validator_20($bank); } - - + + public function isValid($account) { try { return strlen($account) == 10 && $account{0} == 9 ? $this->validator20->isValid($account) : parent::isValid($account); - + } catch (BAV_ValidatorException_ESER $e) { return false; - + } } @@ -73,14 +73,14 @@ protected function iterationStep() { if ($this->position == $this->getEserChecknumberPosition()) { $this->checknumberWeight = $this->getWeight(); - + } else { $this->accumulator += $this->number * $this->getWeight(); - + } } - - + + protected function normalizeAccount($size) { $this->account = $this->getEser8(); diff --git a/classes/validator/validators/BAV_Validator_53.php b/classes/validator/validators/BAV_Validator_53.php index cbe2c126..8d6f997d 100644 --- a/classes/validator/validators/BAV_Validator_53.php +++ b/classes/validator/validators/BAV_Validator_53.php @@ -31,7 +31,7 @@ protected function normalizeAccount($size) { $this->account = $this->getEser9(); } - + } diff --git a/classes/validator/validators/BAV_Validator_54.php b/classes/validator/validators/BAV_Validator_54.php index 09278494..69812f7f 100644 --- a/classes/validator/validators/BAV_Validator_54.php +++ b/classes/validator/validators/BAV_Validator_54.php @@ -31,7 +31,7 @@ class BAV_Validator_54 extends BAV_Validator_Iteration_Weighted public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(2, 3, 4, 5, 6, 7, 2)); $this->setEnd(2); } diff --git a/classes/validator/validators/BAV_Validator_56.php b/classes/validator/validators/BAV_Validator_56.php index df74f5a1..8dd8bb47 100644 --- a/classes/validator/validators/BAV_Validator_56.php +++ b/classes/validator/validators/BAV_Validator_56.php @@ -31,7 +31,7 @@ class BAV_Validator_56 extends BAV_Validator_Iteration_Weighted public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(2, 3, 4, 5, 6, 7)); } @@ -47,7 +47,7 @@ protected function getResult() $result = 11 - ($this->accumulator % 11); if ($this->account{0} == 9 && $result >= 10) { $result -= 3; - + } return (string)$result === $this->getCheckNumber(); } diff --git a/classes/validator/validators/BAV_Validator_57.php b/classes/validator/validators/BAV_Validator_57.php index 16899320..a2605bf2 100644 --- a/classes/validator/validators/BAV_Validator_57.php +++ b/classes/validator/validators/BAV_Validator_57.php @@ -53,22 +53,22 @@ class BAV_Validator_57 extends BAV_Validator public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->validator09 = new BAV_Validator_09($bank); - + $this->mode1 = new BAV_Validator_00($bank); $this->mode1->setWeights(array(1, 2)); $this->mode1->setStart(0); $this->mode1->setEnd(-2); - - + + $this->mode2 = new BAV_Validator_00($bank); $this->mode2->setWeights(array(1, 2, 0, 1, 2, 1, 2, 1, 2, 1)); $this->mode2->setChecknumberPosition(2); $this->mode2->setStart(0); $this->mode2->setEnd(-1); - - + + $this->modeMap = array( 51 => 1, 55 => 1, @@ -80,7 +80,7 @@ public function __construct(BAV_Bank $bank) 88 => 1, 94 => 1, 95 => 1, - + 52 => 2, 53 => 2, 54 => 2, @@ -98,44 +98,44 @@ public function __construct(BAV_Bank $bank) 96 => 2, 97 => 2, 98 => 2, - + 40 => 3, 50 => 3, 91 => 3, 99 => 3 ); } - - + + protected function validate() { $this->validator = null; switch ($this->getMode()) { - case 0: + case 0: $this->validator = null; break; - + case 1: switch (substr($this->account, 0, 6)) { case 777777: case 888888: $this->validator = $this->validator09; break; - + default: $this->validator = $this->mode1; break; - + } break; - + case 2: $this->validator = $this->mode2; break; - + case 3: $this->validator = $this->validator09; break; - + case 4: $pos34 = substr($this->account, 2, 2); $pos79 = substr($this->account, 6, 3); @@ -149,39 +149,39 @@ protected function getResult() { return ! is_null($this->validator) && $this->validator->isValid($this->account); } - + /** * @return int */ private function getMode() { $firstTwo = substr($this->account, 0, 2); - + if ($firstTwo == '00') { return 0; - + } - + if (isset($this->modeMap[$firstTwo])) { return $this->modeMap[$firstTwo]; - + } if ($firstTwo >= 73 && $firstTwo <= 82) { return 1; - + } elseif (($firstTwo >= 32 && $firstTwo <= 39) || ($firstTwo >= 41 && $firstTwo <= 49) || ($firstTwo >= 56 && $firstTwo <= 60) || ($firstTwo >= 83 && $firstTwo <= 87)) { return 2; - + } elseif ($firstTwo >= 1 && $firstTwo <= 31) { return 4; - + } else { throw new LogicException(); - + } } diff --git a/classes/validator/validators/BAV_Validator_58.php b/classes/validator/validators/BAV_Validator_58.php index b3a7c8f9..2454876b 100644 --- a/classes/validator/validators/BAV_Validator_58.php +++ b/classes/validator/validators/BAV_Validator_58.php @@ -35,8 +35,8 @@ public function __construct(BAV_Bank $bank) $this->setWeights(array(2, 3, 4, 5, 6, 0, 0, 0, 0)); $this->setEnd(4); } - - + + public function isValid($account) { return strlen($account) >= 6 && parent::isValid($account); diff --git a/classes/validator/validators/BAV_Validator_59.php b/classes/validator/validators/BAV_Validator_59.php index 54e0d4b8..eefd6d95 100644 --- a/classes/validator/validators/BAV_Validator_59.php +++ b/classes/validator/validators/BAV_Validator_59.php @@ -34,8 +34,8 @@ public function __construct(BAV_Bank $bank) $this->setWeights(array(2, 1)); } - - + + public function isValid($account) { return ltrim($account, "0") != "" diff --git a/classes/validator/validators/BAV_Validator_61.php b/classes/validator/validators/BAV_Validator_61.php index 416c01b8..3cef805a 100644 --- a/classes/validator/validators/BAV_Validator_61.php +++ b/classes/validator/validators/BAV_Validator_61.php @@ -31,7 +31,7 @@ class BAV_Validator_61 extends BAV_Validator_Iteration_Weighted public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setChecknumberPosition(-3); $this->setStart(0); } @@ -40,16 +40,16 @@ public function __construct(BAV_Bank $bank) public function init($account) { parent::init($account); - - + + if ($this->account{8} == 8) { $this->setWeights(array(2, 1, 2, 1, 2, 1, 2, 0, 1, 2)); $this->setEnd(-1); - + } else { $this->setWeights(array(2, 1)); $this->setEnd(-4); - + } } diff --git a/classes/validator/validators/BAV_Validator_62.php b/classes/validator/validators/BAV_Validator_62.php index 7e506e18..4d9e5b60 100644 --- a/classes/validator/validators/BAV_Validator_62.php +++ b/classes/validator/validators/BAV_Validator_62.php @@ -31,7 +31,7 @@ class BAV_Validator_62 extends BAV_Validator_Iteration_Weighted public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(2, 1)); $this->setChecknumberPosition(-3); $this->setStart(-4); diff --git a/classes/validator/validators/BAV_Validator_63.php b/classes/validator/validators/BAV_Validator_63.php index c4587f03..a0c11d56 100644 --- a/classes/validator/validators/BAV_Validator_63.php +++ b/classes/validator/validators/BAV_Validator_63.php @@ -31,23 +31,23 @@ class BAV_Validator_63 extends BAV_Validator_Iteration_Weighted public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(2, 1)); $this->setChecknumberPosition(7); $this->setStart(6); $this->setEnd(1); } - + public function isValid($account) { if (parent::isValid($account)) { return true; - + } if (substr($this->account, 0, 3) !== '000') { return false; - + } return parent::isValid(ltrim($account.'00', '0')); } diff --git a/classes/validator/validators/BAV_Validator_65.php b/classes/validator/validators/BAV_Validator_65.php index db09d596..902977ad 100644 --- a/classes/validator/validators/BAV_Validator_65.php +++ b/classes/validator/validators/BAV_Validator_65.php @@ -36,18 +36,18 @@ public function __construct(BAV_Bank $bank) $this->setStart(0); $this->setChecknumberPosition(7); } - - + + protected function init($account) { parent::init($account); - + if ($this->account{8} == 9) { $this->setEnd(-1); - + } else { $this->setEnd(6); - + } } diff --git a/classes/validator/validators/BAV_Validator_66.php b/classes/validator/validators/BAV_Validator_66.php index 6f41f2c8..07e7b461 100644 --- a/classes/validator/validators/BAV_Validator_66.php +++ b/classes/validator/validators/BAV_Validator_66.php @@ -31,7 +31,7 @@ class BAV_Validator_66 extends BAV_Validator_Iteration_Weighted public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(2, 3, 4, 5, 6, 0, 0, 7)); $this->setStart(-2); $this->setEnd(1); diff --git a/classes/validator/validators/BAV_Validator_68.php b/classes/validator/validators/BAV_Validator_68.php index 31f8d559..fc871cd6 100644 --- a/classes/validator/validators/BAV_Validator_68.php +++ b/classes/validator/validators/BAV_Validator_68.php @@ -43,36 +43,36 @@ class BAV_Validator_68 extends BAV_Validator_Chain public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->validator10 = new BAV_Validator_00($bank); $this->validator10->setEnd(3); - + $this->validators[] = new BAV_Validator_00($bank); - + $this->validators[] = new BAV_Validator_00($bank); $this->validators[1]->setWeights(array(2, 1, 2, 1, 2, 0, 0, 1)); } - - + + public function isValid($account) { switch (strlen($account)) { - + case 10: return $account{3} == 9 && $this->validator10->isValid($account); - + case 9: if ($account >= 400000000 && $account <= 499999999) { return false; - + } - + case 6: case 7: case 8: case 9: return parent::isValid($account); - + default: return false; - + } } diff --git a/classes/validator/validators/BAV_Validator_69.php b/classes/validator/validators/BAV_Validator_69.php index 893c8384..fec9efa5 100644 --- a/classes/validator/validators/BAV_Validator_69.php +++ b/classes/validator/validators/BAV_Validator_69.php @@ -37,20 +37,20 @@ class BAV_Validator_69 extends BAV_Validator_Chain public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->validators[] = new BAV_Validator_28($bank); $this->validators[0]->setWeights(array(2, 3, 4, 5, 6, 7, 8)); - + $this->validators[] = new BAV_Validator_69b($bank); } - - + + public function isValid($account) { return ($account >= 9300000000 && $account <= 9399999999) || parent::isValid($account); } - - + + /** * @return bool */ @@ -58,7 +58,7 @@ protected function useValidator(BAV_Validator $validator) { if ($validator === $this->validators[0] && ($this->account >= 9700000000 && $this->account <= 9799999999)) { return false; - + } return true; } diff --git a/classes/validator/validators/BAV_Validator_69b.php b/classes/validator/validators/BAV_Validator_69b.php index 7e6dceee..f0a4264a 100644 --- a/classes/validator/validators/BAV_Validator_69b.php +++ b/classes/validator/validators/BAV_Validator_69b.php @@ -27,11 +27,11 @@ class BAV_Validator_69b extends BAV_Validator_Iteration_Transformation { - + public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setMatrix(array( array(0,1,5,9,3,7,4,8,2,6), array(0,1,7,6,9,8,3,2,5,4), diff --git a/classes/validator/validators/BAV_Validator_70.php b/classes/validator/validators/BAV_Validator_70.php index 66ce2712..ad91e102 100644 --- a/classes/validator/validators/BAV_Validator_70.php +++ b/classes/validator/validators/BAV_Validator_70.php @@ -40,7 +40,7 @@ protected function iterationStep() { if ($this->position <= 2 && ($this->account{3} == 5 || substr($this->account, 3, 2) == 69)) { return; - + } parent::iterationStep(); } diff --git a/classes/validator/validators/BAV_Validator_71.php b/classes/validator/validators/BAV_Validator_71.php index 9873ad79..02832c56 100644 --- a/classes/validator/validators/BAV_Validator_71.php +++ b/classes/validator/validators/BAV_Validator_71.php @@ -31,7 +31,7 @@ class BAV_Validator_71 extends BAV_Validator_Iteration_Weighted public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(6, 5, 4, 3, 2, 1)); $this->setStart(1); $this->setEnd(6); diff --git a/classes/validator/validators/BAV_Validator_73.php b/classes/validator/validators/BAV_Validator_73.php index c8c6264e..c66ba1f1 100644 --- a/classes/validator/validators/BAV_Validator_73.php +++ b/classes/validator/validators/BAV_Validator_73.php @@ -47,32 +47,32 @@ public function __construct(BAV_Bank $bank) $this->defaultValidators[] = new BAV_Validator_00($bank); $this->defaultValidators[0]->setEnd(3); - + $this->defaultValidators[] = new BAV_Validator_00($bank); $this->defaultValidators[1]->setWeights(array(2, 1)); $this->defaultValidators[1]->setEnd(4); - + $this->defaultValidators[] = new BAV_Validator_00($bank); $this->defaultValidators[2]->setWeights(array(2, 1)); $this->defaultValidators[2]->setDivisor(7); $this->defaultValidators[2]->setEnd(4); - + $this->exceptionValidators = BAV_Validator_51::getExceptionValidators($bank); } - - + + /** */ protected function init($account) { parent::init($account); - + if ($this->account{2} == 9) { $this->validators = $this->exceptionValidators; - + } else { $this->validators = $this->defaultValidators; - + } } diff --git a/classes/validator/validators/BAV_Validator_74.php b/classes/validator/validators/BAV_Validator_74.php index f0084bca..91a207e1 100644 --- a/classes/validator/validators/BAV_Validator_74.php +++ b/classes/validator/validators/BAV_Validator_74.php @@ -34,28 +34,28 @@ public function __construct(BAV_Bank $bank) $this->setWeights(array(2, 1)); } - - + + public function isValid($account) { return strlen($account) >= 2 && parent::isValid($account); } - - + + protected function getResult() { if (parent::getResult()) { return true; - + } elseif (strlen(ltrim($this->account, '0')) == 6) { $nextDecade = (int) ($this->accumulator/10) + 1; $nextHalfDecade = $nextDecade*10 - 5; $check = $nextHalfDecade - $this->accumulator; return (string) $check === $this->getChecknumber(); - + } else { return false; - + } } diff --git a/classes/validator/validators/BAV_Validator_75.php b/classes/validator/validators/BAV_Validator_75.php index 866088d1..c65e6c2c 100644 --- a/classes/validator/validators/BAV_Validator_75.php +++ b/classes/validator/validators/BAV_Validator_75.php @@ -36,26 +36,26 @@ public function __construct(BAV_Bank $bank) $this->setStart(4); $this->setEnd(-2); } - - + + public function isValid($account) { $account = ltrim($account, '0'); $length = strlen($account); - + if ($length < 6 || $length > 9) { return false; - + } if ($length == 9) { if ($account{0} == 9) { $account = substr($account, 1, 6); - + } else { $account = substr($account, 0, 6); - + } - + } return parent::isValid($account); } diff --git a/classes/validator/validators/BAV_Validator_76.php b/classes/validator/validators/BAV_Validator_76.php index a1ca661d..e6f0044c 100644 --- a/classes/validator/validators/BAV_Validator_76.php +++ b/classes/validator/validators/BAV_Validator_76.php @@ -31,25 +31,25 @@ class BAV_Validator_76 extends BAV_Validator_Iteration_Weighted public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setChecknumberPosition(-3); $this->setStart(-4); $this->setEnd(1); } - - + + public function isValid($account) { if (parent::isValid($account)) { return true; - + } $account = ltrim($account, '0') . '00'; return strlen($account) <= $this->normalizedSize && parent::isValid($account); } - - + + protected function getWeight() { return $this->i + 2; diff --git a/classes/validator/validators/BAV_Validator_77.php b/classes/validator/validators/BAV_Validator_77.php index 27cc5441..33a9055f 100644 --- a/classes/validator/validators/BAV_Validator_77.php +++ b/classes/validator/validators/BAV_Validator_77.php @@ -35,7 +35,7 @@ public function __construct(BAV_Bank $bank) $this->validators[] = new BAV_Validator_77a($bank); $this->validators[0]->setWeights(array(1, 2, 3, 4, 5)); - + $this->validators[] = new BAV_Validator_77a($bank); $this->validators[1]->setWeights(array(5, 4, 3, 4, 5)); } diff --git a/classes/validator/validators/BAV_Validator_77a.php b/classes/validator/validators/BAV_Validator_77a.php index 2202f07c..5424ed37 100644 --- a/classes/validator/validators/BAV_Validator_77a.php +++ b/classes/validator/validators/BAV_Validator_77a.php @@ -31,11 +31,11 @@ class BAV_Validator_77a extends BAV_Validator_Iteration_Weighted public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setStart(-1); $this->setEnd(5); } - + protected function iterationStep() { diff --git a/classes/validator/validators/BAV_Validator_78.php b/classes/validator/validators/BAV_Validator_78.php index a786b575..af3e3a4c 100644 --- a/classes/validator/validators/BAV_Validator_78.php +++ b/classes/validator/validators/BAV_Validator_78.php @@ -34,8 +34,8 @@ public function __construct(BAV_Bank $bank) $this->setWeights(array(2, 1)); } - - + + public function isValid($account) { return strlen($account) !== 8 && parent::isValid($account); diff --git a/classes/validator/validators/BAV_Validator_79.php b/classes/validator/validators/BAV_Validator_79.php index f327c408..af513116 100644 --- a/classes/validator/validators/BAV_Validator_79.php +++ b/classes/validator/validators/BAV_Validator_79.php @@ -49,30 +49,30 @@ class BAV_Validator_79 extends BAV_Validator public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->mode1 = new BAV_Validator_00($bank); $this->mode2 = new BAV_Validator_00($bank); $this->mode2->setStart(-3); $this->mode2->setChecknumberPosition(-2); } - + protected function init($account) { parent::init($account); - + $this->validator = null; } protected function validate() { if (array_search($this->account{0}, array(1, 2, 9)) !== false) { $this->validator = $this->mode2; - + } elseif ($this->account{0} == 0) { $this->validator = null; - + } else { $this->validator = $this->mode1; - + } } /** @@ -82,7 +82,7 @@ protected function getResult() { return ! is_null($this->validator) && $this->validator->isValid($this->account); } - + } diff --git a/classes/validator/validators/BAV_Validator_80.php b/classes/validator/validators/BAV_Validator_80.php index e7c288ff..fe5fa46b 100644 --- a/classes/validator/validators/BAV_Validator_80.php +++ b/classes/validator/validators/BAV_Validator_80.php @@ -47,21 +47,21 @@ public function __construct(BAV_Bank $bank) $this->defaultValidators[] = new BAV_Validator_00($bank); $this->defaultValidators[0]->setEnd(4); - + $this->defaultValidators[] = new BAV_Validator_00($bank); $this->defaultValidators[1]->setEnd(4); $this->defaultValidators[1]->setDivisor(7); - + $this->exceptionValidators = BAV_Validator_51::getExceptionValidators($bank); } - - + + /** */ protected function init($account) { parent::init($account); - + $this->validators = $this->account{2} == 9 ? $this->exceptionValidators : $this->defaultValidators; diff --git a/classes/validator/validators/BAV_Validator_81.php b/classes/validator/validators/BAV_Validator_81.php index 955f1840..181467b1 100644 --- a/classes/validator/validators/BAV_Validator_81.php +++ b/classes/validator/validators/BAV_Validator_81.php @@ -47,17 +47,17 @@ public function __construct(BAV_Bank $bank) $this->defaultValidators[] = new BAV_Validator_32($bank); $this->defaultValidators[0]->setWeights(array(2, 3, 4, 5, 6, 7)); - + $this->exceptionValidators = BAV_Validator_51::getExceptionValidators($bank); } - - + + /** */ protected function init($account) { parent::init($account); - + $this->validators = $this->account{2} == 9 ? $this->exceptionValidators : $this->defaultValidators; diff --git a/classes/validator/validators/BAV_Validator_82.php b/classes/validator/validators/BAV_Validator_82.php index d9711579..7984f79b 100644 --- a/classes/validator/validators/BAV_Validator_82.php +++ b/classes/validator/validators/BAV_Validator_82.php @@ -50,10 +50,10 @@ class BAV_Validator_82 extends BAV_Validator public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->mode1 = new BAV_Validator_33($bank); $this->mode1->setWeights(array(2, 3, 4, 5, 6)); - + $this->mode2 = new BAV_Validator_10($bank); } protected function validate() @@ -69,7 +69,7 @@ protected function getResult() { return $this->validator->isValid($this->account); } - + } diff --git a/classes/validator/validators/BAV_Validator_83.php b/classes/validator/validators/BAV_Validator_83.php index 3ab76f3d..f1d72f1a 100644 --- a/classes/validator/validators/BAV_Validator_83.php +++ b/classes/validator/validators/BAV_Validator_83.php @@ -53,32 +53,32 @@ public function __construct(BAV_Bank $bank) $this->defaultValidators[] = new BAV_Validator_32($bank); $this->defaultValidators[0]->setWeights(array(2, 3, 4, 5, 6, 7)); $this->defaultValidators[0]->setEnd(3); - + $this->defaultValidators[] = new BAV_Validator_33($bank); $this->defaultValidators[1]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators[1]->setEnd(4); - + $this->modeC = new BAV_Validator_33($bank); $this->defaultValidators[] = $this->modeC; $this->defaultValidators[2]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators[2]->setEnd(4); $this->defaultValidators[2]->setDivisor(7); - + $this->exceptionValidators[] = new BAV_Validator_83x($bank); } - - + + /** */ protected function init($account) { parent::init($account); - + $this->validators = substr($this->account, 2, 2) == 99 ? $this->exceptionValidators : $this->defaultValidators; } - + protected function continueValidation(BAV_Validator $validator) { return $validator !== $this->modeC || $this->account{9} < 7; diff --git a/classes/validator/validators/BAV_Validator_83x.php b/classes/validator/validators/BAV_Validator_83x.php index e79199c3..ece28f0f 100644 --- a/classes/validator/validators/BAV_Validator_83x.php +++ b/classes/validator/validators/BAV_Validator_83x.php @@ -31,7 +31,7 @@ class BAV_Validator_83x extends BAV_Validator_Iteration_Weighted public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(2, 3, 4, 5, 6, 7, 8)); $this->setEnd(2); } diff --git a/classes/validator/validators/BAV_Validator_84.php b/classes/validator/validators/BAV_Validator_84.php index 9cbe1361..29a6ef13 100644 --- a/classes/validator/validators/BAV_Validator_84.php +++ b/classes/validator/validators/BAV_Validator_84.php @@ -49,25 +49,25 @@ public function __construct(BAV_Bank $bank) $this->defaultValidators[0] = new BAV_Validator_33($bank); $this->defaultValidators[0]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators[0]->setEnd(4); - + $this->defaultValidators[1] = new BAV_Validator_84b($bank); - + // Bundesbank update 2013-06-03 $this->defaultValidators[2] = new BAV_Validator_06($bank); $this->defaultValidators[2]->setWeights(array(2, 1)); $this->defaultValidators[2]->setEnd(4); $this->defaultValidators[2]->setDivisor(10); - + $this->exceptionValidators = BAV_Validator_51::getExceptionValidators($bank); } - - + + /** */ protected function init($account) { parent::init($account); - + $this->validators = $this->account{2} == 9 ? $this->exceptionValidators : $this->defaultValidators; diff --git a/classes/validator/validators/BAV_Validator_84b.php b/classes/validator/validators/BAV_Validator_84b.php index 3ce95565..c867547b 100644 --- a/classes/validator/validators/BAV_Validator_84b.php +++ b/classes/validator/validators/BAV_Validator_84b.php @@ -31,7 +31,7 @@ class BAV_Validator_84b extends BAV_Validator_Iteration_Weighted public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(2, 3, 4, 5, 6)); $this->setEnd(4); } diff --git a/classes/validator/validators/BAV_Validator_85.php b/classes/validator/validators/BAV_Validator_85.php index e9bfa2cc..4c930eb1 100644 --- a/classes/validator/validators/BAV_Validator_85.php +++ b/classes/validator/validators/BAV_Validator_85.php @@ -53,34 +53,34 @@ public function __construct(BAV_Bank $bank) $this->defaultValidators[] = new BAV_Validator_06($bank); $this->defaultValidators[0]->setWeights(array(2, 3, 4, 5, 6, 7)); $this->defaultValidators[0]->setEnd(3); - + $this->defaultValidators[] = new BAV_Validator_33($bank); $this->defaultValidators[1]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators[1]->setEnd(4); - + $this->modeC = new BAV_Validator_33($bank); $this->defaultValidators[] = $this->modeC; $this->defaultValidators[2]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators[2]->setEnd(4); $this->defaultValidators[2]->setDivisor(7); - + $this->exceptionValidators[] = new BAV_Validator_02($bank); $this->exceptionValidators[0]->setWeights(array(2, 3, 4, 5, 6, 7, 8)); $this->exceptionValidators[0]->setEnd(2); } - - + + /** */ protected function init($account) { parent::init($account); - + $this->validators = substr($this->account, 2, 2) == 99 ? $this->exceptionValidators : $this->defaultValidators; } - + protected function continueValidation(BAV_Validator $validator) { return $validator !== $this->modeC || $this->account{9} < 7; diff --git a/classes/validator/validators/BAV_Validator_86.php b/classes/validator/validators/BAV_Validator_86.php index 3dc338bb..24ab449a 100644 --- a/classes/validator/validators/BAV_Validator_86.php +++ b/classes/validator/validators/BAV_Validator_86.php @@ -49,21 +49,21 @@ public function __construct(BAV_Bank $bank) $this->defaultValidators[] = new BAV_Validator_00($bank); $this->defaultValidators[0]->setWeights(array(2, 1)); $this->defaultValidators[0]->setEnd(3); - + $this->defaultValidators[] = new BAV_Validator_32($bank); $this->defaultValidators[1]->setWeights(array(2, 3, 4, 5, 6, 7)); $this->defaultValidators[1]->setEnd(3); - + $this->exceptionValidators = BAV_Validator_51::getExceptionValidators($bank); } - - + + /** */ protected function init($account) { parent::init($account); - + $this->validators = $this->account{2} == 9 ? $this->exceptionValidators : $this->defaultValidators; diff --git a/classes/validator/validators/BAV_Validator_87.php b/classes/validator/validators/BAV_Validator_87.php index 86d38dd9..c46b339d 100644 --- a/classes/validator/validators/BAV_Validator_87.php +++ b/classes/validator/validators/BAV_Validator_87.php @@ -48,23 +48,23 @@ public function __construct(BAV_Bank $bank) parent::__construct($bank); $this->defaultValidators[] = new BAV_Validator_87a($bank); - + $this->defaultValidators[] = new BAV_Validator_33($bank); $this->defaultValidators[1]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators[1]->setEnd(4); - + $this->defaultValidators[] = new BAV_Validator_87c($bank); - + $this->exceptionValidators = BAV_Validator_51::getExceptionValidators($bank); } - - + + /** */ protected function init($account) { parent::init($account); - + $this->validators = $this->account{2} == 9 ? $this->exceptionValidators : $this->defaultValidators; diff --git a/classes/validator/validators/BAV_Validator_87a.php b/classes/validator/validators/BAV_Validator_87a.php index 96555237..5086522b 100644 --- a/classes/validator/validators/BAV_Validator_87a.php +++ b/classes/validator/validators/BAV_Validator_87a.php @@ -32,7 +32,7 @@ class BAV_Validator_87a extends BAV_Validator { - + protected function validate() { } @@ -152,7 +152,7 @@ protected function getResult() return false; } - + } diff --git a/classes/validator/validators/BAV_Validator_87c.php b/classes/validator/validators/BAV_Validator_87c.php index 1b01136d..cf13bc1f 100644 --- a/classes/validator/validators/BAV_Validator_87c.php +++ b/classes/validator/validators/BAV_Validator_87c.php @@ -31,7 +31,7 @@ class BAV_Validator_87c extends BAV_Validator_Iteration_Weighted public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(2, 3, 4, 5, 6)); $this->setEnd(4); } diff --git a/classes/validator/validators/BAV_Validator_88.php b/classes/validator/validators/BAV_Validator_88.php index 470badc2..dbdf7355 100644 --- a/classes/validator/validators/BAV_Validator_88.php +++ b/classes/validator/validators/BAV_Validator_88.php @@ -33,14 +33,14 @@ public function __construct(BAV_Bank $bank) parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7, 8)); - + } - - + + protected function init($account) { parent::init($account); - + $this->setEnd($this->account{2} == 9 ? 2: 3); } diff --git a/classes/validator/validators/BAV_Validator_89.php b/classes/validator/validators/BAV_Validator_89.php index ea669395..068b7967 100644 --- a/classes/validator/validators/BAV_Validator_89.php +++ b/classes/validator/validators/BAV_Validator_89.php @@ -42,17 +42,17 @@ public function __construct(BAV_Bank $bank) $this->setWeights(array(2, 3, 4, 5, 6, 7)); $this->setEnd(3); - + $this->validator10 = new BAV_Validator_10($bank); } - - + + protected function iterationStep() { $this->accumulator += $this->crossSum($this->number * $this->getWeight()); } - - + + public function isValid($account) { $length = strlen(ltrim($account, '0')); diff --git a/classes/validator/validators/BAV_Validator_90.php b/classes/validator/validators/BAV_Validator_90.php index 3951ba9a..bb3da0d1 100644 --- a/classes/validator/validators/BAV_Validator_90.php +++ b/classes/validator/validators/BAV_Validator_90.php @@ -47,32 +47,32 @@ public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->defaultValidators["a"] = new BAV_Validator_06($bank); $this->defaultValidators["a"]->setWeights(array(2, 3, 4, 5, 6, 7)); $this->defaultValidators["a"]->setEnd(3); - + $this->defaultValidators["b"] = new BAV_Validator_06($bank); $this->defaultValidators["b"]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators["b"]->setEnd(4); - + $this->defaultValidators["c"] = new BAV_Validator_90c($bank); $this->defaultValidators["d"] = new BAV_Validator_90d($bank); $this->defaultValidators["e"] = new BAV_Validator_90e($bank); $this->defaultValidators["g"] = new BAV_Validator_90g($bank); - + $this->modeF = new BAV_Validator_06($bank); $this->modeF->setWeights(array(2, 3, 4, 5, 6, 7, 8)); $this->modeF->setEnd(2); } - - + + /** */ protected function init($account) { parent::init($account); - + $this->validators = $this->account{2} == 9 ? array($this->modeF) : $this->defaultValidators; diff --git a/classes/validator/validators/BAV_Validator_91.php b/classes/validator/validators/BAV_Validator_91.php index 95788f66..54a15462 100644 --- a/classes/validator/validators/BAV_Validator_91.php +++ b/classes/validator/validators/BAV_Validator_91.php @@ -38,12 +38,12 @@ public function __construct(BAV_Bank $bank) $this->validators[$i]->setChecknumberPosition(6); $this->validators[$i]->setStart(5); } - + $this->validators[0]->setWeights(array(2, 3, 4, 5, 6, 7)); $this->validators[1]->setWeights(array(7, 6, 5, 4, 3, 2)); $this->validators[2]->setWeights(array(2, 3, 4, 0, 5, 6, 7, 8, 9, 10)); $this->validators[3]->setWeights(array(2, 4, 8, 5, 10, 9)); - + $this->validators[2]->setStart(-1); } diff --git a/classes/validator/validators/BAV_Validator_92.php b/classes/validator/validators/BAV_Validator_92.php index a285c171..101e69e0 100644 --- a/classes/validator/validators/BAV_Validator_92.php +++ b/classes/validator/validators/BAV_Validator_92.php @@ -35,7 +35,7 @@ public function __construct(BAV_Bank $bank) $this->setWeights(array(3, 7, 1)); $this->setEnd(3); } - + } diff --git a/classes/validator/validators/BAV_Validator_93.php b/classes/validator/validators/BAV_Validator_93.php index acebeb4c..73c9fb5d 100644 --- a/classes/validator/validators/BAV_Validator_93.php +++ b/classes/validator/validators/BAV_Validator_93.php @@ -33,18 +33,18 @@ public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->validators[] = new BAV_Validator_06($bank); $this->validators[0]->setWeights(array(2, 3, 4, 5, 6)); $this->validators[0]->setEnd(4); - + $this->validators[] = new BAV_Validator_06($bank); $this->validators[1]->setWeights(array(2, 3, 4, 5, 6)); $this->validators[1]->setEnd(4); $this->validators[1]->setDivisor(7); } - - + + /** * @throws BAV_ValidatorException_OutOfBounds * @param int $int @@ -54,7 +54,7 @@ protected function normalizeAccount($size) parent::normalizeAccount($size); if (substr($this->account, 0, 4) !== '0000') { $this->account = '0000'.substr($this->account, 0, 6); - + } } diff --git a/classes/validator/validators/BAV_Validator_95.php b/classes/validator/validators/BAV_Validator_95.php index 0c501ad0..22dc01c5 100644 --- a/classes/validator/validators/BAV_Validator_95.php +++ b/classes/validator/validators/BAV_Validator_95.php @@ -34,8 +34,8 @@ public function __construct(BAV_Bank $bank) $this->setWeights(array(2, 3, 4, 5, 6, 7)); } - - + + public function isValid($account) { return parent::isValid($account) diff --git a/classes/validator/validators/BAV_Validator_96.php b/classes/validator/validators/BAV_Validator_96.php index 3acae36e..c25f6105 100644 --- a/classes/validator/validators/BAV_Validator_96.php +++ b/classes/validator/validators/BAV_Validator_96.php @@ -34,15 +34,15 @@ public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->validators[] = new BAV_Validator_19($bank); $this->validators[0]->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 1)); - + $this->validators[] = new BAV_Validator_00($bank); $this->validators[1]->setWeights(array(2, 1)); } - - + + public function isValid($account) { return parent::isValid($account) diff --git a/classes/validator/validators/BAV_Validator_97.php b/classes/validator/validators/BAV_Validator_97.php index 495fe006..87176eff 100644 --- a/classes/validator/validators/BAV_Validator_97.php +++ b/classes/validator/validators/BAV_Validator_97.php @@ -38,12 +38,12 @@ class BAV_Validator_97 extends BAV_Validator */ $result = 0; - + protected function validate() { $account = (int) ltrim(substr($this->account, 0, -1), '0'); $this->result = $account - (int)($account / 11) * 11; - + } /** * @return bool @@ -53,9 +53,9 @@ protected function getResult() return strlen(ltrim($this->account, '0')) >= 5 && $this->result === (int) $this->getChecknumber(); } - - - + + + } diff --git a/classes/validator/validators/BAV_Validator_98.php b/classes/validator/validators/BAV_Validator_98.php index 2eb5a02b..41db2555 100644 --- a/classes/validator/validators/BAV_Validator_98.php +++ b/classes/validator/validators/BAV_Validator_98.php @@ -34,11 +34,11 @@ public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->validators[] = new BAV_Validator_01($bank); $this->validators[0]->setWeights(array(3, 1, 7)); $this->validators[0]->setEnd(2); - + $this->validators[] = new BAV_Validator_32($bank); } diff --git a/classes/validator/validators/BAV_Validator_99.php b/classes/validator/validators/BAV_Validator_99.php index 2c22cc44..d58a8230 100644 --- a/classes/validator/validators/BAV_Validator_99.php +++ b/classes/validator/validators/BAV_Validator_99.php @@ -34,8 +34,8 @@ public function __construct(BAV_Bank $bank) $this->setWeights(array(2, 3, 4, 5, 6, 7)); } - - + + public function isValid($account) { return parent::isValid($account) diff --git a/classes/validator/validators/BAV_Validator_A1.php b/classes/validator/validators/BAV_Validator_A1.php index f64d40f6..133f7611 100644 --- a/classes/validator/validators/BAV_Validator_A1.php +++ b/classes/validator/validators/BAV_Validator_A1.php @@ -34,8 +34,8 @@ public function __construct(BAV_Bank $bank) $this->setWeights(array(2, 1, 2, 1, 2, 1, 2, 0, 0)); } - - + + protected function getResult() { $length = strlen(ltrim($this->account, '0')); diff --git a/classes/validator/validators/BAV_Validator_A2.php b/classes/validator/validators/BAV_Validator_A2.php index 1b72ef9e..1aaee5e0 100644 --- a/classes/validator/validators/BAV_Validator_A2.php +++ b/classes/validator/validators/BAV_Validator_A2.php @@ -28,15 +28,15 @@ class BAV_Validator_A2 extends BAV_Validator_Chain { - - + + public function __construct(BAV_Bank $bank) { parent::__construct($bank); $this->validators[] = new BAV_Validator_00($bank); $this->validators[0]->setWeights(array(2, 1)); - + $this->validators[] = new BAV_Validator_04($bank); $this->validators[1]->setWeights(array(2, 3, 4, 5, 6, 7)); } diff --git a/classes/validator/validators/BAV_Validator_A3.php b/classes/validator/validators/BAV_Validator_A3.php index 0d5e3e23..16ad68f1 100644 --- a/classes/validator/validators/BAV_Validator_A3.php +++ b/classes/validator/validators/BAV_Validator_A3.php @@ -28,15 +28,15 @@ class BAV_Validator_A3 extends BAV_Validator_Chain { - - + + public function __construct(BAV_Bank $bank) { parent::__construct($bank); $this->validators[] = new BAV_Validator_00($bank); $this->validators[0]->setWeights(array(2, 1)); - + $this->validators[] = new BAV_Validator_10($bank); $this->validators[1]->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 10)); } diff --git a/classes/validator/validators/BAV_Validator_A4.php b/classes/validator/validators/BAV_Validator_A4.php index 18a832f3..05239378 100644 --- a/classes/validator/validators/BAV_Validator_A4.php +++ b/classes/validator/validators/BAV_Validator_A4.php @@ -29,8 +29,8 @@ class BAV_Validator_A4 extends BAV_Validator_Chain { - - + + public function __construct(BAV_Bank $bank) { parent::__construct($bank); @@ -38,17 +38,17 @@ public function __construct(BAV_Bank $bank) $this->validators[] = new BAV_Validator_06($bank); $this->validators[0]->setWeights(array(2, 3, 4, 5, 6, 7, 0, 0, 0)); $this->validators[0]->setEnd(3); - + $this->validators[] = new BAV_Validator_A4b($bank); - + $this->validators[] = new BAV_Validator_06($bank); $this->validators[2]->setWeights(array(2, 3, 4, 5, 6, 0, 0, 0, 0)); $this->validators[2]->setEnd(4); - + $this->validators[] = new BAV_Validator_93($bank); } - - + + /** * Decide if you really want to use this validator * @@ -59,10 +59,10 @@ protected function useValidator(BAV_Validator $validator) if (substr($this->account, 2, 2) == '99') { return $validator === $this->validators[2] || $validator === $this->validators[3]; - + } else { return $validator !== $this->validators[2]; - + } } diff --git a/classes/validator/validators/BAV_Validator_A5.php b/classes/validator/validators/BAV_Validator_A5.php index 52b9e61f..0d494eb2 100644 --- a/classes/validator/validators/BAV_Validator_A5.php +++ b/classes/validator/validators/BAV_Validator_A5.php @@ -28,25 +28,25 @@ class BAV_Validator_A5 extends BAV_Validator_Chain { - - + + public function __construct(BAV_Bank $bank) { parent::__construct($bank); $this->validators[] = new BAV_Validator_00($bank); $this->validators[0]->setWeights(array(2, 1)); - + $this->validators[] = new BAV_Validator_10($bank); $this->validators[1]->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 10)); } - - + + protected function continueValidation(BAV_Validator $validator) { if ($validator === $this->validators[1]) { return $this->account{0} !== '9'; - + } return true; } diff --git a/classes/validator/validators/BAV_Validator_A6.php b/classes/validator/validators/BAV_Validator_A6.php index db4edce7..c40a9799 100644 --- a/classes/validator/validators/BAV_Validator_A6.php +++ b/classes/validator/validators/BAV_Validator_A6.php @@ -50,10 +50,10 @@ class BAV_Validator_A6 extends BAV_Validator public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->mode1 = new BAV_Validator_00($bank); $this->mode1->setWeights(array(2, 1)); - + $this->mode2 = new BAV_Validator_01($bank); $this->mode2->setWeights(array(3, 7, 1)); } @@ -70,7 +70,7 @@ protected function getResult() { return $this->validator->isValid($this->account); } - + } diff --git a/classes/validator/validators/BAV_Validator_A7.php b/classes/validator/validators/BAV_Validator_A7.php index 2f8818d4..7a2b55fd 100644 --- a/classes/validator/validators/BAV_Validator_A7.php +++ b/classes/validator/validators/BAV_Validator_A7.php @@ -28,15 +28,15 @@ class BAV_Validator_A7 extends BAV_Validator_Chain { - - + + public function __construct(BAV_Bank $bank) { parent::__construct($bank); $this->validators[] = new BAV_Validator_00($bank); $this->validators[0]->setWeights(array(2, 1)); - + $this->validators[] = new BAV_Validator_03($bank); } diff --git a/classes/validator/validators/BAV_Validator_A8.php b/classes/validator/validators/BAV_Validator_A8.php index ef69b154..07c8c152 100644 --- a/classes/validator/validators/BAV_Validator_A8.php +++ b/classes/validator/validators/BAV_Validator_A8.php @@ -44,31 +44,31 @@ class BAV_Validator_A8 extends BAV_Validator_Chain * @var array */ $exceptionValidators = array(); - - + + public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->defaultValidators[] = new BAV_Validator_06($bank); $this->defaultValidators[0]->setEnd(3); $this->defaultValidators[0]->setWeights(array(2, 3, 4, 5, 6, 7)); - + $this->defaultValidators[] = new BAV_Validator_00($bank); $this->defaultValidators[1]->setEnd(3); $this->defaultValidators[1]->setWeights(array(2, 1)); - - + + $this->exceptionValidators = BAV_Validator_51::getExceptionValidators($bank); } - - + + /** */ protected function init($account) { parent::init($account); - + $this->validators = $this->account{2} == 9 ? $this->exceptionValidators : $this->defaultValidators; diff --git a/classes/validator/validators/BAV_Validator_A9.php b/classes/validator/validators/BAV_Validator_A9.php index c23bb319..3fd4972f 100644 --- a/classes/validator/validators/BAV_Validator_A9.php +++ b/classes/validator/validators/BAV_Validator_A9.php @@ -28,15 +28,15 @@ class BAV_Validator_A9 extends BAV_Validator_Chain { - - + + public function __construct(BAV_Bank $bank) { parent::__construct($bank); $this->validators[] = new BAV_Validator_01($bank); $this->validators[0]->setWeights(array(3, 7, 1)); - + $this->validators[] = new BAV_Validator_06($bank); $this->validators[1]->setWeights(array(2, 3, 4, 5, 6, 7)); } diff --git a/classes/validator/validators/BAV_Validator_B0.php b/classes/validator/validators/BAV_Validator_B0.php index 42f95c18..febb8025 100644 --- a/classes/validator/validators/BAV_Validator_B0.php +++ b/classes/validator/validators/BAV_Validator_B0.php @@ -50,9 +50,9 @@ class BAV_Validator_B0 extends BAV_Validator public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->mode1 = new BAV_Validator_09($bank); - + $this->mode2 = new BAV_Validator_06($bank); $this->mode2->setWeights(array(2, 3, 4, 5, 6, 7)); } @@ -71,7 +71,7 @@ protected function getResult() && $this->account{0} !== '8' && $this->validator->isValid($this->account); } - + } diff --git a/classes/validator/validators/BAV_Validator_B1.php b/classes/validator/validators/BAV_Validator_B1.php index fa596400..ca0a5f47 100644 --- a/classes/validator/validators/BAV_Validator_B1.php +++ b/classes/validator/validators/BAV_Validator_B1.php @@ -28,15 +28,15 @@ class BAV_Validator_B1 extends BAV_Validator_Chain { - - + + public function __construct(BAV_Bank $bank) { parent::__construct($bank); $this->validators[] = new BAV_Validator_05($bank); $this->validators[0]->setWeights(array(7, 3, 1)); - + $this->validators[] = new BAV_Validator_01($bank); $this->validators[1]->setWeights(array(3, 7, 1)); } diff --git a/classes/validator/validators/BAV_Validator_B2.php b/classes/validator/validators/BAV_Validator_B2.php index 7cceb4f0..cd21da22 100644 --- a/classes/validator/validators/BAV_Validator_B2.php +++ b/classes/validator/validators/BAV_Validator_B2.php @@ -50,10 +50,10 @@ class BAV_Validator_B2 extends BAV_Validator public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->mode1 = new BAV_Validator_02($bank); $this->mode1->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9)); - + $this->mode2 = new BAV_Validator_00($bank); $this->mode2->setWeights(array(2, 1)); } @@ -70,7 +70,7 @@ protected function getResult() { return $this->validator->isValid($this->account); } - + } diff --git a/classes/validator/validators/BAV_Validator_B3.php b/classes/validator/validators/BAV_Validator_B3.php index 77b1be42..023702d6 100644 --- a/classes/validator/validators/BAV_Validator_B3.php +++ b/classes/validator/validators/BAV_Validator_B3.php @@ -50,10 +50,10 @@ class BAV_Validator_B3 extends BAV_Validator public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->mode1 = new BAV_Validator_32($bank); $this->mode1->setWeights(array(2, 3, 4, 5, 6, 7)); - + $this->mode2 = new BAV_Validator_06($bank); $this->mode2->setWeights(array(2, 3, 4, 5, 6, 7)); } @@ -70,7 +70,7 @@ protected function getResult() { return $this->validator->isValid($this->account); } - + } diff --git a/classes/validator/validators/BAV_Validator_B4.php b/classes/validator/validators/BAV_Validator_B4.php index 11b23234..9349b0a9 100644 --- a/classes/validator/validators/BAV_Validator_B4.php +++ b/classes/validator/validators/BAV_Validator_B4.php @@ -50,10 +50,10 @@ class BAV_Validator_B4 extends BAV_Validator public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->mode1 = new BAV_Validator_00($bank); $this->mode1->setWeights(array(2, 1)); - + $this->mode2 = new BAV_Validator_02($bank); $this->mode2->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 10)); } @@ -70,7 +70,7 @@ protected function getResult() { return $this->validator->isValid($this->account); } - + } diff --git a/classes/validator/validators/BAV_Validator_B5.php b/classes/validator/validators/BAV_Validator_B5.php index 7b0c454b..6d9aa9cd 100644 --- a/classes/validator/validators/BAV_Validator_B5.php +++ b/classes/validator/validators/BAV_Validator_B5.php @@ -28,15 +28,15 @@ class BAV_Validator_B5 extends BAV_Validator_Chain { - - + + public function __construct(BAV_Bank $bank) { parent::__construct($bank); $this->validators[] = new BAV_Validator_01($bank); $this->validators[0]->setWeights(array(7, 3, 1)); - + $this->validators[] = new BAV_Validator_00($bank); $this->validators[1]->setWeights(array(2, 1)); } @@ -47,7 +47,7 @@ protected function continueValidation(BAV_Validator $validator) { if ($validator === $this->validators[1]) { return $this->account{0} < 8; - + } return true; } diff --git a/classes/validator/validators/BAV_Validator_B6.php b/classes/validator/validators/BAV_Validator_B6.php index a40f2af0..af602e53 100644 --- a/classes/validator/validators/BAV_Validator_B6.php +++ b/classes/validator/validators/BAV_Validator_B6.php @@ -51,10 +51,10 @@ class BAV_Validator_B6 extends BAV_Validator implements BAV_Validator_BankDepend public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->mode1 = new BAV_Validator_20($bank); $this->mode1->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 3)); - + $this->mode2 = new BAV_Validator_53($bank); $this->mode2->setWeights(array(2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4)); } @@ -74,7 +74,7 @@ protected function getResult() { return $this->validator->isValid($this->account, '0'); } - + } diff --git a/classes/validator/validators/BAV_Validator_B7.php b/classes/validator/validators/BAV_Validator_B7.php index 5959d9eb..6a847809 100644 --- a/classes/validator/validators/BAV_Validator_B7.php +++ b/classes/validator/validators/BAV_Validator_B7.php @@ -34,8 +34,8 @@ public function __construct(BAV_Bank $bank) $this->setWeights(array(3, 7, 1)); } - - + + protected function getResult() { return ($this->isBetween(1000000, 5999999) || $this->isBetween(700000000, 899999999)) diff --git a/classes/validator/validators/BAV_Validator_B8.php b/classes/validator/validators/BAV_Validator_B8.php index b66db20e..7da7f477 100644 --- a/classes/validator/validators/BAV_Validator_B8.php +++ b/classes/validator/validators/BAV_Validator_B8.php @@ -35,17 +35,17 @@ class BAV_Validator_B8 extends BAV_Validator_Chain * @param BAV_Validator_09 Validator */ $_validator9; - - + + public function __construct(BAV_Bank $bank) { parent::__construct($bank); $this->validators[] = new BAV_Validator_20($bank); $this->validators[0]->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 3)); - + $this->validators[] = new BAV_Validator_29($bank); - + $this->_validator9 = new BAV_Validator_09($bank); $this->validators[] = $this->_validator9; } diff --git a/classes/validator/validators/BAV_Validator_B9.php b/classes/validator/validators/BAV_Validator_B9.php index 91f95e77..f3ba17c3 100644 --- a/classes/validator/validators/BAV_Validator_B9.php +++ b/classes/validator/validators/BAV_Validator_B9.php @@ -50,25 +50,25 @@ class BAV_Validator_B9 extends BAV_Validator public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->mode1 = new BAV_Validator_B9a($bank); $this->mode2 = new BAV_Validator_B9b($bank); } - - + + protected function validate() { if (! preg_match('~^000?[^0]~', $this->account)) { $this->validator = null; return; - + } $this->validator = substr($this->account, 0, 3) === '000' ? $this->mode2 : $this->mode1; } - - + + /** * @return bool */ @@ -76,7 +76,7 @@ protected function getResult() { return ! is_null($this->validator) && $this->validator->isValid($this->account); } - + } diff --git a/classes/validator/validators/BAV_Validator_B9a.php b/classes/validator/validators/BAV_Validator_B9a.php index c72389b3..d56db406 100644 --- a/classes/validator/validators/BAV_Validator_B9a.php +++ b/classes/validator/validators/BAV_Validator_B9a.php @@ -31,7 +31,7 @@ class BAV_Validator_B9a extends BAV_Validator_Iteration_Weighted public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(1, 3, 2)); $this->setEnd(2); } @@ -48,12 +48,12 @@ protected function getResult() $result = $this->accumulator % 10; if ((string) $result === $this->getCheckNumber()) { return true; - + } $result += 5; if ($result >= 10) { $result -= 10; - + } return (string) $result === $this->getCheckNumber(); } diff --git a/classes/validator/validators/BAV_Validator_B9b.php b/classes/validator/validators/BAV_Validator_B9b.php index aae1142b..8b820d74 100644 --- a/classes/validator/validators/BAV_Validator_B9b.php +++ b/classes/validator/validators/BAV_Validator_B9b.php @@ -31,7 +31,7 @@ class BAV_Validator_B9b extends BAV_Validator_Iteration_Weighted public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(1, 2, 3, 4, 5, 6)); $this->setEnd(3); } @@ -48,12 +48,12 @@ protected function getResult() $result = $this->accumulator % 11; if ((string) $result === $this->getCheckNumber()) { return true; - + } $result += 5; if ($result >= 10) { $result -= 10; - + } return (string) $result === $this->getCheckNumber(); } diff --git a/classes/validator/validators/BAV_Validator_C0.php b/classes/validator/validators/BAV_Validator_C0.php index 1beb4e42..8cd17165 100644 --- a/classes/validator/validators/BAV_Validator_C0.php +++ b/classes/validator/validators/BAV_Validator_C0.php @@ -29,20 +29,20 @@ class BAV_Validator_C0 extends BAV_Validator_Chain implements BAV_Validator_BankDependent { - - + + public function __construct(BAV_Bank $bank) { parent::__construct($bank); $this->validators[] = new BAV_Validator_52($bank); $this->validators[0]->setWeights(array(2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4)); - + $this->validators[] = new BAV_Validator_20($bank); $this->validators[1]->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 3)); } - - + + public function useValidator(BAV_Validator $validator) { return $validator !== $this->validators[0] diff --git a/classes/validator/validators/BAV_Validator_C1.php b/classes/validator/validators/BAV_Validator_C1.php index 140071ab..2ed85951 100644 --- a/classes/validator/validators/BAV_Validator_C1.php +++ b/classes/validator/validators/BAV_Validator_C1.php @@ -50,10 +50,10 @@ class BAV_Validator_C1 extends BAV_Validator public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->mode1 = new BAV_Validator_17($bank); $this->mode1->setWeights(array(1, 2)); - + $this->mode2 = new BAV_Validator_C1b($bank); } protected function validate() @@ -69,7 +69,7 @@ protected function getResult() { return $this->validator->isValid($this->account); } - + } diff --git a/classes/validator/validators/BAV_Validator_C1b.php b/classes/validator/validators/BAV_Validator_C1b.php index ef5a55f9..999ce208 100644 --- a/classes/validator/validators/BAV_Validator_C1b.php +++ b/classes/validator/validators/BAV_Validator_C1b.php @@ -31,7 +31,7 @@ class BAV_Validator_C1b extends BAV_Validator_Iteration_Weighted public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(1, 2)); $this->setStart(0); $this->setEnd(-2); diff --git a/classes/validator/validators/BAV_Validator_C2.php b/classes/validator/validators/BAV_Validator_C2.php index cfcfec50..decde29b 100644 --- a/classes/validator/validators/BAV_Validator_C2.php +++ b/classes/validator/validators/BAV_Validator_C2.php @@ -28,15 +28,15 @@ class BAV_Validator_C2 extends BAV_Validator_Chain { - - + + public function __construct(BAV_Bank $bank) { parent::__construct($bank); $this->validators[] = new BAV_Validator_22($bank); $this->validators[0]->setWeights(array(3, 1)); - + $this->validators[] = new BAV_Validator_00($bank); $this->validators[1]->setWeights(array(2, 1)); } diff --git a/classes/validator/validators/BAV_Validator_C3.php b/classes/validator/validators/BAV_Validator_C3.php index ad03375f..c3b3bf80 100644 --- a/classes/validator/validators/BAV_Validator_C3.php +++ b/classes/validator/validators/BAV_Validator_C3.php @@ -50,10 +50,10 @@ class BAV_Validator_C3 extends BAV_Validator public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->mode1 = new BAV_Validator_00($bank); $this->mode1->setWeights(array(2, 1)); - + $this->mode2 = new BAV_Validator_58($bank); $this->mode2->setWeights(array(2, 3, 4, 5, 6, 0, 0, 0, 0)); } @@ -70,7 +70,7 @@ protected function getResult() { return $this->validator->isValid($this->account); } - + } diff --git a/classes/validator/validators/BAV_Validator_C4.php b/classes/validator/validators/BAV_Validator_C4.php index 5a84bd10..0028c84d 100644 --- a/classes/validator/validators/BAV_Validator_C4.php +++ b/classes/validator/validators/BAV_Validator_C4.php @@ -50,10 +50,10 @@ class BAV_Validator_C4 extends BAV_Validator public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->mode1 = new BAV_Validator_15($bank); $this->mode1->setWeights(array(2, 3, 4, 5)); - + $this->mode2 = new BAV_Validator_58($bank); $this->mode2->setWeights(array(2, 3, 4, 5, 6, 0, 0, 0, 0)); } @@ -70,7 +70,7 @@ protected function getResult() { return $this->validator->isValid($this->account); } - + } diff --git a/classes/validator/validators/BAV_Validator_C5.php b/classes/validator/validators/BAV_Validator_C5.php index 3d065a9f..1632ede8 100644 --- a/classes/validator/validators/BAV_Validator_C5.php +++ b/classes/validator/validators/BAV_Validator_C5.php @@ -60,7 +60,7 @@ class BAV_Validator_C5 extends BAV_Validator public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->mode1 = new BAV_Validator_75($bank); $this->mode2 = new BAV_Validator_29($bank); $this->mode3 = new BAV_Validator_00($bank); @@ -70,27 +70,27 @@ protected function validate() { $account = ltrim($this->account, '0'); $length = strlen($account); - + switch ($length) { - + case 6: case 9: if ($account{0} < 9) { $this->validator = $this->mode1; } break; - + case 8: if ($account{0} >= 3 && $account{0} <= 5) { $this->validator = $this->mode4; - + } break; - + case 10: if ($account{0} == 1 || $account{0} >= 4 && $account{0} <= 6 || $account{0} == 9) { $this->validator = $this->mode2; - + } elseif ($account{0} == 3) { $this->validator = $this->mode3; @@ -98,11 +98,11 @@ protected function validate() $circle = substr($account, 0, 2); if ($circle == 70 || $circle == 85) { $this->validator = $this->mode4; - + } } break; - + default: $this->validator = null; break; @@ -115,7 +115,7 @@ protected function getResult() { return ! is_null($this->validator) && $this->validator->isValid($this->account); } - + } diff --git a/classes/validator/validators/BAV_Validator_C6.php b/classes/validator/validators/BAV_Validator_C6.php index 9085850b..2dd08290 100644 --- a/classes/validator/validators/BAV_Validator_C6.php +++ b/classes/validator/validators/BAV_Validator_C6.php @@ -29,8 +29,8 @@ */ class BAV_Validator_C6 extends BAV_Validator { - - + + private static /** * @var Array @@ -58,16 +58,16 @@ class BAV_Validator_C6 extends BAV_Validator * @var BAV_Validator_00 */ $validator; - + public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->validator = new BAV_Validator_00($bank); } - - + + protected function validate() { $transformation = array_key_exists($this->account{0}, self::$transformation) @@ -76,8 +76,8 @@ protected function validate() $this->transformedAccount = $transformation . substr($this->account, 1); $this->validator->setNormalizedSize(9 + strlen($transformation)); } - - + + /** * @return bool */ @@ -87,6 +87,6 @@ protected function getResult() ? $this->validator->isValid($this->transformedAccount) : false; } - + } \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_C7.php b/classes/validator/validators/BAV_Validator_C7.php index 02dbe796..43fea11b 100644 --- a/classes/validator/validators/BAV_Validator_C7.php +++ b/classes/validator/validators/BAV_Validator_C7.php @@ -28,8 +28,8 @@ class BAV_Validator_C7 extends BAV_Validator_Chain { - - + + public function __construct(BAV_Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_D0.php b/classes/validator/validators/BAV_Validator_D0.php index 535ff9b3..41f3a140 100644 --- a/classes/validator/validators/BAV_Validator_D0.php +++ b/classes/validator/validators/BAV_Validator_D0.php @@ -46,16 +46,16 @@ public function __construct(BAV_Bank $bank) { parent::__construct($bank); } - - + + protected function validate() { $this->validator = substr($this->account, 0, 2) !== self::SWITCH_PREFIX ? new BAV_Validator_20($this->bank) : new BAV_Validator_09($this->bank); } - - + + /** * @return bool */ @@ -63,7 +63,7 @@ protected function getResult() { return $this->validator->isValid($this->account); } - + } diff --git a/classes/validator/validators/BAV_Validator_D1.php b/classes/validator/validators/BAV_Validator_D1.php index c95f81c9..b8201bd7 100644 --- a/classes/validator/validators/BAV_Validator_D1.php +++ b/classes/validator/validators/BAV_Validator_D1.php @@ -48,7 +48,7 @@ class BAV_Validator_D1 extends BAV_Validator 9 => 4363389 ); - + protected /** * @var String @@ -58,12 +58,12 @@ class BAV_Validator_D1 extends BAV_Validator * @var BAV_Validator_00 */ $validator; - - + + public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->validator = new BAV_Validator_00($bank); } @@ -77,17 +77,17 @@ protected function validate() } $transformationPrefix = self::$_transformation[$transformationIndex]; $this->validator->setNormalizedSize(10 + strlen($transformationPrefix)); - $this->transformedAccount + $this->transformedAccount = $transformationPrefix . substr($this->account, 1); } - - + + /** * @return bool */ protected function getResult() { - return + return array_key_exists( $this->_getTransformationIndex(), self::$_transformation @@ -104,6 +104,6 @@ private function _getTransformationIndex() { return $this->account{0}; } - + } \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_D2.php b/classes/validator/validators/BAV_Validator_D2.php index 90929b9b..f7f51894 100644 --- a/classes/validator/validators/BAV_Validator_D2.php +++ b/classes/validator/validators/BAV_Validator_D2.php @@ -32,8 +32,8 @@ */ class BAV_Validator_D2 extends BAV_Validator_Chain { - - + + protected /** * @var bool diff --git a/classes/validator/validators/BAV_Validator_D4.php b/classes/validator/validators/BAV_Validator_D4.php index 8b65cb97..e8c6d3cc 100644 --- a/classes/validator/validators/BAV_Validator_D4.php +++ b/classes/validator/validators/BAV_Validator_D4.php @@ -42,25 +42,25 @@ class BAV_Validator_D4 extends BAV_Validator * @var BAV_Validator_00 */ $validator; - + const TRANSFORMATION = 428259; public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->validator = new BAV_Validator_00($bank); $this->validator->setNormalizedSize(10 + strlen(self::TRANSFORMATION)); } - - + + protected function validate() { $this->transformedAccount = self::TRANSFORMATION.$this->account; } - - + + /** * @return bool */ @@ -69,6 +69,6 @@ protected function getResult() return $this->account{0} != 0 && $this->validator->isValid($this->transformedAccount); } - + } \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_D8.php b/classes/validator/validators/BAV_Validator_D8.php index a6f8bab3..c20e7aa1 100644 --- a/classes/validator/validators/BAV_Validator_D8.php +++ b/classes/validator/validators/BAV_Validator_D8.php @@ -43,7 +43,7 @@ class BAV_Validator_D8 extends BAV_Validator public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->_validator = new BAV_Validator_00($bank); } @@ -52,8 +52,8 @@ protected function validate() { } - - + + /** * @return bool */ @@ -66,6 +66,6 @@ protected function getResult() $set = (int) substr($this->account, 0, 3); return $set >= 1 && $set <= 9; } - + } \ No newline at end of file diff --git a/classes/validator/validators/BAV_Validator_E1.php b/classes/validator/validators/BAV_Validator_E1.php index cb504731..c43a893a 100644 --- a/classes/validator/validators/BAV_Validator_E1.php +++ b/classes/validator/validators/BAV_Validator_E1.php @@ -31,7 +31,7 @@ class BAV_Validator_E1 extends BAV_Validator_Iteration_Weighted public function __construct(BAV_Bank $bank) { parent::__construct($bank); - + $this->setWeights(array(1, 2, 3, 4, 5, 6, 11, 10, 9)); $this->setDivisor(11); } diff --git a/classes/verify/BAV_VerifyImport.php b/classes/verify/BAV_VerifyImport.php index f0cffdab..0dbd605a 100644 --- a/classes/verify/BAV_VerifyImport.php +++ b/classes/verify/BAV_VerifyImport.php @@ -38,7 +38,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * BAV_DataBackend - * + * * @package classes * @subpackage verify * @author Markus Malkusch @@ -166,7 +166,7 @@ public function save($file = null) $this->saveArray($fp, $this->invalidNumbers, 'invalid'); $this->saveArray($fp, $this->validNumbers, 'valid'); fclose($fp); - + } catch (BAV_VerifyException_IO $e) { fclose($fp); throw $e; diff --git a/classes/verify/testAPI/BAV_TestAPI.php b/classes/verify/testAPI/BAV_TestAPI.php index b0c23768..c3a70ce5 100644 --- a/classes/verify/testAPI/BAV_TestAPI.php +++ b/classes/verify/testAPI/BAV_TestAPI.php @@ -25,7 +25,7 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * + * * @package classes * @subpackage verify * @author Markus Malkusch @@ -33,37 +33,37 @@ */ abstract class BAV_TestAPI extends BAV { - - + + private /** * @var String */ $name = ''; - - + + /** * @param int $account * @return bool * @throws BAV_TestAPIException_Validation */ abstract protected function isValid(BAV_Bank $bank, $account); - - + + public function __construct() { $this->setName(get_class($this)); } - - + + /** * @param string $name */ protected function setName($name) { - $this->name = $name; + $this->name = $name; } - + /** * @param int $account * @return BAV_TestAPIResult @@ -75,18 +75,18 @@ public function getResult(BAV_Bank $bank, $account) ? BAV_TestAPIResult::VALID : BAV_TestAPIResult::INVALID; return new BAV_TestAPIResult($this, $result); - + } catch (Exception $e) { return new BAV_TestAPIResult_Error( $this, BAV_TestAPIResult::ERROR, $e->getMessage() ); - + } } - - + + /** * @return String */ @@ -94,8 +94,8 @@ public function getName() { return $this->name; } - - + + } diff --git a/classes/verify/testAPI/BAV_TestAPIResult.php b/classes/verify/testAPI/BAV_TestAPIResult.php index dce83343..fa22b7c0 100644 --- a/classes/verify/testAPI/BAV_TestAPIResult.php +++ b/classes/verify/testAPI/BAV_TestAPIResult.php @@ -20,7 +20,7 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * + * * @package classes * @subpackage verify * @author Markus Malkusch @@ -31,13 +31,13 @@ class BAV_TestAPIResult extends BAV { - + const VALID = 1; const INVALID = 2; const BANK_NOT_FOUND = 3; const ERROR = 4; - - + + private /** * @var BAV_TestAPI @@ -47,8 +47,8 @@ class BAV_TestAPIResult extends BAV * @var int */ $result; - - + + /** * @param BAV_TestAPI $testAPI * @param int $result @@ -58,8 +58,8 @@ public function __construct(BAV_TestAPI $testAPI, $result) $this->testAPI = $testAPI; $this->result = $result; } - - + + /** * @return BAV_TestAPI */ @@ -67,8 +67,8 @@ public function getTestAPI() { return $this->testAPI; } - - + + /** * @return int */ @@ -76,8 +76,8 @@ public function getResult() { return $this->result; } - - + + } diff --git a/classes/verify/testAPI/BAV_TestAPIResult_Error.php b/classes/verify/testAPI/BAV_TestAPIResult_Error.php index e55ac768..09e04deb 100644 --- a/classes/verify/testAPI/BAV_TestAPIResult_Error.php +++ b/classes/verify/testAPI/BAV_TestAPIResult_Error.php @@ -19,7 +19,7 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * + * * @package classes * @subpackage verify * @author Markus Malkusch @@ -30,14 +30,14 @@ class BAV_TestAPIResult_Error extends BAV_TestAPIResult { - + private /** * @var String */ $message = ''; - - + + /** * @param BAV_TestAPI $testAPI * @param int $result @@ -46,11 +46,11 @@ class BAV_TestAPIResult_Error extends BAV_TestAPIResult public function __construct(BAV_TestAPI $testAPI, $result, $message = '') { parent::__construct($testAPI, $result); - + $this->message = $message; } - - + + /** * @return String */ @@ -58,8 +58,8 @@ public function getMessage() { return $this->message; } - - + + } diff --git a/classes/verify/testAPI/BAV_TestAPI_BAV.php b/classes/verify/testAPI/BAV_TestAPI_BAV.php index cc34c6b0..75d978a4 100644 --- a/classes/verify/testAPI/BAV_TestAPI_BAV.php +++ b/classes/verify/testAPI/BAV_TestAPI_BAV.php @@ -22,7 +22,7 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * + * * @package classes * @subpackage verify * @author Markus Malkusch @@ -30,16 +30,16 @@ */ class BAV_TestAPI_BAV extends BAV_TestAPI { - - + + public function __construct() { parent::__construct(); - + $this->setName("bav"); } - - + + /** * @param int $bankCode * @param int $account @@ -50,15 +50,15 @@ protected function isValid(BAV_Bank $bank, $account) { try { return $bank->isValid($account); - + } catch (Exception $e) { echo $e->getMessage(), "\n", $e->getTraceAsString(); exit(1); - + } } - - + + } diff --git a/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php b/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php index 02fcb67f..f9c6e4a8 100644 --- a/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php +++ b/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php @@ -24,7 +24,7 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * + * * @package classes * @subpackage verify * @author Markus Malkusch @@ -32,15 +32,15 @@ */ class BAV_TestAPI_Kontocheck extends BAV_TestAPI { - - + + const NOT_INITIALIZED = -40; const BANK_NOT_FOUND = -4; const INVALID_NULL = -12; const INVALID_KTO = -3; const INVALID_FALSE = 0; - - + + /** * @param String $lutFile * @param int $lutVersion @@ -49,16 +49,16 @@ class BAV_TestAPI_Kontocheck extends BAV_TestAPI public function __construct($lutFile, $lutVersion) { parent::__construct(); - + $this->setName("kc"); - + if (! lut_init($lutFile, $lutVersion)) { throw new BAV_TestAPIException("Could not initialize LUT."); - + } } - - + + /** * @param int $bank * @param int $account @@ -70,31 +70,31 @@ public function __construct($lutFile, $lutVersion) protected function isValid(BAV_Bank $bank, $account) { $isValid = kto_check_blz($bank->getBankID(), $account); - + switch ($isValid) { - + case self::NOT_INITIALIZED: throw new BAV_TestAPIException_Validation_NotInitialized("LUT not initialized"); - + case self::BANK_NOT_FOUND: throw new BAV_TestAPIException_Validation_BankNotFound($bank->getBankID()); - + case self::INVALID_NULL: case self::INVALID_KTO: case self::INVALID_FALSE: return false; - + default: if ($isValid < 0) { throw new BAV_TestAPIException_Validation("unknown code $isValid"); - + } return true; - + } } - - + + } diff --git a/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php b/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php index 0e4f32d9..575e0b34 100644 --- a/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php +++ b/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php @@ -24,7 +24,7 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * + * * @package classes * @subpackage verify * @author Markus Malkusch @@ -38,9 +38,9 @@ class BAV_TestAPI_Ktoblzcheck extends BAV_TestAPI const VALID = 0; const INVALID = 2; const BANK_NOT_FOUND = 3; - - + + private /** * @var String @@ -50,8 +50,8 @@ class BAV_TestAPI_Ktoblzcheck extends BAV_TestAPI * @var String */ $bankdata = ''; - - + + /** * @param String $bankdata * @param String $binary @@ -60,14 +60,14 @@ class BAV_TestAPI_Ktoblzcheck extends BAV_TestAPI public function __construct($bankdata, $binary = null) { parent::__construct(); - + $this->setName("ktoblzcheck"); - + $this->bankdata = realpath($bankdata); $this->binary = is_null($binary) ? self::BINARY : realpath($binary); } - - + + /** * @param int $account * @return bool @@ -82,25 +82,25 @@ protected function isValid(BAV_Bank $bank, $account) $out, $result ); - + switch ($result) { - + case self::VALID: return true; - + case self::INVALID: return false; - + case self::BANK_NOT_FOUND: - throw new BAV_TestAPIException_Validation_BankNotFound("Bank not found: {$bank->getBankID()}"); - + throw new BAV_TestAPIException_Validation_BankNotFound("Bank not found: {$bank->getBankID()}"); + default: throw new BAV_TestAPIException_Validation("unknown code $result: " . implode("\n", $out)); - + } } - - + + } diff --git a/tests/AgencyQueryTest.php b/tests/AgencyQueryTest.php index 4ece17b9..a3af6134 100755 --- a/tests/AgencyQueryTest.php +++ b/tests/AgencyQueryTest.php @@ -43,32 +43,32 @@ protected function setUp() { $this->backend = new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); } - - + + public function testOnlyID() { $agencies = $this->backend->getAgencies( 'SELECT id FROM bav_agency LIMIT 100'); $this->assertAgencies($agencies, 100); } - - + + public function testIDAndBank() { $agencies = $this->backend->getAgencies( 'SELECT id, bank FROM bav_agency LIMIT 100'); $this->assertAgencies($agencies, 100); } - - + + public function testNoBank() { $agencies = $this->backend->getAgencies( 'SELECT id, name, postcode, city, shortTerm, pan, bic FROM bav_agency LIMIT 100'); $this->assertAgencies($agencies, 100); } - - + + /** * @expectedException BAV_DataBackendException_IO_MissingAttributes */ @@ -78,12 +78,12 @@ public function testNoID() 'SELECT name, postcode, city, shortTerm, pan, bic, bank FROM bav_agency LIMIT 1' ); } - - + + private function assertAgencies(Array $agencies, $count) { $this->assertEquals($count, count($agencies)); - + foreach ($agencies as $agency) { if ($agency->isMainAgency()) { $this->assertTrue( @@ -94,7 +94,7 @@ private function assertAgencies(Array $agencies, $count) $agency->getBank() === $agency->getBank()->getMainAgency()->getBank(), "Inconsistent Bank" ); - + } else { $includedCount = 0; foreach ($agency->getBank()->getAgencies() as $banksAgency) { diff --git a/tests/BackendTest.php b/tests/BackendTest.php index 5202c2fe..aabc3135 100755 --- a/tests/BackendTest.php +++ b/tests/BackendTest.php @@ -45,8 +45,8 @@ public static function classConstructor() { self::$referenceBackend = new BAV_DataBackend_File(); } - - + + /** * @return Array The tested backends */ @@ -57,8 +57,8 @@ public function provideBackends() array(new BAV_DataBackend_File()) ); } - - + + /** */ public function provideInstallationBackends() @@ -68,8 +68,8 @@ public function provideInstallationBackends() array(new BAV_DataBackend_File(tempnam(BAV_DataBackend_File::getTempdir(), 'bavtest'))) ); } - - + + /** * @return Array */ @@ -81,13 +81,13 @@ public function provideBanks() foreach (self::$referenceBackend->getAllBanks() as $bank) { $comparedBank = $backend->getBank($bank->getBankID()); $banks[] = array($bank, $comparedBank); - + } } return $banks; } - - + + /** * @return Array */ @@ -97,26 +97,26 @@ public function provideAgencies() foreach ($this->provideBanks() as $banks) { $referenceBank = $banks[0]; $testedBank = $banks[1]; - + $referenceAgencies = array(); foreach ($referenceBank->getAgencies() as $agency) { $referenceAgencies[$agency->getID()] = $agency; - + } - + foreach ($testedBank->getAgencies() as $agency) { $agencies[] = array( $referenceAgencies[$agency->getID()], $agency ); - + } - + } return $agencies; } - - + + /** * @dataProvider provideInstallationBackends */ @@ -126,8 +126,8 @@ public function testInstallation(BAV_DataBackend $backend) $backend->update(); $backend->uninstall(); } - - + + /** * @dataProvider provideInstallationBackends */ @@ -136,12 +136,12 @@ public function testInstallationIsComplete(BAV_DataBackend $backend) $this->markTestIncomplete(); //TODO test if the installation process fills all banks } - - + + /** * Testet, dass ein erneutes $backend->getBank($id) das selbe - * Objekt zurückliefert. - * + * Objekt zurückliefert. + * * @dataProvider provideBackends */ public function testSingleInstances(BAV_DataBackend $backend) @@ -153,8 +153,8 @@ public function testSingleInstances(BAV_DataBackend $backend) ); } } - - + + /** * @dataProvider provideBackends */ @@ -165,8 +165,8 @@ public function testGetAllBanks(BAV_DataBackend $backend) count($backend->getAllBanks()) ); } - - + + /** * @dataProvider provideBanks */ @@ -176,19 +176,19 @@ public function testBanks(BAV_Bank $referenceBank, BAV_Bank $testedBank) $referenceBank->getValidationType(), $testedBank->getValidationType() ); - + $this->assertEqualAgency( $referenceBank->getMainAgency(), $testedBank->getMainAgency() ); - + $this->assertEquals( count($referenceBank->getAgencies()), count($testedBank->getAgencies()) ); } - - + + /** * @dataProvider provideAgencies */ @@ -196,8 +196,8 @@ public function testAgencies(BAV_Agency $referenceAgency, BAV_Agency $testedAgen { $this->assertEqualAgency($referenceAgency, $testedAgency); } - - + + private function assertEqualAgency(BAV_Agency $a, BAV_Agency $b) { $this->assertTrue($a->getBank()->getBankID() === $b->getBank()->getBankID()); @@ -210,11 +210,11 @@ private function assertEqualAgency(BAV_Agency $a, BAV_Agency $b) $this->assertTrue($a->hasBIC() === $b->hasBIC()); if ($a->hasPAN()) { $this->assertTrue($a->getPAN() === $b->getPAN()); - + } if ($a->hasBIC()) { $this->assertTrue($a->getBIC() === $b->getBIC()); - + } } diff --git a/tests/CrossProjectTest.php b/tests/CrossProjectTest.php index 5a70f201..ce2b7fb1 100755 --- a/tests/CrossProjectTest.php +++ b/tests/CrossProjectTest.php @@ -29,8 +29,8 @@ class CrossProjectTest extends PHPUnit_Framework_TestCase { - - + + private /** * @var int @@ -49,15 +49,15 @@ class CrossProjectTest extends PHPUnit_Framework_TestCase * @var Array */ $testAPIs = array(); - - + + /** * @return Array */ protected function setUp() { $ktoblzcheckPath = __DIR__ . "/../tmp/ktoblzcheck/ktoblzcheck-1.21/src"; - + $this->testAPIs = array( new BAV_TestAPI_BAV(), new BAV_TestAPI_Kontocheck('/etc/blz.lut2', 2), @@ -67,8 +67,8 @@ protected function setUp() ) ); } - - + + /** * @return Array */ @@ -78,12 +78,12 @@ public function provideBanks() $backend = new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); foreach ($backend->getAllBanks() as $bank) { $banks[] = array($bank); - + } return $banks; } - - + + /** * @dataProvider provideBanks */ @@ -93,35 +93,35 @@ public function testCrossProjects(BAV_Bank $bank) $isSkip = $bank->getValidator() instanceof BAV_Validator_BankDependent ? array_key_exists($bank->getValidationType(), $this->failedBankDependentValidators) : array_key_exists($bank->getValidationType(), $this->testedValidators); - + if ($isSkip) { return; - + } for ($account = $this->lastAccount; $account >= 0; $account--) { for ($pad = strlen($account); $pad <= strlen($this->lastAccount); $pad++) { $paddedAccount = str_pad($account, $pad, "0", STR_PAD_LEFT); $this->assertSameResult($bank, $paddedAccount); - + } } - + } catch (BAV_TestAPIException_Validation_BankNotFound $e) { return; - + } catch (Exception $e) { if ($bank instanceof BAV_Validator_BankDependent) { $this->failedBankDependentValidators[$bank->getValidationType()] = true; - + } - throw $e; - + throw $e; + } $this->testedValidators[$bank->getValidationType()] = true; } - - + + private function assertSameResult(BAV_Bank $bank, $account) { $results = array(); @@ -130,17 +130,17 @@ private function assertSameResult(BAV_Bank $bank, $account) $result = $testAPI->getResult($bank, $account); $results[] = $result; $resultValues[] = $result->getResult(); - + } - + $this->assertEquals( 1, count(array_unique($resultValues)), $this->getErrorMessage($bank, $account, $results) ); } - - + + /** * @param BAV_Bank $bank * @param String $account @@ -154,25 +154,25 @@ private function getErrorMessage(BAV_Bank $bank, $account, Array $results) BAV_TestAPIResult::INVALID => "invalid", BAV_TestAPIResult::ERROR => "error" ); - + $message = "{$bank->getBankID()}/{$bank->getValidationType()}\t" . str_pad($account, strlen($this->lastAccount)) . "\t"; - + foreach ($results as $result) { $message .= "{$result->getTestAPI()->getName()}: " . str_pad($resultTranslation[$result->getResult()], 8); if ($result instanceof BAV_TestAPIResult_Error) { $message .= " {$result->getMessage()}"; - + } $message .= "\t"; - + } - + return $message; } - - + + } diff --git a/tests/DataConstraintTest.php b/tests/DataConstraintTest.php index 85d01f7f..5553ca92 100755 --- a/tests/DataConstraintTest.php +++ b/tests/DataConstraintTest.php @@ -2,7 +2,7 @@ /** * This scripts checks if the banklist.txt fits into our model. */ - + require_once __DIR__ . "/../autoloader/autoloader.php"; @@ -17,13 +17,13 @@ class DataConstraintTest extends PHPUnit_Framework_TestCase * @var PDO */ $pdo; - - + + public static function classConstructor() { self::$pdo = new PDO('mysql:host=localhost;dbname=test', 'test'); self::$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - + self::$pdo->exec("DROP TABLE IF EXISTS bank"); self::$pdo->exec("CREATE TEMPORARY TABLE bank ( id int primary key, @@ -42,13 +42,13 @@ public static function classConstructor() index(pan), index(bic) ) engine=MEMORY"); - + $fp = fopen(__DIR__ . '/../data/banklist.txt', 'r'); if (! is_resource($fp)) { throw new RuntimeException('I/O-Error'); - + } - + $insert = self::$pdo->prepare(" INSERT INTO bank ( id, blz, isMain, name, plz, city, shortterm, pan, bic, validator) @@ -63,7 +63,7 @@ public static function classConstructor() $insert->bindParam(':pan', $pan); $insert->bindParam(':bic', $bic); $insert->bindParam(':validator', $validator); - + while ($line = fgets($fp)) { $blz = substr($line, 0, 8); $isMain = ($line{8} === '1') ? 1 : 0; @@ -75,14 +75,14 @@ public static function classConstructor() $bic = trim(substr($line, 139, 11)); $validator = substr($line, 150, 2); $id = substr($line, 152, 6); - + $insert->execute(); - + } fclose($fp); } - - + + /** * @return Array */ @@ -90,19 +90,19 @@ public function provideParsedLines() { $parser = new BAV_FileParser(); $lines = array(); - + for ($i = 0; $i < $parser->getLines(); $i++) { $line = $parser->readLine($i); $blz = mb_substr($line, 0, 8, 'UTF-8'); $type = mb_substr($line, BAV_FileParser::TYPE_OFFSET, BAV_FileParser::TYPE_LENGTH, 'UTF-8'); - + $lines[] = array($blz, $type); } - + return $lines; } - - + + /** * @dataProvider provideParsedLines */ @@ -111,8 +111,8 @@ public function testParser($blz, $type) $this->assertRegExp('~^\d{8}$~', $blz); $this->assertRegExp('~^[\dA-Z]\d$~', $type); } - - + + /** * Every bankID should have exact one validator */ @@ -126,8 +126,8 @@ public function testValidatorCount() "bankID <-> validator is not n:1!" ); } - - + + /** * Every bankID should have exact one mainAgency */ @@ -139,8 +139,8 @@ public function testMainAgency () "Every bankID should have exact one mainAgency." ); } - - + + public function testBLZDatatype () { $statement = self::$pdo->query("SELECT blz FROM bank WHERE blz LIKE '0%'"); diff --git a/tests/TestSuite.php b/tests/TestSuite.php index a1c9b37c..8099f288 100644 --- a/tests/TestSuite.php +++ b/tests/TestSuite.php @@ -31,25 +31,25 @@ class TestSuite extends PHPUnit_Framework_TestSuite { - - + + /** * @return TestSuite */ public static function suite() { $suite = new self(); - + $suite->addTestSuite('AgencyQueryTest'); $suite->addTestSuite('DataConstraintTest'); $suite->addTestSuite('ValidatorTest'); $suite->addTestSuite('VerifyImportTest'); $suite->addTestSuite('BackendTest'); - + return $suite; } - - + + } diff --git a/tests/ValidatorTest.php b/tests/ValidatorTest.php index 9cda175c..fd8982c4 100755 --- a/tests/ValidatorTest.php +++ b/tests/ValidatorTest.php @@ -55,7 +55,7 @@ protected function setUp() { if (! empty(self::$dataBackend)) { return; - + } #self::$dataBackend = new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); self::$dataBackend = new BAV_DataBackend_File(); @@ -66,15 +66,15 @@ protected function setUp() } } - - + + /** * @return Array */ public function provideBanks() { $this->setUp(); - + $banks = array(); $files = BAV_ClassFile::getClassFiles(__DIR__.'/../classes/validator/validators/'); foreach ($files as $class) { @@ -89,12 +89,12 @@ public function provideBanks() $banks[] = array($bank); self::$implementedBanks[$validatorType] = $bank; - + } return $banks; } - - + + /** * @return Array */ @@ -105,7 +105,7 @@ public function provideAccountsAndBanksInAllLengths() $bank = $bank[0]; for ($length = 0; $length <= 10; $length++) { $providedAccountsAndBanks[] = array($bank, str_repeat(1, $length)); - + } } return $providedAccountsAndBanks; @@ -128,11 +128,11 @@ public function testFindParseErrors(BAV_Bank $bank) */ for ($i = 0; $i < 10; $i++) { $bank->isValid(mt_rand(0, 9999999999)); - + } } - - + + /** * 0 - 0000000000 should always be invalid * @@ -149,11 +149,11 @@ public function testNullIsInvalid(BAV_Bank $bank) $bank->isValid($account), "{$bank->getBankID()}/{$bank->getValidationType()} $account should be invalid." ); - + } } - - + + /** * Short accounts should not raise exception. * @@ -166,8 +166,8 @@ public function testAccountLength(BAV_Bank $bank, $account) { $bank->isValid($account); } - - + + /** * @return Array */ @@ -176,15 +176,15 @@ public function provideTestAccounts() $verifyArray = parse_ini_file(__DIR__.'/../data/verify.ini', true); if (! $verifyArray) { throw new RuntimeException("couldn't parse verify.ini."); - + } return array_merge( $this->getTestAccounts($verifyArray['valid'], true), $this->getTestAccounts($verifyArray['invalid'], false) ); } - - + + /** * @return Array */ @@ -197,12 +197,12 @@ private function getTestAccounts(Array $testAccounts, $expectedValidation) preg_split(':\D+:', $tests), $expectedValidation ); - + } return $accounts; } - - + + /** * @dataProvider provideTestAccounts */ @@ -212,28 +212,28 @@ public function testAccount($typeOrBankID, Array $accountIDs, $expectedValidatio $typeOrBankID = (strlen($typeOrBankID) < 2 ? '0' : '').$typeOrBankID; $this->assertArrayHasKey($typeOrBankID, self::$implementedBanks); $bank = self::$implementedBanks[$typeOrBankID]; - + $this->assertEquals($typeOrBankID, $bank->getValidationType()); } else { try { $bank = self::$dataBackend->getBank($typeOrBankID); - + } catch (BAV_DataBackendException_BankNotFound $e) { switch ($e->getBankID()) { - + case '13051052': case '13051172': case '81053132': $bank = new BAV_Bank(self::$dataBackend, $e->getBankID(), '52'); break; - + case '16052072': case '85055142': $bank = new BAV_Bank(self::$dataBackend, $e->getBankID(), '53'); break; - case '80053762': + case '80053762': case '80053772': case '80053782': $bank = new BAV_Bank(self::$dataBackend, $e->getBankID(), 'B6'); @@ -243,13 +243,13 @@ public function testAccount($typeOrBankID, Array $accountIDs, $expectedValidatio case '86055462': $bank = new BAV_Bank(self::$dataBackend, $e->getBankID(), 'C0'); break; - + default: throw $e; - + } } } - + foreach ($accountIDs as $accountID) { $this->assertEquals( $expectedValidation, diff --git a/tests/VerifyImportTest.php b/tests/VerifyImportTest.php index 11074006..a16bf50b 100755 --- a/tests/VerifyImportTest.php +++ b/tests/VerifyImportTest.php @@ -47,34 +47,34 @@ class VerifyImportTest extends PHPUnit_Framework_TestCase * @var BAV_DataBackend_File */ $databack; - - + + protected function setUp() { $this->databack = new BAV_DataBackend_File(); $this->verifyArray = parse_ini_file(__DIR__.'/../data/verify.ini', true); - + $this->assertType( PHPUnit_Framework_Constraint_IsType::TYPE_ARRAY, $this->verifyArray, "Could not parse verify.ini" ); - + foreach ($this->databack->getAllBanks() as $bank) { $this->validationMap[$bank->getValidationType()] = $bank; - + } } - - + + public function testFileImport() { $importer = new BAV_VerifyImport($this->databack); $importer->importVerifyFile(); $this->assertImporter($importer); } - - + + public function testSequentialImport() { $importer = new BAV_VerifyImport($this->databack); @@ -87,59 +87,59 @@ public function testSequentialImport() $bankID = strlen($type) === 2 ? $this->getBank($type)->getBankID() : $type; foreach ($accounts as $account) { $importer->import($bankID, $account, $expect === 'valid' ? true : false); - + } - + } catch (BAV_DataBackendException_BankNotFound $e) { $notSupported[] = $type; - + } - + } - + } $this->assertImporter($importer, $notSupported); } - - + + private function assertImporter(BAV_VerifyImport $importer, Array $notSupported = array()) { $file = tempnam('/tmp', 'BAV'); $this->assertFileExists($file); - + $importer->save($file); $checkArray = parse_ini_file($file, true); unlink($file); - + $this->assertType( PHPUnit_Framework_Constraint_IsType::TYPE_ARRAY, $checkArray, "Could not parse temporary file $file." ); - + foreach ($this->verifyArray as $expect => $array) { foreach ($array as $type => $accounts) { $actualAccounts = @$checkArray[$expect][$type]; unset($checkArray[$expect][$type]); if (array_search($type, $notSupported) !== false) { continue; - + } $this->assertEquals( preg_replace('~\D~', '', $accounts), preg_replace('~\D~', '', $actualAccounts), "[$expect]$type is not equal!" ); - + } - + } - + $this->assertEquals(0, count($checkArray['valid'])); $this->assertEquals(0, count($checkArray['invalid'])); } - - + + /** * @param String $validationType * @return BAV_Bank @@ -148,7 +148,7 @@ private function getBank($validationType) { if (! isset($this->validationMap[$validationType])) { throw new BAV_DataBackendException_BankNotFound($validationType); - + } return $this->validationMap[$validationType]; } diff --git a/tests/checkAgainstTestAPIs.php b/tests/checkAgainstTestAPIs.php index 1e73e3ea..e3f29ba8 100755 --- a/tests/checkAgainstTestAPIs.php +++ b/tests/checkAgainstTestAPIs.php @@ -31,14 +31,14 @@ class BAV_CheckAgainstTestAPIs extends BAV { - - + + const VALID = 1; const INVALID = 2; const BANK_NOT_FOUND = 3; const ERROR = 4; - + private /** * @var int @@ -61,73 +61,73 @@ class BAV_CheckAgainstTestAPIs extends BAV * @var Array */ $testAPIs = array(); - - + + public function __construct() { $ktoblzcheckPath = __DIR__ . "/../tmp/ktoblzcheck/ktoblzcheck-1.21/src"; - + $this->testAPIs[] = new BAV_TestAPI_BAV(); $this->testAPIs[] = new BAV_TestAPI_Kontocheck('/etc/blz.lut', 2); $this->testAPIs[] = new BAV_TestAPI_Ktoblzcheck( "$ktoblzcheckPath/bankdata/bankdata.txt", "$ktoblzcheckPath/bin/ktoblzcheck" ); - - + + #$backend = new BAV_DataBackend_File(); $backend = new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); - - + + if (! empty($GLOBALS['argv'][1])) { $nodeNumber = $GLOBALS['argv'][1]; $nodeCount = @$GLOBALS['argv'][2]; - + if ($nodeNumber * $nodeCount == 0 || min($nodeNumber, $nodeCount) < 0) { trigger_error( 'Expect two numeric arguments > 0: $nodeNumber $nodeCount', E_USER_ERROR ); - + } - + if ($nodeNumber > $nodeCount) { trigger_error( 'Expect first argument ($nodeNumber) <= second argument ($nodeCount)', E_USER_ERROR ); - + } - + } else { $nodeNumber = 1; $nodeCount = 1; - + } - + $increment = $this->lastAccount > $this->firstAccount ? 1 : -1; $padLength = strlen(max($this->lastAccount, $this->firstAccount)); - + $count = ceil(abs($this->lastAccount - $this->firstAccount) / $nodeCount); $firstAccount = $this->firstAccount + $increment * ($nodeNumber - 1) * ($count + 1); - + if ($nodeCount == $nodeNumber) { $afterLastAccount = $this->lastAccount + $increment; - + } else { - $afterLastAccount = $firstAccount + $increment * ($count + 1); - + $afterLastAccount = $firstAccount + $increment * ($count + 1); + } - + foreach ($backend->getAllBanks() as $bank) { try { if ( array_key_exists($bank->getValidationType(), $this->testedValidators) && ! $bank->getValidator() instanceof BAV_Validator_BankDependent) { - + continue; - + } - + for ($account = $firstAccount; $account != $afterLastAccount; $account += $increment) { for ($pad = strlen($account); $pad <= $padLength; $pad++) { $paddedAccount = str_pad($account, $pad, "0", STR_PAD_LEFT); @@ -135,21 +135,21 @@ public function __construct() $this->testAccount($bank, $paddedAccount); if (count($this->differences) > $differences) { break 2; - + } } } - + $this->testedValidators[$bank->getValidationType()] = true; - + } catch (BAV_TestAPIException_Validation_BankNotFound $e) { continue; - + } } } - - + + private function testAccount(BAV_Bank $bank, $account) { $results = array(); @@ -158,40 +158,40 @@ private function testAccount(BAV_Bank $bank, $account) $result = $testAPI->getResult($bank, $account); $results[] = $result; $resultValues[] = $result->getResult(); - + } - + if (count(array_unique($resultValues)) == 1) { return; - + } - - + + $resultTranslation = array( BAV_TestAPIResult::VALID => "valid", BAV_TestAPIResult::INVALID => "invalid", BAV_TestAPIResult::ERROR => "error" ); - + echo "{$bank->getBankID()}/{$bank->getValidationType()}\t", str_pad($account, strlen($this->lastAccount)), "\t"; - + foreach ($results as $result) { echo "{$result->getTestAPI()->getName()}: ", str_pad($resultTranslation[$result->getResult()], 8); if ($result instanceof BAV_TestAPIResult_Error) { echo " {$result->getMessage()}"; - + } echo "\t"; - + } echo "\n"; - + $this->differences[] = array($bank, $account, $results); } - - + + } new BAV_CheckAgainstTestAPIs(); From 5f3fabd5e0cef242985187756a967fc65f4da1e6 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 23:46:08 +0200 Subject: [PATCH 050/303] BAV_FileParser --- .../dataBackend/fileParser/BAV_FileParser.php | 50 +++++++++++-------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/classes/dataBackend/fileParser/BAV_FileParser.php b/classes/dataBackend/fileParser/BAV_FileParser.php index 8303673f..c93dedb2 100644 --- a/classes/dataBackend/fileParser/BAV_FileParser.php +++ b/classes/dataBackend/fileParser/BAV_FileParser.php @@ -1,13 +1,5 @@ file = is_null($file) - ? __DIR__ . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . "data" . DIRECTORY_SEPARATOR . "banklist.txt" - : $file; + $defaultFile = + __DIR__ . DIRECTORY_SEPARATOR . ".." + . DIRECTORY_SEPARATOR . ".." + . DIRECTORY_SEPARATOR . ".." + . DIRECTORY_SEPARATOR . "data" + . DIRECTORY_SEPARATOR . "banklist.txt"; + + $this->file = is_null($file) ? $defaultFile: $file; } + /** * @throws BAV_FileParserException_IO * @throws BAV_FileParserException_FileNotExists @@ -129,6 +126,7 @@ private function init() } $this->lines = floor(($filesize - 1) / $this->lineLength); } + /** * @throws BAV_FileParserException_IO * @throws BAV_FileParserException_FileNotExists @@ -139,6 +137,7 @@ public function getLines() $this->init(); return $this->lines; } + /** * @throws BAV_FileParserException_IO * @throws BAV_FileParserException_FileNotExists @@ -150,6 +149,7 @@ public function rewind() } } + /** * @throws BAV_FileParserException_IO * @throws BAV_FileParserException_FileNotExists @@ -163,6 +163,7 @@ public function seekLine($line, $offset = 0) } } + /** * @throws BAV_FileParserException_IO * @throws BAV_FileParserException_FileNotExists @@ -174,6 +175,7 @@ public function readLine($line) $this->seekLine($line); return self::$encoding->convert(fread($this->getFileHandle(), $this->lineLength), self::FILE_ENCODING); } + /** * @throws BAV_FileParserException_IO * @throws BAV_FileParserException_FileNotExists @@ -185,6 +187,7 @@ public function getBankID($line) $this->seekLine($line, self::BANKID_OFFSET); return self::$encoding->convert(fread($this->getFileHandle(), self::BANKID_LENGTH), self::FILE_ENCODING); } + /** * @throws BAV_FileParserException_FileNotExists * @throws BAV_FileParserException_IO @@ -195,6 +198,7 @@ public function getFileHandle() $this->init(); return $this->fp; } + /** * @throws BAV_FileParserException_FileNotExists * @throws BAV_FileParserException_IO @@ -205,6 +209,7 @@ public function getLineLength() $this->init(); return $this->lineLength; } + /** */ public function __destruct() @@ -214,6 +219,7 @@ public function __destruct() } } + /** * @throws BAV_FileParserException_ParseError * @param string $line @@ -229,6 +235,7 @@ public function getBank(BAV_DataBackend $dataBackend, $line) $bankID = self::$encoding->substr($line, self::BANKID_OFFSET, self::BANKID_LENGTH); return new BAV_Bank($dataBackend, $bankID, $type); } + /** * @throws BAV_FileParserException_ParseError * @param string $line @@ -249,6 +256,7 @@ public function getAgency(BAV_Bank $bank, $line) $pan = trim(self::$encoding->substr($line, self::PAN_OFFSET, self::PAN_LENGTH)); return new BAV_Agency($id, $bank, $name, $shortTerm, $city, $postcode, $bic, $pan); } + /** * @throws BAV_FileParserException_ParseError * @param string $line @@ -262,6 +270,7 @@ public function isMainAgency($line) } return self::$encoding->substr($line, self::ISMAIN_OFFSET, 1) === '1'; } + /** * @return string */ @@ -269,7 +278,4 @@ public function getFile() { return $this->file; } - - } - From 02414e99769d00e621f227fadb27981deb4557e3 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 23:47:24 +0200 Subject: [PATCH 051/303] BAV_FileParserContext --- .../fileParser/BAV_FileParserContext.php | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/classes/dataBackend/fileParser/BAV_FileParserContext.php b/classes/dataBackend/fileParser/BAV_FileParserContext.php index ab9929bc..49b7f9a2 100644 --- a/classes/dataBackend/fileParser/BAV_FileParserContext.php +++ b/classes/dataBackend/fileParser/BAV_FileParserContext.php @@ -1,8 +1,5 @@ line = $line; } + /** * @return int */ @@ -64,6 +61,7 @@ public function getLine() { return $this->line; } + /** * @throws BAV_FileParserContextException_Undefined * @return int @@ -76,6 +74,7 @@ public function getStart() } return $this->start; } + /** * @return bool */ @@ -83,6 +82,7 @@ public function isStartDefined() { return ! is_null($this->start); } + /** * @throws BAV_FileParserContextException_Undefined * @return int @@ -95,6 +95,7 @@ public function getEnd() } return $this->end; } + /** * @return bool */ @@ -102,6 +103,7 @@ public function isEndDefined() { return ! is_null($this->end); } + /** * @param int $start */ @@ -109,6 +111,7 @@ public function setStart($start) { $this->start = $start; } + /** * @param int $end */ @@ -116,8 +119,4 @@ public function setEnd($end) { $this->end = $end; } - - } - - From 1a47921762b3536efdc0067ce267dfb100e25943 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 23:51:07 +0200 Subject: [PATCH 052/303] BAV_FileParserException* --- .../exception/BAV_FileParserContextException.php | 4 ---- .../BAV_FileParserContextException_Undefined.php | 5 ----- .../fileParser/exception/BAV_FileParserException.php | 4 ---- .../BAV_FileParserException_FileNotExists.php | 12 ++---------- .../exception/BAV_FileParserException_IO.php | 5 ----- .../exception/BAV_FileParserException_ParseError.php | 5 ----- 6 files changed, 2 insertions(+), 33 deletions(-) diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserContextException.php b/classes/dataBackend/fileParser/exception/BAV_FileParserContextException.php index 06a10fbd..01932510 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserContextException.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserContextException.php @@ -1,6 +1,5 @@ * @@ -27,7 +26,4 @@ class BAV_FileParserContextException extends RuntimeException { - } - - diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserContextException_Undefined.php b/classes/dataBackend/fileParser/exception/BAV_FileParserContextException_Undefined.php index 227b8171..67b60dd1 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserContextException_Undefined.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserContextException_Undefined.php @@ -1,7 +1,5 @@ * @@ -28,7 +26,4 @@ class BAV_FileParserContextException_Undefined extends BAV_FileParserContextException { - } - - diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserException.php b/classes/dataBackend/fileParser/exception/BAV_FileParserException.php index a88b6ec9..3666cccf 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserException.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserException.php @@ -1,6 +1,5 @@ * @@ -27,7 +26,4 @@ class BAV_FileParserException extends RuntimeException { - } - - diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php b/classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php index 9804d07b..3694018e 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php @@ -1,7 +1,5 @@ * @@ -28,13 +26,10 @@ class BAV_FileParserException_FileNotExists extends BAV_FileParserException { - - private /** * @var string */ - $parsedFile = ''; - + private $parsedFile = ''; /** * @param string $file @@ -43,6 +38,7 @@ public function __construct($parsedFile) { $this->parsedFile = $parsedFile; } + /** * @return string */ @@ -50,8 +46,4 @@ public function getParsedFile() { return $this->parsedFile; } - - } - - diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserException_IO.php b/classes/dataBackend/fileParser/exception/BAV_FileParserException_IO.php index 9587121f..7334ba62 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserException_IO.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserException_IO.php @@ -1,7 +1,5 @@ * @@ -28,7 +26,4 @@ class BAV_FileParserException_IO extends BAV_FileParserException { - } - - diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserException_ParseError.php b/classes/dataBackend/fileParser/exception/BAV_FileParserException_ParseError.php index 8b71fe03..27961a00 100644 --- a/classes/dataBackend/fileParser/exception/BAV_FileParserException_ParseError.php +++ b/classes/dataBackend/fileParser/exception/BAV_FileParserException_ParseError.php @@ -1,7 +1,5 @@ * @@ -28,7 +26,4 @@ class BAV_FileParserException_ParseError extends BAV_FileParserException { - } - - From d35282ed147b17217bb907089e0bd21efa48b36a Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 23:52:30 +0200 Subject: [PATCH 053/303] BAV_Encoding --- classes/encoding/BAV_Encoding.php | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/classes/encoding/BAV_Encoding.php b/classes/encoding/BAV_Encoding.php index 493a670f..fc91e41e 100644 --- a/classes/encoding/BAV_Encoding.php +++ b/classes/encoding/BAV_Encoding.php @@ -1,12 +1,5 @@ enc = $encoding; } + /** * @return int length of $string */ abstract public function strlen($string); + /** * @param String $string * @param int $offset @@ -66,6 +59,7 @@ abstract public function strlen($string); * @return String */ abstract public function substr($string, $offset, $length = null); + /** * @throws BAV_EncodingException * @param String $string @@ -73,6 +67,7 @@ abstract public function substr($string, $offset, $length = null); * @return $string the encoded string */ abstract public function convert($string, $from_encoding); + /** * @param String * @return bool @@ -81,6 +76,7 @@ public static function isSupported($encoding) { return false; } + /** * @throws BAV_EncodingException_Unsupported * @param String $encoding @@ -102,8 +98,4 @@ public static function getInstance($encoding) } } - - } - - From b1402d82633ae0787aaccc3f982616333e933d43 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 23:54:55 +0200 Subject: [PATCH 054/303] BAV_Encoding_Iconv --- classes/encoding/BAV_Encoding_Iconv.php | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/classes/encoding/BAV_Encoding_Iconv.php b/classes/encoding/BAV_Encoding_Iconv.php index 6c3f7c8d..d21f1831 100644 --- a/classes/encoding/BAV_Encoding_Iconv.php +++ b/classes/encoding/BAV_Encoding_Iconv.php @@ -1,8 +1,5 @@ Date: Fri, 23 May 2014 23:55:40 +0200 Subject: [PATCH 055/303] BAV_Encoding_ISO8859 --- classes/encoding/BAV_Encoding_ISO8859.php | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/classes/encoding/BAV_Encoding_ISO8859.php b/classes/encoding/BAV_Encoding_ISO8859.php index ceb2648c..2aafc096 100644 --- a/classes/encoding/BAV_Encoding_ISO8859.php +++ b/classes/encoding/BAV_Encoding_ISO8859.php @@ -1,8 +1,5 @@ Date: Fri, 23 May 2014 23:56:12 +0200 Subject: [PATCH 056/303] BAV_Encoding_MB --- classes/encoding/BAV_Encoding_MB.php | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/classes/encoding/BAV_Encoding_MB.php b/classes/encoding/BAV_Encoding_MB.php index 9621ea02..3e151bd8 100644 --- a/classes/encoding/BAV_Encoding_MB.php +++ b/classes/encoding/BAV_Encoding_MB.php @@ -1,7 +1,5 @@ enc, $from_encoding); } - - } - - From ff6a82287d516888f94b513cd2e484983fc80620 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 23:57:04 +0200 Subject: [PATCH 057/303] BAV_EncodingException* --- classes/encoding/exception/BAV_EncodingException.php | 4 ---- .../exception/BAV_EncodingException_Unsupported.php | 12 ++---------- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/classes/encoding/exception/BAV_EncodingException.php b/classes/encoding/exception/BAV_EncodingException.php index f20ba9c3..3d41eef8 100644 --- a/classes/encoding/exception/BAV_EncodingException.php +++ b/classes/encoding/exception/BAV_EncodingException.php @@ -1,6 +1,5 @@ * @@ -27,7 +26,4 @@ class BAV_EncodingException extends RuntimeException { - } - - diff --git a/classes/encoding/exception/BAV_EncodingException_Unsupported.php b/classes/encoding/exception/BAV_EncodingException_Unsupported.php index 9cbb2db5..a3022657 100644 --- a/classes/encoding/exception/BAV_EncodingException_Unsupported.php +++ b/classes/encoding/exception/BAV_EncodingException_Unsupported.php @@ -1,7 +1,5 @@ * @@ -28,13 +26,10 @@ class BAV_EncodingException_Unsupported extends BAV_EncodingException { - - private /** * @var String */ - $encoding = ''; - + private $encoding = ''; public function __construct($encoding) { @@ -42,6 +37,7 @@ public function __construct($encoding) $this->encoding = $encoding; } + /** * @return String */ @@ -49,8 +45,4 @@ public function getEncoding() { return $this->encoding; } - - } - - From 29175354eae7712db3822de8cb6ac2d10f7ea761 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 23 May 2014 23:59:23 +0200 Subject: [PATCH 058/303] BAV_VerifyImport --- classes/verify/BAV_VerifyImport.php | 34 ++++++++++++----------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/classes/verify/BAV_VerifyImport.php b/classes/verify/BAV_VerifyImport.php index 0dbd605a..72e699e9 100644 --- a/classes/verify/BAV_VerifyImport.php +++ b/classes/verify/BAV_VerifyImport.php @@ -1,14 +1,5 @@ dataBackend = $dataBackend; } + /** * @return String */ @@ -79,13 +70,14 @@ private function getFile($file) ? __DIR__.'/../../data/verify.ini' : $file; } + /** * Imports an existing verify.ini. * * @param string $file * @throws BAV_VerifyException */ - public function importVerifyFile($file = NULL) + public function importVerifyFile($file = null) { $file = $this->getFile($file); $verify = parse_ini_file($file, true); @@ -97,6 +89,7 @@ public function importVerifyFile($file = NULL) $this->mergeVerifyArray($verify['valid'], $this->validNumbers); $this->mergeVerifyArray($verify['invalid'], $this->invalidNumbers); } + /** * Merges a string array of an existing verify.ini */ @@ -117,6 +110,7 @@ private function mergeVerifyArray($verifyArray, & $targetArray) } } + /** * @param string $bankID * @param string $accountID @@ -140,6 +134,7 @@ public function import($bankID, $accountID, $isValid = true) } } + /** * Removes all none numeric characters from $id. * @@ -150,6 +145,7 @@ private function normalize($id) { return (string) preg_replace('~\D+~', '', $id); } + /** * @param string $filePath The file where the arrays are saved (default's to ../../data/verify.ini) * @throws BAV_VerifyException_IO @@ -173,6 +169,7 @@ public function save($file = null) } } + /** * @param Resource $fp Filepointer * @param Array $array Array with bank IDs @@ -204,6 +201,7 @@ private function saveArray($fp, Array $array, $name) } } + /** * @param String $bankID * @return String @@ -214,8 +212,4 @@ private function bankIDToType($bankID) { return $this->dataBackend->getBank($bankID)->getValidationType(); } - - } - - From d100288727eb053329482cf8110c90925d821120 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 24 May 2014 00:00:24 +0200 Subject: [PATCH 059/303] BAV_VerifyException* --- classes/verify/exception/BAV_VerifyException.php | 4 ---- classes/verify/exception/BAV_VerifyException_IO.php | 5 ----- 2 files changed, 9 deletions(-) diff --git a/classes/verify/exception/BAV_VerifyException.php b/classes/verify/exception/BAV_VerifyException.php index 822ce078..7f78917d 100644 --- a/classes/verify/exception/BAV_VerifyException.php +++ b/classes/verify/exception/BAV_VerifyException.php @@ -1,6 +1,5 @@ * @@ -27,7 +26,4 @@ class BAV_VerifyException extends RuntimeException { - } - - diff --git a/classes/verify/exception/BAV_VerifyException_IO.php b/classes/verify/exception/BAV_VerifyException_IO.php index 19f87048..7fd7c8c6 100644 --- a/classes/verify/exception/BAV_VerifyException_IO.php +++ b/classes/verify/exception/BAV_VerifyException_IO.php @@ -1,6 +1,4 @@ @@ -28,7 +26,4 @@ class BAV_VerifyException_IO extends BAV_VerifyException { - } - - From 6fbd6863672e55508511160cbaa9930fb867050b Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 24 May 2014 00:01:52 +0200 Subject: [PATCH 060/303] BAV_TestAPI --- classes/verify/testAPI/BAV_TestAPI.php | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/classes/verify/testAPI/BAV_TestAPI.php b/classes/verify/testAPI/BAV_TestAPI.php index c3a70ce5..f78eb5e3 100644 --- a/classes/verify/testAPI/BAV_TestAPI.php +++ b/classes/verify/testAPI/BAV_TestAPI.php @@ -1,11 +1,5 @@ setName(get_class($this)); } - /** * @param string $name */ @@ -86,7 +75,6 @@ public function getResult(BAV_Bank $bank, $account) } } - /** * @return String */ @@ -94,8 +82,4 @@ public function getName() { return $this->name; } - - } - - From 44e4f9d570562bd9ff23a23479ab3f020f288f0f Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 24 May 2014 00:02:49 +0200 Subject: [PATCH 061/303] BAV_TestAPI_BAV --- classes/verify/testAPI/BAV_TestAPI_BAV.php | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/classes/verify/testAPI/BAV_TestAPI_BAV.php b/classes/verify/testAPI/BAV_TestAPI_BAV.php index 75d978a4..d6ff29b2 100644 --- a/classes/verify/testAPI/BAV_TestAPI_BAV.php +++ b/classes/verify/testAPI/BAV_TestAPI_BAV.php @@ -1,9 +1,5 @@ setName("bav"); } - /** * @param int $bankCode * @param int $account @@ -57,8 +51,4 @@ protected function isValid(BAV_Bank $bank, $account) } } - - } - - From 69da50def22366556698c53dc6dec13b208e7710 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 24 May 2014 00:03:31 +0200 Subject: [PATCH 062/303] BAV_TestAPI_Kontocheck --- classes/verify/testAPI/BAV_TestAPI_Kontocheck.php | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php b/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php index f9c6e4a8..2d1fdcbc 100644 --- a/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php +++ b/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php @@ -1,11 +1,5 @@ Date: Sat, 24 May 2014 00:04:15 +0200 Subject: [PATCH 063/303] BAV_TestAPI_Ktoblzcheck --- .../testAPI/BAV_TestAPI_Ktoblzcheck.php | 21 +++---------------- 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php b/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php index 575e0b34..dd847358 100644 --- a/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php +++ b/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php @@ -1,11 +1,5 @@ binary = is_null($binary) ? self::BINARY : realpath($binary); } - /** * @param int $account * @return bool @@ -99,8 +88,4 @@ protected function isValid(BAV_Bank $bank, $account) } } - - } - - From 6da275c3a64d13d4b9592e476044a84ac1a317be Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 24 May 2014 00:05:04 +0200 Subject: [PATCH 064/303] BAV_TestAPIResult --- classes/verify/testAPI/BAV_TestAPIResult.php | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/classes/verify/testAPI/BAV_TestAPIResult.php b/classes/verify/testAPI/BAV_TestAPIResult.php index fa22b7c0..20ca9c2b 100644 --- a/classes/verify/testAPI/BAV_TestAPIResult.php +++ b/classes/verify/testAPI/BAV_TestAPIResult.php @@ -1,9 +1,5 @@ * @@ -26,28 +22,22 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ - - class BAV_TestAPIResult extends BAV { - const VALID = 1; const INVALID = 2; const BANK_NOT_FOUND = 3; const ERROR = 4; - - private /** * @var BAV_TestAPI */ - $testAPI, + private $testAPI; /** * @var int */ - $result; - + private $result; /** * @param BAV_TestAPI $testAPI @@ -59,7 +49,6 @@ public function __construct(BAV_TestAPI $testAPI, $result) $this->result = $result; } - /** * @return BAV_TestAPI */ @@ -68,7 +57,6 @@ public function getTestAPI() return $this->testAPI; } - /** * @return int */ @@ -76,8 +64,4 @@ public function getResult() { return $this->result; } - - } - - From 5906f5a1d97d4a07435e9d129d0d8ff499f716d9 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 24 May 2014 00:05:39 +0200 Subject: [PATCH 065/303] BAV_TestAPIResult_Error --- .../verify/testAPI/BAV_TestAPIResult_Error.php | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/classes/verify/testAPI/BAV_TestAPIResult_Error.php b/classes/verify/testAPI/BAV_TestAPIResult_Error.php index 09e04deb..9d3b174b 100644 --- a/classes/verify/testAPI/BAV_TestAPIResult_Error.php +++ b/classes/verify/testAPI/BAV_TestAPIResult_Error.php @@ -1,8 +1,5 @@ * @@ -25,18 +22,13 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ - - class BAV_TestAPIResult_Error extends BAV_TestAPIResult { - - private /** * @var String */ - $message = ''; - + private $message = ''; /** * @param BAV_TestAPI $testAPI @@ -50,7 +42,6 @@ public function __construct(BAV_TestAPI $testAPI, $result, $message = '') $this->message = $message; } - /** * @return String */ @@ -58,8 +49,4 @@ public function getMessage() { return $this->message; } - - } - - From 6e7a2988146fe29f728ec5536b315de8369e3fef Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 24 May 2014 00:06:49 +0200 Subject: [PATCH 066/303] BAV_TestAPIException* --- classes/verify/testAPI/exception/BAV_TestAPIException.php | 4 +--- .../testAPI/exception/BAV_TestAPIException_Validation.php | 4 ---- .../BAV_TestAPIException_Validation_BankNotFound.php | 4 ---- .../BAV_TestAPIException_Validation_NotInitialized.php | 4 ---- 4 files changed, 1 insertion(+), 15 deletions(-) diff --git a/classes/verify/testAPI/exception/BAV_TestAPIException.php b/classes/verify/testAPI/exception/BAV_TestAPIException.php index b383b088..1e273301 100644 --- a/classes/verify/testAPI/exception/BAV_TestAPIException.php +++ b/classes/verify/testAPI/exception/BAV_TestAPIException.php @@ -1,4 +1,5 @@ * @@ -25,7 +26,4 @@ class BAV_TestAPIException extends RuntimeException { - } - - diff --git a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation.php b/classes/verify/testAPI/exception/BAV_TestAPIException_Validation.php index d45717b1..04af0ab7 100644 --- a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation.php +++ b/classes/verify/testAPI/exception/BAV_TestAPIException_Validation.php @@ -1,6 +1,5 @@ * @@ -27,7 +26,4 @@ class BAV_TestAPIException_Validation extends BAV_TestAPIException { - } - - diff --git a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_BankNotFound.php b/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_BankNotFound.php index 0900dcef..971486f4 100644 --- a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_BankNotFound.php +++ b/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_BankNotFound.php @@ -1,6 +1,5 @@ * @@ -27,7 +26,4 @@ class BAV_TestAPIException_Validation_BankNotFound extends BAV_TestAPIException_Validation { - } - - diff --git a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_NotInitialized.php b/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_NotInitialized.php index 27e69455..c2d10807 100644 --- a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_NotInitialized.php +++ b/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_NotInitialized.php @@ -1,6 +1,5 @@ * @@ -27,7 +26,4 @@ class BAV_TestAPIException_Validation_NotInitialized extends BAV_TestAPIException_Validation { - } - - From 002dd33e798882829922f87d7e737add33f6af98 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 24 May 2014 00:10:39 +0200 Subject: [PATCH 067/303] BAV_Validator --- classes/validator/BAV_Validator.php | 49 ++++++++++++++--------------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/classes/validator/BAV_Validator.php b/classes/validator/BAV_Validator.php index 06e38399..5878ffab 100644 --- a/classes/validator/BAV_Validator.php +++ b/classes/validator/BAV_Validator.php @@ -1,11 +1,5 @@ * @@ -32,39 +26,42 @@ abstract class BAV_Validator extends BAV { - - protected /** * @var int */ - $normalizedSize = 10, + protected $normalizedSize = 10; + /** * @var string */ - $account = '', + protected $account = ''; + /** * @var int */ - $checknumberPosition = -1, + protected $checknumberPosition = -1; + /** * @var int */ - $eserChecknumberOffset = 0, + protected $eserChecknumberOffset = 0; + /** * @var bool */ - $doNormalization = true, + protected $doNormalization = true; + /** * @var BAV_Bank */ - $bank; - + protected $bank; public function __construct(BAV_Bank $bank) { $this->bank = $bank; $this->setChecknumberPosition(-1); } + /** * @throws BAV_ValidatorException_NotExists * @return BAV_Validator @@ -82,7 +79,6 @@ public static function getInstance(BAV_Bank $bank) return new $class($bank); } - /** * @param string $account * @return bool @@ -100,15 +96,16 @@ public function isValid($account) } } - public function setChecknumberPosition($position) { $this->checknumberPosition = $position; } + public function setNormalizedSize($size) { $this->normalizedSize = $size; } + /** * @param string $account */ @@ -120,13 +117,14 @@ protected function init($account) } } + abstract protected function validate(); + /** * @return bool */ abstract protected function getResult(); - /** * @return string */ @@ -134,6 +132,7 @@ protected function getChecknumber() { return $this->account{$this->getNormalizedPosition($this->checknumberPosition)}; } + /** * converts negative positions. * @@ -155,7 +154,6 @@ protected function getNormalizedPosition($pos) return strlen($this->account) + $pos; } - /** * Some validators need this * @@ -167,14 +165,13 @@ protected function crossSum($int) $sum = 0; $str_int = (string) $int; for ($i = 0; $i < strlen($str_int); $i++) { - //$sum = bcadd($str_int{$i}, $sum); - $sum += $str_int{$i}; + //$sum = bcadd($str_int{$i}, $sum); + $sum += $str_int{$i}; } return $sum; } - /** * @throws BAV_ValidatorException_OutOfBounds * @param int $int @@ -188,6 +185,7 @@ protected function normalizeAccount($size) } $this->account = str_repeat('0', $size - strlen($account)) . $account; } + /** * @throws BAV_ValidatorException_ESER * @return string @@ -218,6 +216,7 @@ protected function getESER8() return $eser; } + /** * @throws BAV_ValidatorException_ESER * @return string @@ -248,14 +247,17 @@ protected function getESER9() $eser = $blzPart0.$t.$blzPart1.$accountPart0.$p.$accountTail; return $eser; } + protected function getEserChecknumberPosition() { return $this->getNormalizedPosition($this->checknumberPosition + $this->eserChecknumberOffset); } + protected function getEserChecknumber() { return $this->account{$this->getEserChecknumberPosition()}; } + protected function isBetween($a, $b) { $account = (int) ltrim($this->account, '0'); @@ -264,7 +266,4 @@ protected function isBetween($a, $b) ? $account >= $a && $account <= $b : $account >= $b && $account <= $a; } - } - - From d33359bbc0ba5bdb8af73809ad372e3714e31f7f Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 24 May 2014 00:11:22 +0200 Subject: [PATCH 068/303] BAV_Validator_BankDependent --- classes/validator/BAV_Validator_BankDependent.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/classes/validator/BAV_Validator_BankDependent.php b/classes/validator/BAV_Validator_BankDependent.php index 3ab32e62..5ca2c7a7 100644 --- a/classes/validator/BAV_Validator_BankDependent.php +++ b/classes/validator/BAV_Validator_BankDependent.php @@ -25,8 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -interface BAV_Validator_BankDependent { +interface BAV_Validator_BankDependent +{ } - - From a8ccc2f18e3fbdc0646978f9ab574af52d48263c Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 24 May 2014 00:12:54 +0200 Subject: [PATCH 069/303] BAV_Validator_Chain --- classes/validator/BAV_Validator_Chain.php | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/classes/validator/BAV_Validator_Chain.php b/classes/validator/BAV_Validator_Chain.php index ae2b352c..6bf7683f 100644 --- a/classes/validator/BAV_Validator_Chain.php +++ b/classes/validator/BAV_Validator_Chain.php @@ -1,8 +1,5 @@ validators[] = $validator; } - /** * Iterates through the validators. * @@ -74,12 +67,14 @@ protected function getResult() } return false; } + /** * should not be used */ final protected function validate() { } + /** * After each successless iteration step this method will be called and * should return if the iteration should stop and the account is invalid. @@ -90,6 +85,7 @@ protected function continueValidation(BAV_Validator $validator) { return true; } + /** * Decide if you really want to use this validator * @@ -99,8 +95,4 @@ protected function useValidator(BAV_Validator $validator) { return true; } - - } - - From 049c6bf05b7101e88f699ada50a2387725d2c62f Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 24 May 2014 00:14:25 +0200 Subject: [PATCH 070/303] BAV_Validator_Iteration --- classes/validator/BAV_Validator_Iteration.php | 32 +++++++++---------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/classes/validator/BAV_Validator_Iteration.php b/classes/validator/BAV_Validator_Iteration.php index 54378df0..85a4a3d9 100644 --- a/classes/validator/BAV_Validator_Iteration.php +++ b/classes/validator/BAV_Validator_Iteration.php @@ -1,7 +1,5 @@ * @@ -28,36 +26,35 @@ abstract class BAV_Validator_Iteration extends BAV_Validator { - - protected /** * @var int */ - $i = 0, + protected $i = 0; + /** * @var int */ - $position = 0, + protected $position = 0; + /** * @var int */ - $number = 0, + protected $number = 0; + /** * @var int an accumulator for the iteration */ - $accumulator = 0; - + protected $accumulator = 0; - private /** * @var int The inclusive beginning point of the iteration */ - $start = -2, + private $start = -2; + /** * @var int The inclusive ending point of the iteration */ - $end = 0; - + private $end = 0; public function __construct(BAV_Bank $bank) { @@ -66,6 +63,7 @@ public function __construct(BAV_Bank $bank) $this->setStart(-2); $this->setEnd(0); } + /** * @param int $start */ @@ -73,6 +71,7 @@ public function setStart($start) { $this->start = $start; } + /** * @param int $end */ @@ -80,6 +79,7 @@ public function setEnd($end) { $this->end = $end; } + /** * @param string $account */ @@ -89,6 +89,7 @@ protected function init($account) $this->accumulator = 0; } + protected function validate() { $start = $this->getNormalizedPosition($this->start); @@ -106,14 +107,11 @@ protected function validate() } } + /** * The iteration step * * @param int $i */ abstract protected function iterationStep(); - - } - - From 482ae32455995f414c5616b3b40ae12b374d92d0 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 24 May 2014 00:15:36 +0200 Subject: [PATCH 071/303] BAV_Validator_Iteration_Transformation --- .../BAV_Validator_Iteration_Transformation.php | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/classes/validator/BAV_Validator_Iteration_Transformation.php b/classes/validator/BAV_Validator_Iteration_Transformation.php index 5c17e8d4..5124af55 100644 --- a/classes/validator/BAV_Validator_Iteration_Transformation.php +++ b/classes/validator/BAV_Validator_Iteration_Transformation.php @@ -1,7 +1,5 @@ * @@ -28,17 +26,15 @@ abstract class BAV_Validator_Iteration_Transformation extends BAV_Validator_Iteration { - - private /** * @var Array */ - $rowIteration = array(), + private $rowIteration = array(); + /** * @var Array */ - $matrix = array(); - + private $matrix = array(); /** * The iteration step @@ -47,6 +43,7 @@ protected function iterationStep() { $this->accumulator += $this->getTransformedNumber(); } + /** */ public function setMatrix(Array $matrix) @@ -60,12 +57,14 @@ public function setMatrix(Array $matrix) } } + /** */ public function setRowIteration(Array $rowIteration) { $this->rowIteration = $rowIteration; } + /** * @return array */ @@ -73,6 +72,7 @@ protected function getTransformationRow() { return $this->matrix[$this->rowIteration[$this->i % count($this->rowIteration)]]; } + /** * @param int $i * @return int @@ -84,7 +84,4 @@ protected function getTransformedNumber() ? $row[$this->number] : 0; } - } - - From 9f50917874dbd473da1d2bacb021e3b25d6fd024 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 24 May 2014 00:16:44 +0200 Subject: [PATCH 072/303] BAV_Validator_Iteration_Weighted --- .../BAV_Validator_Iteration_Weighted.php | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/classes/validator/BAV_Validator_Iteration_Weighted.php b/classes/validator/BAV_Validator_Iteration_Weighted.php index 9ea4f129..5d75c2e7 100644 --- a/classes/validator/BAV_Validator_Iteration_Weighted.php +++ b/classes/validator/BAV_Validator_Iteration_Weighted.php @@ -1,7 +1,5 @@ * @@ -28,20 +26,15 @@ abstract class BAV_Validator_Iteration_Weighted extends BAV_Validator_Iteration { - - protected /** * @var int */ - $divisor = 0; + protected $divisor = 0; - - private /** * @var Array an array of rotating weights */ - $weights = array(); - + private $weights = array(); /** */ @@ -50,7 +43,6 @@ public function setWeights(Array $weights) $this->weights = $weights; } - /** * @param int $divisor */ @@ -59,7 +51,6 @@ public function setDivisor($divisor) $this->divisor = $divisor; } - /** * @return int */ @@ -67,8 +58,4 @@ protected function getWeight() { return $this->weights[$this->i % count($this->weights)]; } - - } - - From 77abf7e933d0e6317be3aeb7f1626c5e288811ac Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 24 May 2014 00:17:54 +0200 Subject: [PATCH 073/303] BAV_ValidatorException* --- .../validator/exception/BAV_ValidatorException.php | 4 ---- .../exception/BAV_ValidatorException_ESER.php | 5 ----- .../exception/BAV_ValidatorException_NotExists.php | 13 ++----------- .../BAV_ValidatorException_OutOfBounds.php | 5 ----- 4 files changed, 2 insertions(+), 25 deletions(-) diff --git a/classes/validator/exception/BAV_ValidatorException.php b/classes/validator/exception/BAV_ValidatorException.php index 7c5f3dee..cd78789a 100644 --- a/classes/validator/exception/BAV_ValidatorException.php +++ b/classes/validator/exception/BAV_ValidatorException.php @@ -1,6 +1,5 @@ * @@ -27,7 +26,4 @@ class BAV_ValidatorException extends RuntimeException { - } - - diff --git a/classes/validator/exception/BAV_ValidatorException_ESER.php b/classes/validator/exception/BAV_ValidatorException_ESER.php index efc43c5e..393b27cd 100644 --- a/classes/validator/exception/BAV_ValidatorException_ESER.php +++ b/classes/validator/exception/BAV_ValidatorException_ESER.php @@ -1,7 +1,5 @@ * @@ -28,7 +26,4 @@ class BAV_ValidatorException_ESER extends BAV_ValidatorException { - } - - diff --git a/classes/validator/exception/BAV_ValidatorException_NotExists.php b/classes/validator/exception/BAV_ValidatorException_NotExists.php index 492a4195..b54b85bd 100644 --- a/classes/validator/exception/BAV_ValidatorException_NotExists.php +++ b/classes/validator/exception/BAV_ValidatorException_NotExists.php @@ -1,8 +1,5 @@ * @@ -29,18 +26,16 @@ class BAV_ValidatorException_NotExists extends BAV_ValidatorException { - - private /** * @var BAV_Bank */ - $bank; - + private $bank; public function __construct(BAV_Bank $bank) { $this->bank = $bank; } + /** * @return BAV_Bank */ @@ -48,8 +43,4 @@ public function getBank() { return $this->bank; } - - } - - diff --git a/classes/validator/exception/BAV_ValidatorException_OutOfBounds.php b/classes/validator/exception/BAV_ValidatorException_OutOfBounds.php index 0632115b..ddb587d5 100644 --- a/classes/validator/exception/BAV_ValidatorException_OutOfBounds.php +++ b/classes/validator/exception/BAV_ValidatorException_OutOfBounds.php @@ -1,7 +1,5 @@ * @@ -28,7 +26,4 @@ class BAV_ValidatorException_OutOfBounds extends BAV_ValidatorException { - } - - From 92bf5e54995a39fd6a5b320bc72c7bfcfc62ef92 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 24 May 2014 01:27:33 +0200 Subject: [PATCH 074/303] validators --- .../validator/validators/BAV_Validator_00.php | 10 ----- .../validator/validators/BAV_Validator_01.php | 11 ----- .../validator/validators/BAV_Validator_02.php | 11 ----- .../validator/validators/BAV_Validator_03.php | 9 ----- .../validator/validators/BAV_Validator_04.php | 9 ----- .../validator/validators/BAV_Validator_05.php | 9 ----- .../validator/validators/BAV_Validator_06.php | 11 ----- .../validator/validators/BAV_Validator_07.php | 9 ----- .../validator/validators/BAV_Validator_08.php | 10 ----- .../validator/validators/BAV_Validator_09.php | 9 +---- .../validator/validators/BAV_Validator_10.php | 9 ----- .../validator/validators/BAV_Validator_11.php | 10 ----- .../validator/validators/BAV_Validator_13.php | 11 ----- .../validator/validators/BAV_Validator_14.php | 10 ----- .../validator/validators/BAV_Validator_15.php | 10 ----- .../validator/validators/BAV_Validator_16.php | 11 ----- .../validator/validators/BAV_Validator_17.php | 10 ----- .../validator/validators/BAV_Validator_18.php | 9 ----- .../validator/validators/BAV_Validator_19.php | 9 ----- .../validator/validators/BAV_Validator_20.php | 9 ----- .../validator/validators/BAV_Validator_21.php | 16 +++----- .../validator/validators/BAV_Validator_22.php | 12 ------ .../validator/validators/BAV_Validator_23.php | 9 ----- .../validator/validators/BAV_Validator_24.php | 11 ----- .../validator/validators/BAV_Validator_25.php | 12 ------ .../validator/validators/BAV_Validator_26.php | 11 ----- .../validator/validators/BAV_Validator_27.php | 15 ++----- .../validator/validators/BAV_Validator_28.php | 10 ----- .../validator/validators/BAV_Validator_29.php | 9 +---- .../validator/validators/BAV_Validator_30.php | 10 ----- .../validator/validators/BAV_Validator_31.php | 11 ----- .../validator/validators/BAV_Validator_32.php | 10 ----- .../validator/validators/BAV_Validator_33.php | 10 ----- .../validator/validators/BAV_Validator_34.php | 10 ----- .../validator/validators/BAV_Validator_35.php | 11 ----- .../validator/validators/BAV_Validator_36.php | 10 ----- .../validator/validators/BAV_Validator_37.php | 10 ----- .../validator/validators/BAV_Validator_38.php | 10 ----- .../validator/validators/BAV_Validator_39.php | 10 ----- .../validator/validators/BAV_Validator_40.php | 10 ----- .../validator/validators/BAV_Validator_41.php | 11 ----- .../validator/validators/BAV_Validator_42.php | 10 ----- .../validator/validators/BAV_Validator_43.php | 10 ----- .../validator/validators/BAV_Validator_44.php | 9 ----- .../validator/validators/BAV_Validator_45.php | 11 +---- .../validator/validators/BAV_Validator_46.php | 10 ----- .../validator/validators/BAV_Validator_47.php | 10 ----- .../validator/validators/BAV_Validator_48.php | 10 ----- .../validator/validators/BAV_Validator_49.php | 10 ----- .../validator/validators/BAV_Validator_50.php | 11 ----- .../validator/validators/BAV_Validator_51.php | 28 ++++--------- .../validators/BAV_Validator_51x.php | 10 ----- .../validator/validators/BAV_Validator_52.php | 22 ++-------- .../validator/validators/BAV_Validator_53.php | 9 ----- .../validator/validators/BAV_Validator_54.php | 10 ----- .../validator/validators/BAV_Validator_55.php | 10 ----- .../validator/validators/BAV_Validator_56.php | 10 ----- .../validator/validators/BAV_Validator_57.php | 32 +++++++-------- .../validator/validators/BAV_Validator_58.php | 11 ----- .../validator/validators/BAV_Validator_59.php | 11 ----- .../validator/validators/BAV_Validator_60.php | 10 ----- .../validator/validators/BAV_Validator_61.php | 12 ------ .../validator/validators/BAV_Validator_62.php | 13 ------ .../validator/validators/BAV_Validator_63.php | 12 ------ .../validator/validators/BAV_Validator_64.php | 10 ----- .../validator/validators/BAV_Validator_65.php | 11 ----- .../validator/validators/BAV_Validator_66.php | 11 ----- .../validator/validators/BAV_Validator_67.php | 10 ----- .../validator/validators/BAV_Validator_68.php | 19 +++------ .../validator/validators/BAV_Validator_69.php | 12 ------ .../validators/BAV_Validator_69b.php | 9 +---- .../validator/validators/BAV_Validator_70.php | 10 ----- .../validator/validators/BAV_Validator_71.php | 10 ----- .../validator/validators/BAV_Validator_72.php | 9 ----- .../validator/validators/BAV_Validator_73.php | 19 ++------- .../validator/validators/BAV_Validator_74.php | 11 ----- .../validator/validators/BAV_Validator_75.php | 10 ----- .../validator/validators/BAV_Validator_76.php | 12 ------ .../validator/validators/BAV_Validator_77.php | 10 ----- .../validators/BAV_Validator_77a.php | 10 ----- .../validator/validators/BAV_Validator_78.php | 10 ----- .../validator/validators/BAV_Validator_79.php | 21 ++++------ .../validator/validators/BAV_Validator_80.php | 19 ++------- .../validator/validators/BAV_Validator_81.php | 19 ++------- .../validator/validators/BAV_Validator_82.php | 24 ++++------- .../validator/validators/BAV_Validator_83.php | 23 +++-------- .../validators/BAV_Validator_83x.php | 10 ----- .../validator/validators/BAV_Validator_84.php | 20 ++-------- .../validators/BAV_Validator_84b.php | 10 ----- .../validator/validators/BAV_Validator_85.php | 23 +++-------- .../validator/validators/BAV_Validator_86.php | 20 ++-------- .../validator/validators/BAV_Validator_87.php | 22 ++-------- .../validators/BAV_Validator_87a.php | 20 +++------- .../validators/BAV_Validator_87c.php | 10 ----- .../validator/validators/BAV_Validator_88.php | 10 ----- .../validator/validators/BAV_Validator_89.php | 16 +------- .../validator/validators/BAV_Validator_90.php | 23 ++--------- .../validators/BAV_Validator_90c.php | 11 ----- .../validators/BAV_Validator_90d.php | 11 ----- .../validators/BAV_Validator_90e.php | 11 ----- .../validators/BAV_Validator_90g.php | 9 +---- .../validator/validators/BAV_Validator_91.php | 11 ----- .../validator/validators/BAV_Validator_92.php | 9 ----- .../validator/validators/BAV_Validator_93.php | 12 ------ .../validator/validators/BAV_Validator_94.php | 10 ----- .../validator/validators/BAV_Validator_95.php | 11 ----- .../validator/validators/BAV_Validator_96.php | 13 ------ .../validator/validators/BAV_Validator_97.php | 15 +------ .../validator/validators/BAV_Validator_98.php | 12 ------ .../validator/validators/BAV_Validator_99.php | 10 ----- .../validator/validators/BAV_Validator_A0.php | 11 ----- .../validator/validators/BAV_Validator_A1.php | 10 ----- .../validator/validators/BAV_Validator_A2.php | 14 +------ .../validator/validators/BAV_Validator_A3.php | 14 +------ .../validator/validators/BAV_Validator_A4.php | 14 ------- .../validators/BAV_Validator_A4b.php | 11 ----- .../validator/validators/BAV_Validator_A5.php | 15 +------ .../validator/validators/BAV_Validator_A6.php | 22 ++++------ .../validator/validators/BAV_Validator_A7.php | 14 +------ .../validator/validators/BAV_Validator_A8.php | 19 ++------- .../validator/validators/BAV_Validator_A9.php | 14 +------ .../validator/validators/BAV_Validator_B0.php | 22 ++++------ .../validator/validators/BAV_Validator_B1.php | 14 +------ .../validator/validators/BAV_Validator_B2.php | 22 ++++------ .../validator/validators/BAV_Validator_B3.php | 22 ++++------ .../validator/validators/BAV_Validator_B4.php | 22 ++++------ .../validator/validators/BAV_Validator_B5.php | 13 +----- .../validator/validators/BAV_Validator_B6.php | 23 ++++------- .../validator/validators/BAV_Validator_B7.php | 10 ----- .../validator/validators/BAV_Validator_B8.php | 22 ++-------- .../validator/validators/BAV_Validator_B9.php | 22 +++------- .../validators/BAV_Validator_B9a.php | 10 ----- .../validators/BAV_Validator_B9b.php | 10 ----- .../validator/validators/BAV_Validator_C0.php | 14 ------- .../validator/validators/BAV_Validator_C1.php | 22 ++++------ .../validators/BAV_Validator_C1b.php | 10 ----- .../validator/validators/BAV_Validator_C2.php | 12 ------ .../validator/validators/BAV_Validator_C3.php | 22 ++++------ .../validator/validators/BAV_Validator_C4.php | 22 ++++------ .../validator/validators/BAV_Validator_C5.php | 31 +++++--------- .../validator/validators/BAV_Validator_C6.php | 22 +++------- .../validator/validators/BAV_Validator_C7.php | 12 ------ .../validator/validators/BAV_Validator_C8.php | 13 ------ .../validator/validators/BAV_Validator_C9.php | 12 ------ .../validator/validators/BAV_Validator_D0.php | 17 +------- .../validator/validators/BAV_Validator_D1.php | 36 +++++------------ .../validator/validators/BAV_Validator_D2.php | 15 +------ .../validator/validators/BAV_Validator_D3.php | 10 ----- .../validator/validators/BAV_Validator_D4.php | 18 ++------- .../validator/validators/BAV_Validator_D5.php | 40 ++++++++----------- .../validator/validators/BAV_Validator_D6.php | 11 +---- .../validator/validators/BAV_Validator_D7.php | 8 ---- .../validator/validators/BAV_Validator_D8.php | 19 ++------- .../validator/validators/BAV_Validator_D9.php | 11 +---- .../validator/validators/BAV_Validator_E0.php | 7 +--- .../validator/validators/BAV_Validator_E1.php | 4 -- 156 files changed, 236 insertions(+), 1865 deletions(-) diff --git a/classes/validator/validators/BAV_Validator_00.php b/classes/validator/validators/BAV_Validator_00.php index f78a5d89..cd763ebe 100644 --- a/classes/validator/validators/BAV_Validator_00.php +++ b/classes/validator/validators/BAV_Validator_00.php @@ -1,8 +1,5 @@ setDivisor(10); } - protected function iterationStep() { $this->accumulator += $this->crossSum($this->number * $this->getWeight()); } - protected function getResult() { $result = $this->divisor - ($this->accumulator % $this->divisor); $result = ($result == $this->divisor) ? 0 : $result; return (string)$result === $this->getCheckNumber(); } - } - diff --git a/classes/validator/validators/BAV_Validator_01.php b/classes/validator/validators/BAV_Validator_01.php index fa2c71be..6352b0d8 100644 --- a/classes/validator/validators/BAV_Validator_01.php +++ b/classes/validator/validators/BAV_Validator_01.php @@ -1,8 +1,5 @@ setWeights(array(3, 7, 1)); } - protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { $result = (10 - ($this->accumulator % 10)) % 10; return (string)$result === $this->getCheckNumber(); } - - } - diff --git a/classes/validator/validators/BAV_Validator_02.php b/classes/validator/validators/BAV_Validator_02.php index a0d61e26..4f5fb29a 100644 --- a/classes/validator/validators/BAV_Validator_02.php +++ b/classes/validator/validators/BAV_Validator_02.php @@ -1,8 +1,5 @@ setDivisor(11); } - protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { $result = $this->divisor - $this->accumulator % $this->divisor; @@ -51,7 +43,4 @@ protected function getResult() ? false : (string)$result === $this->getCheckNumber(); } - - } - diff --git a/classes/validator/validators/BAV_Validator_03.php b/classes/validator/validators/BAV_Validator_03.php index 8413878c..ff67d885 100644 --- a/classes/validator/validators/BAV_Validator_03.php +++ b/classes/validator/validators/BAV_Validator_03.php @@ -1,8 +1,5 @@ setWeights(array(2, 1)); } - - } - diff --git a/classes/validator/validators/BAV_Validator_04.php b/classes/validator/validators/BAV_Validator_04.php index 65df646a..05fc432a 100644 --- a/classes/validator/validators/BAV_Validator_04.php +++ b/classes/validator/validators/BAV_Validator_04.php @@ -1,8 +1,5 @@ setWeights(array(2, 3, 4, 5, 6, 7)); } - - } - diff --git a/classes/validator/validators/BAV_Validator_05.php b/classes/validator/validators/BAV_Validator_05.php index 5cd22615..44e4fa3a 100644 --- a/classes/validator/validators/BAV_Validator_05.php +++ b/classes/validator/validators/BAV_Validator_05.php @@ -1,8 +1,5 @@ setWeights(array(7, 3, 1)); } - - } - diff --git a/classes/validator/validators/BAV_Validator_06.php b/classes/validator/validators/BAV_Validator_06.php index 9fd9db50..9cc0ca5e 100644 --- a/classes/validator/validators/BAV_Validator_06.php +++ b/classes/validator/validators/BAV_Validator_06.php @@ -1,8 +1,5 @@ setDivisor(11); } - protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { $result = $this->divisor - $this->accumulator % $this->divisor; @@ -51,7 +43,4 @@ protected function getResult() : $result % 10; return (string)$result === $this->getCheckNumber(); } - - } - diff --git a/classes/validator/validators/BAV_Validator_07.php b/classes/validator/validators/BAV_Validator_07.php index f1873ab5..9a500d93 100644 --- a/classes/validator/validators/BAV_Validator_07.php +++ b/classes/validator/validators/BAV_Validator_07.php @@ -1,8 +1,5 @@ setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 10)); } - - } - diff --git a/classes/validator/validators/BAV_Validator_08.php b/classes/validator/validators/BAV_Validator_08.php index 1c36ffff..5037ac30 100644 --- a/classes/validator/validators/BAV_Validator_08.php +++ b/classes/validator/validators/BAV_Validator_08.php @@ -1,8 +1,5 @@ setWeights(array(2, 1)); } - protected function getResult() { return ((int)$this->account<= 60000) ? false : parent::getResult(); } - - } - diff --git a/classes/validator/validators/BAV_Validator_09.php b/classes/validator/validators/BAV_Validator_09.php index 7fb458b1..aa121e84 100644 --- a/classes/validator/validators/BAV_Validator_09.php +++ b/classes/validator/validators/BAV_Validator_09.php @@ -1,8 +1,5 @@ setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 10)); } - - } - diff --git a/classes/validator/validators/BAV_Validator_11.php b/classes/validator/validators/BAV_Validator_11.php index 001fafed..37ae26d8 100644 --- a/classes/validator/validators/BAV_Validator_11.php +++ b/classes/validator/validators/BAV_Validator_11.php @@ -1,8 +1,5 @@ setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 10)); } - protected function getResult() { $result = 11 - $this->accumulator % 11; @@ -49,7 +42,4 @@ protected function getResult() } return (string)$result === $this->getCheckNumber(); } - - } - diff --git a/classes/validator/validators/BAV_Validator_13.php b/classes/validator/validators/BAV_Validator_13.php index d666e35c..730cc2aa 100644 --- a/classes/validator/validators/BAV_Validator_13.php +++ b/classes/validator/validators/BAV_Validator_13.php @@ -1,8 +1,5 @@ setChecknumberPosition(7); } - /** * @param string $account * @return bool @@ -53,8 +46,4 @@ public function isValid($account) return strlen($account) <= $this->normalizedSize && parent::isValid($account); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_14.php b/classes/validator/validators/BAV_Validator_14.php index c5e62e2f..60c9c80d 100644 --- a/classes/validator/validators/BAV_Validator_14.php +++ b/classes/validator/validators/BAV_Validator_14.php @@ -1,8 +1,5 @@ setStart(-2); $this->setEnd(3); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_15.php b/classes/validator/validators/BAV_Validator_15.php index ff8d8b01..c61751ef 100644 --- a/classes/validator/validators/BAV_Validator_15.php +++ b/classes/validator/validators/BAV_Validator_15.php @@ -1,8 +1,5 @@ setStart(-2); $this->setEnd(5); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_16.php b/classes/validator/validators/BAV_Validator_16.php index 169360c3..3d1ea745 100644 --- a/classes/validator/validators/BAV_Validator_16.php +++ b/classes/validator/validators/BAV_Validator_16.php @@ -1,8 +1,5 @@ setWeights(array(2, 3, 4, 5, 6, 7)); } - protected function getResult() { return $this->accumulator % 11 === 1 ? $this->getChecknumber() === $this->account{$this->getNormalizedPosition($this->checknumberPosition) - 1} : parent::getResult(); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_17.php b/classes/validator/validators/BAV_Validator_17.php index 07ff81cc..df219869 100644 --- a/classes/validator/validators/BAV_Validator_17.php +++ b/classes/validator/validators/BAV_Validator_17.php @@ -1,8 +1,5 @@ setChecknumberPosition(7); } - protected function iterationStep() { $this->accumulator += $this->crossSum($this->number * $this->getWeight()); } - protected function getResult() { $result = (10 - ($this->accumulator - 1) % 11) % 10; return $this->accumulator != 0 && (string)$result === $this->getCheckNumber(); } - } - diff --git a/classes/validator/validators/BAV_Validator_18.php b/classes/validator/validators/BAV_Validator_18.php index 82a83565..14f4e4af 100644 --- a/classes/validator/validators/BAV_Validator_18.php +++ b/classes/validator/validators/BAV_Validator_18.php @@ -1,8 +1,5 @@ setWeights(array(3, 9, 7, 1)); } - - } - diff --git a/classes/validator/validators/BAV_Validator_19.php b/classes/validator/validators/BAV_Validator_19.php index f41bedf3..9bf897bc 100644 --- a/classes/validator/validators/BAV_Validator_19.php +++ b/classes/validator/validators/BAV_Validator_19.php @@ -1,8 +1,5 @@ setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 1)); } - - } - diff --git a/classes/validator/validators/BAV_Validator_20.php b/classes/validator/validators/BAV_Validator_20.php index 3ea15eb6..12b3fc55 100644 --- a/classes/validator/validators/BAV_Validator_20.php +++ b/classes/validator/validators/BAV_Validator_20.php @@ -1,8 +1,5 @@ setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 3)); } - - } - diff --git a/classes/validator/validators/BAV_Validator_21.php b/classes/validator/validators/BAV_Validator_21.php index ce11f4e9..f25415cb 100644 --- a/classes/validator/validators/BAV_Validator_21.php +++ b/classes/validator/validators/BAV_Validator_21.php @@ -1,8 +1,5 @@ setWeights(array(2, 1)); } - protected function getResult() { - for ($result = $this->accumulator; $result >= 10; $result = $this->crossSum($result)); + $result = $this->accumulator; + while ($result >= 10) { + $result = $this->crossSum($result); + + } $result = 10 - $result; return (string)$result === $this->getCheckNumber(); } - - } - diff --git a/classes/validator/validators/BAV_Validator_22.php b/classes/validator/validators/BAV_Validator_22.php index 56f4b449..2bd41f7d 100644 --- a/classes/validator/validators/BAV_Validator_22.php +++ b/classes/validator/validators/BAV_Validator_22.php @@ -1,8 +1,5 @@ setWeights(array(3, 1)); } - protected function iterationStep() { $this->accumulator += ($this->number * $this->getWeight()) % 10; } - protected function getResult() { $result = (10 - ($this->accumulator % 10)) % 10; return (string)$result === $this->getCheckNumber(); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_23.php b/classes/validator/validators/BAV_Validator_23.php index 23e415a5..c7317b1c 100644 --- a/classes/validator/validators/BAV_Validator_23.php +++ b/classes/validator/validators/BAV_Validator_23.php @@ -1,8 +1,5 @@ setEnd(0); $this->setChecknumberPosition(6); } - - } - diff --git a/classes/validator/validators/BAV_Validator_24.php b/classes/validator/validators/BAV_Validator_24.php index 6915a0d6..247adbb9 100644 --- a/classes/validator/validators/BAV_Validator_24.php +++ b/classes/validator/validators/BAV_Validator_24.php @@ -1,8 +1,5 @@ setEnd(-2); } - protected function init($account) { parent::init($account); @@ -45,18 +38,14 @@ protected function init($account) $this->account = preg_replace('~^([3456]|9..)?0*~', '', $this->account); } - protected function iterationStep() { $this->accumulator += ($this->number * $this->getWeight() + $this->getWeight()) % 11; } - protected function getResult() { $result = $this->accumulator % 10; return (string)$result === $this->getCheckNumber(); } - } - diff --git a/classes/validator/validators/BAV_Validator_25.php b/classes/validator/validators/BAV_Validator_25.php index 60efc35a..b5530548 100644 --- a/classes/validator/validators/BAV_Validator_25.php +++ b/classes/validator/validators/BAV_Validator_25.php @@ -1,8 +1,5 @@ setWeights(array(2, 3, 4, 5, 6, 7, 8, 9)); } - protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { $result = 11 - ($this->accumulator % 11); @@ -63,8 +55,4 @@ protected function getResult() } return (string)$result === $this->getCheckNumber(); } - - - } - diff --git a/classes/validator/validators/BAV_Validator_26.php b/classes/validator/validators/BAV_Validator_26.php index a6d990b1..1fdff8aa 100644 --- a/classes/validator/validators/BAV_Validator_26.php +++ b/classes/validator/validators/BAV_Validator_26.php @@ -1,8 +1,5 @@ setChecknumberPosition(7); } - protected function init($account) { parent::init($account); @@ -48,8 +41,4 @@ protected function init($account) } } - - } - - diff --git a/classes/validator/validators/BAV_Validator_27.php b/classes/validator/validators/BAV_Validator_27.php index 609726aa..97e1123d 100644 --- a/classes/validator/validators/BAV_Validator_27.php +++ b/classes/validator/validators/BAV_Validator_27.php @@ -1,9 +1,5 @@ validator00->isValid($account) : parent::isValid($account); } + /** * @return bool */ @@ -67,6 +60,4 @@ protected function getResult() $result = (10 - ($this->accumulator % 10)) % 10; return (string)$result === $this->getCheckNumber(); } - } - diff --git a/classes/validator/validators/BAV_Validator_28.php b/classes/validator/validators/BAV_Validator_28.php index 8d1fb90a..c5314b3a 100644 --- a/classes/validator/validators/BAV_Validator_28.php +++ b/classes/validator/validators/BAV_Validator_28.php @@ -1,8 +1,5 @@ setEnd(0); $this->setChecknumberPosition(-3); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_29.php b/classes/validator/validators/BAV_Validator_29.php index f6b0b186..3939bb6d 100644 --- a/classes/validator/validators/BAV_Validator_29.php +++ b/classes/validator/validators/BAV_Validator_29.php @@ -1,8 +1,5 @@ accumulator % 10)) % 10; return (string)$result === $this->getCheckNumber(); } - } - diff --git a/classes/validator/validators/BAV_Validator_30.php b/classes/validator/validators/BAV_Validator_30.php index cb47b7d0..755be265 100644 --- a/classes/validator/validators/BAV_Validator_30.php +++ b/classes/validator/validators/BAV_Validator_30.php @@ -1,8 +1,5 @@ setEnd(-2); } - protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - - } - diff --git a/classes/validator/validators/BAV_Validator_31.php b/classes/validator/validators/BAV_Validator_31.php index f25fa687..a837949b 100644 --- a/classes/validator/validators/BAV_Validator_31.php +++ b/classes/validator/validators/BAV_Validator_31.php @@ -1,8 +1,5 @@ setWeights(array(9, 8, 7, 6, 5, 4, 3, 2, 1)); } - protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { $result = $this->accumulator % 11; @@ -54,7 +46,4 @@ protected function getResult() } return (string)$result === $this->getCheckNumber(); } - } - - diff --git a/classes/validator/validators/BAV_Validator_32.php b/classes/validator/validators/BAV_Validator_32.php index 85499462..8b309738 100644 --- a/classes/validator/validators/BAV_Validator_32.php +++ b/classes/validator/validators/BAV_Validator_32.php @@ -1,8 +1,5 @@ setWeights(array(2, 3, 4, 5, 6, 7)); $this->setEnd(3); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_33.php b/classes/validator/validators/BAV_Validator_33.php index b10a33fc..6835afdb 100644 --- a/classes/validator/validators/BAV_Validator_33.php +++ b/classes/validator/validators/BAV_Validator_33.php @@ -1,8 +1,5 @@ setWeights(array(2, 3, 4, 5, 6)); $this->setEnd(4); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_34.php b/classes/validator/validators/BAV_Validator_34.php index 9b0536a8..714fc400 100644 --- a/classes/validator/validators/BAV_Validator_34.php +++ b/classes/validator/validators/BAV_Validator_34.php @@ -1,8 +1,5 @@ setWeights(array(2, 4, 8, 5, 10, 9, 7)); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_35.php b/classes/validator/validators/BAV_Validator_35.php index 4585eaa4..c760e106 100644 --- a/classes/validator/validators/BAV_Validator_35.php +++ b/classes/validator/validators/BAV_Validator_35.php @@ -1,8 +1,5 @@ setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 10)); } - protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { $result = $this->accumulator % 11; @@ -51,7 +43,4 @@ protected function getResult() } return (string)$result === $this->getCheckNumber(); } - - } - diff --git a/classes/validator/validators/BAV_Validator_36.php b/classes/validator/validators/BAV_Validator_36.php index c05caa6a..0c4a6e8e 100644 --- a/classes/validator/validators/BAV_Validator_36.php +++ b/classes/validator/validators/BAV_Validator_36.php @@ -1,8 +1,5 @@ setWeights(array(2, 4, 8, 5)); $this->setEnd(5); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_37.php b/classes/validator/validators/BAV_Validator_37.php index 1afc2ff6..76c8e258 100644 --- a/classes/validator/validators/BAV_Validator_37.php +++ b/classes/validator/validators/BAV_Validator_37.php @@ -1,8 +1,5 @@ setWeights(array(2, 4, 8, 5, 10)); $this->setEnd(4); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_38.php b/classes/validator/validators/BAV_Validator_38.php index 363944cb..8805dc20 100644 --- a/classes/validator/validators/BAV_Validator_38.php +++ b/classes/validator/validators/BAV_Validator_38.php @@ -1,8 +1,5 @@ setWeights(array(2, 4, 8, 5, 10, 9)); $this->setEnd(3); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_39.php b/classes/validator/validators/BAV_Validator_39.php index c025d95d..ff7a20d6 100644 --- a/classes/validator/validators/BAV_Validator_39.php +++ b/classes/validator/validators/BAV_Validator_39.php @@ -1,8 +1,5 @@ setWeights(array(2, 4, 8, 5, 10, 9, 7)); $this->setEnd(2); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_40.php b/classes/validator/validators/BAV_Validator_40.php index d6b9f405..a8257539 100644 --- a/classes/validator/validators/BAV_Validator_40.php +++ b/classes/validator/validators/BAV_Validator_40.php @@ -1,8 +1,5 @@ setWeights(array(2, 4, 8, 5, 10, 9, 7, 3, 6)); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_41.php b/classes/validator/validators/BAV_Validator_41.php index bd2acfe1..75d8dc96 100644 --- a/classes/validator/validators/BAV_Validator_41.php +++ b/classes/validator/validators/BAV_Validator_41.php @@ -1,8 +1,5 @@ setWeights(array(2, 1)); } - protected function init($account) { parent::init($account); @@ -48,8 +41,4 @@ protected function init($account) } } - - } - - diff --git a/classes/validator/validators/BAV_Validator_42.php b/classes/validator/validators/BAV_Validator_42.php index 56bb9799..dd8c883e 100644 --- a/classes/validator/validators/BAV_Validator_42.php +++ b/classes/validator/validators/BAV_Validator_42.php @@ -1,8 +1,5 @@ setWeights(array(2, 3, 4, 5, 6, 7, 8, 9)); $this->setEnd(1); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_43.php b/classes/validator/validators/BAV_Validator_43.php index e538644f..8b02fe1d 100644 --- a/classes/validator/validators/BAV_Validator_43.php +++ b/classes/validator/validators/BAV_Validator_43.php @@ -1,8 +1,5 @@ setWeights(array(1, 2, 3, 4, 5, 6, 7, 8, 9)); } - protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { $result = (10 - ($this->accumulator % 10)) % 10; return (string)$result === $this->getCheckNumber(); } - } - diff --git a/classes/validator/validators/BAV_Validator_44.php b/classes/validator/validators/BAV_Validator_44.php index 8b33de87..e008b49a 100644 --- a/classes/validator/validators/BAV_Validator_44.php +++ b/classes/validator/validators/BAV_Validator_44.php @@ -1,8 +1,5 @@ setWeights(array(2, 4, 8, 5, 10, 0, 0, 0, 0)); } - - } - diff --git a/classes/validator/validators/BAV_Validator_45.php b/classes/validator/validators/BAV_Validator_45.php index a1318750..017bcd01 100644 --- a/classes/validator/validators/BAV_Validator_45.php +++ b/classes/validator/validators/BAV_Validator_45.php @@ -1,8 +1,5 @@ setWeights(array(2, 1)); } + /** * @return bool */ @@ -43,8 +38,4 @@ protected function getResult() || $this->account{4} === '1' || parent::getResult(); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_46.php b/classes/validator/validators/BAV_Validator_46.php index 1ba346ee..183fe15e 100644 --- a/classes/validator/validators/BAV_Validator_46.php +++ b/classes/validator/validators/BAV_Validator_46.php @@ -1,8 +1,5 @@ setEnd(2); $this->setChecknumberPosition(7); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_47.php b/classes/validator/validators/BAV_Validator_47.php index 9b978715..8709ad17 100644 --- a/classes/validator/validators/BAV_Validator_47.php +++ b/classes/validator/validators/BAV_Validator_47.php @@ -1,8 +1,5 @@ setEnd(3); $this->setChecknumberPosition(-2); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_48.php b/classes/validator/validators/BAV_Validator_48.php index 5ca1def3..12f9c2b6 100644 --- a/classes/validator/validators/BAV_Validator_48.php +++ b/classes/validator/validators/BAV_Validator_48.php @@ -1,8 +1,5 @@ setEnd(2); $this->setChecknumberPosition(-2); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_49.php b/classes/validator/validators/BAV_Validator_49.php index cfea623a..642f4145 100644 --- a/classes/validator/validators/BAV_Validator_49.php +++ b/classes/validator/validators/BAV_Validator_49.php @@ -1,10 +1,5 @@ validators[] = new BAV_Validator_00($bank); $this->validators[] = new BAV_Validator_01($bank); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_50.php b/classes/validator/validators/BAV_Validator_50.php index ef919eff..2642cfe9 100644 --- a/classes/validator/validators/BAV_Validator_50.php +++ b/classes/validator/validators/BAV_Validator_50.php @@ -1,8 +1,5 @@ setEnd(0); $this->setChecknumberPosition(-4); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_51.php b/classes/validator/validators/BAV_Validator_51.php index 9bc0f371..4158186d 100644 --- a/classes/validator/validators/BAV_Validator_51.php +++ b/classes/validator/validators/BAV_Validator_51.php @@ -1,11 +1,5 @@ exceptionValidators = self::getExceptionValidators($bank); } - /** * @return array */ @@ -92,7 +84,6 @@ public static function getExceptionValidators(BAV_Bank $bank) return $exceptionValidators; } - /** */ protected function init($account) @@ -104,7 +95,6 @@ protected function init($account) : $this->defaultValidators; } - protected function continueValidation(BAV_Validator $validator) { if ($validator !== $this->validatorD) { @@ -112,7 +102,9 @@ protected function continueValidation(BAV_Validator $validator) } switch ($this->account{9}) { - case 7: case 8: case 9: + case 7: + case 8: + case 9: return false; default: @@ -120,8 +112,4 @@ protected function continueValidation(BAV_Validator $validator) } } - - } - - diff --git a/classes/validator/validators/BAV_Validator_51x.php b/classes/validator/validators/BAV_Validator_51x.php index 2748dc92..b3711e94 100644 --- a/classes/validator/validators/BAV_Validator_51x.php +++ b/classes/validator/validators/BAV_Validator_51x.php @@ -1,8 +1,5 @@ setEnd(2); } - protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { $result = 11 - ($this->accumulator % 11); @@ -52,6 +44,4 @@ protected function getResult() : $result % 10; return (string)$result === $this->getCheckNumber(); } - } - diff --git a/classes/validator/validators/BAV_Validator_52.php b/classes/validator/validators/BAV_Validator_52.php index b5d75a69..23c51c01 100644 --- a/classes/validator/validators/BAV_Validator_52.php +++ b/classes/validator/validators/BAV_Validator_52.php @@ -1,11 +1,5 @@ validator20 = new BAV_Validator_20($bank); } - public function isValid($account) { try { @@ -68,7 +57,6 @@ public function isValid($account) } } - protected function iterationStep() { if ($this->position == $this->getEserChecknumberPosition()) { @@ -80,17 +68,13 @@ protected function iterationStep() } } - protected function normalizeAccount($size) { $this->account = $this->getEser8(); } - protected function getResult() { return 10 === ($this->accumulator % 11 + $this->checknumberWeight * $this->getEserChecknumber()) % 11; } - } - diff --git a/classes/validator/validators/BAV_Validator_53.php b/classes/validator/validators/BAV_Validator_53.php index 8d6f997d..4f5a9c9d 100644 --- a/classes/validator/validators/BAV_Validator_53.php +++ b/classes/validator/validators/BAV_Validator_53.php @@ -1,7 +1,5 @@ account = $this->getEser9(); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_54.php b/classes/validator/validators/BAV_Validator_54.php index 69812f7f..c8eb9a61 100644 --- a/classes/validator/validators/BAV_Validator_54.php +++ b/classes/validator/validators/BAV_Validator_54.php @@ -1,8 +1,5 @@ setEnd(2); } - protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { $result = 11 - ($this->accumulator % 11); return substr($this->account, 0, 2) === '49' && (string)$result === $this->getCheckNumber(); } - } - diff --git a/classes/validator/validators/BAV_Validator_55.php b/classes/validator/validators/BAV_Validator_55.php index efabb2c2..9963b2df 100644 --- a/classes/validator/validators/BAV_Validator_55.php +++ b/classes/validator/validators/BAV_Validator_55.php @@ -1,8 +1,5 @@ setWeights(array(2, 3, 4, 5, 6, 7, 8, 7, 8)); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_56.php b/classes/validator/validators/BAV_Validator_56.php index 8dd8bb47..09c32a4c 100644 --- a/classes/validator/validators/BAV_Validator_56.php +++ b/classes/validator/validators/BAV_Validator_56.php @@ -1,8 +1,5 @@ setWeights(array(2, 3, 4, 5, 6, 7)); } - protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { $result = 11 - ($this->accumulator % 11); @@ -51,6 +43,4 @@ protected function getResult() } return (string)$result === $this->getCheckNumber(); } - } - diff --git a/classes/validator/validators/BAV_Validator_57.php b/classes/validator/validators/BAV_Validator_57.php index a2605bf2..7bd1a2f5 100644 --- a/classes/validator/validators/BAV_Validator_57.php +++ b/classes/validator/validators/BAV_Validator_57.php @@ -19,36 +19,35 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - - class BAV_Validator_57 extends BAV_Validator { - - private /** * @var BAV_Validator */ - $validator, + private $validator; + /** * @var BAV_Validator_09 */ - $validator09, + private $validator09; + /** * @var array */ - $modeMap = array(), + private $modeMap = array(); + /** * @private * @var BAV_Validator_00 */ - $mode1, - /** + private $mode1; + + /** * @private * @var BAV_Validator_00 */ - $mode2; - + private $mode2; public function __construct(BAV_Bank $bank) { @@ -106,7 +105,6 @@ public function __construct(BAV_Bank $bank) ); } - protected function validate() { $this->validator = null; @@ -117,7 +115,8 @@ protected function validate() case 1: switch (substr($this->account, 0, 6)) { - case 777777: case 888888: + case 777777: + case 888888: $this->validator = $this->validator09; break; @@ -142,9 +141,10 @@ protected function validate() $this->validator = $this->account === '0185125434' || ($pos34 >= 1 && $pos34 <= 12 && $pos79 <= 500) ? $this->validator09 : null; - break; + break; } } + protected function getResult() { return ! is_null($this->validator) && $this->validator->isValid($this->account); @@ -184,8 +184,4 @@ private function getMode() } } - - } - - diff --git a/classes/validator/validators/BAV_Validator_58.php b/classes/validator/validators/BAV_Validator_58.php index 2454876b..304e6521 100644 --- a/classes/validator/validators/BAV_Validator_58.php +++ b/classes/validator/validators/BAV_Validator_58.php @@ -1,8 +1,5 @@ setEnd(4); } - public function isValid($account) { return strlen($account) >= 6 && parent::isValid($account); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_59.php b/classes/validator/validators/BAV_Validator_59.php index eefd6d95..07f4a976 100644 --- a/classes/validator/validators/BAV_Validator_59.php +++ b/classes/validator/validators/BAV_Validator_59.php @@ -1,8 +1,5 @@ setWeights(array(2, 1)); } - public function isValid($account) { return ltrim($account, "0") != "" && strlen($account) < 9 || parent::isValid($account); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_60.php b/classes/validator/validators/BAV_Validator_60.php index 96995fea..6017231b 100644 --- a/classes/validator/validators/BAV_Validator_60.php +++ b/classes/validator/validators/BAV_Validator_60.php @@ -1,8 +1,5 @@ setWeights(array(2, 1)); $this->setEnd(2); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_61.php b/classes/validator/validators/BAV_Validator_61.php index 3cef805a..bc307512 100644 --- a/classes/validator/validators/BAV_Validator_61.php +++ b/classes/validator/validators/BAV_Validator_61.php @@ -1,8 +1,5 @@ setStart(0); } - public function init($account) { parent::init($account); @@ -53,19 +46,14 @@ public function init($account) } } - protected function iterationStep() { $this->accumulator += $this->crossSum($this->number * $this->getWeight()); } - protected function getResult() { $result = (10 - ($this->accumulator % 10)) % 10; return (string)$result === $this->getCheckNumber(); } - } - - diff --git a/classes/validator/validators/BAV_Validator_62.php b/classes/validator/validators/BAV_Validator_62.php index 4d9e5b60..bc5c4bb3 100644 --- a/classes/validator/validators/BAV_Validator_62.php +++ b/classes/validator/validators/BAV_Validator_62.php @@ -1,8 +1,5 @@ setEnd(2); } - - - protected function iterationStep() { $this->accumulator += $this->crossSum($this->number * $this->getWeight()); } - protected function getResult() { $result = (10 - ($this->accumulator % 10)) % 10; return (string)$result === $this->getCheckNumber(); } - } - - diff --git a/classes/validator/validators/BAV_Validator_63.php b/classes/validator/validators/BAV_Validator_63.php index a0c11d56..c7c1acfe 100644 --- a/classes/validator/validators/BAV_Validator_63.php +++ b/classes/validator/validators/BAV_Validator_63.php @@ -1,8 +1,5 @@ setEnd(1); } - public function isValid($account) { if (parent::isValid($account)) { @@ -52,19 +45,14 @@ public function isValid($account) return parent::isValid(ltrim($account.'00', '0')); } - protected function iterationStep() { $this->accumulator += $this->crossSum($this->number * $this->getWeight()); } - protected function getResult() { $result = (10 - ($this->accumulator % 10)) % 10; return $this->account{0} == '0' && (string)$result === $this->getCheckNumber(); } - } - - diff --git a/classes/validator/validators/BAV_Validator_64.php b/classes/validator/validators/BAV_Validator_64.php index 9e1812db..74c844da 100644 --- a/classes/validator/validators/BAV_Validator_64.php +++ b/classes/validator/validators/BAV_Validator_64.php @@ -1,8 +1,5 @@ setEnd(5); $this->setChecknumberPosition(6); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_65.php b/classes/validator/validators/BAV_Validator_65.php index 902977ad..34569ae9 100644 --- a/classes/validator/validators/BAV_Validator_65.php +++ b/classes/validator/validators/BAV_Validator_65.php @@ -1,8 +1,5 @@ setChecknumberPosition(7); } - protected function init($account) { parent::init($account); @@ -50,8 +43,4 @@ protected function init($account) } } - - } - - diff --git a/classes/validator/validators/BAV_Validator_66.php b/classes/validator/validators/BAV_Validator_66.php index 07e7b461..c00a34ec 100644 --- a/classes/validator/validators/BAV_Validator_66.php +++ b/classes/validator/validators/BAV_Validator_66.php @@ -1,8 +1,5 @@ setEnd(1); } - protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { // update 2014-03-03 @@ -54,7 +46,4 @@ protected function getResult() $result = (11 - $this->accumulator % 11) % 10; return $this->account{0} == '0' && (string)$result === $this->getCheckNumber(); } - } - - diff --git a/classes/validator/validators/BAV_Validator_67.php b/classes/validator/validators/BAV_Validator_67.php index 69f2b7f2..84ed17e3 100644 --- a/classes/validator/validators/BAV_Validator_67.php +++ b/classes/validator/validators/BAV_Validator_67.php @@ -1,8 +1,5 @@ setStart(-4); $this->setChecknumberPosition(-3); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_68.php b/classes/validator/validators/BAV_Validator_68.php index fc871cd6..921e1fd5 100644 --- a/classes/validator/validators/BAV_Validator_68.php +++ b/classes/validator/validators/BAV_Validator_68.php @@ -1,9 +1,5 @@ validators[1]->setWeights(array(2, 1, 2, 1, 2, 0, 0, 1)); } - public function isValid($account) { switch (strlen($account)) { @@ -66,8 +58,11 @@ public function isValid($account) return false; } + return parent::isValid($account); - case 6: case 7: case 8: case 9: + case 6: + case 7: + case 8: return parent::isValid($account); default: @@ -75,8 +70,4 @@ public function isValid($account) } } - - } - - diff --git a/classes/validator/validators/BAV_Validator_69.php b/classes/validator/validators/BAV_Validator_69.php index fec9efa5..f0fd28ed 100644 --- a/classes/validator/validators/BAV_Validator_69.php +++ b/classes/validator/validators/BAV_Validator_69.php @@ -1,10 +1,5 @@ validators[] = new BAV_Validator_69b($bank); } - public function isValid($account) { return ($account >= 9300000000 && $account <= 9399999999) || parent::isValid($account); } - /** * @return bool */ @@ -62,8 +54,4 @@ protected function useValidator(BAV_Validator $validator) } return true; } - - } - - diff --git a/classes/validator/validators/BAV_Validator_69b.php b/classes/validator/validators/BAV_Validator_69b.php index f0a4264a..15593ded 100644 --- a/classes/validator/validators/BAV_Validator_69b.php +++ b/classes/validator/validators/BAV_Validator_69b.php @@ -1,8 +1,5 @@ accumulator % 10)) % 10; return (string)$result === $this->getCheckNumber(); } - } - diff --git a/classes/validator/validators/BAV_Validator_70.php b/classes/validator/validators/BAV_Validator_70.php index ad91e102..24b45c9a 100644 --- a/classes/validator/validators/BAV_Validator_70.php +++ b/classes/validator/validators/BAV_Validator_70.php @@ -1,8 +1,5 @@ setWeights(array(2, 3, 4, 5, 6, 7)); } - protected function iterationStep() { if ($this->position <= 2 && ($this->account{3} == 5 || substr($this->account, 3, 2) == 69)) { @@ -44,7 +37,4 @@ protected function iterationStep() } parent::iterationStep(); } - - } - diff --git a/classes/validator/validators/BAV_Validator_71.php b/classes/validator/validators/BAV_Validator_71.php index 02832c56..ae3901d1 100644 --- a/classes/validator/validators/BAV_Validator_71.php +++ b/classes/validator/validators/BAV_Validator_71.php @@ -1,8 +1,5 @@ setEnd(6); } - protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { $result = 11 - ($this->accumulator % 11); @@ -52,6 +44,4 @@ protected function getResult() : $result; return (string)$result === $this->getCheckNumber(); } - } - diff --git a/classes/validator/validators/BAV_Validator_72.php b/classes/validator/validators/BAV_Validator_72.php index 1dca1cc5..00cce900 100644 --- a/classes/validator/validators/BAV_Validator_72.php +++ b/classes/validator/validators/BAV_Validator_72.php @@ -1,8 +1,5 @@ setWeights(array(2, 1)); $this->setEnd(3); } - - } - diff --git a/classes/validator/validators/BAV_Validator_73.php b/classes/validator/validators/BAV_Validator_73.php index c66ba1f1..66c4509f 100644 --- a/classes/validator/validators/BAV_Validator_73.php +++ b/classes/validator/validators/BAV_Validator_73.php @@ -1,10 +1,5 @@ exceptionValidators = BAV_Validator_51::getExceptionValidators($bank); } - /** */ protected function init($account) @@ -75,7 +65,4 @@ protected function init($account) } } - - } - diff --git a/classes/validator/validators/BAV_Validator_74.php b/classes/validator/validators/BAV_Validator_74.php index 91a207e1..24bf525d 100644 --- a/classes/validator/validators/BAV_Validator_74.php +++ b/classes/validator/validators/BAV_Validator_74.php @@ -1,8 +1,5 @@ setWeights(array(2, 1)); } - public function isValid($account) { return strlen($account) >= 2 && parent::isValid($account); } - protected function getResult() { if (parent::getResult()) { @@ -58,7 +50,4 @@ protected function getResult() } } - - } - diff --git a/classes/validator/validators/BAV_Validator_75.php b/classes/validator/validators/BAV_Validator_75.php index c65e6c2c..4b0c418c 100644 --- a/classes/validator/validators/BAV_Validator_75.php +++ b/classes/validator/validators/BAV_Validator_75.php @@ -1,8 +1,5 @@ setEnd(-2); } - public function isValid($account) { $account = ltrim($account, '0'); @@ -59,7 +52,4 @@ public function isValid($account) } return parent::isValid($account); } - - } - diff --git a/classes/validator/validators/BAV_Validator_76.php b/classes/validator/validators/BAV_Validator_76.php index e6f0044c..b938c4a0 100644 --- a/classes/validator/validators/BAV_Validator_76.php +++ b/classes/validator/validators/BAV_Validator_76.php @@ -1,8 +1,5 @@ setEnd(1); } - public function isValid($account) { if (parent::isValid($account)) { @@ -49,19 +42,16 @@ public function isValid($account) && parent::isValid($account); } - protected function getWeight() { return $this->i + 2; } - protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { $result = $this->accumulator % 11; @@ -69,6 +59,4 @@ protected function getResult() && $result != 10 && (string)$result === $this->getCheckNumber(); } - } - diff --git a/classes/validator/validators/BAV_Validator_77.php b/classes/validator/validators/BAV_Validator_77.php index 33a9055f..9b5661db 100644 --- a/classes/validator/validators/BAV_Validator_77.php +++ b/classes/validator/validators/BAV_Validator_77.php @@ -1,9 +1,5 @@ validators[] = new BAV_Validator_77a($bank); $this->validators[1]->setWeights(array(5, 4, 3, 4, 5)); } - - } - diff --git a/classes/validator/validators/BAV_Validator_77a.php b/classes/validator/validators/BAV_Validator_77a.php index 5424ed37..9f0b876b 100644 --- a/classes/validator/validators/BAV_Validator_77a.php +++ b/classes/validator/validators/BAV_Validator_77a.php @@ -1,8 +1,5 @@ setEnd(5); } - protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { $result = $this->accumulator % 11; return $result === 0; } - } - diff --git a/classes/validator/validators/BAV_Validator_78.php b/classes/validator/validators/BAV_Validator_78.php index af3e3a4c..3d395deb 100644 --- a/classes/validator/validators/BAV_Validator_78.php +++ b/classes/validator/validators/BAV_Validator_78.php @@ -1,8 +1,5 @@ setWeights(array(2, 1)); } - public function isValid($account) { return strlen($account) !== 8 && parent::isValid($account); } - - } - diff --git a/classes/validator/validators/BAV_Validator_79.php b/classes/validator/validators/BAV_Validator_79.php index af513116..f01b27af 100644 --- a/classes/validator/validators/BAV_Validator_79.php +++ b/classes/validator/validators/BAV_Validator_79.php @@ -1,9 +1,5 @@ * @@ -30,21 +26,20 @@ class BAV_Validator_79 extends BAV_Validator { - - private /** * @var BAV_Validator_00 */ - $validator, + private $validator; + /** * @var BAV_Validator_00 */ - $mode1, + private $mode1; + /** * @var BAV_Validator_00 */ - $mode2; - + private $mode2; public function __construct(BAV_Bank $bank) { @@ -62,6 +57,7 @@ protected function init($account) $this->validator = null; } + protected function validate() { if (array_search($this->account{0}, array(1, 2, 9)) !== false) { @@ -75,6 +71,7 @@ protected function validate() } } + /** * @return bool */ @@ -82,8 +79,4 @@ protected function getResult() { return ! is_null($this->validator) && $this->validator->isValid($this->account); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_80.php b/classes/validator/validators/BAV_Validator_80.php index fe5fa46b..ba404bd2 100644 --- a/classes/validator/validators/BAV_Validator_80.php +++ b/classes/validator/validators/BAV_Validator_80.php @@ -1,10 +1,5 @@ exceptionValidators = BAV_Validator_51::getExceptionValidators($bank); } - /** */ protected function init($account) @@ -66,7 +56,4 @@ protected function init($account) ? $this->exceptionValidators : $this->defaultValidators; } - - } - diff --git a/classes/validator/validators/BAV_Validator_81.php b/classes/validator/validators/BAV_Validator_81.php index 181467b1..44e16865 100644 --- a/classes/validator/validators/BAV_Validator_81.php +++ b/classes/validator/validators/BAV_Validator_81.php @@ -1,10 +1,5 @@ exceptionValidators = BAV_Validator_51::getExceptionValidators($bank); } - /** */ protected function init($account) @@ -62,7 +52,4 @@ protected function init($account) ? $this->exceptionValidators : $this->defaultValidators; } - - } - diff --git a/classes/validator/validators/BAV_Validator_82.php b/classes/validator/validators/BAV_Validator_82.php index 7984f79b..25064e4b 100644 --- a/classes/validator/validators/BAV_Validator_82.php +++ b/classes/validator/validators/BAV_Validator_82.php @@ -1,10 +1,5 @@ * @@ -31,21 +26,20 @@ class BAV_Validator_82 extends BAV_Validator { - - private /** * @var BAV_Validator */ - $validator, + private $validator; + /** * @var BAV_Validator_33 */ - $mode1, + private $mode1; + /** * @var BAV_Validator_10 */ - $mode2; - + private $mode2; public function __construct(BAV_Bank $bank) { @@ -56,12 +50,14 @@ public function __construct(BAV_Bank $bank) $this->mode2 = new BAV_Validator_10($bank); } + protected function validate() { - $this->validator = substr($this->account, 2 ,2) == 99 + $this->validator = substr($this->account, 2, 2) == 99 ? $this->mode2 : $this->mode1; } + /** * @return bool */ @@ -69,8 +65,4 @@ protected function getResult() { return $this->validator->isValid($this->account); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_83.php b/classes/validator/validators/BAV_Validator_83.php index f1d72f1a..a15d647d 100644 --- a/classes/validator/validators/BAV_Validator_83.php +++ b/classes/validator/validators/BAV_Validator_83.php @@ -1,11 +1,5 @@ exceptionValidators[] = new BAV_Validator_83x($bank); } - /** */ protected function init($account) @@ -83,7 +73,4 @@ protected function continueValidation(BAV_Validator $validator) { return $validator !== $this->modeC || $this->account{9} < 7; } - - } - diff --git a/classes/validator/validators/BAV_Validator_83x.php b/classes/validator/validators/BAV_Validator_83x.php index ece28f0f..fe340eec 100644 --- a/classes/validator/validators/BAV_Validator_83x.php +++ b/classes/validator/validators/BAV_Validator_83x.php @@ -1,8 +1,5 @@ setEnd(2); } - protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { $result = 11 - ($this->accumulator % 11); $result = $result >= 10 ? 0 : $result; return substr($this->account, 2, 2) == 99 && (string)$result === $this->getCheckNumber(); } - } - diff --git a/classes/validator/validators/BAV_Validator_84.php b/classes/validator/validators/BAV_Validator_84.php index 29a6ef13..26448051 100644 --- a/classes/validator/validators/BAV_Validator_84.php +++ b/classes/validator/validators/BAV_Validator_84.php @@ -1,11 +1,5 @@ exceptionValidators = BAV_Validator_51::getExceptionValidators($bank); } - /** */ protected function init($account) @@ -72,7 +61,4 @@ protected function init($account) ? $this->exceptionValidators : $this->defaultValidators; } - - } - diff --git a/classes/validator/validators/BAV_Validator_84b.php b/classes/validator/validators/BAV_Validator_84b.php index c867547b..2df4e722 100644 --- a/classes/validator/validators/BAV_Validator_84b.php +++ b/classes/validator/validators/BAV_Validator_84b.php @@ -1,8 +1,5 @@ setEnd(4); } - protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { $result = 7 - ($this->accumulator % 7); $result = $result == 7 ? 0 : $result; return (string)$result === $this->getCheckNumber(); } - } - diff --git a/classes/validator/validators/BAV_Validator_85.php b/classes/validator/validators/BAV_Validator_85.php index 4c930eb1..4dba3be6 100644 --- a/classes/validator/validators/BAV_Validator_85.php +++ b/classes/validator/validators/BAV_Validator_85.php @@ -1,11 +1,5 @@ exceptionValidators[0]->setEnd(2); } - /** */ protected function init($account) @@ -85,7 +75,4 @@ protected function continueValidation(BAV_Validator $validator) { return $validator !== $this->modeC || $this->account{9} < 7; } - - } - diff --git a/classes/validator/validators/BAV_Validator_86.php b/classes/validator/validators/BAV_Validator_86.php index 24ab449a..57435082 100644 --- a/classes/validator/validators/BAV_Validator_86.php +++ b/classes/validator/validators/BAV_Validator_86.php @@ -1,11 +1,5 @@ exceptionValidators = BAV_Validator_51::getExceptionValidators($bank); } - /** */ protected function init($account) @@ -68,7 +57,4 @@ protected function init($account) ? $this->exceptionValidators : $this->defaultValidators; } - - } - diff --git a/classes/validator/validators/BAV_Validator_87.php b/classes/validator/validators/BAV_Validator_87.php index c46b339d..02fb2934 100644 --- a/classes/validator/validators/BAV_Validator_87.php +++ b/classes/validator/validators/BAV_Validator_87.php @@ -1,12 +1,5 @@ exceptionValidators = BAV_Validator_51::getExceptionValidators($bank); } - /** */ protected function init($account) @@ -69,8 +57,4 @@ protected function init($account) ? $this->exceptionValidators : $this->defaultValidators; } - - } - - diff --git a/classes/validator/validators/BAV_Validator_87a.php b/classes/validator/validators/BAV_Validator_87a.php index 5086522b..b460f480 100644 --- a/classes/validator/validators/BAV_Validator_87a.php +++ b/classes/validator/validators/BAV_Validator_87a.php @@ -1,9 +1,5 @@ setEnd(4); } - protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { $result = 7 - ($this->accumulator % 7); $result = $result == 7 ? 0 : $result; return (string)$result === $this->getCheckNumber(); } - } - diff --git a/classes/validator/validators/BAV_Validator_88.php b/classes/validator/validators/BAV_Validator_88.php index dbdf7355..e0d6ddac 100644 --- a/classes/validator/validators/BAV_Validator_88.php +++ b/classes/validator/validators/BAV_Validator_88.php @@ -1,8 +1,5 @@ setEnd($this->account{2} == 9 ? 2: 3); } - - } - diff --git a/classes/validator/validators/BAV_Validator_89.php b/classes/validator/validators/BAV_Validator_89.php index 068b7967..8e62172c 100644 --- a/classes/validator/validators/BAV_Validator_89.php +++ b/classes/validator/validators/BAV_Validator_89.php @@ -1,9 +1,5 @@ validator10 = new BAV_Validator_10($bank); } - protected function iterationStep() { $this->accumulator += $this->crossSum($this->number * $this->getWeight()); } - public function isValid($account) { $length = strlen(ltrim($account, '0')); return (($length == 8 || $length == 9) && $this->validator10->isValid($account)) || ($length == 7 && parent::isValid($account)); } - - } - diff --git a/classes/validator/validators/BAV_Validator_90.php b/classes/validator/validators/BAV_Validator_90.php index bb3da0d1..bdfd4f49 100644 --- a/classes/validator/validators/BAV_Validator_90.php +++ b/classes/validator/validators/BAV_Validator_90.php @@ -1,12 +1,5 @@ modeF->setEnd(2); } - /** */ protected function init($account) @@ -77,9 +65,4 @@ protected function init($account) ? array($this->modeF) : $this->defaultValidators; } - - } - - - diff --git a/classes/validator/validators/BAV_Validator_90c.php b/classes/validator/validators/BAV_Validator_90c.php index 52164dd9..0c19dd89 100644 --- a/classes/validator/validators/BAV_Validator_90c.php +++ b/classes/validator/validators/BAV_Validator_90c.php @@ -1,8 +1,5 @@ setEnd(4); } - protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { $result = 7 - $this->accumulator % 7; @@ -51,7 +43,4 @@ protected function getResult() : $result % 10; return $this->account{9} < 7 && (string)$result === $this->getCheckNumber(); } - - } - diff --git a/classes/validator/validators/BAV_Validator_90d.php b/classes/validator/validators/BAV_Validator_90d.php index 2b1c1f25..8cf09f4b 100644 --- a/classes/validator/validators/BAV_Validator_90d.php +++ b/classes/validator/validators/BAV_Validator_90d.php @@ -1,8 +1,5 @@ setEnd(4); } - protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { $result = 9 - $this->accumulator % 9; @@ -51,7 +43,4 @@ protected function getResult() : $result % 10; return $this->account{9} != 9 && (string)$result === $this->getCheckNumber(); } - - } - diff --git a/classes/validator/validators/BAV_Validator_90e.php b/classes/validator/validators/BAV_Validator_90e.php index ad2195ae..7848374d 100644 --- a/classes/validator/validators/BAV_Validator_90e.php +++ b/classes/validator/validators/BAV_Validator_90e.php @@ -1,8 +1,5 @@ setEnd(4); } - protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { $result = (10 - $this->accumulator % 10) % 10; return (string)$result === $this->getCheckNumber(); } - - } - diff --git a/classes/validator/validators/BAV_Validator_90g.php b/classes/validator/validators/BAV_Validator_90g.php index 53b4af4e..ad40bcc4 100644 --- a/classes/validator/validators/BAV_Validator_90g.php +++ b/classes/validator/validators/BAV_Validator_90g.php @@ -19,12 +19,9 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - - class BAV_Validator_90g extends BAV_Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) { parent::__construct($bank); @@ -38,19 +35,15 @@ public function __construct(BAV_Bank $bank) $this->setEnd(3); } - protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { $rest = $this->accumulator % 7; $checknumber = $rest == 0 ? 0 : (7 - $rest); return (string)$checknumber === $this->getCheckNumber(); } - - -} \ No newline at end of file +} diff --git a/classes/validator/validators/BAV_Validator_91.php b/classes/validator/validators/BAV_Validator_91.php index 54a15462..9bfc36cf 100644 --- a/classes/validator/validators/BAV_Validator_91.php +++ b/classes/validator/validators/BAV_Validator_91.php @@ -1,9 +1,5 @@ validators[2]->setStart(-1); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_92.php b/classes/validator/validators/BAV_Validator_92.php index 101e69e0..73f7df43 100644 --- a/classes/validator/validators/BAV_Validator_92.php +++ b/classes/validator/validators/BAV_Validator_92.php @@ -1,8 +1,5 @@ setWeights(array(3, 7, 1)); $this->setEnd(3); } - - } - diff --git a/classes/validator/validators/BAV_Validator_93.php b/classes/validator/validators/BAV_Validator_93.php index 73c9fb5d..863ac00b 100644 --- a/classes/validator/validators/BAV_Validator_93.php +++ b/classes/validator/validators/BAV_Validator_93.php @@ -1,9 +1,5 @@ validators[1]->setDivisor(7); } - /** * @throws BAV_ValidatorException_OutOfBounds * @param int $int @@ -57,8 +49,4 @@ protected function normalizeAccount($size) } } - - } - - diff --git a/classes/validator/validators/BAV_Validator_94.php b/classes/validator/validators/BAV_Validator_94.php index 795eb083..13323736 100644 --- a/classes/validator/validators/BAV_Validator_94.php +++ b/classes/validator/validators/BAV_Validator_94.php @@ -1,8 +1,5 @@ setWeights(array(1, 2)); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_95.php b/classes/validator/validators/BAV_Validator_95.php index 22dc01c5..8722506d 100644 --- a/classes/validator/validators/BAV_Validator_95.php +++ b/classes/validator/validators/BAV_Validator_95.php @@ -1,8 +1,5 @@ setWeights(array(2, 3, 4, 5, 6, 7)); } - public function isValid($account) { return parent::isValid($account) @@ -45,8 +38,4 @@ public function isValid($account) || $this->isBetween(700000000, 799999999) || $this->isBetween(910000000, 989999999); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_96.php b/classes/validator/validators/BAV_Validator_96.php index c25f6105..db728d0f 100644 --- a/classes/validator/validators/BAV_Validator_96.php +++ b/classes/validator/validators/BAV_Validator_96.php @@ -1,10 +1,5 @@ validators[1]->setWeights(array(2, 1)); } - public function isValid($account) { return parent::isValid($account) || $this->isBetween(1300000, 99399999); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_97.php b/classes/validator/validators/BAV_Validator_97.php index 87176eff..4506a643 100644 --- a/classes/validator/validators/BAV_Validator_97.php +++ b/classes/validator/validators/BAV_Validator_97.php @@ -1,8 +1,5 @@ result = $account - (int)($account / 11) * 11; } + /** * @return bool */ @@ -53,10 +48,4 @@ protected function getResult() return strlen(ltrim($this->account, '0')) >= 5 && $this->result === (int) $this->getChecknumber(); } - - - - } - - diff --git a/classes/validator/validators/BAV_Validator_98.php b/classes/validator/validators/BAV_Validator_98.php index 41db2555..9a4fcca4 100644 --- a/classes/validator/validators/BAV_Validator_98.php +++ b/classes/validator/validators/BAV_Validator_98.php @@ -1,10 +1,5 @@ validators[] = new BAV_Validator_32($bank); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_99.php b/classes/validator/validators/BAV_Validator_99.php index d58a8230..b2cdaa8f 100644 --- a/classes/validator/validators/BAV_Validator_99.php +++ b/classes/validator/validators/BAV_Validator_99.php @@ -1,8 +1,5 @@ setWeights(array(2, 3, 4, 5, 6, 7)); } - public function isValid($account) { return parent::isValid($account) || $this->isBetween(396000000, 499999999); } - - } - diff --git a/classes/validator/validators/BAV_Validator_A0.php b/classes/validator/validators/BAV_Validator_A0.php index 69fb88b1..f1b28938 100644 --- a/classes/validator/validators/BAV_Validator_A0.php +++ b/classes/validator/validators/BAV_Validator_A0.php @@ -1,8 +1,5 @@ setDivisor(11); } - protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { $result = $this->divisor - $this->accumulator % $this->divisor; @@ -51,7 +43,4 @@ protected function getResult() : $result % 10; return substr($this->account, 0, 7) == '0000000' || (string)$result === $this->getCheckNumber(); } - - } - diff --git a/classes/validator/validators/BAV_Validator_A1.php b/classes/validator/validators/BAV_Validator_A1.php index 133f7611..e7200587 100644 --- a/classes/validator/validators/BAV_Validator_A1.php +++ b/classes/validator/validators/BAV_Validator_A1.php @@ -1,8 +1,5 @@ setWeights(array(2, 1, 2, 1, 2, 1, 2, 0, 0)); } - protected function getResult() { $length = strlen(ltrim($this->account, '0')); return ($length == 8 || $length == 10) && parent::getResult(); } - - } - diff --git a/classes/validator/validators/BAV_Validator_A2.php b/classes/validator/validators/BAV_Validator_A2.php index 1aaee5e0..cf43b449 100644 --- a/classes/validator/validators/BAV_Validator_A2.php +++ b/classes/validator/validators/BAV_Validator_A2.php @@ -1,10 +1,5 @@ validators[] = new BAV_Validator_04($bank); $this->validators[1]->setWeights(array(2, 3, 4, 5, 6, 7)); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_A3.php b/classes/validator/validators/BAV_Validator_A3.php index 16ad68f1..b7e5d093 100644 --- a/classes/validator/validators/BAV_Validator_A3.php +++ b/classes/validator/validators/BAV_Validator_A3.php @@ -1,10 +1,5 @@ validators[] = new BAV_Validator_10($bank); $this->validators[1]->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 10)); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_A4.php b/classes/validator/validators/BAV_Validator_A4.php index 05239378..b91e8381 100644 --- a/classes/validator/validators/BAV_Validator_A4.php +++ b/classes/validator/validators/BAV_Validator_A4.php @@ -1,11 +1,5 @@ validators[] = new BAV_Validator_93($bank); } - /** * Decide if you really want to use this validator * @@ -65,8 +55,4 @@ protected function useValidator(BAV_Validator $validator) } } - - } - - diff --git a/classes/validator/validators/BAV_Validator_A4b.php b/classes/validator/validators/BAV_Validator_A4b.php index 4847519a..be63de8e 100644 --- a/classes/validator/validators/BAV_Validator_A4b.php +++ b/classes/validator/validators/BAV_Validator_A4b.php @@ -1,8 +1,5 @@ setEnd(3); } - protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { $result = 7 - $this->accumulator % 7; @@ -51,7 +43,4 @@ protected function getResult() : $result % 10; return (string)$result === $this->getCheckNumber(); } - - } - diff --git a/classes/validator/validators/BAV_Validator_A5.php b/classes/validator/validators/BAV_Validator_A5.php index 0d494eb2..6afb53b7 100644 --- a/classes/validator/validators/BAV_Validator_A5.php +++ b/classes/validator/validators/BAV_Validator_A5.php @@ -1,10 +1,5 @@ validators[1]->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 10)); } - protected function continueValidation(BAV_Validator $validator) { if ($validator === $this->validators[1]) { @@ -50,8 +41,4 @@ protected function continueValidation(BAV_Validator $validator) } return true; } - - } - - diff --git a/classes/validator/validators/BAV_Validator_A6.php b/classes/validator/validators/BAV_Validator_A6.php index c40a9799..c8c51765 100644 --- a/classes/validator/validators/BAV_Validator_A6.php +++ b/classes/validator/validators/BAV_Validator_A6.php @@ -1,10 +1,5 @@ * @@ -31,21 +26,20 @@ class BAV_Validator_A6 extends BAV_Validator { - - protected /** * @var BAV_Validator */ - $validator, + protected $validator; + /** * @var BAV_Validator_00 */ - $mode1, + protected $mode1; + /** * @var BAV_Validator_01 */ - $mode2; - + protected $mode2; public function __construct(BAV_Bank $bank) { @@ -57,12 +51,14 @@ public function __construct(BAV_Bank $bank) $this->mode2 = new BAV_Validator_01($bank); $this->mode2->setWeights(array(3, 7, 1)); } + protected function validate() { $this->validator = $this->account{1} === '8' ? $this->mode1 : $this->mode2; } + /** * @return bool */ @@ -70,8 +66,4 @@ protected function getResult() { return $this->validator->isValid($this->account); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_A7.php b/classes/validator/validators/BAV_Validator_A7.php index 7a2b55fd..67ff61a4 100644 --- a/classes/validator/validators/BAV_Validator_A7.php +++ b/classes/validator/validators/BAV_Validator_A7.php @@ -1,10 +1,5 @@ validators[] = new BAV_Validator_03($bank); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_A8.php b/classes/validator/validators/BAV_Validator_A8.php index 07c8c152..c4ab0d28 100644 --- a/classes/validator/validators/BAV_Validator_A8.php +++ b/classes/validator/validators/BAV_Validator_A8.php @@ -1,11 +1,5 @@ exceptionValidators = BAV_Validator_51::getExceptionValidators($bank); } - /** */ protected function init($account) @@ -73,8 +64,4 @@ protected function init($account) ? $this->exceptionValidators : $this->defaultValidators; } - - } - - diff --git a/classes/validator/validators/BAV_Validator_A9.php b/classes/validator/validators/BAV_Validator_A9.php index 3fd4972f..9eea88f0 100644 --- a/classes/validator/validators/BAV_Validator_A9.php +++ b/classes/validator/validators/BAV_Validator_A9.php @@ -1,10 +1,5 @@ validators[] = new BAV_Validator_06($bank); $this->validators[1]->setWeights(array(2, 3, 4, 5, 6, 7)); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_B0.php b/classes/validator/validators/BAV_Validator_B0.php index febb8025..b00ed9da 100644 --- a/classes/validator/validators/BAV_Validator_B0.php +++ b/classes/validator/validators/BAV_Validator_B0.php @@ -1,10 +1,5 @@ * @@ -31,21 +26,20 @@ class BAV_Validator_B0 extends BAV_Validator { - - protected /** * @var BAV_Validator */ - $validator, + protected $validator; + /** * @var BAV_Validator_09 */ - $mode1, + protected $mode1; + /** * @var BAV_Validator_06 */ - $mode2; - + protected $mode2; public function __construct(BAV_Bank $bank) { @@ -56,12 +50,14 @@ public function __construct(BAV_Bank $bank) $this->mode2 = new BAV_Validator_06($bank); $this->mode2->setWeights(array(2, 3, 4, 5, 6, 7)); } + protected function validate() { $this->validator = array_search($this->account{7}, array(1, 2, 3, 6)) !== false ? $this->mode1 : $this->mode2; } + /** * @return bool */ @@ -71,8 +67,4 @@ protected function getResult() && $this->account{0} !== '8' && $this->validator->isValid($this->account); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_B1.php b/classes/validator/validators/BAV_Validator_B1.php index ca0a5f47..9829355c 100644 --- a/classes/validator/validators/BAV_Validator_B1.php +++ b/classes/validator/validators/BAV_Validator_B1.php @@ -1,10 +1,5 @@ validators[] = new BAV_Validator_01($bank); $this->validators[1]->setWeights(array(3, 7, 1)); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_B2.php b/classes/validator/validators/BAV_Validator_B2.php index cd21da22..305505e6 100644 --- a/classes/validator/validators/BAV_Validator_B2.php +++ b/classes/validator/validators/BAV_Validator_B2.php @@ -1,10 +1,5 @@ * @@ -31,21 +26,20 @@ class BAV_Validator_B2 extends BAV_Validator { - - protected /** * @var BAV_Validator */ - $validator, + protected $validator; + /** * @var BAV_Validator_02 */ - $mode1, + protected $mode1; + /** * @var BAV_Validator_00 */ - $mode2; - + protected $mode2; public function __construct(BAV_Bank $bank) { @@ -57,12 +51,14 @@ public function __construct(BAV_Bank $bank) $this->mode2 = new BAV_Validator_00($bank); $this->mode2->setWeights(array(2, 1)); } + protected function validate() { $this->validator = $this->account{0} <= 7 ? $this->mode1 : $this->mode2; } + /** * @return bool */ @@ -70,8 +66,4 @@ protected function getResult() { return $this->validator->isValid($this->account); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_B3.php b/classes/validator/validators/BAV_Validator_B3.php index 023702d6..a0d43919 100644 --- a/classes/validator/validators/BAV_Validator_B3.php +++ b/classes/validator/validators/BAV_Validator_B3.php @@ -1,10 +1,5 @@ * @@ -31,21 +26,20 @@ class BAV_Validator_B3 extends BAV_Validator { - - protected /** * @var BAV_Validator */ - $validator, + protected $validator; + /** * @var BAV_Validator_32 */ - $mode1, + protected $mode1; + /** * @var BAV_Validator_06 */ - $mode2; - + protected $mode2; public function __construct(BAV_Bank $bank) { @@ -57,12 +51,14 @@ public function __construct(BAV_Bank $bank) $this->mode2 = new BAV_Validator_06($bank); $this->mode2->setWeights(array(2, 3, 4, 5, 6, 7)); } + protected function validate() { $this->validator = $this->account{0} != 9 ? $this->mode1 : $this->mode2; } + /** * @return bool */ @@ -70,8 +66,4 @@ protected function getResult() { return $this->validator->isValid($this->account); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_B4.php b/classes/validator/validators/BAV_Validator_B4.php index 9349b0a9..1706e901 100644 --- a/classes/validator/validators/BAV_Validator_B4.php +++ b/classes/validator/validators/BAV_Validator_B4.php @@ -1,10 +1,5 @@ * @@ -31,21 +26,20 @@ class BAV_Validator_B4 extends BAV_Validator { - - protected /** * @var BAV_Validator */ - $validator, + protected $validator; + /** * @var BAV_Validator_00 */ - $mode1, + protected $mode1; + /** * @var BAV_Validator_02 */ - $mode2; - + protected $mode2; public function __construct(BAV_Bank $bank) { @@ -57,12 +51,14 @@ public function __construct(BAV_Bank $bank) $this->mode2 = new BAV_Validator_02($bank); $this->mode2->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 10)); } + protected function validate() { $this->validator = $this->account{0} == 9 ? $this->mode1 : $this->mode2; } + /** * @return bool */ @@ -70,8 +66,4 @@ protected function getResult() { return $this->validator->isValid($this->account); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_B5.php b/classes/validator/validators/BAV_Validator_B5.php index 6d9aa9cd..2dede5db 100644 --- a/classes/validator/validators/BAV_Validator_B5.php +++ b/classes/validator/validators/BAV_Validator_B5.php @@ -1,10 +1,5 @@ validators[] = new BAV_Validator_00($bank); $this->validators[1]->setWeights(array(2, 1)); } + /** * @return bool */ @@ -51,8 +44,4 @@ protected function continueValidation(BAV_Validator $validator) } return true; } - - } - - diff --git a/classes/validator/validators/BAV_Validator_B6.php b/classes/validator/validators/BAV_Validator_B6.php index af602e53..0c2f9041 100644 --- a/classes/validator/validators/BAV_Validator_B6.php +++ b/classes/validator/validators/BAV_Validator_B6.php @@ -1,11 +1,5 @@ * @@ -32,21 +26,20 @@ class BAV_Validator_B6 extends BAV_Validator implements BAV_Validator_BankDependent { - - protected /** * @var BAV_Validator */ - $validator, + protected $validator; + /** * @var BAV_Validator_20 */ - $mode1, + protected $mode1; + /** * @var BAV_Validator_53 */ - $mode2; - + protected $mode2; public function __construct(BAV_Bank $bank) { @@ -58,6 +51,7 @@ public function __construct(BAV_Bank $bank) $this->mode2 = new BAV_Validator_53($bank); $this->mode2->setWeights(array(2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4)); } + protected function validate() { if ($this->account{0} !== '0' || preg_match("/^0269[1-9]/", $this->account)) { @@ -67,6 +61,7 @@ protected function validate() $this->validator = $this->mode2; } } + /** * @return bool */ @@ -74,8 +69,4 @@ protected function getResult() { return $this->validator->isValid($this->account, '0'); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_B7.php b/classes/validator/validators/BAV_Validator_B7.php index 6a847809..f2c2d1cd 100644 --- a/classes/validator/validators/BAV_Validator_B7.php +++ b/classes/validator/validators/BAV_Validator_B7.php @@ -1,8 +1,5 @@ setWeights(array(3, 7, 1)); } - protected function getResult() { return ($this->isBetween(1000000, 5999999) || $this->isBetween(700000000, 899999999)) ? parent::getResult() : true; } - - } - diff --git a/classes/validator/validators/BAV_Validator_B8.php b/classes/validator/validators/BAV_Validator_B8.php index 7da7f477..08135ce3 100644 --- a/classes/validator/validators/BAV_Validator_B8.php +++ b/classes/validator/validators/BAV_Validator_B8.php @@ -1,11 +1,5 @@ validators[] = new BAV_Validator_29($bank); - $this->_validator9 = new BAV_Validator_09($bank); - $this->validators[] = $this->_validator9; + $this->validator9 = new BAV_Validator_09($bank); + $this->validators[] = $this->validator9; } /** @@ -57,7 +47,7 @@ public function __construct(BAV_Bank $bank) */ protected function useValidator(BAV_Validator $validator) { - if ($validator !== $this->_validator9) { + if ($validator !== $this->validator9) { return true; } @@ -66,8 +56,4 @@ protected function useValidator(BAV_Validator $validator) return ($set1 >= 51 && $set1 <= 59) || ($set2 >= 901 && $set2 <= 910); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_B9.php b/classes/validator/validators/BAV_Validator_B9.php index f3ba17c3..718e5126 100644 --- a/classes/validator/validators/BAV_Validator_B9.php +++ b/classes/validator/validators/BAV_Validator_B9.php @@ -1,10 +1,5 @@ * @@ -31,21 +26,20 @@ class BAV_Validator_B9 extends BAV_Validator { - - protected /** * @var BAV_Validator */ - $validator, + protected $validator; + /** * @var BAV_Validator_B9a */ - $mode1, + protected $mode1; + /** * @var BAV_Validator_B9b */ - $mode2; - + protected $mode2; public function __construct(BAV_Bank $bank) { @@ -55,7 +49,6 @@ public function __construct(BAV_Bank $bank) $this->mode2 = new BAV_Validator_B9b($bank); } - protected function validate() { if (! preg_match('~^000?[^0]~', $this->account)) { @@ -68,7 +61,6 @@ protected function validate() : $this->mode1; } - /** * @return bool */ @@ -76,8 +68,4 @@ protected function getResult() { return ! is_null($this->validator) && $this->validator->isValid($this->account); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_B9a.php b/classes/validator/validators/BAV_Validator_B9a.php index d56db406..ba38f5dc 100644 --- a/classes/validator/validators/BAV_Validator_B9a.php +++ b/classes/validator/validators/BAV_Validator_B9a.php @@ -1,8 +1,5 @@ setEnd(2); } - protected function iterationStep() { $this->accumulator += ($this->number * $this->getWeight() + $this->getWeight()) % 11; } - protected function getResult() { $result = $this->accumulator % 10; @@ -57,6 +49,4 @@ protected function getResult() } return (string) $result === $this->getCheckNumber(); } - } - diff --git a/classes/validator/validators/BAV_Validator_B9b.php b/classes/validator/validators/BAV_Validator_B9b.php index 8b820d74..2262f622 100644 --- a/classes/validator/validators/BAV_Validator_B9b.php +++ b/classes/validator/validators/BAV_Validator_B9b.php @@ -1,8 +1,5 @@ setEnd(3); } - protected function iterationStep() { $this->accumulator += $this->number * $this->getWeight(); } - protected function getResult() { $result = $this->accumulator % 11; @@ -57,6 +49,4 @@ protected function getResult() } return (string) $result === $this->getCheckNumber(); } - } - diff --git a/classes/validator/validators/BAV_Validator_C0.php b/classes/validator/validators/BAV_Validator_C0.php index 8cd17165..b341db38 100644 --- a/classes/validator/validators/BAV_Validator_C0.php +++ b/classes/validator/validators/BAV_Validator_C0.php @@ -1,11 +1,5 @@ validators[1]->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 3)); } - public function useValidator(BAV_Validator $validator) { return $validator !== $this->validators[0] || preg_match('~^00[^0]~', $this->account); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_C1.php b/classes/validator/validators/BAV_Validator_C1.php index 2ed85951..74dddcbe 100644 --- a/classes/validator/validators/BAV_Validator_C1.php +++ b/classes/validator/validators/BAV_Validator_C1.php @@ -1,10 +1,5 @@ * @@ -31,21 +26,20 @@ class BAV_Validator_C1 extends BAV_Validator { - - protected /** * @var BAV_Validator */ - $validator, + protected $validator; + /** * @var BAV_Validator_17 */ - $mode1, + protected $mode1; + /** * @var BAV_Validator_C1b */ - $mode2; - + protected $mode2; public function __construct(BAV_Bank $bank) { @@ -56,12 +50,14 @@ public function __construct(BAV_Bank $bank) $this->mode2 = new BAV_Validator_C1b($bank); } + protected function validate() { $this->validator = $this->account{0} != '5' ? $this->mode1 : $this->mode2; } + /** * @return bool */ @@ -69,8 +65,4 @@ protected function getResult() { return $this->validator->isValid($this->account); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_C1b.php b/classes/validator/validators/BAV_Validator_C1b.php index 999ce208..e1cbcac2 100644 --- a/classes/validator/validators/BAV_Validator_C1b.php +++ b/classes/validator/validators/BAV_Validator_C1b.php @@ -1,8 +1,5 @@ setEnd(-2); } - protected function iterationStep() { $this->accumulator += $this->crossSum($this->number * $this->getWeight()); } - protected function getResult() { $result = (10 - (($this->accumulator - 1) % 11)) % 10; return (string)$result === $this->getCheckNumber(); } - } - diff --git a/classes/validator/validators/BAV_Validator_C2.php b/classes/validator/validators/BAV_Validator_C2.php index decde29b..cc4f1b0c 100644 --- a/classes/validator/validators/BAV_Validator_C2.php +++ b/classes/validator/validators/BAV_Validator_C2.php @@ -1,10 +1,5 @@ validators[] = new BAV_Validator_00($bank); $this->validators[1]->setWeights(array(2, 1)); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_C3.php b/classes/validator/validators/BAV_Validator_C3.php index c3b3bf80..2b4338c5 100644 --- a/classes/validator/validators/BAV_Validator_C3.php +++ b/classes/validator/validators/BAV_Validator_C3.php @@ -1,10 +1,5 @@ * @@ -31,21 +26,20 @@ class BAV_Validator_C3 extends BAV_Validator { - - protected /** * @var BAV_Validator */ - $validator, + protected $validator; + /** * @var BAV_Validator_00 */ - $mode1, + protected $mode1; + /** * @var BAV_Validator_58 */ - $mode2; - + protected $mode2; public function __construct(BAV_Bank $bank) { @@ -57,12 +51,14 @@ public function __construct(BAV_Bank $bank) $this->mode2 = new BAV_Validator_58($bank); $this->mode2->setWeights(array(2, 3, 4, 5, 6, 0, 0, 0, 0)); } + protected function validate() { $this->validator = $this->account{0} != '9' ? $this->mode1 : $this->mode2; } + /** * @return bool */ @@ -70,8 +66,4 @@ protected function getResult() { return $this->validator->isValid($this->account); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_C4.php b/classes/validator/validators/BAV_Validator_C4.php index 0028c84d..2aed4c6a 100644 --- a/classes/validator/validators/BAV_Validator_C4.php +++ b/classes/validator/validators/BAV_Validator_C4.php @@ -1,10 +1,5 @@ * @@ -31,21 +26,20 @@ class BAV_Validator_C4 extends BAV_Validator { - - protected /** * @var BAV_Validator */ - $validator, + protected $validator; + /** * @var BAV_Validator_15 */ - $mode1, + protected $mode1; + /** * @var BAV_Validator_58 */ - $mode2; - + protected $mode2; public function __construct(BAV_Bank $bank) { @@ -57,12 +51,14 @@ public function __construct(BAV_Bank $bank) $this->mode2 = new BAV_Validator_58($bank); $this->mode2->setWeights(array(2, 3, 4, 5, 6, 0, 0, 0, 0)); } + protected function validate() { $this->validator = $this->account{0} != '9' ? $this->mode1 : $this->mode2; } + /** * @return bool */ @@ -70,8 +66,4 @@ protected function getResult() { return $this->validator->isValid($this->account); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_C5.php b/classes/validator/validators/BAV_Validator_C5.php index 1632ede8..6c6cf3a4 100644 --- a/classes/validator/validators/BAV_Validator_C5.php +++ b/classes/validator/validators/BAV_Validator_C5.php @@ -1,12 +1,5 @@ * @@ -33,29 +26,30 @@ class BAV_Validator_C5 extends BAV_Validator { - - protected /** * @var BAV_Validator */ - $validator, + protected $validator; + /** * @var BAV_Validator_75 */ - $mode1, + protected $mode1; + /** * @var BAV_Validator_29 */ - $mode2, + protected $mode2; + /** * @var BAV_Validator_00 */ - $mode3, + protected $mode3; + /** * @var BAV_Validator_09 */ - $mode4; - + protected $mode4; public function __construct(BAV_Bank $bank) { @@ -66,6 +60,7 @@ public function __construct(BAV_Bank $bank) $this->mode3 = new BAV_Validator_00($bank); $this->mode4 = new BAV_Validator_09($bank); } + protected function validate() { $account = ltrim($this->account, '0'); @@ -108,6 +103,7 @@ protected function validate() break; } } + /** * @return bool */ @@ -115,9 +111,4 @@ protected function getResult() { return ! is_null($this->validator) && $this->validator->isValid($this->account); } - - } - - - diff --git a/classes/validator/validators/BAV_Validator_C6.php b/classes/validator/validators/BAV_Validator_C6.php index 2dd08290..4f4a77b0 100644 --- a/classes/validator/validators/BAV_Validator_C6.php +++ b/classes/validator/validators/BAV_Validator_C6.php @@ -1,9 +1,5 @@ * @@ -30,12 +26,10 @@ class BAV_Validator_C6 extends BAV_Validator { - - private static /** * @var Array */ - $transformation = array( + private static $transformation = array( 0 => 4451970, 1 => 4451981, 2 => 4451992, @@ -48,17 +42,15 @@ class BAV_Validator_C6 extends BAV_Validator 9 => 5499579 ); - - protected /** * @var String */ - $transformedAccount = '', + protected $transformedAccount = ''; + /** * @var BAV_Validator_00 */ - $validator; - + protected $validator; public function __construct(BAV_Bank $bank) { @@ -67,7 +59,6 @@ public function __construct(BAV_Bank $bank) $this->validator = new BAV_Validator_00($bank); } - protected function validate() { $transformation = array_key_exists($this->account{0}, self::$transformation) @@ -77,7 +68,6 @@ protected function validate() $this->validator->setNormalizedSize(9 + strlen($transformation)); } - /** * @return bool */ @@ -87,6 +77,4 @@ protected function getResult() ? $this->validator->isValid($this->transformedAccount) : false; } - - -} \ No newline at end of file +} diff --git a/classes/validator/validators/BAV_Validator_C7.php b/classes/validator/validators/BAV_Validator_C7.php index 43fea11b..40402deb 100644 --- a/classes/validator/validators/BAV_Validator_C7.php +++ b/classes/validator/validators/BAV_Validator_C7.php @@ -1,10 +1,5 @@ validators[] = new BAV_Validator_06($bank); $this->validators[1]->setWeights(array(2, 3, 4, 5, 6, 7)); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_C8.php b/classes/validator/validators/BAV_Validator_C8.php index 4783a07a..4af1b2bc 100644 --- a/classes/validator/validators/BAV_Validator_C8.php +++ b/classes/validator/validators/BAV_Validator_C8.php @@ -1,11 +1,5 @@ validators[] = new BAV_Validator_04($bank); $this->validators[] = new BAV_Validator_07($bank); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_C9.php b/classes/validator/validators/BAV_Validator_C9.php index ce7c5785..7447a705 100644 --- a/classes/validator/validators/BAV_Validator_C9.php +++ b/classes/validator/validators/BAV_Validator_C9.php @@ -1,10 +1,5 @@ validators[] = new BAV_Validator_00($bank); $this->validators[] = new BAV_Validator_07($bank); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_D0.php b/classes/validator/validators/BAV_Validator_D0.php index 41f3a140..b3b3fc07 100644 --- a/classes/validator/validators/BAV_Validator_D0.php +++ b/classes/validator/validators/BAV_Validator_D0.php @@ -1,10 +1,5 @@ * @@ -31,23 +26,18 @@ class BAV_Validator_D0 extends BAV_Validator { - const SWITCH_PREFIX = '57'; - - private /** * @var BAV_Validator */ - $validator; - + private $validator; public function __construct(BAV_Bank $bank) { parent::__construct($bank); } - protected function validate() { $this->validator = substr($this->account, 0, 2) !== self::SWITCH_PREFIX @@ -55,7 +45,6 @@ protected function validate() : new BAV_Validator_09($this->bank); } - /** * @return bool */ @@ -63,8 +52,4 @@ protected function getResult() { return $this->validator->isValid($this->account); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_D1.php b/classes/validator/validators/BAV_Validator_D1.php index b8201bd7..a8e94544 100644 --- a/classes/validator/validators/BAV_Validator_D1.php +++ b/classes/validator/validators/BAV_Validator_D1.php @@ -1,10 +1,5 @@ * @@ -31,12 +26,10 @@ class BAV_Validator_D1 extends BAV_Validator { - - private static /** * @var Array */ - $_transformation = array( + private static $transformation = array( 0 => 4363380, 1 => 4363381, 2 => 4363382, @@ -48,17 +41,15 @@ class BAV_Validator_D1 extends BAV_Validator 9 => 4363389 ); - - protected /** * @var String */ - $transformedAccount = '', + protected $transformedAccount = ''; + /** * @var BAV_Validator_00 */ - $validator; - + protected $validator; public function __construct(BAV_Bank $bank) { @@ -67,21 +58,19 @@ public function __construct(BAV_Bank $bank) $this->validator = new BAV_Validator_00($bank); } - protected function validate() { - $transformationIndex = $this->_getTransformationIndex(); - if (! array_key_exists($transformationIndex, self::$_transformation)) { + $transformationIndex = $this->getTransformationIndex(); + if (! array_key_exists($transformationIndex, self::$transformation)) { return; } - $transformationPrefix = self::$_transformation[$transformationIndex]; + $transformationPrefix = self::$transformation[$transformationIndex]; $this->validator->setNormalizedSize(10 + strlen($transformationPrefix)); $this->transformedAccount = $transformationPrefix . substr($this->account, 1); } - /** * @return bool */ @@ -89,21 +78,18 @@ protected function getResult() { return array_key_exists( - $this->_getTransformationIndex(), - self::$_transformation + $this->getTransformationIndex(), + self::$transformation ) && $this->validator->isValid($this->transformedAccount); } - /** * @return int */ - private function _getTransformationIndex() + private function getTransformationIndex() { return $this->account{0}; } - - -} \ No newline at end of file +} diff --git a/classes/validator/validators/BAV_Validator_D2.php b/classes/validator/validators/BAV_Validator_D2.php index f7f51894..9d1e5483 100644 --- a/classes/validator/validators/BAV_Validator_D2.php +++ b/classes/validator/validators/BAV_Validator_D2.php @@ -1,11 +1,5 @@ validators[] = new BAV_Validator_00($bank); $this->validators[] = new BAV_Validator_68($bank); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_D3.php b/classes/validator/validators/BAV_Validator_D3.php index 54069566..85eef20d 100644 --- a/classes/validator/validators/BAV_Validator_D3.php +++ b/classes/validator/validators/BAV_Validator_D3.php @@ -1,10 +1,5 @@ validators[] = new BAV_Validator_00($bank); $this->validators[] = new BAV_Validator_27($bank); } - - } - - diff --git a/classes/validator/validators/BAV_Validator_D4.php b/classes/validator/validators/BAV_Validator_D4.php index e8c6d3cc..6e1f3aad 100644 --- a/classes/validator/validators/BAV_Validator_D4.php +++ b/classes/validator/validators/BAV_Validator_D4.php @@ -1,9 +1,5 @@ validator->setNormalizedSize(10 + strlen(self::TRANSFORMATION)); } - protected function validate() { $this->transformedAccount = self::TRANSFORMATION.$this->account; } - /** * @return bool */ @@ -69,6 +61,4 @@ protected function getResult() return $this->account{0} != 0 && $this->validator->isValid($this->transformedAccount); } - - -} \ No newline at end of file +} diff --git a/classes/validator/validators/BAV_Validator_D5.php b/classes/validator/validators/BAV_Validator_D5.php index 190b6364..4a57ce3d 100644 --- a/classes/validator/validators/BAV_Validator_D5.php +++ b/classes/validator/validators/BAV_Validator_D5.php @@ -1,9 +1,5 @@ _validator1 = new BAV_Validator_06($bank); - $this->_validator1->setWeights(array(2, 3, 4, 5, 6, 7, 8, 0, 0)); + $this->validator1 = new BAV_Validator_06($bank); + $this->validator1->setWeights(array(2, 3, 4, 5, 6, 7, 8, 0, 0)); - $this->_validatorChain = new BAV_Validator_Chain($bank); + $this->validatorChain = new BAV_Validator_Chain($bank); $validator2 = new BAV_Validator_06($bank); $validator2->setWeights(array(2, 3, 4, 5, 6, 7, 0, 0, 0)); - $this->_validatorChain->addValidator($validator2); + $this->validatorChain->addValidator($validator2); $validator3 = new BAV_Validator_06($bank); $validator3->setWeights(array(2, 3, 4, 5, 6, 7, 0, 0, 0)); $validator3->setDivisor(7); - $this->_validatorChain->addValidator($validator3); + $this->validatorChain->addValidator($validator3); $validator4 = new BAV_Validator_06($bank); $validator4->setWeights(array(2, 3, 4, 5, 6, 7, 0, 0, 0)); $validator4->setDivisor(10); - $this->_validatorChain->addValidator($validator4); + $this->validatorChain->addValidator($validator4); } - /** * Uses the validator * @@ -79,10 +74,9 @@ public function __construct(BAV_Bank $bank) */ protected function getResult() { - return $this->_validator->isValid($this->account); + return $this->validator->isValid($this->account); } - /** * decide which validators are used * @@ -90,11 +84,9 @@ protected function getResult() */ protected function validate() { - $this->_validator + $this->validator = substr($this->account, 2, 2) == 99 - ? $this->_validator1 - : $this->_validatorChain; + ? $this->validator1 + : $this->validatorChain; } - - -} \ No newline at end of file +} diff --git a/classes/validator/validators/BAV_Validator_D6.php b/classes/validator/validators/BAV_Validator_D6.php index cd5bb4bc..cd8c1e22 100644 --- a/classes/validator/validators/BAV_Validator_D6.php +++ b/classes/validator/validators/BAV_Validator_D6.php @@ -1,11 +1,5 @@ validators[] = new BAV_Validator_03($bank); $this->validators[] = new BAV_Validator_00($bank); } - - -} \ No newline at end of file +} diff --git a/classes/validator/validators/BAV_Validator_D7.php b/classes/validator/validators/BAV_Validator_D7.php index e29be020..485fbe7c 100644 --- a/classes/validator/validators/BAV_Validator_D7.php +++ b/classes/validator/validators/BAV_Validator_D7.php @@ -1,8 +1,5 @@ setDivisor(10); } - protected function iterationStep() { $this->accumulator += $this->crossSum($this->number * $this->getWeight()); } - protected function getResult() { $result = $this->accumulator % $this->divisor; return (string)$result === $this->getCheckNumber(); } - } - diff --git a/classes/validator/validators/BAV_Validator_D8.php b/classes/validator/validators/BAV_Validator_D8.php index c20e7aa1..8c5280ac 100644 --- a/classes/validator/validators/BAV_Validator_D8.php +++ b/classes/validator/validators/BAV_Validator_D8.php @@ -1,9 +1,5 @@ _validator = new BAV_Validator_00($bank); + $this->validator = new BAV_Validator_00($bank); } - protected function validate() { } - /** * @return bool */ protected function getResult() { if ($this->account{0} != 0) { - return $this->_validator->isValid($this->account); + return $this->validator->isValid($this->account); } $set = (int) substr($this->account, 0, 3); return $set >= 1 && $set <= 9; } - - -} \ No newline at end of file +} diff --git a/classes/validator/validators/BAV_Validator_D9.php b/classes/validator/validators/BAV_Validator_D9.php index a33ed0d4..e4a14a43 100644 --- a/classes/validator/validators/BAV_Validator_D9.php +++ b/classes/validator/validators/BAV_Validator_D9.php @@ -1,11 +1,5 @@ validators[] = new BAV_Validator_10($bank); $this->validators[] = new BAV_Validator_18($bank); } - - -} \ No newline at end of file +} diff --git a/classes/validator/validators/BAV_Validator_E0.php b/classes/validator/validators/BAV_Validator_E0.php index 5ab989a5..83898873 100644 --- a/classes/validator/validators/BAV_Validator_E0.php +++ b/classes/validator/validators/BAV_Validator_E0.php @@ -21,17 +21,12 @@ * * @author hhilbert 2013-03-12 added */ - - class BAV_Validator_E0 extends BAV_Validator_00 { - protected function validate() { parent::validate(); $this->accumulator += 7; } - - -} \ No newline at end of file +} diff --git a/classes/validator/validators/BAV_Validator_E1.php b/classes/validator/validators/BAV_Validator_E1.php index c43a893a..7736100c 100644 --- a/classes/validator/validators/BAV_Validator_E1.php +++ b/classes/validator/validators/BAV_Validator_E1.php @@ -36,13 +36,11 @@ public function __construct(BAV_Bank $bank) $this->setDivisor(11); } - protected function iterationStep() { $this->accumulator += self::$subsitutions[$this->number] * $this->getWeight(); } - protected function getResult() { $result = $this->accumulator % $this->divisor; @@ -52,6 +50,4 @@ protected function getResult() } return (string) $result === $this->getCheckNumber(); } - } - From 259c643362aeae123aa6a212e6fcc9922e8e649c Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 24 May 2014 01:38:34 +0200 Subject: [PATCH 075/303] Tests --- tests/AgencyQueryTest.php | 22 ++++-------- tests/BackendTest.php | 26 +++----------- tests/CrossProjectTest.php | 28 +++++---------- tests/DataConstraintTest.php | 63 +++++++++++++++------------------- tests/TestSuite.php | 8 +---- tests/ValidatorTest.php | 30 +++++----------- tests/VerifyImportTest.php | 20 +++-------- tests/checkAgainstTestAPIs.php | 30 +++++++--------- 8 files changed, 73 insertions(+), 154 deletions(-) diff --git a/tests/AgencyQueryTest.php b/tests/AgencyQueryTest.php index a3af6134..7badc3f3 100755 --- a/tests/AgencyQueryTest.php +++ b/tests/AgencyQueryTest.php @@ -25,18 +25,14 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ - - class AgencyQueryTest extends PHPUnit_Framework_TestCase { - /** * @var BAV_DataBackend_PDO */ private $backend; - /** */ protected function setUp() @@ -44,31 +40,30 @@ protected function setUp() $this->backend = new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); } - public function testOnlyID() { $agencies = $this->backend->getAgencies( - 'SELECT id FROM bav_agency LIMIT 100'); + 'SELECT id FROM bav_agency LIMIT 100' + ); $this->assertAgencies($agencies, 100); } - public function testIDAndBank() { $agencies = $this->backend->getAgencies( - 'SELECT id, bank FROM bav_agency LIMIT 100'); + 'SELECT id, bank FROM bav_agency LIMIT 100' + ); $this->assertAgencies($agencies, 100); } - public function testNoBank() { $agencies = $this->backend->getAgencies( - 'SELECT id, name, postcode, city, shortTerm, pan, bic FROM bav_agency LIMIT 100'); + 'SELECT id, name, postcode, city, shortTerm, pan, bic FROM bav_agency LIMIT 100' + ); $this->assertAgencies($agencies, 100); } - /** * @expectedException BAV_DataBackendException_IO_MissingAttributes */ @@ -79,7 +74,6 @@ public function testNoID() ); } - private function assertAgencies(Array $agencies, $count) { $this->assertEquals($count, count($agencies)); @@ -111,8 +105,4 @@ private function assertAgencies(Array $agencies, $count) } } } - - } - - diff --git a/tests/BackendTest.php b/tests/BackendTest.php index aabc3135..c6a07542 100755 --- a/tests/BackendTest.php +++ b/tests/BackendTest.php @@ -26,17 +26,13 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ - class BackendTest extends PHPUnit_Framework_TestCase { - - private static /** * @var BAV_DataBackend_File */ - $referenceBackend; - + private static $referenceBackend; /** * Defines the reference backend @@ -46,7 +42,6 @@ public static function classConstructor() self::$referenceBackend = new BAV_DataBackend_File(); } - /** * @return Array The tested backends */ @@ -58,7 +53,6 @@ public function provideBackends() ); } - /** */ public function provideInstallationBackends() @@ -69,7 +63,6 @@ public function provideInstallationBackends() ); } - /** * @return Array */ @@ -87,7 +80,6 @@ public function provideBanks() return $banks; } - /** * @return Array */ @@ -116,7 +108,6 @@ public function provideAgencies() return $agencies; } - /** * @dataProvider provideInstallationBackends */ @@ -127,7 +118,6 @@ public function testInstallation(BAV_DataBackend $backend) $backend->uninstall(); } - /** * @dataProvider provideInstallationBackends */ @@ -137,7 +127,6 @@ public function testInstallationIsComplete(BAV_DataBackend $backend) //TODO test if the installation process fills all banks } - /** * Testet, dass ein erneutes $backend->getBank($id) das selbe * Objekt zurückliefert. @@ -148,13 +137,12 @@ public function testSingleInstances(BAV_DataBackend $backend) { foreach (self::$referenceBackend->getAllBanks() as $refBank) { $this->assertTrue( - $backend->getBank($refBank->getBankID()) === $backend->getBank($refBank->getBankID()), - "Different objects for bank {$refBank->getBankID()}" + $backend->getBank($refBank->getBankID()) === $backend->getBank($refBank->getBankID()), + "Different objects for bank {$refBank->getBankID()}" ); } } - /** * @dataProvider provideBackends */ @@ -166,7 +154,6 @@ public function testGetAllBanks(BAV_DataBackend $backend) ); } - /** * @dataProvider provideBanks */ @@ -188,7 +175,6 @@ public function testBanks(BAV_Bank $referenceBank, BAV_Bank $testedBank) ); } - /** * @dataProvider provideAgencies */ @@ -197,7 +183,6 @@ public function testAgencies(BAV_Agency $referenceAgency, BAV_Agency $testedAgen $this->assertEqualAgency($referenceAgency, $testedAgency); } - private function assertEqualAgency(BAV_Agency $a, BAV_Agency $b) { $this->assertTrue($a->getBank()->getBankID() === $b->getBank()->getBankID()); @@ -217,7 +202,6 @@ private function assertEqualAgency(BAV_Agency $a, BAV_Agency $b) } } - - } -BackendTest::classConstructor(); \ No newline at end of file + +BackendTest::classConstructor(); diff --git a/tests/CrossProjectTest.php b/tests/CrossProjectTest.php index ce2b7fb1..e2a4564e 100755 --- a/tests/CrossProjectTest.php +++ b/tests/CrossProjectTest.php @@ -1,9 +1,7 @@ * @@ -25,31 +23,29 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ - - class CrossProjectTest extends PHPUnit_Framework_TestCase { - - private /** * @var int */ - #$lastAccount = 9999999999, - $lastAccount = 99999, + #private $lastAccount = 9999999999, + private $lastAccount = 99999; + /** * @var Array */ - $testedValidators = array(), + private $testedValidators = array(); + /** * @var Array */ - $failedBankDependentValidators = array(), + private $failedBankDependentValidators = array(); + /** * @var Array */ - $testAPIs = array(); - + private $testAPIs = array(); /** * @return Array @@ -68,7 +64,6 @@ protected function setUp() ); } - /** * @return Array */ @@ -83,7 +78,6 @@ public function provideBanks() return $banks; } - /** * @dataProvider provideBanks */ @@ -121,7 +115,6 @@ public function testCrossProjects(BAV_Bank $bank) $this->testedValidators[$bank->getValidationType()] = true; } - private function assertSameResult(BAV_Bank $bank, $account) { $results = array(); @@ -140,7 +133,6 @@ private function assertSameResult(BAV_Bank $bank, $account) ); } - /** * @param BAV_Bank $bank * @param String $account @@ -171,8 +163,4 @@ private function getErrorMessage(BAV_Bank $bank, $account, Array $results) return $message; } - - } - - diff --git a/tests/DataConstraintTest.php b/tests/DataConstraintTest.php index 5553ca92..09f3f431 100755 --- a/tests/DataConstraintTest.php +++ b/tests/DataConstraintTest.php @@ -6,18 +6,14 @@ require_once __DIR__ . "/../autoloader/autoloader.php"; - DataConstraintTest::classConstructor(); class DataConstraintTest extends PHPUnit_Framework_TestCase { - - private static /** * @var PDO */ - $pdo; - + private static $pdo; public static function classConstructor() { @@ -25,23 +21,25 @@ public static function classConstructor() self::$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); self::$pdo->exec("DROP TABLE IF EXISTS bank"); - self::$pdo->exec("CREATE TEMPORARY TABLE bank ( - id int primary key, - blz char(8), - isMain tinyint(1), - name varchar(58), - plz varchar(5), - city varchar(35), - shortterm varchar(27), - pan char(5), - bic varchar(11), - validator char(2), - index(blz), - index(name), - index(shortterm), - index(pan), - index(bic) - ) engine=MEMORY"); + self::$pdo->exec( + "CREATE TEMPORARY TABLE bank ( + id int primary key, + blz char(8), + isMain tinyint(1), + name varchar(58), + plz varchar(5), + city varchar(35), + shortterm varchar(27), + pan char(5), + bic varchar(11), + validator char(2), + index(blz), + index(name), + index(shortterm), + index(pan), + index(bic) + ) engine=MEMORY" + ); $fp = fopen(__DIR__ . '/../data/banklist.txt', 'r'); if (! is_resource($fp)) { @@ -49,10 +47,11 @@ public static function classConstructor() } - $insert = self::$pdo->prepare(" - INSERT INTO bank + $insert = self::$pdo->prepare( + "INSERT INTO bank ( id, blz, isMain, name, plz, city, shortterm, pan, bic, validator) - VALUES (:id, :blz, :isMain, :name, :plz, :city, :shortTerm, :pan, :bic, :validator)"); + VALUES (:id, :blz, :isMain, :name, :plz, :city, :shortTerm, :pan, :bic, :validator)" + ); $insert->bindParam(':id', $id); $insert->bindParam(':blz', $blz); $insert->bindParam(':isMain', $isMain); @@ -82,7 +81,6 @@ public static function classConstructor() fclose($fp); } - /** * @return Array */ @@ -102,7 +100,6 @@ public function provideParsedLines() return $lines; } - /** * @dataProvider provideParsedLines */ @@ -112,22 +109,20 @@ public function testParser($blz, $type) $this->assertRegExp('~^[\dA-Z]\d$~', $type); } - /** * Every bankID should have exact one validator */ public function testValidatorCount() { - $statement = self::$pdo->query(" - SELECT blz FROM bank GROUP BY blz HAVING count(DISTINCT validator) != 1 - "); + $statement = self::$pdo->query( + "SELECT blz FROM bank GROUP BY blz HAVING count(DISTINCT validator) != 1" + ); $this->assertFalse( $statement->fetch(), "bankID <-> validator is not n:1!" ); } - /** * Every bankID should have exact one mainAgency */ @@ -140,7 +135,6 @@ public function testMainAgency () ); } - public function testBLZDatatype () { $statement = self::$pdo->query("SELECT blz FROM bank WHERE blz LIKE '0%'"); @@ -149,7 +143,4 @@ public function testBLZDatatype () "Every bankID should not start with 0." ); } - } - - diff --git a/tests/TestSuite.php b/tests/TestSuite.php index 8099f288..61c64dfd 100644 --- a/tests/TestSuite.php +++ b/tests/TestSuite.php @@ -1,4 +1,5 @@ * @@ -21,18 +22,15 @@ * @copyright Copyright (C) 2009 Markus Malkusch */ - require_once __DIR__ . '/AgencyQueryTest.php'; require_once __DIR__ . '/BackendTest.php'; require_once __DIR__ . '/DataConstraintTest.php'; require_once __DIR__ . '/ValidatorTest.php'; require_once __DIR__ . '/VerifyImportTest.php'; - class TestSuite extends PHPUnit_Framework_TestSuite { - /** * @return TestSuite */ @@ -48,8 +46,4 @@ public static function suite() return $suite; } - - } - - diff --git a/tests/ValidatorTest.php b/tests/ValidatorTest.php index fd8982c4..4283bd8f 100755 --- a/tests/ValidatorTest.php +++ b/tests/ValidatorTest.php @@ -26,26 +26,23 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ - - class ValidatorTest extends PHPUnit_Framework_TestCase { - - private static /** * @var BAV_DataBackend */ - $dataBackend, + private static $dataBackend; + /** * @var array This array contains all names of implemented algorithms as keys. */ - $implementedBanks = array(), + private static $implementedBanks = array(); + /** * @var array all known banks */ - $knownBanks = array(); - + private static $knownBanks = array(); /** * @throws BAV_FileParserException_IO @@ -67,7 +64,6 @@ protected function setUp() } } - /** * @return Array */ @@ -78,7 +74,7 @@ public function provideBanks() $banks = array(); $files = BAV_ClassFile::getClassFiles(__DIR__.'/../classes/validator/validators/'); foreach ($files as $class) { - if (! preg_match('~^BAV_Validator_([A-Z0-9]{2})$~', $class->getName(), $matchType)) { + if (! preg_match('~^BAV_Validator_([A-Z0-9]{2})$~', $class->getName(), $matchType)) { continue; } @@ -94,7 +90,6 @@ public function provideBanks() return $banks; } - /** * @return Array */ @@ -111,7 +106,6 @@ public function provideAccountsAndBanksInAllLengths() return $providedAccountsAndBanks; } - /** * This Test runs all validators in order to find parse Errors * and fills {@link $implementedBanks}. @@ -132,7 +126,6 @@ public function testFindParseErrors(BAV_Bank $bank) } } - /** * 0 - 0000000000 should always be invalid * @@ -153,7 +146,6 @@ public function testNullIsInvalid(BAV_Bank $bank) } } - /** * Short accounts should not raise exception. * @@ -167,7 +159,6 @@ public function testAccountLength(BAV_Bank $bank, $account) $bank->isValid($account); } - /** * @return Array */ @@ -184,7 +175,6 @@ public function provideTestAccounts() ); } - /** * @return Array */ @@ -202,7 +192,6 @@ private function getTestAccounts(Array $testAccounts, $expectedValidation) return $accounts; } - /** * @dataProvider provideTestAccounts */ @@ -244,7 +233,8 @@ public function testAccount($typeOrBankID, Array $accountIDs, $expectedValidatio $bank = new BAV_Bank(self::$dataBackend, $e->getBankID(), 'C0'); break; - default: throw $e; + default: + throw $e; } } @@ -259,6 +249,4 @@ public function testAccount($typeOrBankID, Array $accountIDs, $expectedValidatio } } - - -} \ No newline at end of file +} diff --git a/tests/VerifyImportTest.php b/tests/VerifyImportTest.php index a16bf50b..e35832c4 100755 --- a/tests/VerifyImportTest.php +++ b/tests/VerifyImportTest.php @@ -28,26 +28,23 @@ * @copyright Copyright (C) 2009 Markus Malkusch * @see BAV_VerifyImport */ - - class VerifyImportTest extends PHPUnit_Framework_TestCase { - - private /** * @var array */ - $validationMap = array(), + private $validationMap = array(); + /** * @var array */ - $verifyArray = array(), + private $verifyArray = array(); + /** * @var BAV_DataBackend_File */ - $databack; - + private $databack; protected function setUp() { @@ -66,7 +63,6 @@ protected function setUp() } } - public function testFileImport() { $importer = new BAV_VerifyImport($this->databack); @@ -74,7 +70,6 @@ public function testFileImport() $this->assertImporter($importer); } - public function testSequentialImport() { $importer = new BAV_VerifyImport($this->databack); @@ -101,7 +96,6 @@ public function testSequentialImport() $this->assertImporter($importer, $notSupported); } - private function assertImporter(BAV_VerifyImport $importer, Array $notSupported = array()) { $file = tempnam('/tmp', 'BAV'); @@ -139,7 +133,6 @@ private function assertImporter(BAV_VerifyImport $importer, Array $notSupported $this->assertEquals(0, count($checkArray['invalid'])); } - /** * @param String $validationType * @return BAV_Bank @@ -152,7 +145,4 @@ private function getBank($validationType) } return $this->validationMap[$validationType]; } - } - - diff --git a/tests/checkAgainstTestAPIs.php b/tests/checkAgainstTestAPIs.php index e3f29ba8..b8d44701 100755 --- a/tests/checkAgainstTestAPIs.php +++ b/tests/checkAgainstTestAPIs.php @@ -27,41 +27,39 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ - - class BAV_CheckAgainstTestAPIs extends BAV { - const VALID = 1; const INVALID = 2; const BANK_NOT_FOUND = 3; const ERROR = 4; - - private /** * @var int */ - #$firstAccount = 9999999999, - $firstAccount = 999, + #private $firstAccount = 9999999999, + private $firstAccount = 999; + /** * @var int */ - $lastAccount = 1, + private $lastAccount = 1; + /** * @var Array */ - $testedValidators = array(), + private $testedValidators = array(); + /** * @var Array */ - $differences = array(), + private $differences = array(); + /** * @var Array */ - $testAPIs = array(); - + private $testAPIs = array(); public function __construct() { @@ -121,7 +119,7 @@ public function __construct() foreach ($backend->getAllBanks() as $bank) { try { - if ( array_key_exists($bank->getValidationType(), $this->testedValidators) + if (array_key_exists($bank->getValidationType(), $this->testedValidators) && ! $bank->getValidator() instanceof BAV_Validator_BankDependent) { continue; @@ -149,7 +147,6 @@ public function __construct() } } - private function testAccount(BAV_Bank $bank, $account) { $results = array(); @@ -190,9 +187,6 @@ private function testAccount(BAV_Bank $bank, $account) $this->differences[] = array($bank, $account, $results); } - - } -new BAV_CheckAgainstTestAPIs(); - +new BAV_CheckAgainstTestAPIs(); From d7c8f09115207d1401f025c22a236b96dc313486 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 24 May 2014 02:19:04 +0200 Subject: [PATCH 076/303] renamed BAV_DataBackend::getAgencies() into getAgenciesForBank() --- classes/bank/BAV_Bank.php | 2 +- classes/dataBackend/BAV_DataBackend.php | 4 ++-- classes/dataBackend/BAV_DataBackend_File.php | 4 ++-- classes/dataBackend/BAV_DataBackend_PDO.php | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/classes/bank/BAV_Bank.php b/classes/bank/BAV_Bank.php index 7eb04aa7..87476c07 100644 --- a/classes/bank/BAV_Bank.php +++ b/classes/bank/BAV_Bank.php @@ -119,7 +119,7 @@ public function getMainAgency() public function getAgencies() { if (is_null($this->agencies)) { - $this->agencies = $this->dataBackend->getAgencies($this); + $this->agencies = $this->dataBackend->getAgenciesForBank($this); } return $this->agencies; diff --git a/classes/dataBackend/BAV_DataBackend.php b/classes/dataBackend/BAV_DataBackend.php index cc18b361..b498125c 100644 --- a/classes/dataBackend/BAV_DataBackend.php +++ b/classes/dataBackend/BAV_DataBackend.php @@ -6,7 +6,7 @@ * you have to implement these methods: * * install(), update(), uninstall(), getNewBank(), getAllBanks(), getMainAgency(), - * getAgencies() + * getAgenciesForBank() * * When you use this class you should create only one object. The BAV_DataBackend * is designed to keep all created BAV_Bank objects in an array. So you won't get @@ -150,5 +150,5 @@ abstract public function getMainAgency(BAV_Bank $bank); * @return array * @internal YOU SHOULD NOT CALL THIS METHOD! Use BAV_Bank->getMainAgency() */ - abstract public function getAgencies(BAV_Bank $bank); + abstract public function getAgenciesForBank(BAV_Bank $bank); } diff --git a/classes/dataBackend/BAV_DataBackend_File.php b/classes/dataBackend/BAV_DataBackend_File.php index 2b4da6db..1c5bea0b 100644 --- a/classes/dataBackend/BAV_DataBackend_File.php +++ b/classes/dataBackend/BAV_DataBackend_File.php @@ -422,12 +422,12 @@ public function getMainAgency(BAV_Bank $bank) } /** - * @see BAV_DataBackend::getAgencies() + * @see BAV_DataBackend::getAgenciesForBank() * @throws BAV_DataBackendException_IO * @throws BAV_DataBackendException * @return array */ - public function getAgencies(BAV_Bank $bank) + public function getAgenciesForBank(BAV_Bank $bank) { try { $context = $this->defineContextInterval($bank->getBankID()); diff --git a/classes/dataBackend/BAV_DataBackend_PDO.php b/classes/dataBackend/BAV_DataBackend_PDO.php index 219df967..74f979d0 100644 --- a/classes/dataBackend/BAV_DataBackend_PDO.php +++ b/classes/dataBackend/BAV_DataBackend_PDO.php @@ -483,9 +483,9 @@ public function getMainAgency(BAV_Bank $bank) /** * @throws BAV_DataBackendException * @return array - * @see BAV_DataBackend::getAgencies() + * @see BAV_DataBackend::getAgenciesForBank() */ - public function getAgencies(BAV_Bank $bank) + public function getAgenciesForBank(BAV_Bank $bank) { try { $this->prepareStatements(); From 979d20bf44e9d372ff1d2b129bbdea42e77994a6 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 24 May 2014 02:34:38 +0200 Subject: [PATCH 077/303] added migration path for renaming the API methods in BAV_DataBackend --- classes/dataBackend/BAV_DataBackend.php | 36 +++++++++++++++++++++++-- docs/changelog.txt | 3 +++ 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/classes/dataBackend/BAV_DataBackend.php b/classes/dataBackend/BAV_DataBackend.php index b498125c..4caaf4dd 100644 --- a/classes/dataBackend/BAV_DataBackend.php +++ b/classes/dataBackend/BAV_DataBackend.php @@ -138,7 +138,23 @@ abstract protected function getNewBank($bankID); * @see BAV_Bank::getMainAgency() * @internal YOU SHOULD NOT CALL THIS METHOD! Use BAV_Bank->getMainAgency() */ - abstract public function getMainAgency(BAV_Bank $bank); + public function getMainAgency(BAV_Bank $bank) + { + trigger_error( + "_getMainAgency() was renamed into getMainAgency().", + E_USER_DEPRECATED + ); + return $this->_getMainAgency($bank); + } + + /** + * @deprecated 0.28 + * @see getMainAgency() + */ + public function _getMainAgency(BAV_Bank $bank) + { + throw new BadMethodCallException("You have to override getMainAgency()"); + } /** * If you implement this method you should return an array with the appropriate BAV_Agency @@ -150,5 +166,21 @@ abstract public function getMainAgency(BAV_Bank $bank); * @return array * @internal YOU SHOULD NOT CALL THIS METHOD! Use BAV_Bank->getMainAgency() */ - abstract public function getAgenciesForBank(BAV_Bank $bank); + public function getAgenciesForBank(BAV_Bank $bank) + { + trigger_error( + "_getAgencies() was renamed into getAgenciesForBank().", + E_USER_DEPRECATED + ); + return $this->_getAgencies($bank); + } + + /** + * @deprecated 0.28 + * @see getAgenciesForBank() + */ + public function _getAgencies(BAV_Bank $bank) + { + throw new BadMethodCallException("You have to override getAgenciesForBank()"); + } } diff --git a/docs/changelog.txt b/docs/changelog.txt index 300c696e..148f8b85 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -4,6 +4,9 @@ Version 0.28 - not yet released - added scripts for installing and updating the bundesbank file. + - The methods _getMainAgency() and _getAgencies() in BAV_DataBackend + became deprecated. + Version 0.27 - May 22, 2014 --------------------------- From f7c242da8aa33eff3aa7f52753e279a7fca3751b Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 24 May 2014 02:40:14 +0200 Subject: [PATCH 078/303] added note about migration path --- classes/dataBackend/BAV_DataBackend.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/classes/dataBackend/BAV_DataBackend.php b/classes/dataBackend/BAV_DataBackend.php index 4caaf4dd..6c2c9a16 100644 --- a/classes/dataBackend/BAV_DataBackend.php +++ b/classes/dataBackend/BAV_DataBackend.php @@ -133,6 +133,7 @@ abstract protected function getNewBank($bankID); * method is called by BAV_Bank->getMainAgency(), if the BAV_Bank object doesn't know its * main agency. * + * @todo remove _getMainAgency() and make getMainAgency() abstract. * @throws BAV_DataBackendException * @return BAV_Agency * @see BAV_Bank::getMainAgency() @@ -161,6 +162,7 @@ public function _getMainAgency(BAV_Bank $bank) * objects. This method is called by BAV_Bank->getAgencies(), if the BAV_Bank object doesn't * know its agencies. A bank may have no agencies and will return an empty array. * + * @todo remove _getAgencies() and make getAgenciesForBank() abstract. * @throws BAV_DataBackendException * @see BAV_Bank::getAgencies() * @return array From 0c9b92f4aea113202d16ad449c0186dfd863e9bc Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 24 May 2014 11:24:12 +0200 Subject: [PATCH 079/303] fixed DataConstraintTest --- tests/DataConstraintTest.php | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/tests/DataConstraintTest.php b/tests/DataConstraintTest.php index 09f3f431..10b27d6b 100755 --- a/tests/DataConstraintTest.php +++ b/tests/DataConstraintTest.php @@ -1,12 +1,10 @@ setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); From 83b712887ba3ebf22b299bfdb6d518995bd0e9ba Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 24 May 2014 11:36:34 +0200 Subject: [PATCH 080/303] removed duplicates --- data/verify.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/verify.ini b/data/verify.ini index 001eb4ee..1436a130 100644 --- a/data/verify.ini +++ b/data/verify.ini @@ -123,7 +123,7 @@ C3 = 9294182, 4431276, 19919, 9000420530, 9000010006, 9000577650 C4 = 0000000019, 0000292932, 0000094455, 9000420530, 9000010006, 9000577650 C5 = 0000301168, 0000302554, 0300020050, 0300566000, 1000061378, 1000061412, 4450164064, 4863476104, 5000000028, 5000000391, 6450008149, 6800001016, 9000100012, 9000210017, 3060188103, 3070402023 - C6 = 0000065516, 0203178249, 1031405209, 1082012201, 2003455189, 2004001016, 3110150986, 3068459207, 5035105948, 5286102149, 5035105948, 5286102149, 4012660028, 4100235626, 6028426119, 6861001755, 7008199027, 7002000023, 7000202027, 8526080015, 8711072264, 9000430223, 9000781153 + C6 = 0000065516, 0203178249, 1031405209, 1082012201, 2003455189, 2004001016, 3110150986, 3068459207, 5035105948, 5286102149, 4012660028, 4100235626, 6028426119, 6861001755, 7008199027, 7002000023, 7000202027, 8526080015, 8711072264, 9000430223, 9000781153 C7 = 3500022, 38150900, 600103660, 39101181, 94012341, 5073321010 C8 = 3456789019, 5678901231, 3456789012, 0022007130, 0123456789, 0552071285 C9 = 3456789019, 5678901231, 0123456789 From e1b4e6a1e539dd02229dae4fadcaf09d1a5e56a8 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 24 May 2014 11:38:53 +0200 Subject: [PATCH 081/303] updated phpunit api --- tests/VerifyImportTest.php | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tests/VerifyImportTest.php b/tests/VerifyImportTest.php index e35832c4..6d247579 100755 --- a/tests/VerifyImportTest.php +++ b/tests/VerifyImportTest.php @@ -2,7 +2,6 @@ require_once __DIR__ . "/../autoloader/autoloader.php"; - /** * A test for BAV_VerifyImport. * @@ -51,8 +50,8 @@ protected function setUp() $this->databack = new BAV_DataBackend_File(); $this->verifyArray = parse_ini_file(__DIR__.'/../data/verify.ini', true); - $this->assertType( - PHPUnit_Framework_Constraint_IsType::TYPE_ARRAY, + $this->assertInternalType( + "array", $this->verifyArray, "Could not parse verify.ini" ); @@ -105,8 +104,8 @@ private function assertImporter(BAV_VerifyImport $importer, Array $notSupported $checkArray = parse_ini_file($file, true); unlink($file); - $this->assertType( - PHPUnit_Framework_Constraint_IsType::TYPE_ARRAY, + $this->assertInternalType( + "array", $checkArray, "Could not parse temporary file $file." ); From 2bd0c743515405f91538f6f7ec43f8f9170a2e87 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 24 May 2014 11:47:37 +0200 Subject: [PATCH 082/303] increasing phpunit dependency to 3.6 because of assertInternalType() --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index e8022822..f13e0966 100644 --- a/composer.json +++ b/composer.json @@ -30,7 +30,7 @@ "lib-iconv": "Enables UTF-8 support" }, "require-dev": { - "phpunit/phpunit": ">=3" + "phpunit/phpunit": ">=3.6" }, "archive": { "exclude": ["/tests/"] From a4ca0b1b8de55408efc9a568db57b18704be08ff Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Mon, 26 May 2014 10:59:42 +0200 Subject: [PATCH 083/303] added configuration container for encoding and data backend. --- README | 36 ++++++++--- autoloader/autoloader.php | 2 +- autoloader/index/0.php | 5 ++ bin/bav-install.php | 24 +------ bin/bav-update.php | 24 +------ classes/BAV.php | 45 +++++-------- classes/configuration/Configuration.php | 59 +++++++++++++++++ .../configuration/ConfigurationException.php | 14 +++++ .../configuration/ConfigurationRegistry.php | 63 +++++++++++++++++++ .../configuration/DefaultConfiguration.php | 53 ++++++++++++++++ classes/exception/BAVException.php | 14 +++++ docs/changelog.txt | 5 +- docs/example.php | 21 +++---- 13 files changed, 270 insertions(+), 95 deletions(-) create mode 100644 classes/configuration/Configuration.php create mode 100644 classes/configuration/ConfigurationException.php create mode 100644 classes/configuration/ConfigurationRegistry.php create mode 100644 classes/configuration/DefaultConfiguration.php create mode 100644 classes/exception/BAVException.php diff --git a/README b/README index 26733fea..379f5f34 100644 --- a/README +++ b/README @@ -34,41 +34,57 @@ Requirements Configuration ------------- - There is nothing to configure at all. The configuration is done implicitly - by the parameters you use to create a BAV_DataBackend object. You may - specify another encoding than UTF-8 with BAV::setEncoding(). - - But before you can use any class of BAV you have to include + Before you can use any class of BAV you have to include autoloader/autoloader.php. BAV uses the autoloader generated by . + BAV comes with a ready to play default configuration. This default configuration + sets the encoding to UTF-8 (if support is available) and the backend to + BAV_DataBackend_File. + + You can define your own configuration by calling ConfigurationRegistry::setConfiguration() + or preferably creating the file bav/configuration.php which returns a Configuration object: + + setDataBackend(new BAV_DataBackend_PDO($pdo)); + + return $configuration; + Installation and Update ----------------------- - Visit and download the latest version. + Visit and download the latest version or use composer. You have to decide which datastructure you'll use. BAV comes with two structures: - BAV_DataBackend_File and BAV_DataBackend_PDO. BAV_DataBackend_File uses the - text file which is provided by the Bundesbank. BAV_DataBackend_PDO uses - PHP's PDO-mechanism to connect with a DBS. + BAV_DataBackend_File and BAV_DataBackend_PDO. BAV_DataBackend_File (default) + uses the text file which is provided by the Bundesbank. BAV_DataBackend_PDO uses + PHP's PDO-API to connect with a DBS. If you use BAV the first time you have to create a BAV_DataBackend object (PDO or File) and call the method install(). In case of PDO it will create the tables. install() does also call update() to snychronize the first time with the Bundesbank. + You can do this with the script: bin/bav-install.php To keep your database synchronized you have to call update(). It will download the file from the Bundesbank and update your datastructure. The Bundesbank releases 4 times a year a new file: March, June, September, December. + You can do this with the script: bin/bav-update.php Usage ----- - Define one BAV_DataBackend object (which has an installed data structure). + Get a BAV_DataBackend object (which has an installed data structure) from + the configuration: ConfigurationRegistry::getConfiguration()->getDatabackend(); + Use the BAV_DataBackend->getBank($bankID) to get a BAV_Bank object. This might raise a BAV_DataBackendException_BankNotFound if the bank was not found. If you only want to check if a bank exists you may use diff --git a/autoloader/autoloader.php b/autoloader/autoloader.php index 0cc37703..fcb35987 100644 --- a/autoloader/autoloader.php +++ b/autoloader/autoloader.php @@ -24,4 +24,4 @@ $_autoloader = new InstantAutoloader(__DIR__ . '/index/1.php'); $_autoloader->setBasePath(__DIR__); $_autoloader->register(); -unset($_autoloader); +unset($_autoloader); \ No newline at end of file diff --git a/autoloader/index/0.php b/autoloader/index/0.php index 305816b5..8ef5884b 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -21,7 +21,9 @@ 'bav_version' => '../classes/BAV_Version.php', 'bav_testapi' => '../classes/verify/testAPI/BAV_TestAPI.php', 'bav_encoding' => '../classes/encoding/BAV_Encoding.php', + 'malkusch\bav\bavexception' => '../classes/exception/BAVException.php', 'bav_classfile' => '../classes/class/BAV_ClassFile.php', + 'malkusch\bav\configuration' => '../classes/configuration/Configuration.php', 'bav_validator' => '../classes/validator/BAV_Validator.php', 'bav_autoloader' => '../classes/autoloader/BAV_Autoloader.php', 'bav_fileparser' => '../classes/dataBackend/fileParser/BAV_FileParser.php', @@ -191,12 +193,15 @@ 'bav_databackend_pdo' => '../classes/dataBackend/BAV_DataBackend_PDO.php', 'bav_validator_chain' => '../classes/validator/BAV_Validator_Chain.php', 'bav_verifyexception' => '../classes/verify/exception/BAV_VerifyException.php', + 'malkusch\bav\defaultconfiguration' => '../classes/configuration/DefaultConfiguration.php', 'bav_databackend_file' => '../classes/dataBackend/BAV_DataBackend_File.php', 'bav_encoding_iso8859' => '../classes/encoding/BAV_Encoding_ISO8859.php', 'bav_testapiexception' => '../classes/verify/testAPI/exception/BAV_TestAPIException.php', + 'malkusch\bav\configurationregistry' => '../classes/configuration/ConfigurationRegistry.php', 'bav_fileparsercontext' => '../classes/dataBackend/fileParser/BAV_FileParserContext.php', 'bav_encodingexception' => '../classes/encoding/exception/BAV_EncodingException.php', 'bav_classfileexception' => '../classes/class/exception/BAV_ClassFileException.php', + 'malkusch\bav\configurationexception' => '../classes/configuration/ConfigurationException.php', 'bav_validatorexception' => '../classes/validator/exception/BAV_ValidatorException.php', 'bav_verifyexception_io' => '../classes/verify/exception/BAV_VerifyException_IO.php', 'bav_testapi_kontocheck' => '../classes/verify/testAPI/BAV_TestAPI_Kontocheck.php', diff --git a/bin/bav-install.php b/bin/bav-install.php index 74d484a8..eefe01a7 100755 --- a/bin/bav-install.php +++ b/bin/bav-install.php @@ -3,35 +3,17 @@ /** * BAV installer for the Bundesbank bank data file. * - * Copyright (C) 2014 Markus Malkusch - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * @package scripts - * @filesource * @author Markus Malkusch - * @copyright Copyright (C) 2014 Markus Malkusch + * @license GPL * @see BAV_DataBackend */ +namespace malkusch\bav; require_once __DIR__ . "/../autoloader/autoloader.php"; try { - // TODO: There should exist an injected instance. - $databack = new BAV_DataBackend_File(); + $databack = ConfigurationRegistry::getConfiguration()->getDatabackend(); $databack->install(); echo "Bundesbank file downloaded.\n"; diff --git a/bin/bav-update.php b/bin/bav-update.php index 30d723e3..5590a5b2 100755 --- a/bin/bav-update.php +++ b/bin/bav-update.php @@ -3,35 +3,17 @@ /** * BAV updater for the Bundesbank bank data file. * - * Copyright (C) 2014 Markus Malkusch - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * @package scripts - * @filesource * @author Markus Malkusch - * @copyright Copyright (C) 2014 Markus Malkusch + * @license GPL * @see BAV_DataBackend */ +namespace malkusch\bav; require_once __DIR__ . "/../autoloader/autoloader.php"; try { - // TODO: There should exist an injected instance. - $databack = new BAV_DataBackend_File(); + $databack = ConfigurationRegistry::getConfiguration()->getDatabackend(); $databack->update(); echo "Bundesbank file downloaded.\n"; diff --git a/classes/BAV.php b/classes/BAV.php index 4dd8f4b1..0b856b51 100644 --- a/classes/BAV.php +++ b/classes/BAV.php @@ -1,49 +1,30 @@ - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * - * @package classes * @author Markus Malkusch - * @copyright Copyright (C) 2006 Markus Malkusch + * @deprecated 0.28 + * @license GPL */ abstract class BAV { /** * @var BAV_Encoding + * @deprecated 0.28 + * @see Configuration::getEncoding() */ protected static $encoding; public static function classConstructor() { - try { - self::setEncoding('UTF-8'); - - } catch (BAV_EncodingException_Unsupported $e) { - self::setEncoding('ISO-8859-15'); - - } + self::$encoding = ConfigurationRegistry::getConfiguration()->getEncoding(); } /** @@ -52,12 +33,18 @@ public static function classConstructor() * @throws BAV_EncodingException_Unsupported * @param mixed $encoding * @see BAV_Encoding + * @deprecated 0.28 + * @see Configuration::setEncoding() */ public static function setEncoding($encoding) { - self::$encoding = ($encoding instanceof BAV_Encoding) - ? $encoding - : BAV_Encoding::getInstance($encoding); + trigger_error("Use Configuration::setEncoding()", E_USER_DEPRECATED); + if (! $encoding instanceof BAV_Encoding) { + $encoding = BAV_Encoding::getInstance($encoding); + + } + ConfigurationRegistry::getConfiguration()->setEncoding($encoding); + self::$encoding = $encoding; } /** diff --git a/classes/configuration/Configuration.php b/classes/configuration/Configuration.php new file mode 100644 index 00000000..a4227b62 --- /dev/null +++ b/classes/configuration/Configuration.php @@ -0,0 +1,59 @@ + + * @license GPL + */ +class Configuration +{ + + /** + * @var BAV_Encoding + */ + protected $encoding; + + /** + * @var BAV_DataBackend + */ + protected $dataBackend; + + /** + * Sets the data backend. + */ + public function setDataBackend(\BAV_DataBackend $backend) + { + $this->dataBackend = $backend; + } + + /** + * Returns the data backend. + * + * @return BAV_DataBackend + */ + public function getDataBackend() + { + return $this->dataBackend; + } + + /** + * Sets the encoding. + */ + public function setEncoding(\BAV_Encoding $encoding) + { + $this->encoding = $encoding; + } + + /** + * Returns the encoding. + * + * @return BAV_Encoding + */ + public function getEncoding() + { + return $this->encoding; + } +} diff --git a/classes/configuration/ConfigurationException.php b/classes/configuration/ConfigurationException.php new file mode 100644 index 00000000..d9c5884c --- /dev/null +++ b/classes/configuration/ConfigurationException.php @@ -0,0 +1,14 @@ + + * @license GPL + */ +class ConfigurationException extends BAVException +{ + +} diff --git a/classes/configuration/ConfigurationRegistry.php b/classes/configuration/ConfigurationRegistry.php new file mode 100644 index 00000000..2cb631fd --- /dev/null +++ b/classes/configuration/ConfigurationRegistry.php @@ -0,0 +1,63 @@ + + * @license GPL + * @see Configuration + */ +class ConfigurationRegistry +{ + + const CONFIGURATION_PATH = "/../../configuration.php"; + + /** + * @var Configuration + */ + private static $configuration; + + /** + * locate a configuration or register the default configuration. + * + * You may define the file bav/configuration.php. This file should return + * Configuration object. + * + * @see DefaultConfiguration + */ + public static function classConstructor() + { + self::setConfiguration(new DefaultConfiguration()); + + $file = __DIR__ . self::CONFIGURATION_PATH; + if (file_exists($file)) { + $configuration = require_once $file; + if (! $configuration instanceof Configuration) { + throw new ConfigurationException("$file must return a Configuration object."); + + } + self::setConfiguration($configuration); + + } + } + + /** + * Register a configuration. + */ + public static function setConfiguration(Configuration $configuration) + { + self::$configuration = $configuration; + } + + /** + * Returns the configuration + * + * @return Configuration + */ + public static function getConfiguration() + { + return self::$configuration; + } +} diff --git a/classes/configuration/DefaultConfiguration.php b/classes/configuration/DefaultConfiguration.php new file mode 100644 index 00000000..297ff5df --- /dev/null +++ b/classes/configuration/DefaultConfiguration.php @@ -0,0 +1,53 @@ + + * @license GPL + * @see BAV_DataBackend_File + */ +class DefaultConfiguration extends Configuration +{ + + /** + * Returns the data backend. + * + * @return BAV_DataBackend + */ + public function getDataBackend() + { + if (is_null($this->dataBackend)) { + $this->setDataBackend(new \BAV_DataBackend_File()); + + } + return parent::getDataBackend(); + } + + /** + * Returns the encoding. + * + * @return BAV_Encoding + */ + public function getEncoding() + { + if (is_null($this->encoding)) { + $encoding = null; + try { + $encoding = \BAV_Encoding::getInstance("UTF-8"); + + } catch (\BAV_EncodingException_Unsupported $e) { + trigger_error("UTF-8 is not supported; bav is falling back to ISO-8859-15", E_WARNING); + $encoding = \BAV_Encoding::getInstance("ISO-8859-15"); + + } + $this->setEncoding($encoding); + + } + return parent::getEncoding(); + } +} diff --git a/classes/exception/BAVException.php b/classes/exception/BAVException.php new file mode 100644 index 00000000..c0f8762b --- /dev/null +++ b/classes/exception/BAVException.php @@ -0,0 +1,14 @@ + + * @license GPL + */ +class BAVException extends \Exception +{ + +} diff --git a/docs/changelog.txt b/docs/changelog.txt index 148f8b85..6f02d153 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -5,7 +5,9 @@ Version 0.28 - not yet released - added scripts for installing and updating the bundesbank file. - The methods _getMainAgency() and _getAgencies() in BAV_DataBackend - became deprecated. + became deprecated. + + - added Configuration container for BAV_Encoding and BAV_DataBackend. Version 0.27 - May 22, 2014 @@ -22,6 +24,7 @@ Version 0.27 - May 22, 2014 - added validators E0, E1 + Version 0.26 - June 3, 2012 --------------------------- - Repaired Bundesbank download diff --git a/docs/example.php b/docs/example.php index 4972e44d..0e2df4c9 100755 --- a/docs/example.php +++ b/docs/example.php @@ -28,6 +28,11 @@ * @see BAV_Agency */ +/** + * Namespace comes slowly. In a future release you'll find all classes + * in the namespace malkusch\bav. + */ +use malkusch\bav\ConfigurationRegistry; /** * We need to require the autoloader @@ -36,21 +41,13 @@ /** - * Now we have to decide which data backend we'll use. - * - * BAV_DataBackend_File: - * $databack = new BAV_DataBackend_File(); - * - * or BAV_DataBackend_PDO: - * $databack = new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); - * - * In this example we take BAV_DataBackend_File: + * Inject the configured BAV_DataBackend. Default is BAV_DataBackend_File */ -$databack = new BAV_DataBackend_File(); +$databack = ConfigurationRegistry::getConfiguration()->getDatabackend(); /** - * As this is our first time we use it. We have to install the data structure. + * If you didn't call bin/bav-install.php you can install the backend programmatically. * This should only be called once for installation. For future use you should * skip this step. */ @@ -64,7 +61,7 @@ /** * If you want to update your installed data structure to a new Bundesbank file - * you have to call update(): + * you have to call update() or use the script bin/bav-update.php: * * $databack->update(); * From 75aa4fd7ab9c668bf436f775e2e9e83d5dad0d41 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Mon, 26 May 2014 11:02:31 +0200 Subject: [PATCH 084/303] release 0.28 --- composer.json | 5 ----- docs/changelog.txt | 4 ++-- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/composer.json b/composer.json index f13e0966..4a72aa76 100644 --- a/composer.json +++ b/composer.json @@ -13,10 +13,6 @@ "role": "Developer" } ], - "support": { - "issues": "https://github.com/malkusch/bav/issues", - "source": "https://github.com/malkusch/bav" - }, "autoload": { "files": ["autoloader/autoloader.php"] }, @@ -40,4 +36,3 @@ "bin/bav-install.php" ] } - diff --git a/docs/changelog.txt b/docs/changelog.txt index 6f02d153..eff9a10c 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -1,5 +1,5 @@ -Version 0.28 - not yet released -------------------------------- +Version 0.28 - May 26, 2014 +--------------------------- - added Composer support - added scripts for installing and updating the bundesbank file. From 331c8341c52368d056091d89fd414781692096c8 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Mon, 26 May 2014 11:35:02 +0200 Subject: [PATCH 085/303] readme in markdown --- README | 151 ------------------------------------------------------ README.md | 148 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 148 insertions(+), 151 deletions(-) delete mode 100644 README create mode 100644 README.md diff --git a/README b/README deleted file mode 100644 index 379f5f34..00000000 --- a/README +++ /dev/null @@ -1,151 +0,0 @@ -License and authors -------------------- - - This project is free and under GPL (see gpl.txt). So do what ever you want. - But it would be nice to leave a note about the authors. - - The author of the original project which gave the idea to this project is - Björn Wilmsmann. Responsable for this project is - Markus Malkusch . - - -Requirements ------------- - - You may have: - - * CURL - BAV_DataBackend_File->update() makes usage of the curl_* methods. - BAV_DataBackend_File->update() is called to download the bank data from - the Bundesbank. This is also needed by BAV_DataBackend_PDO->update(). If - you provide data/banklist.txt without using - BAV_DataBackend_File->update() you don't need CURL. - - * mbstring or iconv - BAV works with unicode encoding. Your PHP must have support compiled - in to either the mb_* or the iconv_* functions. If these functions are - missing BAV works only with the ISO-8859-15 encoding. - - * PDO - If you intend to use a DBS you need to use BAV_DataBackend_PDO. - BAV_DataBackend_PDO needs a PDO support compiled in PHP. - - -Configuration -------------- - - Before you can use any class of BAV you have to include - autoloader/autoloader.php. BAV uses the autoloader generated by - . - - BAV comes with a ready to play default configuration. This default configuration - sets the encoding to UTF-8 (if support is available) and the backend to - BAV_DataBackend_File. - - You can define your own configuration by calling ConfigurationRegistry::setConfiguration() - or preferably creating the file bav/configuration.php which returns a Configuration object: - - setDataBackend(new BAV_DataBackend_PDO($pdo)); - - return $configuration; - - -Installation and Update ------------------------ - - Visit and download the latest version or use composer. - - You have to decide which datastructure you'll use. BAV comes with two - structures: - BAV_DataBackend_File and BAV_DataBackend_PDO. BAV_DataBackend_File (default) - uses the text file which is provided by the Bundesbank. BAV_DataBackend_PDO uses - PHP's PDO-API to connect with a DBS. - - If you use BAV the first time you have to create a BAV_DataBackend object - (PDO or File) and call the method install(). In case of PDO it will create - the tables. install() does also call update() to snychronize the first time - with the Bundesbank. - You can do this with the script: bin/bav-install.php - - To keep your database synchronized you have to call update(). It will - download the file from the Bundesbank and update your datastructure. The - Bundesbank releases 4 times a year a new file: March, June, September, - December. - You can do this with the script: bin/bav-update.php - - -Usage ------ - - Get a BAV_DataBackend object (which has an installed data structure) from - the configuration: ConfigurationRegistry::getConfiguration()->getDatabackend(); - - Use the BAV_DataBackend->getBank($bankID) to get a BAV_Bank object. This - might raise a BAV_DataBackendException_BankNotFound if the bank was not - found. If you only want to check if a bank exists you may use - BAV_DataBackend->bankExists($bankID). - - You can use the BAV_Bank object to get information about the bank. Every - bank has a main agency. You get this BAV_Agency object with - BAV_Bank->getMainAgency(). A bank might also have some more agencies. These - optional agencies can be fetched with BAV_Bank->getAgencies(). Note that the - main agency is not included in this array. So the array - BAV_Bank->getAgencies() might even be empty. - - A BAV_Agency object provides these informations: - - BAV_Agency->getPostcode() - BAV_Agency->getCity() - BAV_Agency->getName() - BAV_Agency->getShortTerm() - BAV_Agency->hasPAN() - BAV_Agency->getPAN() - BAV_Agency->hasBIC() - BAV_Agency->getBIC() - - The boolean method BAV_Bank->isValid($accountID) will tell you if the - account is valid (TRUE) or invalid (FALSE). - - If you use BAV_DataBackend_PDO you may use - BAV_DataBackend_PDO->getAgencies($sql) to search for BAV_Agency objects with - an arbitrary SQL statement. Your statement should at least return the id of - the agencies. You perform better if your statement returns all attributes of - the agency table. - - BAV uses UTF-8 as default enconding. So every string - (especialy BAV_Agency->get*()) in BAV is UTF-8 encoded. If you intend to - work with those strings you should use PHP's mb_* oder iconv_* methods. - - -Example -------- - - You find it in docs/example.php - - -Helping BAV ------------ - - test/checkValidators.php can find broken classes. This is only usefull for - debugging purposes if you implement new validators or data backends. There - exists a file with account ids for testing the validators. It's located at - data/verify.ini. You may add some account ids, if you want them to be - checked by checkValidators.php. If you then find some validators which are - implemented incorrectly, you should send a bug report. Don't forget to - mention the validation alogrithm (BAV_Bank->getValidationType()), the - account id and the expected result. - - There exists also the script bin/verifyImport.php. You can use this to - import your bank accounts to a data/verify.ini and check them with - test/checkValidators.php. See the comments in verifyImport.php for more - details on usage. If there are errors you can send your verify.ini to - . Even if there aren't errors you can send this file, so - we have a larger database of testing accounts for future implementations. - The verify.ini contains only bank accounts with the validation type. There - is no information about the bank id, so the verify.ini can't be abused. - diff --git a/README.md b/README.md new file mode 100644 index 00000000..e27d3737 --- /dev/null +++ b/README.md @@ -0,0 +1,148 @@ +# Configuration + +Before you can use any class of BAV you have to include +`autoloader/autoloader.php`. BAV uses the autoloader generated by +[PHP-Autoloader](http://php-autoloader.malkusch.de/en/). + +BAV comes with a ready to play default configuration. This default configuration +sets the encoding to `UTF-8` (if support is available) and the backend to +`BAV_DataBackend_File`. + +You can define your own configuration by calling `ConfigurationRegistry::setConfiguration()` +or preferably creating the file `bav/configuration.php` which returns a `Configuration` object: + +```php +use malkusch\bav\DefaultConfiguration; + +$configuration = new DefaultConfiguration(); + +$configuration->setDataBackend(new BAV_DataBackend_PDO($pdo)); + +return $configuration; +``` + + +# Installation and Update + +Visit and download the latest version or use composer: + +```json +{ + "require": { + "malkusch/bav": "0.28" + } +} +``` + +You have to decide which datastructure you'll use. BAV comes with two +structures: +`BAV_DataBackend_File` and `BAV_DataBackend_PDO`. `BAV_DataBackend_File` (default) +uses the text file which is provided by the Bundesbank. `BAV_DataBackend_PDO` uses +PHP's PDO-API to connect with a DBS. + +If you use BAV the first time you have to create a `BAV_DataBackend` object +(PDO or File) and call the method `install()`. In case of PDO it will create +the tables. `install()` does also call `update()` to snychronize the first time +with the Bundesbank. +You can do this with the script: `bin/bav-install.php` + +To keep your database synchronized you have to call `update()`. It will +download the file from the Bundesbank and update your datastructure. The +Bundesbank releases 4 times a year a new file: March, June, September, +December. +You can do this with the script: `bin/bav-update.php` + +# Usage + +Get a `BAV_DataBackend` object (which has an installed data structure) from +the configuration: + +```php + ConfigurationRegistry::getConfiguration()->getDatabackend(); +``` + +Use the `BAV_DataBackend->getBank($bankID)` to get a `BAV_Bank` object. This +might raise a `BAV_DataBackendException_BankNotFound` if the bank was not +found. If you only want to check if a bank exists you may use +`BAV_DataBackend->bankExists($bankID)`. + +You can use the `BAV_Bank` object to get information about the bank. Every +bank has a main agency. You get this `BAV_Agency` object with +`BAV_Bank->getMainAgency()`. A bank might also have some more agencies. These +optional agencies can be fetched with `BAV_Bank->getAgencies()`. Note that the +main agency is not included in this array. So the array +`BAV_Bank->getAgencies()` might even be empty. + +A `BAV_Agency` object provides these informations: + +* `BAV_Agency->getPostcode()` + +* `BAV_Agency->getCity()` + +* `BAV_Agency->getName()` + +* `BAV_Agency->getShortTerm()` + +* `BAV_Agency->hasPAN()` + +* `BAV_Agency->getPAN()` + +* `BAV_Agency->hasBIC()` + +* `BAV_Agency->getBIC()` + +The boolean method `BAV_Bank->isValid($accountID)` will tell you if the +account is valid (`true`) or invalid (`false`). + +If you use `BAV_DataBackend_PDO` you may use +`BAV_DataBackend_PDO->getAgencies($sql)` to search for `BAV_Agency` objects with +an arbitrary SQL statement. Your statement should at least return the id of +the agencies. You perform better if your statement returns all attributes of +the agency table. + +BAV uses UTF-8 as default enconding. So every string +(especialy `BAV_Agency->get*()`) in BAV is UTF-8 encoded. If you intend to +work with those strings you should use PHP's `mb_*` oder `iconv_*` methods. + + +# Example + +You find it in `docs/example.php`. + +# Optional Dependencies + +You may have: + +* **CURL**: `BAV_DataBackend_File->update()` makes usage of the `curl_*` methods. +`BAV_DataBackend_File->update()` is called to download the bank data from +the Bundesbank. This is also needed by `BAV_DataBackend_PDO->update()`. If +you provide data/banklist.txt without using +`BAV_DataBackend_File->update()` you don't need CURL. + +* **mbstring or iconv**: BAV works with unicode encoding. Your PHP must have support compiled +in to either the `mb_*` or the `iconv_*` functions. If these functions are +missing BAV works only with the ISO-8859-15 encoding. + +* **PDO**: If you intend to use a DBS you need to use `BAV_DataBackend_PDO`. +`BAV_DataBackend_PDO` needs a `PDO` support compiled in PHP. + + + +# Helping BAV + +There exists also the script `bin/verifyImport.php`. You can use this to +import your bank accounts to a data/verify.ini and check them with +`test/ValidatorTest.php`. See the comments in `verifyImport.php` for more +details on usage. If there are errors you can send your verify.ini to +. Even if there aren't errors you can send this file, so +we have a larger database of testing accounts for future implementations. +The verify.ini contains only bank accounts with the validation type. There +is no information about the bank id, so the verify.ini can't be abused. + +# License and authors + +This project is free and under GPL (see gpl.txt). So do what ever you want. +But it would be nice to leave a note about the authors. + +The author of the original project which gave the idea to this project is +Björn Wilmsmann. Responsable for this project is Markus Malkusch . From 54fd900a36e13ca6ed71dade4b030c5ec85835d5 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 27 May 2014 10:00:33 +0200 Subject: [PATCH 086/303] added composer link --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e27d3737..980042cf 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ return $configuration; # Installation and Update -Visit and download the latest version or use composer: +Visit and download the latest version or use [Composer](https://getcomposer.org/): ```json { @@ -42,7 +42,7 @@ PHP's PDO-API to connect with a DBS. If you use BAV the first time you have to create a `BAV_DataBackend` object (PDO or File) and call the method `install()`. In case of PDO it will create -the tables. `install()` does also call `update()` to snychronize the first time +the tables. `install()` does also call `update()` to synchronize the first time with the Bundesbank. You can do this with the script: `bin/bav-install.php` From d12e5ad09e02ce075a15674784bb76354a6f5ffc Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 27 May 2014 10:38:41 +0200 Subject: [PATCH 087/303] introduced BAV_DataBackend::getLastUpdate() --- classes/BAV.php | 4 +- classes/dataBackend/BAV_DataBackend.php | 8 ++ classes/dataBackend/BAV_DataBackend_File.php | 37 ++++---- classes/dataBackend/BAV_DataBackend_PDO.php | 93 +++++++++++++++----- docs/changelog.txt | 5 ++ tests/BackendTest.php | 36 ++++---- 6 files changed, 125 insertions(+), 58 deletions(-) diff --git a/classes/BAV.php b/classes/BAV.php index 0b856b51..5fdc73a5 100644 --- a/classes/BAV.php +++ b/classes/BAV.php @@ -52,7 +52,7 @@ public static function setEncoding($encoding) */ public static function getVersion() { - return new BAV_Version('0.28'); + return new BAV_Version('1.0.0'); } /** @@ -74,7 +74,7 @@ public static function get_bav_version() */ public static function getApiVersion() { - return new BAV_Version('2.5'); + return new BAV_Version('2.6'); } /** diff --git a/classes/dataBackend/BAV_DataBackend.php b/classes/dataBackend/BAV_DataBackend.php index 6c2c9a16..6d9efeca 100644 --- a/classes/dataBackend/BAV_DataBackend.php +++ b/classes/dataBackend/BAV_DataBackend.php @@ -67,6 +67,14 @@ abstract public function uninstall(); */ abstract public function install(); + /** + * Returns the timestamp of the last update. + * + * @return int timestamp + * @throws BAV_DataBackendException + */ + abstract public function getLastUpdate(); + /** * With this method you get the BAV_Bank objects for certain IDs. Note * that a call to this method with an identical id will return the same diff --git a/classes/dataBackend/BAV_DataBackend_File.php b/classes/dataBackend/BAV_DataBackend_File.php index 1c5bea0b..94916133 100644 --- a/classes/dataBackend/BAV_DataBackend_File.php +++ b/classes/dataBackend/BAV_DataBackend_File.php @@ -5,23 +5,8 @@ * This is the easiest way to use BAV. BAV can work as a standalone application without * any DBS. * - * Copyright (C) 2006 Markus Malkusch - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * @FIXME BAV_DataBackend_File is broken as Bundesbank appends new Banks at the end of the file + * @author Markus Malkusch + * @license GPL */ class BAV_DataBackend_File extends BAV_DataBackend { @@ -524,4 +509,22 @@ function_exists('sys_get_temp_dir') ? sys_get_temp_dir() : false, throw new BAV_DataBackendException_IO(); } + + /** + * Returns the timestamp of the last update. + * + * @return int timestamp + * @throws BAV_DataBackendException + */ + public function getLastUpdate() + { + $time = filemtime($this->parser->getFile()); + if ($time === false) { + return new BAV_DataBackendException( + "Could not read modification time from {$this->parser->getFile()}" + ); + + } + return $time; + } } diff --git a/classes/dataBackend/BAV_DataBackend_PDO.php b/classes/dataBackend/BAV_DataBackend_PDO.php index 74f979d0..4e9634e6 100644 --- a/classes/dataBackend/BAV_DataBackend_PDO.php +++ b/classes/dataBackend/BAV_DataBackend_PDO.php @@ -4,28 +4,8 @@ * Use any DBS as backend. In addition to the BAV_DataBackend methods you * may use getAgencies($sql) which returns an array of BAV_Agency objects. * - * - * Copyright (C) 2006 Markus Malkusch - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * - * @package classes - * @subpackage dataBackend * @author Markus Malkusch - * @copyright Copyright (C) 2006 Markus Malkusch + * @license GPL */ class BAV_DataBackend_PDO extends BAV_DataBackend { @@ -60,6 +40,11 @@ class BAV_DataBackend_PDO extends BAV_DataBackend */ private $selectAgencysBank; + /** + * @var PDOStatement + */ + private $selectMeta; + /** * @var PDO */ @@ -70,6 +55,11 @@ class BAV_DataBackend_PDO extends BAV_DataBackend */ private $prefix = ''; + /** + * @var string last modification name + */ + const META_MODIFICATION = "lastModified"; + /** * @param String $prefix the prefix of the table names. Default is 'bav_'. */ @@ -178,6 +168,10 @@ private function prepareStatements() "SELECT bank FROM {$this->prefix}agency WHERE id = :agency" ); + $this->selectMeta = $this->pdo->prepare( + "SELECT value FROM {$this->prefix}meta + WHERE name = :name" + ); } /** @@ -241,6 +235,17 @@ public function update() } } + + // Update modification timestamp + $modificationStmt = $this->pdo->prepare( + "UPDATE {$this->prefix}meta SET value=:value WHERE name=:name" + ); + $modificationStmt->execute(array( + ":name" => self::META_MODIFICATION, + ":value" => time() + )); + + if ($useTA) { $this->pdo->commit(); $useTA = false; @@ -304,6 +309,21 @@ public function install() FOREIGN KEY (bank) REFERENCES {$this->prefix}bank(id) )$createOptions" ); + $this->pdo->exec( + "CREATE TABLE {$this->prefix}meta( + name char(32) NOT NULL primary key, + value varchar(128) + )$createOptions" + ); + $insertMetaStmt = $this->pdo->prepare( + "INSERT INTO {$this->prefix}meta + SET name = :name, + value = :value" + ); + $insertMetaStmt->execute(array( + ":name" => self::META_MODIFICATION, + ":value" => null + )); $this->update(); } catch (PDOException $e) { @@ -319,8 +339,9 @@ public function install() public function uninstall() { try { - $this->pdo->exec("DROP TABLE {$this->prefix}bank"); $this->pdo->exec("DROP TABLE {$this->prefix}agency"); + $this->pdo->exec("DROP TABLE {$this->prefix}bank"); + $this->pdo->exec("DROP TABLE {$this->prefix}meta"); } catch (PDOException $e) { throw new BAV_DataBackendException_IO(); @@ -510,4 +531,32 @@ public function getAgenciesForBank(BAV_Bank $bank) } } + + /** + * Returns the timestamp of the last update. + * + * @return int timestamp + * @throws BAV_DataBackendException + */ + public function getLastUpdate() + { + try { + $this->prepareStatements(); + $this->selectMeta->execute(array( + ":name" => self::META_MODIFICATION, + )); + $result = $this->selectMeta->fetch(); + if ($result === false) { + throw new BAV_DataBackendException(); + + } + $this->selectMeta->closeCursor(); + return $result["value"]; + + } catch (PDOException $e) { + $this->selectMeta->closeCursor(); + throw new BAV_DataBackendException_IO($e->getMessage(), $e->getCode(), $e); + + } + } } diff --git a/docs/changelog.txt b/docs/changelog.txt index eff9a10c..aa7920fb 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -1,3 +1,8 @@ +Version 1.0.0 - not yet released +-------------------------------- + - added BAV_DataBackend::getLastUpdate() + + Version 0.28 - May 26, 2014 --------------------------- - added Composer support diff --git a/tests/BackendTest.php b/tests/BackendTest.php index c6a07542..e1cf2421 100755 --- a/tests/BackendTest.php +++ b/tests/BackendTest.php @@ -6,23 +6,7 @@ * Tests the Backends. * This test needs some memory (about 400M)! * - * Copyright (C) 2009 Markus Malkusch - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * @package test + * @license GPL * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ @@ -118,6 +102,24 @@ public function testInstallation(BAV_DataBackend $backend) $backend->uninstall(); } + /** + * @dataProvider provideInstallationBackends + */ + public function testLastUpdate(BAV_DataBackend $backend) + { + $now = time(); + $backend->install(); + $update = $backend->getLastUpdate(); + $this->assertGreaterThanOrEqual($now, $update); + + $now = time(); + $backend->update(); + $update = $backend->getLastUpdate(); + $this->assertGreaterThanOrEqual($now, $update); + + $backend->uninstall(); + } + /** * @dataProvider provideInstallationBackends */ From f191a3af20da7ebec4b9878d856ce3083413f197 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 27 May 2014 14:15:16 +0200 Subject: [PATCH 088/303] added BAV_DataBackend::isInstalled() --- classes/dataBackend/BAV_DataBackend.php | 8 +++++ classes/dataBackend/BAV_DataBackend_File.php | 10 ++++++ classes/dataBackend/BAV_DataBackend_PDO.php | 36 ++++++++++++++++++++ docs/changelog.txt | 2 ++ tests/BackendTest.php | 13 ++++++- 5 files changed, 68 insertions(+), 1 deletion(-) diff --git a/classes/dataBackend/BAV_DataBackend.php b/classes/dataBackend/BAV_DataBackend.php index 6d9efeca..1a59723c 100644 --- a/classes/dataBackend/BAV_DataBackend.php +++ b/classes/dataBackend/BAV_DataBackend.php @@ -67,6 +67,14 @@ abstract public function uninstall(); */ abstract public function install(); + /** + * Returns true if the backend was installed. + * + * @return bool + * @throws BAV_DataBackendException + */ + abstract public function isInstalled(); + /** * Returns the timestamp of the last update. * diff --git a/classes/dataBackend/BAV_DataBackend_File.php b/classes/dataBackend/BAV_DataBackend_File.php index 94916133..08663394 100644 --- a/classes/dataBackend/BAV_DataBackend_File.php +++ b/classes/dataBackend/BAV_DataBackend_File.php @@ -527,4 +527,14 @@ public function getLastUpdate() } return $time; } + + /** + * Returns true if the backend was installed. + * + * @return bool + */ + public function isInstalled() + { + return file_exists($this->parser->getFile()); + } } diff --git a/classes/dataBackend/BAV_DataBackend_PDO.php b/classes/dataBackend/BAV_DataBackend_PDO.php index 4e9634e6..d1af65d2 100644 --- a/classes/dataBackend/BAV_DataBackend_PDO.php +++ b/classes/dataBackend/BAV_DataBackend_PDO.php @@ -45,6 +45,11 @@ class BAV_DataBackend_PDO extends BAV_DataBackend */ private $selectMeta; + /** + * @var PDOStatement + */ + private $selectInstalled; + /** * @var PDO */ @@ -172,6 +177,11 @@ private function prepareStatements() "SELECT value FROM {$this->prefix}meta WHERE name = :name" ); + $this->selectInstalled = $this->pdo->prepare( + "SELECT CASE WHEN EXISTS( + (SELECT * FROM information_schema.tables WHERE table_name='{$this->prefix}meta') + ) THEN 1 ELSE 0 END" + ); } /** @@ -559,4 +569,30 @@ public function getLastUpdate() } } + + /** + * Returns true if the backend was installed. + * + * @return bool + * @throws BAV_DataBackendException + */ + public function isInstalled() + { + try { + $this->prepareStatements(); + $this->selectInstalled->execute(); + $result = $this->selectInstalled->fetch(); + if ($result === false) { + throw new BAV_DataBackendException(); + + } + $this->selectInstalled->closeCursor(); + return $result[0] == 1; + + } catch (PDOException $e) { + $this->selectInstalled->closeCursor(); + throw new BAV_DataBackendException_IO($e->getMessage(), $e->getCode(), $e); + + } + } } diff --git a/docs/changelog.txt b/docs/changelog.txt index aa7920fb..baf5fa8b 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -1,6 +1,8 @@ Version 1.0.0 - not yet released -------------------------------- - added BAV_DataBackend::getLastUpdate() + + - added BAV_DataBackend::isInstalled() Version 0.28 - May 26, 2014 diff --git a/tests/BackendTest.php b/tests/BackendTest.php index e1cf2421..a818bde3 100755 --- a/tests/BackendTest.php +++ b/tests/BackendTest.php @@ -8,7 +8,6 @@ * * @license GPL * @author Markus Malkusch - * @copyright Copyright (C) 2009 Markus Malkusch */ class BackendTest extends PHPUnit_Framework_TestCase { @@ -102,6 +101,18 @@ public function testInstallation(BAV_DataBackend $backend) $backend->uninstall(); } + /** + * @dataProvider provideInstallationBackends + */ + public function testIsInstalled(BAV_DataBackend $backend) + { + $backend->install(); + $this->assertTrue($backend->isInstalled()); + + $backend->uninstall(); + $this->assertFalse($backend->isInstalled()); + } + /** * @dataProvider provideInstallationBackends */ From 32caaf960b078a6348fec8d75c0328ad4ced0916 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Thu, 29 May 2014 17:41:16 +0200 Subject: [PATCH 089/303] added DataBackendContainer to support automatic installation --- autoloader/index/0.php | 23 ++++--- bin/bav-install.php | 2 +- bin/bav-update.php | 2 +- classes/BAV.php | 32 --------- classes/configuration/Configuration.php | 49 ++++++++++--- .../configuration/DefaultConfiguration.php | 45 ++++-------- classes/dataBackend/BAV_DataBackend.php | 25 +------ classes/dataBackend/DataBackendContainer.php | 68 +++++++++++++++++++ .../{ => file}/BAV_DataBackend_File.php | 3 +- .../file/FileDataBackendContainer.php | 40 +++++++++++ .../{ => file}/fileParser/BAV_FileParser.php | 40 +++++++---- .../fileParser/BAV_FileParserContext.php | 0 .../BAV_FileParserContextException.php | 0 ...V_FileParserContextException_Undefined.php | 0 .../exception/BAV_FileParserException.php | 0 .../BAV_FileParserException_FileNotExists.php | 0 .../exception/BAV_FileParserException_IO.php | 0 .../BAV_FileParserException_ParseError.php | 0 .../{ => pdo}/BAV_DataBackend_PDO.php | 4 +- .../pdo/PDODataBackendContainer.php | 46 +++++++++++++ docs/changelog.txt | 3 + tests/BackendContainerTest.php | 46 +++++++++++++ tests/BackendTest.php | 38 +++++++++-- 23 files changed, 337 insertions(+), 129 deletions(-) create mode 100644 classes/dataBackend/DataBackendContainer.php rename classes/dataBackend/{ => file}/BAV_DataBackend_File.php (99%) create mode 100644 classes/dataBackend/file/FileDataBackendContainer.php rename classes/dataBackend/{ => file}/fileParser/BAV_FileParser.php (85%) rename classes/dataBackend/{ => file}/fileParser/BAV_FileParserContext.php (100%) rename classes/dataBackend/{ => file}/fileParser/exception/BAV_FileParserContextException.php (100%) rename classes/dataBackend/{ => file}/fileParser/exception/BAV_FileParserContextException_Undefined.php (100%) rename classes/dataBackend/{ => file}/fileParser/exception/BAV_FileParserException.php (100%) rename classes/dataBackend/{ => file}/fileParser/exception/BAV_FileParserException_FileNotExists.php (100%) rename classes/dataBackend/{ => file}/fileParser/exception/BAV_FileParserException_IO.php (100%) rename classes/dataBackend/{ => file}/fileParser/exception/BAV_FileParserException_ParseError.php (100%) rename classes/dataBackend/{ => pdo}/BAV_DataBackend_PDO.php (99%) create mode 100644 classes/dataBackend/pdo/PDODataBackendContainer.php create mode 100644 tests/BackendContainerTest.php diff --git a/autoloader/index/0.php b/autoloader/index/0.php index 8ef5884b..4fb9b547 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -26,7 +26,7 @@ 'malkusch\bav\configuration' => '../classes/configuration/Configuration.php', 'bav_validator' => '../classes/validator/BAV_Validator.php', 'bav_autoloader' => '../classes/autoloader/BAV_Autoloader.php', - 'bav_fileparser' => '../classes/dataBackend/fileParser/BAV_FileParser.php', + 'bav_fileparser' => '../classes/dataBackend/file/fileParser/BAV_FileParser.php', 'bav_databackend' => '../classes/dataBackend/BAV_DataBackend.php', 'bav_encoding_mb' => '../classes/encoding/BAV_Encoding_MB.php', 'bav_testapi_bav' => '../classes/verify/testAPI/BAV_TestAPI_BAV.php', @@ -190,45 +190,48 @@ 'bav_testapiresult' => '../classes/verify/testAPI/BAV_TestAPIResult.php', 'bav_encoding_iconv' => '../classes/encoding/BAV_Encoding_Iconv.php', 'bav_agencyexception' => '../classes/bank/exception/BAV_AgencyException.php', - 'bav_databackend_pdo' => '../classes/dataBackend/BAV_DataBackend_PDO.php', + 'bav_databackend_pdo' => '../classes/dataBackend/pdo/BAV_DataBackend_PDO.php', 'bav_validator_chain' => '../classes/validator/BAV_Validator_Chain.php', 'bav_verifyexception' => '../classes/verify/exception/BAV_VerifyException.php', 'malkusch\bav\defaultconfiguration' => '../classes/configuration/DefaultConfiguration.php', - 'bav_databackend_file' => '../classes/dataBackend/BAV_DataBackend_File.php', + 'malkusch\bav\databackendcontainer' => '../classes/dataBackend/DataBackendContainer.php', + 'bav_databackend_file' => '../classes/dataBackend/file/BAV_DataBackend_File.php', 'bav_encoding_iso8859' => '../classes/encoding/BAV_Encoding_ISO8859.php', 'bav_testapiexception' => '../classes/verify/testAPI/exception/BAV_TestAPIException.php', 'malkusch\bav\configurationregistry' => '../classes/configuration/ConfigurationRegistry.php', - 'bav_fileparsercontext' => '../classes/dataBackend/fileParser/BAV_FileParserContext.php', + 'bav_fileparsercontext' => '../classes/dataBackend/file/fileParser/BAV_FileParserContext.php', 'bav_encodingexception' => '../classes/encoding/exception/BAV_EncodingException.php', 'bav_classfileexception' => '../classes/class/exception/BAV_ClassFileException.php', 'malkusch\bav\configurationexception' => '../classes/configuration/ConfigurationException.php', 'bav_validatorexception' => '../classes/validator/exception/BAV_ValidatorException.php', 'bav_verifyexception_io' => '../classes/verify/exception/BAV_VerifyException_IO.php', 'bav_testapi_kontocheck' => '../classes/verify/testAPI/BAV_TestAPI_Kontocheck.php', - 'bav_fileparserexception' => '../classes/dataBackend/fileParser/exception/BAV_FileParserException.php', + 'bav_fileparserexception' => '../classes/dataBackend/file/fileParser/exception/BAV_FileParserException.php', + 'malkusch\bav\pdodatabackendcontainer' => '../classes/dataBackend/pdo/PDODataBackendContainer.php', 'bav_validator_iteration' => '../classes/validator/BAV_Validator_Iteration.php', 'bav_testapiresult_error' => '../classes/verify/testAPI/BAV_TestAPIResult_Error.php', 'bav_testapi_ktoblzcheck' => '../classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php', 'bav_databackendexception' => '../classes/dataBackend/exception/BAV_DataBackendException.php', + 'malkusch\bav\filedatabackendcontainer' => '../classes/dataBackend/file/FileDataBackendContainer.php', 'bav_classfileexception_io' => '../classes/class/exception/BAV_ClassFileException_IO.php', - 'bav_fileparserexception_io' => '../classes/dataBackend/fileParser/exception/BAV_FileParserException_IO.php', + 'bav_fileparserexception_io' => '../classes/dataBackend/file/fileParser/exception/BAV_FileParserException_IO.php', 'bav_databackendexception_io' => '../classes/dataBackend/exception/BAV_DataBackendException_IO.php', 'bav_validator_bankdependent' => '../classes/validator/BAV_Validator_BankDependent.php', 'bav_validatorexception_eser' => '../classes/validator/exception/BAV_ValidatorException_ESER.php', - 'bav_fileparsercontextexception' => '../classes/dataBackend/fileParser/exception/BAV_FileParserContextException.php', + 'bav_fileparsercontextexception' => '../classes/dataBackend/file/fileParser/exception/BAV_FileParserContextException.php', 'bav_testapiexception_validation' => '../classes/verify/testAPI/exception/BAV_TestAPIException_Validation.php', 'bav_validator_iteration_weighted' => '../classes/validator/BAV_Validator_Iteration_Weighted.php', 'bav_validatorexception_notexists' => '../classes/validator/exception/BAV_ValidatorException_NotExists.php', 'bav_encodingexception_unsupported' => '../classes/encoding/exception/BAV_EncodingException_Unsupported.php', - 'bav_fileparserexception_parseerror' => '../classes/dataBackend/fileParser/exception/BAV_FileParserException_ParseError.php', + 'bav_fileparserexception_parseerror' => '../classes/dataBackend/file/fileParser/exception/BAV_FileParserException_ParseError.php', 'bav_validatorexception_outofbounds' => '../classes/validator/exception/BAV_ValidatorException_OutOfBounds.php', 'bav_classfileexception_missingclass' => '../classes/class/exception/BAV_ClassFileException_MissingClass.php', 'bav_databackendexception_banknotfound' => '../classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php', 'bav_databackendexception_nomainagency' => '../classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php', - 'bav_fileparserexception_filenotexists' => '../classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php', + 'bav_fileparserexception_filenotexists' => '../classes/dataBackend/file/fileParser/exception/BAV_FileParserException_FileNotExists.php', 'bav_agencyexception_undefinedattribute' => '../classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php', 'bav_validator_iteration_transformation' => '../classes/validator/BAV_Validator_Iteration_Transformation.php', - 'bav_fileparsercontextexception_undefined' => '../classes/dataBackend/fileParser/exception/BAV_FileParserContextException_Undefined.php', + 'bav_fileparsercontextexception_undefined' => '../classes/dataBackend/file/fileParser/exception/BAV_FileParserContextException_Undefined.php', 'bav_testapiexception_validation_banknotfound' => '../classes/verify/testAPI/exception/BAV_TestAPIException_Validation_BankNotFound.php', 'bav_databackendexception_io_missingattributes' => '../classes/dataBackend/exception/BAV_DataBackendException_IO_MissingAttributes.php', 'bav_testapiexception_validation_notinitialized' => '../classes/verify/testAPI/exception/BAV_TestAPIException_Validation_NotInitialized.php', diff --git a/bin/bav-install.php b/bin/bav-install.php index eefe01a7..e6408008 100755 --- a/bin/bav-install.php +++ b/bin/bav-install.php @@ -13,7 +13,7 @@ require_once __DIR__ . "/../autoloader/autoloader.php"; try { - $databack = ConfigurationRegistry::getConfiguration()->getDatabackend(); + $databack = ConfigurationRegistry::getConfiguration()->getDatabackendContainer()->getDataBackend(); $databack->install(); echo "Bundesbank file downloaded.\n"; diff --git a/bin/bav-update.php b/bin/bav-update.php index 5590a5b2..330f00b3 100755 --- a/bin/bav-update.php +++ b/bin/bav-update.php @@ -13,7 +13,7 @@ require_once __DIR__ . "/../autoloader/autoloader.php"; try { - $databack = ConfigurationRegistry::getConfiguration()->getDatabackend(); + $databack = ConfigurationRegistry::getConfiguration()->getDatabackendContainer()->getDataBackend(); $databack->update(); echo "Bundesbank file downloaded.\n"; diff --git a/classes/BAV.php b/classes/BAV.php index 5fdc73a5..8a13a555 100644 --- a/classes/BAV.php +++ b/classes/BAV.php @@ -15,38 +15,6 @@ abstract class BAV { - /** - * @var BAV_Encoding - * @deprecated 0.28 - * @see Configuration::getEncoding() - */ - protected static $encoding; - - public static function classConstructor() - { - self::$encoding = ConfigurationRegistry::getConfiguration()->getEncoding(); - } - - /** - * If you want to use another encoding - * - * @throws BAV_EncodingException_Unsupported - * @param mixed $encoding - * @see BAV_Encoding - * @deprecated 0.28 - * @see Configuration::setEncoding() - */ - public static function setEncoding($encoding) - { - trigger_error("Use Configuration::setEncoding()", E_USER_DEPRECATED); - if (! $encoding instanceof BAV_Encoding) { - $encoding = BAV_Encoding::getInstance($encoding); - - } - ConfigurationRegistry::getConfiguration()->setEncoding($encoding); - self::$encoding = $encoding; - } - /** * @return BAV_Version version of BAV */ diff --git a/classes/configuration/Configuration.php b/classes/configuration/Configuration.php index a4227b62..2f27ade6 100644 --- a/classes/configuration/Configuration.php +++ b/classes/configuration/Configuration.php @@ -11,32 +11,61 @@ class Configuration { + /** + * @var bool + */ + private $automaticInstallation = null; + /** * @var BAV_Encoding */ - protected $encoding; + private $encoding; + + /** + * @var DataBackendContainer + */ + private $backendContainer; + + /** + * Turns automatic installation on or off. + * + * If automatic installation is activated. The backend factory will check if it is + * installed and if not so install the backend. + * + * @see BAV_DataBackend::install() + * @param bool $automaticInstallation Set true to turn installation on + */ + public function setAutomaticInstallation($automaticInstallation) + { + $this->automaticInstallation = $automaticInstallation; + } /** - * @var BAV_DataBackend + * Returns true if automatic installation is activated. + * + * @return bool */ - protected $dataBackend; + public function isAutomaticInstallation() + { + return $this->automaticInstallation; + } /** - * Sets the data backend. + * Sets the data backend container. */ - public function setDataBackend(\BAV_DataBackend $backend) + public function setDataBackendContainer(DataBackendContainer $backendContainer) { - $this->dataBackend = $backend; + $this->backendContainer = $backendContainer; } /** - * Returns the data backend. + * Returns the data backend factory. * - * @return BAV_DataBackend + * @return DataBackendContainer */ - public function getDataBackend() + public function getDataBackendContainer() { - return $this->dataBackend; + return $this->backendContainer; } /** diff --git a/classes/configuration/DefaultConfiguration.php b/classes/configuration/DefaultConfiguration.php index 297ff5df..b96c19a5 100644 --- a/classes/configuration/DefaultConfiguration.php +++ b/classes/configuration/DefaultConfiguration.php @@ -3,51 +3,34 @@ namespace malkusch\bav; /** - * Default configuration uses BAV_DataBackend_File and any available UTF-8 encoder. + * Default configuration uses FileDataBackendContainer and any available UTF-8 encoder. + * + * Automatic installation is enabled. * * If no UTF-8 encoding is supported ISO-8859-15 will be used. * * @author Markus Malkusch * @license GPL - * @see BAV_DataBackend_File + * @see FileDataBackendFactory */ class DefaultConfiguration extends Configuration { - /** - * Returns the data backend. - * - * @return BAV_DataBackend - */ - public function getDataBackend() + public function __construct() { - if (is_null($this->dataBackend)) { - $this->setDataBackend(new \BAV_DataBackend_File()); + $this->setAutomaticInstallation(true); - } - return parent::getDataBackend(); - } - - /** - * Returns the encoding. - * - * @return BAV_Encoding - */ - public function getEncoding() - { - if (is_null($this->encoding)) { - $encoding = null; - try { - $encoding = \BAV_Encoding::getInstance("UTF-8"); + $this->setDataBackendContainer(new FileDataBackendContainer()); - } catch (\BAV_EncodingException_Unsupported $e) { - trigger_error("UTF-8 is not supported; bav is falling back to ISO-8859-15", E_WARNING); - $encoding = \BAV_Encoding::getInstance("ISO-8859-15"); + $encoding = null; + try { + $encoding = \BAV_Encoding::getInstance("UTF-8"); - } - $this->setEncoding($encoding); + } catch (\BAV_EncodingException_Unsupported $e) { + trigger_error("UTF-8 is not supported; bav is falling back to ISO-8859-15", E_WARNING); + $encoding = \BAV_Encoding::getInstance("ISO-8859-15"); } - return parent::getEncoding(); + $this->setEncoding($encoding); } } diff --git a/classes/dataBackend/BAV_DataBackend.php b/classes/dataBackend/BAV_DataBackend.php index 1a59723c..9086491c 100644 --- a/classes/dataBackend/BAV_DataBackend.php +++ b/classes/dataBackend/BAV_DataBackend.php @@ -13,28 +13,9 @@ * copies of identical BAV_Bank objects. That means if you call two times the * getBank() methode with the same id, you will receive each time the same object. * - * - * Copyright (C) 2006 Markus Malkusch - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * - * @package classes - * @subpackage dataBackend * @author Markus Malkusch - * @copyright Copyright (C) 2006 Markus Malkusch + * @license GPL + * @see DataBackendFactory */ abstract class BAV_DataBackend extends BAV { @@ -45,7 +26,7 @@ abstract class BAV_DataBackend extends BAV protected $instances = array(); /** - * You have to call this method to synchronize you're datastructure to the + * You have to call this method to synchronize your datastructure to the * data of the Bundesbank. * * @throws BAV_DataBackendException diff --git a/classes/dataBackend/DataBackendContainer.php b/classes/dataBackend/DataBackendContainer.php new file mode 100644 index 00000000..a8b0f2f4 --- /dev/null +++ b/classes/dataBackend/DataBackendContainer.php @@ -0,0 +1,68 @@ + + * @license GPL + * @see BAV_DataBackend + */ +abstract class DataBackendContainer +{ + + /** + * @var BAV_DataBackend + */ + private $backend; + + /** + * Returns the unconfigured backend which is only created by calling the + * constructor. + * + * @return BAV_DataBackend + */ + abstract protected function makeDataBackend(); + + /** + * Builds a configured data backend. + * + * If configured this method would automatically install the backend. I.e. a first + * call will take some amount of time. + * + * @return BAV_DataBackend + */ + private function buildDataBackend() + { + $configuration = ConfigurationRegistry::getConfiguration(); + + $backend = $this->makeDataBackend(); + + if ($configuration->isAutomaticInstallation() && ! $backend->isInstalled()) { + $backend->install(); + + } + + return $backend; + } + + /** + * Returns a configured data backend. + * + * If configured this method would automatically install the backend. I.e. a first + * call will take some amount of time. + * + * @see Configuration::setAutomaticInstallation() + * @see BAV_DataBackend::install() + * @return BAV_DataBackend + */ + public function getDataBackend() + { + if (is_null($this->backend)) { + $this->backend = $this->buildDataBackend(); + + } + return $this->backend; + } +} diff --git a/classes/dataBackend/BAV_DataBackend_File.php b/classes/dataBackend/file/BAV_DataBackend_File.php similarity index 99% rename from classes/dataBackend/BAV_DataBackend_File.php rename to classes/dataBackend/file/BAV_DataBackend_File.php index 08663394..bc464c62 100644 --- a/classes/dataBackend/BAV_DataBackend_File.php +++ b/classes/dataBackend/file/BAV_DataBackend_File.php @@ -535,6 +535,7 @@ public function getLastUpdate() */ public function isInstalled() { - return file_exists($this->parser->getFile()); + return file_exists($this->parser->getFile()) + && filesize($this->parser->getFile()) > 0; } } diff --git a/classes/dataBackend/file/FileDataBackendContainer.php b/classes/dataBackend/file/FileDataBackendContainer.php new file mode 100644 index 00000000..0fe9597b --- /dev/null +++ b/classes/dataBackend/file/FileDataBackendContainer.php @@ -0,0 +1,40 @@ + + * @license GPL + * @see BAV_DataBackend + */ +class FileDataBackendContainer extends DataBackendContainer +{ + + /** + * @var string + */ + private $file; + + /** + * Sets the path for the backend. + * + * @param string $file Path to the bundesbank file + */ + public function __construct($file = null) + { + $this->file = $file; + } + + /** + * Returns the unconfigured backend which is only created by calling the + * constructor. + * + * @return BAV_DataBackend_File + */ + protected function makeDataBackend() + { + return new \BAV_DataBackend_File($this->file); + } +} diff --git a/classes/dataBackend/fileParser/BAV_FileParser.php b/classes/dataBackend/file/fileParser/BAV_FileParser.php similarity index 85% rename from classes/dataBackend/fileParser/BAV_FileParser.php rename to classes/dataBackend/file/fileParser/BAV_FileParser.php index c93dedb2..1234e463 100644 --- a/classes/dataBackend/fileParser/BAV_FileParser.php +++ b/classes/dataBackend/file/fileParser/BAV_FileParser.php @@ -1,5 +1,7 @@ file = is_null($file) ? $defaultFile: $file; + + $this->encoding = ConfigurationRegistry::getConfiguration()->getEncoding(); } /** @@ -173,7 +183,7 @@ public function seekLine($line, $offset = 0) public function readLine($line) { $this->seekLine($line); - return self::$encoding->convert(fread($this->getFileHandle(), $this->lineLength), self::FILE_ENCODING); + return $this->encoding->convert(fread($this->getFileHandle(), $this->lineLength), self::FILE_ENCODING); } /** @@ -185,7 +195,7 @@ public function readLine($line) public function getBankID($line) { $this->seekLine($line, self::BANKID_OFFSET); - return self::$encoding->convert(fread($this->getFileHandle(), self::BANKID_LENGTH), self::FILE_ENCODING); + return $this->encoding->convert(fread($this->getFileHandle(), self::BANKID_LENGTH), self::FILE_ENCODING); } /** @@ -227,12 +237,12 @@ public function __destruct() */ public function getBank(BAV_DataBackend $dataBackend, $line) { - if (self::$encoding->strlen($line) < self::TYPE_OFFSET + self::TYPE_LENGTH) { + if ($this->encoding->strlen($line) < self::TYPE_OFFSET + self::TYPE_LENGTH) { throw new BAV_FileParserException_ParseError("Invalid line length in Line $line."); } - $type = self::$encoding->substr($line, self::TYPE_OFFSET, self::TYPE_LENGTH); - $bankID = self::$encoding->substr($line, self::BANKID_OFFSET, self::BANKID_LENGTH); + $type = $this->encoding->substr($line, self::TYPE_OFFSET, self::TYPE_LENGTH); + $bankID = $this->encoding->substr($line, self::BANKID_OFFSET, self::BANKID_LENGTH); return new BAV_Bank($dataBackend, $bankID, $type); } @@ -243,17 +253,17 @@ public function getBank(BAV_DataBackend $dataBackend, $line) */ public function getAgency(BAV_Bank $bank, $line) { - if (self::$encoding->strlen($line) < self::ID_OFFSET + self::ID_LENGTH) { + if ($this->encoding->strlen($line) < self::ID_OFFSET + self::ID_LENGTH) { throw new BAV_FileParserException_ParseError("Invalid line length."); } - $id = trim(self::$encoding->substr($line, self::ID_OFFSET, self::ID_LENGTH)); - $name = trim(self::$encoding->substr($line, self::NAME_OFFSET, self::NAME_LENGTH)); - $shortTerm = trim(self::$encoding->substr($line, self::SHORTTERM_OFFSET, self::SHORTTERM_LENGTH)); - $city = trim(self::$encoding->substr($line, self::CITY_OFFSET, self::CITY_LENGTH)); - $postcode = self::$encoding->substr($line, self::POSTCODE_OFFSET, self::POSTCODE_LENGTH); - $bic = trim(self::$encoding->substr($line, self::BIC_OFFSET, self::BIC_LENGTH)); - $pan = trim(self::$encoding->substr($line, self::PAN_OFFSET, self::PAN_LENGTH)); + $id = trim($this->encoding->substr($line, self::ID_OFFSET, self::ID_LENGTH)); + $name = trim($this->encoding->substr($line, self::NAME_OFFSET, self::NAME_LENGTH)); + $shortTerm = trim($this->encoding->substr($line, self::SHORTTERM_OFFSET, self::SHORTTERM_LENGTH)); + $city = trim($this->encoding->substr($line, self::CITY_OFFSET, self::CITY_LENGTH)); + $postcode = $this->encoding->substr($line, self::POSTCODE_OFFSET, self::POSTCODE_LENGTH); + $bic = trim($this->encoding->substr($line, self::BIC_OFFSET, self::BIC_LENGTH)); + $pan = trim($this->encoding->substr($line, self::PAN_OFFSET, self::PAN_LENGTH)); return new BAV_Agency($id, $bank, $name, $shortTerm, $city, $postcode, $bic, $pan); } @@ -264,11 +274,11 @@ public function getAgency(BAV_Bank $bank, $line) */ public function isMainAgency($line) { - if (self::$encoding->strlen($line) < self::TYPE_OFFSET + self::TYPE_LENGTH) { + if ($this->encoding->strlen($line) < self::TYPE_OFFSET + self::TYPE_LENGTH) { throw new BAV_FileParserException_ParseError("Invalid line length."); } - return self::$encoding->substr($line, self::ISMAIN_OFFSET, 1) === '1'; + return $this->encoding->substr($line, self::ISMAIN_OFFSET, 1) === '1'; } /** diff --git a/classes/dataBackend/fileParser/BAV_FileParserContext.php b/classes/dataBackend/file/fileParser/BAV_FileParserContext.php similarity index 100% rename from classes/dataBackend/fileParser/BAV_FileParserContext.php rename to classes/dataBackend/file/fileParser/BAV_FileParserContext.php diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserContextException.php b/classes/dataBackend/file/fileParser/exception/BAV_FileParserContextException.php similarity index 100% rename from classes/dataBackend/fileParser/exception/BAV_FileParserContextException.php rename to classes/dataBackend/file/fileParser/exception/BAV_FileParserContextException.php diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserContextException_Undefined.php b/classes/dataBackend/file/fileParser/exception/BAV_FileParserContextException_Undefined.php similarity index 100% rename from classes/dataBackend/fileParser/exception/BAV_FileParserContextException_Undefined.php rename to classes/dataBackend/file/fileParser/exception/BAV_FileParserContextException_Undefined.php diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserException.php b/classes/dataBackend/file/fileParser/exception/BAV_FileParserException.php similarity index 100% rename from classes/dataBackend/fileParser/exception/BAV_FileParserException.php rename to classes/dataBackend/file/fileParser/exception/BAV_FileParserException.php diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php b/classes/dataBackend/file/fileParser/exception/BAV_FileParserException_FileNotExists.php similarity index 100% rename from classes/dataBackend/fileParser/exception/BAV_FileParserException_FileNotExists.php rename to classes/dataBackend/file/fileParser/exception/BAV_FileParserException_FileNotExists.php diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserException_IO.php b/classes/dataBackend/file/fileParser/exception/BAV_FileParserException_IO.php similarity index 100% rename from classes/dataBackend/fileParser/exception/BAV_FileParserException_IO.php rename to classes/dataBackend/file/fileParser/exception/BAV_FileParserException_IO.php diff --git a/classes/dataBackend/fileParser/exception/BAV_FileParserException_ParseError.php b/classes/dataBackend/file/fileParser/exception/BAV_FileParserException_ParseError.php similarity index 100% rename from classes/dataBackend/fileParser/exception/BAV_FileParserException_ParseError.php rename to classes/dataBackend/file/fileParser/exception/BAV_FileParserException_ParseError.php diff --git a/classes/dataBackend/BAV_DataBackend_PDO.php b/classes/dataBackend/pdo/BAV_DataBackend_PDO.php similarity index 99% rename from classes/dataBackend/BAV_DataBackend_PDO.php rename to classes/dataBackend/pdo/BAV_DataBackend_PDO.php index d1af65d2..febfff87 100644 --- a/classes/dataBackend/BAV_DataBackend_PDO.php +++ b/classes/dataBackend/pdo/BAV_DataBackend_PDO.php @@ -66,9 +66,9 @@ class BAV_DataBackend_PDO extends BAV_DataBackend const META_MODIFICATION = "lastModified"; /** - * @param String $prefix the prefix of the table names. Default is 'bav_'. + * @param String $prefix the prefix of the table names. */ - public function __construct(PDO $pdo, $prefix = 'bav_') + public function __construct(PDO $pdo, $prefix = "bav_") { $this->pdo = $pdo; $this->prefix = $prefix; diff --git a/classes/dataBackend/pdo/PDODataBackendContainer.php b/classes/dataBackend/pdo/PDODataBackendContainer.php new file mode 100644 index 00000000..e72e29bf --- /dev/null +++ b/classes/dataBackend/pdo/PDODataBackendContainer.php @@ -0,0 +1,46 @@ + + * @license GPL + * @see BAV_DataBackend + */ +class PDODataBackendContainer extends DataBackendContainer +{ + + /** + * @var PDO + */ + private $pdo; + + /** + * @var string + */ + private $prefix; + + /** + * Sets the PDO and the table prefix. + * + * @param String $prefix the prefix of the table names. Default is 'bav_'. + */ + public function __construct(\PDO $pdo, $prefix = 'bav_') + { + $this->pdo = $pdo; + $this->prefix = $prefix; + } + + /** + * Returns the unconfigured backend which is only created by calling the + * constructor. + * + * @return BAV_DataBackend_PDO + */ + protected function makeDataBackend() + { + return new \BAV_DataBackend_PDO($this->pdo, $this->prefix); + } +} diff --git a/docs/changelog.txt b/docs/changelog.txt index baf5fa8b..06fdaca5 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -4,6 +4,9 @@ Version 1.0.0 - not yet released - added BAV_DataBackend::isInstalled() + - removed BAV::$encoding, BAV::setEncoding() and BAV::getEncoding() + + - added support for automatic installation Version 0.28 - May 26, 2014 --------------------------- diff --git a/tests/BackendContainerTest.php b/tests/BackendContainerTest.php new file mode 100644 index 00000000..c495c668 --- /dev/null +++ b/tests/BackendContainerTest.php @@ -0,0 +1,46 @@ + + */ +class BackendContainerTest extends \PHPUnit_Framework_TestCase +{ + + public function provideContainers() + { + $fileContainer = new FileDataBackendContainer(tempnam(\BAV_DataBackend_File::getTempdir(), 'bavtest')); + + $pdoContainer = new PDODataBackendContainer( + new \PDO('mysql:host=localhost;dbname=test', 'test'), + 'bavtest_' + ); + + return array( + array($fileContainer), + array($pdoContainer) + ); + } + + /** + * Tests automatic installation. + * + * @dataProvider provideContainers + */ + public function testAutomaticInstallation(DataBackendContainer $container) + { + $this->assertTrue(ConfigurationRegistry::getConfiguration()->isAutomaticInstallation()); + + $backend = $container->getDataBackend(); + $this->assertTrue($backend->isInstalled()); + + $backend->uninstall(); + } + +} diff --git a/tests/BackendTest.php b/tests/BackendTest.php index a818bde3..21abad77 100755 --- a/tests/BackendTest.php +++ b/tests/BackendTest.php @@ -30,22 +30,52 @@ public static function classConstructor() */ public function provideBackends() { + $pdoBackend = new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); + $this->setupBackend($pdoBackend); + + $fileBackend = new BAV_DataBackend_File(); + $this->setupBackend($fileBackend); + return array( - array(new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test'))), - array(new BAV_DataBackend_File()) + array($pdoBackend), + array($fileBackend) ); } + private function setupBackend(BAV_DataBackend $backend) + { + if ($backend->isInstalled()) { + return; + + } + $backend->install(); + } + /** */ public function provideInstallationBackends() { + $pdoBackend = new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test'), 'bavtest_'); + $this->setupInstallationBackends($pdoBackend); + + $fileBackend = new BAV_DataBackend_File(tempnam(BAV_DataBackend_File::getTempdir(), 'bavtest')); + $this->setupInstallationBackends($fileBackend); + return array( - array(new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test'), 'bavtest_')), - array(new BAV_DataBackend_File(tempnam(BAV_DataBackend_File::getTempdir(), 'bavtest'))) + array($pdoBackend), + array($fileBackend) ); } + private function setupInstallationBackends(BAV_DataBackend $backend) + { + if (! $backend->isInstalled()) { + return; + + } + $backend->uninstall(); + } + /** * @return Array */ From 786dbeaae55a771a3ea1b2d117dfc853e2d69eba Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 02:48:19 +0200 Subject: [PATCH 090/303] added support for automatic update --- autoloader/index/0.php | 3 + autoloader/index/1.php | 3 + classes/configuration/Configuration.php | 27 ++++- .../configuration/DefaultConfiguration.php | 5 +- classes/dataBackend/DataBackendContainer.php | 25 ++++- .../dataBackend/file/BAV_DataBackend_File.php | 10 ++ .../update/AutomaticUpdatePlan.php | 43 ++++++++ classes/dataBackend/update/LogUpdatePlan.php | 24 +++++ classes/dataBackend/update/UpdatePlan.php | 78 +++++++++++++++ docs/changelog.txt | 2 +- tests/BackendContainerTest.php | 41 ++++---- tests/UpdatePlanTest.php | 98 +++++++++++++++++++ tests/classes/TimeMoc.php | 49 ++++++++++ 13 files changed, 384 insertions(+), 24 deletions(-) create mode 100644 classes/dataBackend/update/AutomaticUpdatePlan.php create mode 100644 classes/dataBackend/update/LogUpdatePlan.php create mode 100644 classes/dataBackend/update/UpdatePlan.php create mode 100644 tests/UpdatePlanTest.php create mode 100644 tests/classes/TimeMoc.php diff --git a/autoloader/index/0.php b/autoloader/index/0.php index 4fb9b547..e913883e 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -18,12 +18,14 @@ 'bav' => '../classes/BAV.php', 'bav_bank' => '../classes/bank/BAV_Bank.php', 'bav_agency' => '../classes/bank/BAV_Agency.php', + 'malkusch\bav\updateplan' => '../classes/dataBackend/update/UpdatePlan.php', 'bav_version' => '../classes/BAV_Version.php', 'bav_testapi' => '../classes/verify/testAPI/BAV_TestAPI.php', 'bav_encoding' => '../classes/encoding/BAV_Encoding.php', 'malkusch\bav\bavexception' => '../classes/exception/BAVException.php', 'bav_classfile' => '../classes/class/BAV_ClassFile.php', 'malkusch\bav\configuration' => '../classes/configuration/Configuration.php', + 'malkusch\bav\logupdateplan' => '../classes/dataBackend/update/LogUpdatePlan.php', 'bav_validator' => '../classes/validator/BAV_Validator.php', 'bav_autoloader' => '../classes/autoloader/BAV_Autoloader.php', 'bav_fileparser' => '../classes/dataBackend/file/fileParser/BAV_FileParser.php', @@ -191,6 +193,7 @@ 'bav_encoding_iconv' => '../classes/encoding/BAV_Encoding_Iconv.php', 'bav_agencyexception' => '../classes/bank/exception/BAV_AgencyException.php', 'bav_databackend_pdo' => '../classes/dataBackend/pdo/BAV_DataBackend_PDO.php', + 'malkusch\bav\automaticupdateplan' => '../classes/dataBackend/update/AutomaticUpdatePlan.php', 'bav_validator_chain' => '../classes/validator/BAV_Validator_Chain.php', 'bav_verifyexception' => '../classes/verify/exception/BAV_VerifyException.php', 'malkusch\bav\defaultconfiguration' => '../classes/configuration/DefaultConfiguration.php', diff --git a/autoloader/index/1.php b/autoloader/index/1.php index f08de921..dfede19a 100644 --- a/autoloader/index/1.php +++ b/autoloader/index/1.php @@ -15,12 +15,15 @@ */ return array( + 'malkusch\bav\timemoc' => '../tests/classes/TimeMoc.php', 'testsuite' => '../tests/TestSuite.php', 'backendtest' => '../tests/BackendTest.php', 'validatortest' => '../tests/ValidatorTest.php', + 'malkusch\bav\updateplantest' => '../tests/UpdatePlanTest.php', 'agencyquerytest' => '../tests/AgencyQueryTest.php', 'crossprojecttest' => '../tests/CrossProjectTest.php', 'verifyimporttest' => '../tests/VerifyImportTest.php', 'dataconstrainttest' => '../tests/DataConstraintTest.php', + 'malkusch\bav\backendcontainertest' => '../tests/BackendContainerTest.php', 'bav_checkagainsttestapis' => '../tests/checkAgainstTestAPIs.php', ); diff --git a/classes/configuration/Configuration.php b/classes/configuration/Configuration.php index 2f27ade6..da2e212e 100644 --- a/classes/configuration/Configuration.php +++ b/classes/configuration/Configuration.php @@ -14,7 +14,7 @@ class Configuration /** * @var bool */ - private $automaticInstallation = null; + private $automaticInstallation; /** * @var BAV_Encoding @@ -26,6 +26,31 @@ class Configuration */ private $backendContainer; + /** + * @var UpdatePlan + */ + private $updatePlan; + + /** + * Sets the update plan. + * + * Set to null if you don't want to use an update plan. + */ + public function setUpdatePlan(UpdatePlan $updatePlan = null) + { + $this->updatePlan = $updatePlan; + } + + /** + * Gets the update plan. + * + * @return UpdatePlan|null + */ + public function getUpdatePlan() + { + return $this->updatePlan; + } + /** * Turns automatic installation on or off. * diff --git a/classes/configuration/DefaultConfiguration.php b/classes/configuration/DefaultConfiguration.php index b96c19a5..aebadf64 100644 --- a/classes/configuration/DefaultConfiguration.php +++ b/classes/configuration/DefaultConfiguration.php @@ -7,11 +7,12 @@ * * Automatic installation is enabled. * + * The update plan is set to LogUpdatePlan. + * * If no UTF-8 encoding is supported ISO-8859-15 will be used. * * @author Markus Malkusch * @license GPL - * @see FileDataBackendFactory */ class DefaultConfiguration extends Configuration { @@ -20,6 +21,8 @@ public function __construct() { $this->setAutomaticInstallation(true); + $this->setUpdatePlan(new LogUpdatePlan()); + $this->setDataBackendContainer(new FileDataBackendContainer()); $encoding = null; diff --git a/classes/dataBackend/DataBackendContainer.php b/classes/dataBackend/DataBackendContainer.php index a8b0f2f4..0219f8f1 100644 --- a/classes/dataBackend/DataBackendContainer.php +++ b/classes/dataBackend/DataBackendContainer.php @@ -8,7 +8,7 @@ * @author Markus Malkusch * @license GPL * @see BAV_DataBackend - */ + */ abstract class DataBackendContainer { @@ -32,26 +32,43 @@ abstract protected function makeDataBackend(); * call will take some amount of time. * * @return BAV_DataBackend + * @throws BAV_DataBackendException */ private function buildDataBackend() { $configuration = ConfigurationRegistry::getConfiguration(); - $backend = $this->makeDataBackend(); + // Installation if ($configuration->isAutomaticInstallation() && ! $backend->isInstalled()) { + // TODO Lock concurrent installations $backend->install(); } + // Update hook + register_shutdown_function(array($this, "applyUpdatePlan"), $backend); + return $backend; } + /** + * Shut down hook for applying the update plan. + */ + public function applyUpdatePlan(\BAV_DataBackend $backend) + { + $plan = ConfigurationRegistry::getConfiguration()->getUpdatePlan(); + if ($plan != null && $plan->isOutdated($backend)) { + $plan->perform($backend); + + } + } + /** * Returns a configured data backend. * - * If configured this method would automatically install the backend. I.e. a first - * call will take some amount of time. + * If configured this method would automatically install and update the backend. I.e. + * some calls might take longer. * * @see Configuration::setAutomaticInstallation() * @see BAV_DataBackend::install() diff --git a/classes/dataBackend/file/BAV_DataBackend_File.php b/classes/dataBackend/file/BAV_DataBackend_File.php index bc464c62..4c100fe4 100644 --- a/classes/dataBackend/file/BAV_DataBackend_File.php +++ b/classes/dataBackend/file/BAV_DataBackend_File.php @@ -31,6 +31,16 @@ public function __construct($file = null) $this->parser = new BAV_FileParser($file); } + /** + * Returns the path to the data file. + * + * @return string + */ + public function getFile() + { + return $this->parser->getFile(); + } + /** * For the file of March 8th 2010 (blz_20100308.txt) * Bundesbank appended new banks at the end of the file. diff --git a/classes/dataBackend/update/AutomaticUpdatePlan.php b/classes/dataBackend/update/AutomaticUpdatePlan.php new file mode 100644 index 00000000..ddfdbead --- /dev/null +++ b/classes/dataBackend/update/AutomaticUpdatePlan.php @@ -0,0 +1,43 @@ + + * @license GPL + */ +class AutomaticUpdatePlan extends UpdatePlan +{ + + /** + * @var bool + */ + private $notice = true; + + /** + * Set to false if you don't want to see an E_USER_NOTICE about an update. + */ + public function setNotice($notice) + { + $this->notice = $notice; + } + + /** + * Perform an update. + * + * If enabled this method will send a E_USER_NOTICE about the update. + * + * @see setNotice() + */ + public function perform(\BAV_DataBackend $backend) + { + // TODO lock concurrent updates + $backend->update(); + if ($this->notice) { + trigger_error("bav's bank data was updated sucessfully.", E_USER_NOTICE); + + } + } +} diff --git a/classes/dataBackend/update/LogUpdatePlan.php b/classes/dataBackend/update/LogUpdatePlan.php new file mode 100644 index 00000000..b06036b3 --- /dev/null +++ b/classes/dataBackend/update/LogUpdatePlan.php @@ -0,0 +1,24 @@ + + * @license GPL + */ +class LogUpdatePlan extends UpdatePlan +{ + + /** + * Log an E_USER_WARNING + */ + public function perform(\BAV_DataBackend $backend) + { + trigger_error( + "bav's bank data is outdated. Update the data with e.g. bin/bav-update.php", + E_USER_WARNING + ); + } +} diff --git a/classes/dataBackend/update/UpdatePlan.php b/classes/dataBackend/update/UpdatePlan.php new file mode 100644 index 00000000..1139830b --- /dev/null +++ b/classes/dataBackend/update/UpdatePlan.php @@ -0,0 +1,78 @@ + + * @license GPL + */ +abstract class UpdatePlan +{ + + /** + * Bundesbank releases updates in those months + */ + private static $updateMonths = array( + 3, // March + 6, // June + 9, // September + 12, // December + ); + + /** + * Number of months before an update month when Bundesbank is supposed + * to deliver the updated file. + * + * @var int + */ + private static $relaseThreshold = 1; + + /** + * Perform the update process. + */ + abstract public function perform(\BAV_DataBackend $backend); + + /** + * Returns true if the data is to old and needs an update + * + * @see BAV_DataBackend::getLastUpdate() + * @return bool + */ + public function isOutdated(\BAV_DataBackend $backend) + { + /* + * The following code creates a list with the release months (update month - $relaseThreshold) + * and the current month. Then sort that list and take the month before the current month as + * the current threshold. + * + * The current month gets an increment of 0.5 for the case that the current month is a + * release month (e.g. the list will look (2, 3.5, 5, 8, 11)). + */ + $currentMonth = date("n", time()) + 0.5; + + $monthList = array($currentMonth); + foreach (self::$updateMonths as $month) { + $releaseMonth = $month - self::$relaseThreshold; + $monthList[] = $releaseMonth; + + } + sort($monthList); // You have now something like (2, 3.5, 5, 8, 11). + + // Now reflect the cycle between the last and the first month(11, 2, 3.5, 5, 8, 11, 2). + $monthList[] = self::$updateMonths[0] - self::$relaseThreshold; + array_unshift($monthList, self::$updateMonths[count(self::$updateMonths) - 1] - self::$relaseThreshold); + + $index = array_search($currentMonth, $monthList); + assert($index !== false); + $previousIndex = $index - 1; + + $thresholdMonth = $monthList[$previousIndex]; + $year = $thresholdMonth > $currentMonth ? date("Y", time()) - 1 : date("Y", time()); + + $threshold = mktime(0, 0, 0, $thresholdMonth, 1, $year); + + return $backend->getLastUpdate() < $threshold; + } +} diff --git a/docs/changelog.txt b/docs/changelog.txt index 06fdaca5..c52ca3d8 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -6,7 +6,7 @@ Version 1.0.0 - not yet released - removed BAV::$encoding, BAV::setEncoding() and BAV::getEncoding() - - added support for automatic installation + - added support for automatic installation and update Version 0.28 - May 26, 2014 --------------------------- diff --git a/tests/BackendContainerTest.php b/tests/BackendContainerTest.php index c495c668..3ccc5dac 100644 --- a/tests/BackendContainerTest.php +++ b/tests/BackendContainerTest.php @@ -13,34 +13,41 @@ class BackendContainerTest extends \PHPUnit_Framework_TestCase { - public function provideContainers() + /** + * Tests automatic installation. + */ + public function testAutomaticInstallation() { - $fileContainer = new FileDataBackendContainer(tempnam(\BAV_DataBackend_File::getTempdir(), 'bavtest')); + ConfigurationRegistry::getConfiguration()->setUpdatePlan(null); + $container = new FileDataBackendContainer(tempnam(\BAV_DataBackend_File::getTempdir(), 'bavtest')); - $pdoContainer = new PDODataBackendContainer( - new \PDO('mysql:host=localhost;dbname=test', 'test'), - 'bavtest_' - ); + $this->assertTrue(ConfigurationRegistry::getConfiguration()->isAutomaticInstallation()); + + $backend = $container->getDataBackend(); + $this->assertTrue($backend->isInstalled()); - return array( - array($fileContainer), - array($pdoContainer) - ); + $backend->uninstall(); } /** * Tests automatic installation. - * - * @dataProvider provideContainers */ - public function testAutomaticInstallation(DataBackendContainer $container) + public function testAutomaticUpdate() { - $this->assertTrue(ConfigurationRegistry::getConfiguration()->isAutomaticInstallation()); - + $updatePlan = new AutomaticUpdatePlan(); + $updatePlan->setNotice(false); + ConfigurationRegistry::getConfiguration()->setUpdatePlan($updatePlan); + + $container = new FileDataBackendContainer(tempnam(\BAV_DataBackend_File::getTempdir(), 'bavtest')); $backend = $container->getDataBackend(); - $this->assertTrue($backend->isInstalled()); + + touch($backend->getFile(), strtotime("-1 year")); + $this->assertTrue($updatePlan->isOutdated($backend)); + + $container->applyUpdatePlan($backend); + $this->assertFalse($updatePlan->isOutdated($backend)); $backend->uninstall(); + ConfigurationRegistry::getConfiguration()->setUpdatePlan(null); } - } diff --git a/tests/UpdatePlanTest.php b/tests/UpdatePlanTest.php new file mode 100644 index 00000000..7cbe5a2d --- /dev/null +++ b/tests/UpdatePlanTest.php @@ -0,0 +1,98 @@ + + */ +class UpdatePlanTest extends \PHPUnit_Framework_TestCase +{ + + /** + * Provide test cases for testIsOutdated() + * + * @see testIsOutdated() + */ + public function provideTestIsOutdated() + { + return array( + array("2012-11-01", "2013-01-31", false), + array("2012-10-31", "2013-01-31", true), + array("2013-02-01", "2013-04-01", false), + array("2013-01-31", "2013-04-01", true), + array("2013-02-01", "2013-02-01", false), + array("2013-01-31", "2013-02-01", true), + array("2013-02-01", "2013-02-31", false), + array("2013-01-31", "2013-02-31", true), + array("2013-02-01", "2013-03-01", false), + array("2013-01-31", "2013-03-01", true), + array("2013-02-01", "2013-03-31", false), + array("2013-01-31", "2013-03-31", true), + ); + } + + /** + * Tests isOutdated() + * + * @dataProvider provideTestIsOutdated + * @param string $mtime file time + * @param string $time current time + * @param bool $expectedIsOutdated + * @see UpdatePlan::isOutdated() + */ + public function testIsOutdated($mtime, $time, $expectedIsOutdated) + { + $file = tempnam(\BAV_DataBackend_File::getTempdir(), 'bavtest'); + touch($file, strtotime($mtime)); + $backend = new \BAV_DataBackend_File($file); + + TimeMoc::setTime(strtotime($time)); + + $updatePlan = new AutomaticUpdatePlan(); + $this->assertEquals($expectedIsOutdated, $updatePlan->isOutdated($backend)); + + TimeMoc::disable(); + } + + /** + * @expectedException \PHPUnit_Framework_Error_Warning + */ + public function testLogUpdatePlan() + { + $updatePlan = new LogUpdatePlan(); + $updatePlan->perform(new \BAV_DataBackend_File()); + } + + /** + * @expectedException \PHPUnit_Framework_Error_Notice + * @medium + */ + public function testAutomaticUpdatePlanNotice() + { + $file = tempnam(\BAV_DataBackend_File::getTempdir(), 'bavtest'); + $updatePlan = new AutomaticUpdatePlan(); + $updatePlan->perform(new \BAV_DataBackend_File($file)); + } + + /** + * @expectedException \PHPUnit_Framework_Error_Notice + * @medium + */ + public function testAutomaticUpdatePlan() + { + $file = tempnam(\BAV_DataBackend_File::getTempdir(), 'bavtest'); + touch($file, strtotime("-1 year")); + $backend = new \BAV_DataBackend_File($file); + + $updatePlan = new AutomaticUpdatePlan(); + $this->assertTrue($updatePlan->isOutdated($backend)); + + $updatePlan->perform($backend); + $this->assertFalse($updatePlan->isOutdated($backend)); + } +} diff --git a/tests/classes/TimeMoc.php b/tests/classes/TimeMoc.php new file mode 100644 index 00000000..eda41397 --- /dev/null +++ b/tests/classes/TimeMoc.php @@ -0,0 +1,49 @@ + + */ +class TimeMoc +{ + + /** + * @var int + */ + private static $time = null; + + public static function time() + { + return is_null(self::$time) ? \time() : self::$time; + } + + /** + * Disable mocking of the time. + */ + public static function disable() + { + self::$time = null; + } + + /** + * Sets the moc time. + * + * @param int $time moc time + */ + public static function setTime($time) + { + return self::$time = $time; + } +} From 751185d1556332c15328aa408dbbba77dafd6af1 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 03:04:06 +0200 Subject: [PATCH 091/303] documentation --- autoloader/index/1.php | 2 +- classes/dataBackend/update/UpdatePlan.php | 23 ++++++++++++++------- tests/UpdatePlanTest.php | 4 ++-- tests/classes/{TimeMoc.php => TimeMock.php} | 4 ++-- 4 files changed, 20 insertions(+), 13 deletions(-) rename tests/classes/{TimeMoc.php => TimeMock.php} (93%) diff --git a/autoloader/index/1.php b/autoloader/index/1.php index dfede19a..d54ef7da 100644 --- a/autoloader/index/1.php +++ b/autoloader/index/1.php @@ -15,7 +15,7 @@ */ return array( - 'malkusch\bav\timemoc' => '../tests/classes/TimeMoc.php', + 'malkusch\bav\timemock' => '../tests/classes/TimeMock.php', 'testsuite' => '../tests/TestSuite.php', 'backendtest' => '../tests/BackendTest.php', 'validatortest' => '../tests/ValidatorTest.php', diff --git a/classes/dataBackend/update/UpdatePlan.php b/classes/dataBackend/update/UpdatePlan.php index 1139830b..ed4447d8 100644 --- a/classes/dataBackend/update/UpdatePlan.php +++ b/classes/dataBackend/update/UpdatePlan.php @@ -43,12 +43,17 @@ abstract public function perform(\BAV_DataBackend $backend); public function isOutdated(\BAV_DataBackend $backend) { /* - * The following code creates a list with the release months (update month - $relaseThreshold) - * and the current month. Then sort that list and take the month before the current month as - * the current threshold. + * The following code creates a sorted list with the release months (update month - $relaseThreshold) + * and the current month. To build that threshold date simply pick the month before the current month from + * that list. * + * Note that the second parameter of the date() calls is there on purpose. This allows + * to mock time() for testing. + */ + + /* * The current month gets an increment of 0.5 for the case that the current month is a - * release month (e.g. the list will look (2, 3.5, 5, 8, 11)). + * release month (e.g. the list will look (2, 2.5, 5, 8, 11)). */ $currentMonth = date("n", time()) + 0.5; @@ -58,17 +63,19 @@ public function isOutdated(\BAV_DataBackend $backend) $monthList[] = $releaseMonth; } - sort($monthList); // You have now something like (2, 3.5, 5, 8, 11). + sort($monthList); // You have now something like (2, 2.5, 5, 8, 11). - // Now reflect the cycle between the last and the first month(11, 2, 3.5, 5, 8, 11, 2). - $monthList[] = self::$updateMonths[0] - self::$relaseThreshold; + // Now add the cycle between the last and the first month(11, 2, 3.5, 5, 8, 11, 2). + $monthList[] = self::$updateMonths[0] - self::$relaseThreshold; // this is acually not needed. array_unshift($monthList, self::$updateMonths[count(self::$updateMonths) - 1] - self::$relaseThreshold); $index = array_search($currentMonth, $monthList); - assert($index !== false); + assert($index > 0); $previousIndex = $index - 1; $thresholdMonth = $monthList[$previousIndex]; + + // flip the year if the threshold was in the last year. $year = $thresholdMonth > $currentMonth ? date("Y", time()) - 1 : date("Y", time()); $threshold = mktime(0, 0, 0, $thresholdMonth, 1, $year); diff --git a/tests/UpdatePlanTest.php b/tests/UpdatePlanTest.php index 7cbe5a2d..91a56091 100644 --- a/tests/UpdatePlanTest.php +++ b/tests/UpdatePlanTest.php @@ -51,12 +51,12 @@ public function testIsOutdated($mtime, $time, $expectedIsOutdated) touch($file, strtotime($mtime)); $backend = new \BAV_DataBackend_File($file); - TimeMoc::setTime(strtotime($time)); + TimeMock::setTime(strtotime($time)); $updatePlan = new AutomaticUpdatePlan(); $this->assertEquals($expectedIsOutdated, $updatePlan->isOutdated($backend)); - TimeMoc::disable(); + TimeMock::disable(); } /** diff --git a/tests/classes/TimeMoc.php b/tests/classes/TimeMock.php similarity index 93% rename from tests/classes/TimeMoc.php rename to tests/classes/TimeMock.php index eda41397..1b5c5f9b 100644 --- a/tests/classes/TimeMoc.php +++ b/tests/classes/TimeMock.php @@ -7,7 +7,7 @@ */ function time() { - return TimeMoc::time(); + return TimeMock::time(); } /** @@ -16,7 +16,7 @@ function time() * @license GPL * @author Markus Malkusch */ -class TimeMoc +class TimeMock { /** From 5cb85e9b5525ed23301a2fe5864cea1ec14f29ae Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 03:12:20 +0200 Subject: [PATCH 092/303] bin-install.php did install two times if configured to install automatically --- bin/bav-install.php | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/bav-install.php b/bin/bav-install.php index e6408008..31fd1a41 100755 --- a/bin/bav-install.php +++ b/bin/bav-install.php @@ -13,6 +13,7 @@ require_once __DIR__ . "/../autoloader/autoloader.php"; try { + ConfigurationRegistry::getConfiguration()->setAutomaticInstallation(false); $databack = ConfigurationRegistry::getConfiguration()->getDatabackendContainer()->getDataBackend(); $databack->install(); From 0bd71d647b52eba6621d60a9620e210fe4b7a8c6 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 03:16:07 +0200 Subject: [PATCH 093/303] removed deprecated autoloder --- autoloader/index/0.php | 1 - classes/autoloader/BAV_Autoloader.php | 75 --------------------------- 2 files changed, 76 deletions(-) delete mode 100644 classes/autoloader/BAV_Autoloader.php diff --git a/autoloader/index/0.php b/autoloader/index/0.php index e913883e..a47edd40 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -27,7 +27,6 @@ 'malkusch\bav\configuration' => '../classes/configuration/Configuration.php', 'malkusch\bav\logupdateplan' => '../classes/dataBackend/update/LogUpdatePlan.php', 'bav_validator' => '../classes/validator/BAV_Validator.php', - 'bav_autoloader' => '../classes/autoloader/BAV_Autoloader.php', 'bav_fileparser' => '../classes/dataBackend/file/fileParser/BAV_FileParser.php', 'bav_databackend' => '../classes/dataBackend/BAV_DataBackend.php', 'bav_encoding_mb' => '../classes/encoding/BAV_Encoding_MB.php', diff --git a/classes/autoloader/BAV_Autoloader.php b/classes/autoloader/BAV_Autoloader.php deleted file mode 100644 index 3e784687..00000000 --- a/classes/autoloader/BAV_Autoloader.php +++ /dev/null @@ -1,75 +0,0 @@ - Date: Fri, 30 May 2014 03:22:19 +0200 Subject: [PATCH 094/303] removed BAV_Version --- autoloader/index/0.php | 1 - classes/BAV.php | 42 ----------- classes/BAV_Version.php | 152 ---------------------------------------- 3 files changed, 195 deletions(-) delete mode 100644 classes/BAV_Version.php diff --git a/autoloader/index/0.php b/autoloader/index/0.php index a47edd40..c574ddec 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -19,7 +19,6 @@ 'bav_bank' => '../classes/bank/BAV_Bank.php', 'bav_agency' => '../classes/bank/BAV_Agency.php', 'malkusch\bav\updateplan' => '../classes/dataBackend/update/UpdatePlan.php', - 'bav_version' => '../classes/BAV_Version.php', 'bav_testapi' => '../classes/verify/testAPI/BAV_TestAPI.php', 'bav_encoding' => '../classes/encoding/BAV_Encoding.php', 'malkusch\bav\bavexception' => '../classes/exception/BAVException.php', diff --git a/classes/BAV.php b/classes/BAV.php index 8a13a555..8adbdeb8 100644 --- a/classes/BAV.php +++ b/classes/BAV.php @@ -15,46 +15,4 @@ abstract class BAV { - /** - * @return BAV_Version version of BAV - */ - public static function getVersion() - { - return new BAV_Version('1.0.0'); - } - - /** - * @return BAV_Version version of BAV - * @deprecated 0.28 - * @see getVersion() - */ - public static function get_bav_version() - { - trigger_error("use getVersion()", E_USER_DEPRECATED); - return self::getVersion(); - } - - /** - * Returns the version of the API. Note that different BAV versions - * may have the same API version. - * - * @return BAV_Version version of BAV's API - */ - public static function getApiVersion() - { - return new BAV_Version('2.6'); - } - - /** - * Returns the version of the API. Note that different BAV versions - * may have the same API version. - * - * @deprecated 0.28 - * @return BAV_Version version of BAV's API - */ - public static function get_bav_api_version() - { - trigger_error("use getApiVersion()", E_USER_DEPRECATED); - return self::getApiVersion(); - } } diff --git a/classes/BAV_Version.php b/classes/BAV_Version.php deleted file mode 100644 index 48127b8d..00000000 --- a/classes/BAV_Version.php +++ /dev/null @@ -1,152 +0,0 @@ - - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * - * @package classes - * @author Markus Malkusch - * @copyright Copyright (C) 2006 Markus Malkusch - */ -class BAV_Version extends BAV -{ - - /** - * @var BAV_Version - */ - private static $phpVersion; - - /** - * @var array - */ - private $elements = array(); - - /** - * @var string - */ - private $separator = ''; - - /** - * @param string $version - * @param string $separator - */ - public function __construct($version, $separator = '.') - { - $this->separator = $separator; - $this->elements = explode($separator, $version); - } - - /** - * @return boolean - */ - public function isGreater(BAV_Version $version) - { - $thoseElements = $version->getElements(count($this->elements)); - $thisElements = $this->getElements(count($thoseElements)); - - foreach ($thisElements as $i => $thisElement) { - if ($thoseElements[$i] !== $thisElement) { - return $this->isGreater($thisElement, $thoseElements[$i]); - - } - - } - return false; - } - - /** - * @return boolean - */ - public function equals(BAV_Version $version) - { - $thoseElements = $version->getElements(count($this->elements)); - $thisElements = $this->getElements(count($thoseElements)); - - return $thoseElements == $thisElements; - } - - /** - * @return boolean - */ - public function isLesser(BAV_Version $version) - { - return ! $this->equals($version) && ! $this->isGreater($version); - } - - /** - * @return string - */ - public function getString() - { - return implode($this->separator, $this->elements); - } - - /** - * @return string - */ - public function getNormalizedVersion() - { - $elements = array_merge($this->elements); - for ($i = count($elements) - 1; $i > 0; $i--) { - $lastElement = array_pop($elements); - if ($lastElement !== '0') { - $elements[] = $lastElement; - break; - - } - - } - return implode($this->separator, $elements); - } - - /** - * @param string $left - * @param string $right - * @return boolean - */ - private function isGreater($left, $right) - { - return $left > $right; - } - - /** - * @param int $padding - * @return array - */ - private function getElements($padding = null) - { - if (is_null($padding) || count($this->elements) >= $padding) { - return $this->elements; - - } - return array_pad($this->elements, $padding, '0'); - } - - /** - * @return BAV_Version - */ - public static function getPHPVersion() - { - if (empty(self::$phpVersion)) { - self::$phpVersion = new BAV_Version(phpversion()); - - } - return self::$phpVersion; - } -} From dcebf38f566736c0c3a1f6e27c04d35fe8ba272b Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 03:27:11 +0200 Subject: [PATCH 095/303] removed class BAV --- autoloader/index/0.php | 1 - classes/BAV.php | 18 ------------------ classes/bank/BAV_Agency.php | 2 +- classes/bank/BAV_Bank.php | 2 +- classes/class/BAV_ClassFile.php | 2 +- classes/dataBackend/BAV_DataBackend.php | 2 +- .../file/fileParser/BAV_FileParser.php | 2 +- .../file/fileParser/BAV_FileParserContext.php | 2 +- classes/encoding/BAV_Encoding.php | 2 +- classes/validator/BAV_Validator.php | 2 +- classes/verify/BAV_VerifyImport.php | 2 +- classes/verify/testAPI/BAV_TestAPI.php | 2 +- classes/verify/testAPI/BAV_TestAPIResult.php | 2 +- tests/checkAgainstTestAPIs.php | 2 +- 14 files changed, 12 insertions(+), 31 deletions(-) delete mode 100644 classes/BAV.php diff --git a/autoloader/index/0.php b/autoloader/index/0.php index c574ddec..b6acf292 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -15,7 +15,6 @@ */ return array( - 'bav' => '../classes/BAV.php', 'bav_bank' => '../classes/bank/BAV_Bank.php', 'bav_agency' => '../classes/bank/BAV_Agency.php', 'malkusch\bav\updateplan' => '../classes/dataBackend/update/UpdatePlan.php', diff --git a/classes/BAV.php b/classes/BAV.php deleted file mode 100644 index 8adbdeb8..00000000 --- a/classes/BAV.php +++ /dev/null @@ -1,18 +0,0 @@ - - * @deprecated 0.28 - * @license GPL - */ -abstract class BAV -{ - -} diff --git a/classes/bank/BAV_Agency.php b/classes/bank/BAV_Agency.php index 8c80be9d..149e8e06 100644 --- a/classes/bank/BAV_Agency.php +++ b/classes/bank/BAV_Agency.php @@ -28,7 +28,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Agency extends BAV +class BAV_Agency { /** diff --git a/classes/bank/BAV_Bank.php b/classes/bank/BAV_Bank.php index 87476c07..e6792725 100644 --- a/classes/bank/BAV_Bank.php +++ b/classes/bank/BAV_Bank.php @@ -32,7 +32,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Bank extends BAV +class BAV_Bank { /** diff --git a/classes/class/BAV_ClassFile.php b/classes/class/BAV_ClassFile.php index bdd8bc0d..dcd88f65 100644 --- a/classes/class/BAV_ClassFile.php +++ b/classes/class/BAV_ClassFile.php @@ -23,7 +23,7 @@ * * @package classes */ -class BAV_ClassFile extends BAV +class BAV_ClassFile { /** diff --git a/classes/dataBackend/BAV_DataBackend.php b/classes/dataBackend/BAV_DataBackend.php index 9086491c..829950d7 100644 --- a/classes/dataBackend/BAV_DataBackend.php +++ b/classes/dataBackend/BAV_DataBackend.php @@ -17,7 +17,7 @@ * @license GPL * @see DataBackendFactory */ -abstract class BAV_DataBackend extends BAV +abstract class BAV_DataBackend { /** diff --git a/classes/dataBackend/file/fileParser/BAV_FileParser.php b/classes/dataBackend/file/fileParser/BAV_FileParser.php index 1234e463..5c11d79c 100644 --- a/classes/dataBackend/file/fileParser/BAV_FileParser.php +++ b/classes/dataBackend/file/fileParser/BAV_FileParser.php @@ -28,7 +28,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_FileParser extends BAV +class BAV_FileParser { const FILE_ENCODING = 'ISO-8859-15'; diff --git a/classes/dataBackend/file/fileParser/BAV_FileParserContext.php b/classes/dataBackend/file/fileParser/BAV_FileParserContext.php index 49b7f9a2..92f5f581 100644 --- a/classes/dataBackend/file/fileParser/BAV_FileParserContext.php +++ b/classes/dataBackend/file/fileParser/BAV_FileParserContext.php @@ -27,7 +27,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_FileParserContext extends BAV +class BAV_FileParserContext { /** diff --git a/classes/encoding/BAV_Encoding.php b/classes/encoding/BAV_Encoding.php index fc91e41e..f2273ad4 100644 --- a/classes/encoding/BAV_Encoding.php +++ b/classes/encoding/BAV_Encoding.php @@ -26,7 +26,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class BAV_Encoding extends BAV +abstract class BAV_Encoding { /** diff --git a/classes/validator/BAV_Validator.php b/classes/validator/BAV_Validator.php index 5878ffab..62547ca0 100644 --- a/classes/validator/BAV_Validator.php +++ b/classes/validator/BAV_Validator.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class BAV_Validator extends BAV +abstract class BAV_Validator { /** diff --git a/classes/verify/BAV_VerifyImport.php b/classes/verify/BAV_VerifyImport.php index 72e699e9..3f4f147b 100644 --- a/classes/verify/BAV_VerifyImport.php +++ b/classes/verify/BAV_VerifyImport.php @@ -35,7 +35,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_VerifyImport extends BAV +class BAV_VerifyImport { /** diff --git a/classes/verify/testAPI/BAV_TestAPI.php b/classes/verify/testAPI/BAV_TestAPI.php index f78eb5e3..35e92701 100644 --- a/classes/verify/testAPI/BAV_TestAPI.php +++ b/classes/verify/testAPI/BAV_TestAPI.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -abstract class BAV_TestAPI extends BAV +abstract class BAV_TestAPI { /** diff --git a/classes/verify/testAPI/BAV_TestAPIResult.php b/classes/verify/testAPI/BAV_TestAPIResult.php index 20ca9c2b..9a9890b6 100644 --- a/classes/verify/testAPI/BAV_TestAPIResult.php +++ b/classes/verify/testAPI/BAV_TestAPIResult.php @@ -22,7 +22,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_TestAPIResult extends BAV +class BAV_TestAPIResult { const VALID = 1; diff --git a/tests/checkAgainstTestAPIs.php b/tests/checkAgainstTestAPIs.php index b8d44701..740294ef 100755 --- a/tests/checkAgainstTestAPIs.php +++ b/tests/checkAgainstTestAPIs.php @@ -27,7 +27,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_CheckAgainstTestAPIs extends BAV +class BAV_CheckAgainstTestAPIs { const VALID = 1; From 31fab8b3f01d75693c169aafebabc0869607fa82 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 03:47:03 +0200 Subject: [PATCH 096/303] removed BAV_ prefix --- autoloader/index/0.php | 418 +++++++++--------- autoloader/index/1.php | 2 +- bin/bav-install.php | 4 +- bin/bav-update.php | 4 +- bin/verifyImport.php | 8 +- classes/bank/{BAV_Agency.php => Agency.php} | 22 +- classes/bank/{BAV_Bank.php => Bank.php} | 40 +- ...gencyException.php => AgencyException.php} | 8 +- ...=> AgencyException_UndefinedAttribute.php} | 4 +- .../{BAV_ClassFile.php => ClassFile.php} | 28 +- ...leException.php => ClassFileException.php} | 2 +- ...ption_IO.php => ClassFileException_IO.php} | 2 +- ...hp => ClassFileException_MissingClass.php} | 2 +- classes/configuration/Configuration.php | 8 +- .../configuration/DefaultConfiguration.php | 6 +- .../{BAV_DataBackend.php => DataBackend.php} | 74 ++-- classes/dataBackend/DataBackendContainer.php | 18 +- ...aBackendException_IO_MissingAttributes.php | 29 -- .../exception/DataBackendException.php} | 2 +- ... => DataBackendException_BankNotFound.php} | 2 +- .../DataBackendException_IO.php} | 2 +- ...aBackendException_IO_MissingAttributes.php | 29 ++ ... => DataBackendException_NoMainAgency.php} | 8 +- ...aBackend_File.php => DataBackend_File.php} | 152 +++---- .../file/FileDataBackendContainer.php | 8 +- .../{BAV_FileParser.php => FileParser.php} | 74 ++-- ...arserContext.php => FileParserContext.php} | 12 +- ...V_FileParserContextException_Undefined.php | 29 -- .../BAV_FileParserException_ParseError.php | 29 -- .../exception/FileParserContextException.php | 29 ++ .../FileParserContextException_Undefined.php} | 2 +- ...rException.php => FileParserException.php} | 2 +- ... => FileParserException_FileNotExists.php} | 2 +- .../exception/FileParserException_IO.php | 29 ++ ...php => FileParserException_ParseError.php} | 2 +- ...ataBackend_PDO.php => DataBackend_PDO.php} | 136 +++--- .../pdo/PDODataBackendContainer.php | 8 +- .../update/AutomaticUpdatePlan.php | 2 +- classes/dataBackend/update/LogUpdatePlan.php | 2 +- classes/dataBackend/update/UpdatePlan.php | 6 +- .../{BAV_Encoding.php => Encoding.php} | 26 +- ...oding_ISO8859.php => Encoding_ISO8859.php} | 6 +- ..._Encoding_Iconv.php => Encoding_Iconv.php} | 8 +- .../{BAV_Encoding_MB.php => Encoding_MB.php} | 4 +- .../exception/EncodingException.php} | 2 +- ....php => EncodingException_Unsupported.php} | 2 +- .../{BAV_Validator.php => Validator.php} | 40 +- ...endent.php => Validator_BankDependent.php} | 2 +- ...alidator_Chain.php => Validator_Chain.php} | 10 +- ..._Iteration.php => Validator_Iteration.php} | 4 +- ...=> Validator_Iteration_Transformation.php} | 2 +- ...d.php => Validator_Iteration_Weighted.php} | 2 +- ...orException.php => ValidatorException.php} | 2 +- ...n_ESER.php => ValidatorException_ESER.php} | 2 +- ...s.php => ValidatorException_NotExists.php} | 8 +- ...php => ValidatorException_OutOfBounds.php} | 2 +- ...{BAV_Validator_00.php => Validator_00.php} | 4 +- ...{BAV_Validator_01.php => Validator_01.php} | 4 +- ...{BAV_Validator_02.php => Validator_02.php} | 4 +- ...{BAV_Validator_03.php => Validator_03.php} | 4 +- ...{BAV_Validator_04.php => Validator_04.php} | 4 +- ...{BAV_Validator_05.php => Validator_05.php} | 4 +- ...{BAV_Validator_06.php => Validator_06.php} | 4 +- ...{BAV_Validator_07.php => Validator_07.php} | 4 +- ...{BAV_Validator_08.php => Validator_08.php} | 4 +- ...{BAV_Validator_09.php => Validator_09.php} | 2 +- ...{BAV_Validator_10.php => Validator_10.php} | 4 +- ...{BAV_Validator_11.php => Validator_11.php} | 4 +- ...{BAV_Validator_13.php => Validator_13.php} | 4 +- ...{BAV_Validator_14.php => Validator_14.php} | 4 +- ...{BAV_Validator_15.php => Validator_15.php} | 4 +- ...{BAV_Validator_16.php => Validator_16.php} | 4 +- ...{BAV_Validator_17.php => Validator_17.php} | 4 +- ...{BAV_Validator_18.php => Validator_18.php} | 4 +- ...{BAV_Validator_19.php => Validator_19.php} | 4 +- ...{BAV_Validator_20.php => Validator_20.php} | 4 +- ...{BAV_Validator_21.php => Validator_21.php} | 4 +- ...{BAV_Validator_22.php => Validator_22.php} | 4 +- ...{BAV_Validator_23.php => Validator_23.php} | 4 +- ...{BAV_Validator_24.php => Validator_24.php} | 4 +- ...{BAV_Validator_25.php => Validator_25.php} | 4 +- ...{BAV_Validator_26.php => Validator_26.php} | 4 +- ...{BAV_Validator_27.php => Validator_27.php} | 8 +- ...{BAV_Validator_28.php => Validator_28.php} | 4 +- ...{BAV_Validator_29.php => Validator_29.php} | 4 +- ...{BAV_Validator_30.php => Validator_30.php} | 4 +- ...{BAV_Validator_31.php => Validator_31.php} | 4 +- ...{BAV_Validator_32.php => Validator_32.php} | 4 +- ...{BAV_Validator_33.php => Validator_33.php} | 4 +- ...{BAV_Validator_34.php => Validator_34.php} | 4 +- ...{BAV_Validator_35.php => Validator_35.php} | 4 +- ...{BAV_Validator_36.php => Validator_36.php} | 4 +- ...{BAV_Validator_37.php => Validator_37.php} | 4 +- ...{BAV_Validator_38.php => Validator_38.php} | 4 +- ...{BAV_Validator_39.php => Validator_39.php} | 4 +- ...{BAV_Validator_40.php => Validator_40.php} | 4 +- ...{BAV_Validator_41.php => Validator_41.php} | 4 +- ...{BAV_Validator_42.php => Validator_42.php} | 4 +- ...{BAV_Validator_43.php => Validator_43.php} | 4 +- ...{BAV_Validator_44.php => Validator_44.php} | 4 +- ...{BAV_Validator_45.php => Validator_45.php} | 4 +- ...{BAV_Validator_46.php => Validator_46.php} | 4 +- ...{BAV_Validator_47.php => Validator_47.php} | 4 +- ...{BAV_Validator_48.php => Validator_48.php} | 4 +- ...{BAV_Validator_49.php => Validator_49.php} | 8 +- ...{BAV_Validator_50.php => Validator_50.php} | 4 +- ...{BAV_Validator_51.php => Validator_51.php} | 22 +- ...AV_Validator_51x.php => Validator_51x.php} | 4 +- ...{BAV_Validator_52.php => Validator_52.php} | 10 +- ...{BAV_Validator_53.php => Validator_53.php} | 2 +- ...{BAV_Validator_54.php => Validator_54.php} | 4 +- ...{BAV_Validator_55.php => Validator_55.php} | 4 +- ...{BAV_Validator_56.php => Validator_56.php} | 4 +- ...{BAV_Validator_57.php => Validator_57.php} | 18 +- ...{BAV_Validator_58.php => Validator_58.php} | 4 +- ...{BAV_Validator_59.php => Validator_59.php} | 4 +- ...{BAV_Validator_60.php => Validator_60.php} | 4 +- ...{BAV_Validator_61.php => Validator_61.php} | 4 +- ...{BAV_Validator_62.php => Validator_62.php} | 4 +- ...{BAV_Validator_63.php => Validator_63.php} | 4 +- ...{BAV_Validator_64.php => Validator_64.php} | 4 +- ...{BAV_Validator_65.php => Validator_65.php} | 4 +- ...{BAV_Validator_66.php => Validator_66.php} | 4 +- ...{BAV_Validator_67.php => Validator_67.php} | 4 +- ...{BAV_Validator_68.php => Validator_68.php} | 12 +- ...{BAV_Validator_69.php => Validator_69.php} | 10 +- ...AV_Validator_69b.php => Validator_69b.php} | 4 +- ...{BAV_Validator_70.php => Validator_70.php} | 4 +- ...{BAV_Validator_71.php => Validator_71.php} | 4 +- ...{BAV_Validator_72.php => Validator_72.php} | 4 +- ...{BAV_Validator_73.php => Validator_73.php} | 12 +- ...{BAV_Validator_74.php => Validator_74.php} | 4 +- ...{BAV_Validator_75.php => Validator_75.php} | 4 +- ...{BAV_Validator_76.php => Validator_76.php} | 4 +- ...{BAV_Validator_77.php => Validator_77.php} | 8 +- ...AV_Validator_77a.php => Validator_77a.php} | 4 +- ...{BAV_Validator_78.php => Validator_78.php} | 4 +- ...{BAV_Validator_79.php => Validator_79.php} | 14 +- ...{BAV_Validator_80.php => Validator_80.php} | 10 +- ...{BAV_Validator_81.php => Validator_81.php} | 8 +- ...{BAV_Validator_82.php => Validator_82.php} | 14 +- ...{BAV_Validator_83.php => Validator_83.php} | 16 +- ...AV_Validator_83x.php => Validator_83x.php} | 4 +- ...{BAV_Validator_84.php => Validator_84.php} | 12 +- ...AV_Validator_84b.php => Validator_84b.php} | 4 +- ...{BAV_Validator_85.php => Validator_85.php} | 16 +- ...{BAV_Validator_86.php => Validator_86.php} | 10 +- ...{BAV_Validator_87.php => Validator_87.php} | 12 +- ...AV_Validator_87a.php => Validator_87a.php} | 2 +- ...AV_Validator_87c.php => Validator_87c.php} | 4 +- ...{BAV_Validator_88.php => Validator_88.php} | 4 +- ...{BAV_Validator_89.php => Validator_89.php} | 8 +- ...{BAV_Validator_90.php => Validator_90.php} | 20 +- ...AV_Validator_90c.php => Validator_90c.php} | 4 +- ...AV_Validator_90d.php => Validator_90d.php} | 4 +- ...AV_Validator_90e.php => Validator_90e.php} | 4 +- ...AV_Validator_90g.php => Validator_90g.php} | 4 +- ...{BAV_Validator_91.php => Validator_91.php} | 6 +- ...{BAV_Validator_92.php => Validator_92.php} | 4 +- ...{BAV_Validator_93.php => Validator_93.php} | 10 +- ...{BAV_Validator_94.php => Validator_94.php} | 4 +- ...{BAV_Validator_95.php => Validator_95.php} | 4 +- ...{BAV_Validator_96.php => Validator_96.php} | 8 +- ...{BAV_Validator_97.php => Validator_97.php} | 2 +- ...{BAV_Validator_98.php => Validator_98.php} | 8 +- ...{BAV_Validator_99.php => Validator_99.php} | 4 +- ...{BAV_Validator_A0.php => Validator_A0.php} | 4 +- ...{BAV_Validator_A1.php => Validator_A1.php} | 4 +- ...{BAV_Validator_A2.php => Validator_A2.php} | 8 +- ...{BAV_Validator_A3.php => Validator_A3.php} | 8 +- ...{BAV_Validator_A4.php => Validator_A4.php} | 14 +- ...AV_Validator_A4b.php => Validator_A4b.php} | 4 +- ...{BAV_Validator_A5.php => Validator_A5.php} | 10 +- ...{BAV_Validator_A6.php => Validator_A6.php} | 14 +- ...{BAV_Validator_A7.php => Validator_A7.php} | 8 +- ...{BAV_Validator_A8.php => Validator_A8.php} | 10 +- ...{BAV_Validator_A9.php => Validator_A9.php} | 8 +- ...{BAV_Validator_B0.php => Validator_B0.php} | 14 +- ...{BAV_Validator_B1.php => Validator_B1.php} | 8 +- ...{BAV_Validator_B2.php => Validator_B2.php} | 14 +- ...{BAV_Validator_B3.php => Validator_B3.php} | 14 +- ...{BAV_Validator_B4.php => Validator_B4.php} | 14 +- ...{BAV_Validator_B5.php => Validator_B5.php} | 10 +- ...{BAV_Validator_B6.php => Validator_B6.php} | 14 +- ...{BAV_Validator_B7.php => Validator_B7.php} | 4 +- ...{BAV_Validator_B8.php => Validator_B8.php} | 14 +- ...{BAV_Validator_B9.php => Validator_B9.php} | 14 +- ...AV_Validator_B9a.php => Validator_B9a.php} | 4 +- ...AV_Validator_B9b.php => Validator_B9b.php} | 4 +- ...{BAV_Validator_C0.php => Validator_C0.php} | 10 +- ...{BAV_Validator_C1.php => Validator_C1.php} | 14 +- ...AV_Validator_C1b.php => Validator_C1b.php} | 4 +- ...{BAV_Validator_C2.php => Validator_C2.php} | 8 +- ...{BAV_Validator_C3.php => Validator_C3.php} | 14 +- ...{BAV_Validator_C4.php => Validator_C4.php} | 14 +- ...{BAV_Validator_C5.php => Validator_C5.php} | 22 +- ...{BAV_Validator_C6.php => Validator_C6.php} | 8 +- ...{BAV_Validator_C7.php => Validator_C7.php} | 8 +- ...{BAV_Validator_C8.php => Validator_C8.php} | 10 +- ...{BAV_Validator_C9.php => Validator_C9.php} | 8 +- ...{BAV_Validator_D0.php => Validator_D0.php} | 10 +- ...{BAV_Validator_D1.php => Validator_D1.php} | 8 +- ...{BAV_Validator_D2.php => Validator_D2.php} | 10 +- ...{BAV_Validator_D3.php => Validator_D3.php} | 8 +- ...{BAV_Validator_D4.php => Validator_D4.php} | 8 +- ...{BAV_Validator_D5.php => Validator_D5.php} | 20 +- ...{BAV_Validator_D6.php => Validator_D6.php} | 10 +- ...{BAV_Validator_D7.php => Validator_D7.php} | 4 +- ...{BAV_Validator_D8.php => Validator_D8.php} | 8 +- ...{BAV_Validator_D9.php => Validator_D9.php} | 10 +- ...{BAV_Validator_E0.php => Validator_E0.php} | 2 +- ...{BAV_Validator_E1.php => Validator_E1.php} | 4 +- ...{BAV_VerifyImport.php => VerifyImport.php} | 38 +- ...erifyException.php => VerifyException.php} | 2 +- ...xception_IO.php => VerifyException_IO.php} | 2 +- .../testAPI/{BAV_TestAPI.php => TestAPI.php} | 20 +- ...AV_TestAPIResult.php => TestAPIResult.php} | 10 +- ...sult_Error.php => TestAPIResult_Error.php} | 6 +- .../{BAV_TestAPI_BAV.php => TestAPI_BAV.php} | 6 +- ..._Kontocheck.php => TestAPI_Kontocheck.php} | 20 +- ...toblzcheck.php => TestAPI_Ktoblzcheck.php} | 16 +- ...tAPIException.php => TestAPIException.php} | 2 +- ...on.php => TestAPIException_Validation.php} | 2 +- ...tAPIException_Validation_BankNotFound.php} | 2 +- ...PIException_Validation_NotInitialized.php} | 2 +- tests/AgencyQueryTest.php | 8 +- tests/BackendContainerTest.php | 4 +- tests/BackendTest.php | 34 +- tests/CrossProjectTest.php | 30 +- tests/DataConstraintTest.php | 4 +- tests/UpdatePlanTest.php | 14 +- tests/ValidatorTest.php | 44 +- tests/VerifyImportTest.php | 20 +- tests/checkAgainstTestAPIs.php | 28 +- 234 files changed, 1370 insertions(+), 1370 deletions(-) rename classes/bank/{BAV_Agency.php => Agency.php} (85%) rename classes/bank/{BAV_Bank.php => Bank.php} (72%) rename classes/bank/exception/{BAV_AgencyException.php => AgencyException.php} (88%) rename classes/bank/exception/{BAV_AgencyException_UndefinedAttribute.php => AgencyException_UndefinedAttribute.php} (90%) rename classes/class/{BAV_ClassFile.php => ClassFile.php} (86%) rename classes/class/exception/{BAV_ClassFileException.php => ClassFileException.php} (94%) rename classes/class/exception/{BAV_ClassFileException_IO.php => ClassFileException_IO.php} (93%) rename classes/class/exception/{BAV_ClassFileException_MissingClass.php => ClassFileException_MissingClass.php} (95%) rename classes/dataBackend/{BAV_DataBackend.php => DataBackend.php} (68%) delete mode 100644 classes/dataBackend/exception/BAV_DataBackendException_IO_MissingAttributes.php rename classes/{encoding/exception/BAV_EncodingException.php => dataBackend/exception/DataBackendException.php} (94%) rename classes/dataBackend/exception/{BAV_DataBackendException_BankNotFound.php => DataBackendException_BankNotFound.php} (94%) rename classes/dataBackend/{file/fileParser/exception/BAV_FileParserContextException.php => exception/DataBackendException_IO.php} (93%) create mode 100644 classes/dataBackend/exception/DataBackendException_IO_MissingAttributes.php rename classes/dataBackend/exception/{BAV_DataBackendException_NoMainAgency.php => DataBackendException_NoMainAgency.php} (87%) rename classes/dataBackend/file/{BAV_DataBackend_File.php => DataBackend_File.php} (74%) rename classes/dataBackend/file/fileParser/{BAV_FileParser.php => FileParser.php} (76%) rename classes/dataBackend/file/fileParser/{BAV_FileParserContext.php => FileParserContext.php} (86%) delete mode 100644 classes/dataBackend/file/fileParser/exception/BAV_FileParserContextException_Undefined.php delete mode 100644 classes/dataBackend/file/fileParser/exception/BAV_FileParserException_ParseError.php create mode 100644 classes/dataBackend/file/fileParser/exception/FileParserContextException.php rename classes/dataBackend/{exception/BAV_DataBackendException_IO.php => file/fileParser/exception/FileParserContextException_Undefined.php} (92%) rename classes/dataBackend/file/fileParser/exception/{BAV_FileParserException.php => FileParserException.php} (94%) rename classes/dataBackend/file/fileParser/exception/{BAV_FileParserException_FileNotExists.php => FileParserException_FileNotExists.php} (94%) create mode 100644 classes/dataBackend/file/fileParser/exception/FileParserException_IO.php rename classes/dataBackend/file/fileParser/exception/{BAV_FileParserException_IO.php => FileParserException_ParseError.php} (93%) rename classes/dataBackend/pdo/{BAV_DataBackend_PDO.php => DataBackend_PDO.php} (78%) rename classes/encoding/{BAV_Encoding.php => Encoding.php} (75%) rename classes/encoding/{BAV_Encoding_ISO8859.php => Encoding_ISO8859.php} (93%) rename classes/encoding/{BAV_Encoding_Iconv.php => Encoding_Iconv.php} (92%) rename classes/encoding/{BAV_Encoding_MB.php => Encoding_MB.php} (95%) rename classes/{dataBackend/exception/BAV_DataBackendException.php => encoding/exception/EncodingException.php} (94%) rename classes/encoding/exception/{BAV_EncodingException_Unsupported.php => EncodingException_Unsupported.php} (94%) rename classes/validator/{BAV_Validator.php => Validator.php} (83%) rename classes/validator/{BAV_Validator_BankDependent.php => Validator_BankDependent.php} (96%) rename classes/validator/{BAV_Validator_Chain.php => Validator_Chain.php} (88%) rename classes/validator/{BAV_Validator_Iteration.php => Validator_Iteration.php} (95%) rename classes/validator/{BAV_Validator_Iteration_Transformation.php => Validator_Iteration_Transformation.php} (96%) rename classes/validator/{BAV_Validator_Iteration_Weighted.php => Validator_Iteration_Weighted.php} (94%) rename classes/validator/exception/{BAV_ValidatorException.php => ValidatorException.php} (94%) rename classes/validator/exception/{BAV_ValidatorException_ESER.php => ValidatorException_ESER.php} (93%) rename classes/validator/exception/{BAV_ValidatorException_NotExists.php => ValidatorException_NotExists.php} (87%) rename classes/validator/exception/{BAV_ValidatorException_OutOfBounds.php => ValidatorException_OutOfBounds.php} (92%) rename classes/validator/validators/{BAV_Validator_00.php => Validator_00.php} (92%) rename classes/validator/validators/{BAV_Validator_01.php => Validator_01.php} (91%) rename classes/validator/validators/{BAV_Validator_02.php => Validator_02.php} (92%) rename classes/validator/validators/{BAV_Validator_03.php => Validator_03.php} (90%) rename classes/validator/validators/{BAV_Validator_04.php => Validator_04.php} (90%) rename classes/validator/validators/{BAV_Validator_05.php => Validator_05.php} (90%) rename classes/validator/validators/{BAV_Validator_06.php => Validator_06.php} (92%) rename classes/validator/validators/{BAV_Validator_07.php => Validator_07.php} (90%) rename classes/validator/validators/{BAV_Validator_08.php => Validator_08.php} (91%) rename classes/validator/validators/{BAV_Validator_09.php => Validator_09.php} (95%) rename classes/validator/validators/{BAV_Validator_10.php => Validator_10.php} (90%) rename classes/validator/validators/{BAV_Validator_11.php => Validator_11.php} (92%) rename classes/validator/validators/{BAV_Validator_13.php => Validator_13.php} (93%) rename classes/validator/validators/{BAV_Validator_14.php => Validator_14.php} (91%) rename classes/validator/validators/{BAV_Validator_15.php => Validator_15.php} (90%) rename classes/validator/validators/{BAV_Validator_16.php => Validator_16.php} (92%) rename classes/validator/validators/{BAV_Validator_17.php => Validator_17.php} (92%) rename classes/validator/validators/{BAV_Validator_18.php => Validator_18.php} (90%) rename classes/validator/validators/{BAV_Validator_19.php => Validator_19.php} (90%) rename classes/validator/validators/{BAV_Validator_20.php => Validator_20.php} (90%) rename classes/validator/validators/{BAV_Validator_21.php => Validator_21.php} (92%) rename classes/validator/validators/{BAV_Validator_22.php => Validator_22.php} (91%) rename classes/validator/validators/{BAV_Validator_23.php => Validator_23.php} (91%) rename classes/validator/validators/{BAV_Validator_24.php => Validator_24.php} (92%) rename classes/validator/validators/{BAV_Validator_25.php => Validator_25.php} (93%) rename classes/validator/validators/{BAV_Validator_26.php => Validator_26.php} (92%) rename classes/validator/validators/{BAV_Validator_27.php => Validator_27.php} (88%) rename classes/validator/validators/{BAV_Validator_28.php => Validator_28.php} (91%) rename classes/validator/validators/{BAV_Validator_29.php => Validator_29.php} (91%) rename classes/validator/validators/{BAV_Validator_30.php => Validator_30.php} (91%) rename classes/validator/validators/{BAV_Validator_31.php => Validator_31.php} (92%) rename classes/validator/validators/{BAV_Validator_32.php => Validator_32.php} (90%) rename classes/validator/validators/{BAV_Validator_33.php => Validator_33.php} (90%) rename classes/validator/validators/{BAV_Validator_34.php => Validator_34.php} (90%) rename classes/validator/validators/{BAV_Validator_35.php => Validator_35.php} (92%) rename classes/validator/validators/{BAV_Validator_36.php => Validator_36.php} (90%) rename classes/validator/validators/{BAV_Validator_37.php => Validator_37.php} (90%) rename classes/validator/validators/{BAV_Validator_38.php => Validator_38.php} (90%) rename classes/validator/validators/{BAV_Validator_39.php => Validator_39.php} (90%) rename classes/validator/validators/{BAV_Validator_40.php => Validator_40.php} (90%) rename classes/validator/validators/{BAV_Validator_41.php => Validator_41.php} (92%) rename classes/validator/validators/{BAV_Validator_42.php => Validator_42.php} (90%) rename classes/validator/validators/{BAV_Validator_43.php => Validator_43.php} (91%) rename classes/validator/validators/{BAV_Validator_44.php => Validator_44.php} (90%) rename classes/validator/validators/{BAV_Validator_45.php => Validator_45.php} (92%) rename classes/validator/validators/{BAV_Validator_46.php => Validator_46.php} (91%) rename classes/validator/validators/{BAV_Validator_47.php => Validator_47.php} (91%) rename classes/validator/validators/{BAV_Validator_48.php => Validator_48.php} (91%) rename classes/validator/validators/{BAV_Validator_49.php => Validator_49.php} (82%) rename classes/validator/validators/{BAV_Validator_50.php => Validator_50.php} (93%) rename classes/validator/validators/{BAV_Validator_51.php => Validator_51.php} (80%) rename classes/validator/validators/{BAV_Validator_51x.php => Validator_51x.php} (92%) rename classes/validator/validators/{BAV_Validator_52.php => Validator_52.php} (87%) rename classes/validator/validators/{BAV_Validator_53.php => Validator_53.php} (95%) rename classes/validator/validators/{BAV_Validator_54.php => Validator_54.php} (91%) rename classes/validator/validators/{BAV_Validator_55.php => Validator_55.php} (90%) rename classes/validator/validators/{BAV_Validator_56.php => Validator_56.php} (91%) rename classes/validator/validators/{BAV_Validator_57.php => Validator_57.php} (91%) rename classes/validator/validators/{BAV_Validator_58.php => Validator_58.php} (91%) rename classes/validator/validators/{BAV_Validator_59.php => Validator_59.php} (91%) rename classes/validator/validators/{BAV_Validator_60.php => Validator_60.php} (90%) rename classes/validator/validators/{BAV_Validator_61.php => Validator_61.php} (93%) rename classes/validator/validators/{BAV_Validator_62.php => Validator_62.php} (92%) rename classes/validator/validators/{BAV_Validator_63.php => Validator_63.php} (93%) rename classes/validator/validators/{BAV_Validator_64.php => Validator_64.php} (91%) rename classes/validator/validators/{BAV_Validator_65.php => Validator_65.php} (92%) rename classes/validator/validators/{BAV_Validator_66.php => Validator_66.php} (92%) rename classes/validator/validators/{BAV_Validator_67.php => Validator_67.php} (91%) rename classes/validator/validators/{BAV_Validator_68.php => Validator_68.php} (85%) rename classes/validator/validators/{BAV_Validator_69.php => Validator_69.php} (83%) rename classes/validator/validators/{BAV_Validator_69b.php => Validator_69b.php} (91%) rename classes/validator/validators/{BAV_Validator_70.php => Validator_70.php} (92%) rename classes/validator/validators/{BAV_Validator_71.php => Validator_71.php} (92%) rename classes/validator/validators/{BAV_Validator_72.php => Validator_72.php} (90%) rename classes/validator/validators/{BAV_Validator_73.php => Validator_73.php} (80%) rename classes/validator/validators/{BAV_Validator_74.php => Validator_74.php} (93%) rename classes/validator/validators/{BAV_Validator_75.php => Validator_75.php} (93%) rename classes/validator/validators/{BAV_Validator_76.php => Validator_76.php} (93%) rename classes/validator/validators/{BAV_Validator_77.php => Validator_77.php} (81%) rename classes/validator/validators/{BAV_Validator_77a.php => Validator_77a.php} (91%) rename classes/validator/validators/{BAV_Validator_78.php => Validator_78.php} (91%) rename classes/validator/validators/{BAV_Validator_79.php => Validator_79.php} (86%) rename classes/validator/validators/{BAV_Validator_80.php => Validator_80.php} (81%) rename classes/validator/validators/{BAV_Validator_81.php => Validator_81.php} (84%) rename classes/validator/validators/{BAV_Validator_82.php => Validator_82.php} (84%) rename classes/validator/validators/{BAV_Validator_83.php => Validator_83.php} (80%) rename classes/validator/validators/{BAV_Validator_83x.php => Validator_83x.php} (92%) rename classes/validator/validators/{BAV_Validator_84.php => Validator_84.php} (80%) rename classes/validator/validators/{BAV_Validator_84b.php => Validator_84b.php} (91%) rename classes/validator/validators/{BAV_Validator_85.php => Validator_85.php} (81%) rename classes/validator/validators/{BAV_Validator_86.php => Validator_86.php} (82%) rename classes/validator/validators/{BAV_Validator_87.php => Validator_87.php} (78%) rename classes/validator/validators/{BAV_Validator_87a.php => Validator_87a.php} (98%) rename classes/validator/validators/{BAV_Validator_87c.php => Validator_87c.php} (91%) rename classes/validator/validators/{BAV_Validator_88.php => Validator_88.php} (91%) rename classes/validator/validators/{BAV_Validator_89.php => Validator_89.php} (88%) rename classes/validator/validators/{BAV_Validator_90.php => Validator_90.php} (72%) rename classes/validator/validators/{BAV_Validator_90c.php => Validator_90c.php} (92%) rename classes/validator/validators/{BAV_Validator_90d.php => Validator_90d.php} (92%) rename classes/validator/validators/{BAV_Validator_90e.php => Validator_90e.php} (91%) rename classes/validator/validators/{BAV_Validator_90g.php => Validator_90g.php} (92%) rename classes/validator/validators/{BAV_Validator_91.php => Validator_91.php} (89%) rename classes/validator/validators/{BAV_Validator_92.php => Validator_92.php} (90%) rename classes/validator/validators/{BAV_Validator_93.php => Validator_93.php} (83%) rename classes/validator/validators/{BAV_Validator_94.php => Validator_94.php} (90%) rename classes/validator/validators/{BAV_Validator_95.php => Validator_95.php} (92%) rename classes/validator/validators/{BAV_Validator_96.php => Validator_96.php} (84%) rename classes/validator/validators/{BAV_Validator_97.php => Validator_97.php} (96%) rename classes/validator/validators/{BAV_Validator_98.php => Validator_98.php} (81%) rename classes/validator/validators/{BAV_Validator_99.php => Validator_99.php} (91%) rename classes/validator/validators/{BAV_Validator_A0.php => Validator_A0.php} (92%) rename classes/validator/validators/{BAV_Validator_A1.php => Validator_A1.php} (91%) rename classes/validator/validators/{BAV_Validator_A2.php => Validator_A2.php} (81%) rename classes/validator/validators/{BAV_Validator_A3.php => Validator_A3.php} (82%) rename classes/validator/validators/{BAV_Validator_A4.php => Validator_A4.php} (78%) rename classes/validator/validators/{BAV_Validator_A4b.php => Validator_A4b.php} (92%) rename classes/validator/validators/{BAV_Validator_A5.php => Validator_A5.php} (80%) rename classes/validator/validators/{BAV_Validator_A6.php => Validator_A6.php} (84%) rename classes/validator/validators/{BAV_Validator_A7.php => Validator_A7.php} (80%) rename classes/validator/validators/{BAV_Validator_A8.php => Validator_A8.php} (83%) rename classes/validator/validators/{BAV_Validator_A9.php => Validator_A9.php} (82%) rename classes/validator/validators/{BAV_Validator_B0.php => Validator_B0.php} (85%) rename classes/validator/validators/{BAV_Validator_B1.php => Validator_B1.php} (81%) rename classes/validator/validators/{BAV_Validator_B2.php => Validator_B2.php} (84%) rename classes/validator/validators/{BAV_Validator_B3.php => Validator_B3.php} (84%) rename classes/validator/validators/{BAV_Validator_B4.php => Validator_B4.php} (84%) rename classes/validator/validators/{BAV_Validator_B5.php => Validator_B5.php} (80%) rename classes/validator/validators/{BAV_Validator_B6.php => Validator_B6.php} (83%) rename classes/validator/validators/{BAV_Validator_B7.php => Validator_B7.php} (92%) rename classes/validator/validators/{BAV_Validator_B8.php => Validator_B8.php} (78%) rename classes/validator/validators/{BAV_Validator_B9.php => Validator_B9.php} (84%) rename classes/validator/validators/{BAV_Validator_B9a.php => Validator_B9a.php} (92%) rename classes/validator/validators/{BAV_Validator_B9b.php => Validator_B9b.php} (92%) rename classes/validator/validators/{BAV_Validator_C0.php => Validator_C0.php} (78%) rename classes/validator/validators/{BAV_Validator_C1.php => Validator_C1.php} (83%) rename classes/validator/validators/{BAV_Validator_C1b.php => Validator_C1b.php} (91%) rename classes/validator/validators/{BAV_Validator_C2.php => Validator_C2.php} (81%) rename classes/validator/validators/{BAV_Validator_C3.php => Validator_C3.php} (84%) rename classes/validator/validators/{BAV_Validator_C4.php => Validator_C4.php} (84%) rename classes/validator/validators/{BAV_Validator_C5.php => Validator_C5.php} (84%) rename classes/validator/validators/{BAV_Validator_C6.php => Validator_C6.php} (92%) rename classes/validator/validators/{BAV_Validator_C7.php => Validator_C7.php} (81%) rename classes/validator/validators/{BAV_Validator_C8.php => Validator_C8.php} (75%) rename classes/validator/validators/{BAV_Validator_C9.php => Validator_C9.php} (79%) rename classes/validator/validators/{BAV_Validator_D0.php => Validator_D0.php} (84%) rename classes/validator/validators/{BAV_Validator_D1.php => Validator_D1.php} (92%) rename classes/validator/validators/{BAV_Validator_D2.php => Validator_D2.php} (79%) rename classes/validator/validators/{BAV_Validator_D3.php => Validator_D3.php} (82%) rename classes/validator/validators/{BAV_Validator_D4.php => Validator_D4.php} (89%) rename classes/validator/validators/{BAV_Validator_D5.php => Validator_D5.php} (82%) rename classes/validator/validators/{BAV_Validator_D6.php => Validator_D6.php} (78%) rename classes/validator/validators/{BAV_Validator_D7.php => Validator_D7.php} (92%) rename classes/validator/validators/{BAV_Validator_D8.php => Validator_D8.php} (88%) rename classes/validator/validators/{BAV_Validator_D9.php => Validator_D9.php} (78%) rename classes/validator/validators/{BAV_Validator_E0.php => Validator_E0.php} (95%) rename classes/validator/validators/{BAV_Validator_E1.php => Validator_E1.php} (93%) rename classes/verify/{BAV_VerifyImport.php => VerifyImport.php} (84%) rename classes/verify/exception/{BAV_VerifyException.php => VerifyException.php} (94%) rename classes/verify/exception/{BAV_VerifyException_IO.php => VerifyException_IO.php} (94%) rename classes/verify/testAPI/{BAV_TestAPI.php => TestAPI.php} (78%) rename classes/verify/testAPI/{BAV_TestAPIResult.php => TestAPIResult.php} (89%) rename classes/verify/testAPI/{BAV_TestAPIResult_Error.php => TestAPIResult_Error.php} (88%) rename classes/verify/testAPI/{BAV_TestAPI_BAV.php => TestAPI_BAV.php} (89%) rename classes/verify/testAPI/{BAV_TestAPI_Kontocheck.php => TestAPI_Kontocheck.php} (74%) rename classes/verify/testAPI/{BAV_TestAPI_Ktoblzcheck.php => TestAPI_Ktoblzcheck.php} (79%) rename classes/verify/testAPI/exception/{BAV_TestAPIException.php => TestAPIException.php} (94%) rename classes/verify/testAPI/exception/{BAV_TestAPIException_Validation.php => TestAPIException_Validation.php} (93%) rename classes/verify/testAPI/exception/{BAV_TestAPIException_Validation_BankNotFound.php => TestAPIException_Validation_BankNotFound.php} (91%) rename classes/verify/testAPI/exception/{BAV_TestAPIException_Validation_NotInitialized.php => TestAPIException_Validation_NotInitialized.php} (90%) diff --git a/autoloader/index/0.php b/autoloader/index/0.php index b6acf292..ef4bc4ea 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -15,224 +15,224 @@ */ return array( - 'bav_bank' => '../classes/bank/BAV_Bank.php', - 'bav_agency' => '../classes/bank/BAV_Agency.php', + 'bank' => '../classes/bank/Bank.php', + 'agency' => '../classes/bank/Agency.php', + 'testapi' => '../classes/verify/testAPI/TestAPI.php', + 'encoding' => '../classes/encoding/Encoding.php', + 'classfile' => '../classes/class/ClassFile.php', + 'validator' => '../classes/validator/Validator.php', + 'fileparser' => '../classes/dataBackend/file/fileParser/FileParser.php', 'malkusch\bav\updateplan' => '../classes/dataBackend/update/UpdatePlan.php', - 'bav_testapi' => '../classes/verify/testAPI/BAV_TestAPI.php', - 'bav_encoding' => '../classes/encoding/BAV_Encoding.php', + 'databackend' => '../classes/dataBackend/DataBackend.php', + 'encoding_mb' => '../classes/encoding/Encoding_MB.php', + 'testapi_bav' => '../classes/verify/testAPI/TestAPI_BAV.php', 'malkusch\bav\bavexception' => '../classes/exception/BAVException.php', - 'bav_classfile' => '../classes/class/BAV_ClassFile.php', + 'validator_00' => '../classes/validator/validators/Validator_00.php', + 'validator_01' => '../classes/validator/validators/Validator_01.php', + 'validator_02' => '../classes/validator/validators/Validator_02.php', + 'validator_03' => '../classes/validator/validators/Validator_03.php', + 'validator_04' => '../classes/validator/validators/Validator_04.php', + 'validator_05' => '../classes/validator/validators/Validator_05.php', + 'validator_06' => '../classes/validator/validators/Validator_06.php', + 'validator_07' => '../classes/validator/validators/Validator_07.php', + 'validator_08' => '../classes/validator/validators/Validator_08.php', + 'validator_09' => '../classes/validator/validators/Validator_09.php', + 'validator_10' => '../classes/validator/validators/Validator_10.php', + 'validator_11' => '../classes/validator/validators/Validator_11.php', + 'validator_13' => '../classes/validator/validators/Validator_13.php', + 'validator_14' => '../classes/validator/validators/Validator_14.php', + 'validator_15' => '../classes/validator/validators/Validator_15.php', + 'validator_16' => '../classes/validator/validators/Validator_16.php', + 'validator_17' => '../classes/validator/validators/Validator_17.php', + 'validator_18' => '../classes/validator/validators/Validator_18.php', + 'validator_19' => '../classes/validator/validators/Validator_19.php', + 'validator_20' => '../classes/validator/validators/Validator_20.php', + 'validator_21' => '../classes/validator/validators/Validator_21.php', + 'validator_22' => '../classes/validator/validators/Validator_22.php', + 'validator_23' => '../classes/validator/validators/Validator_23.php', + 'validator_24' => '../classes/validator/validators/Validator_24.php', + 'validator_25' => '../classes/validator/validators/Validator_25.php', + 'validator_26' => '../classes/validator/validators/Validator_26.php', + 'validator_27' => '../classes/validator/validators/Validator_27.php', + 'validator_28' => '../classes/validator/validators/Validator_28.php', + 'validator_29' => '../classes/validator/validators/Validator_29.php', + 'validator_30' => '../classes/validator/validators/Validator_30.php', + 'validator_31' => '../classes/validator/validators/Validator_31.php', + 'validator_32' => '../classes/validator/validators/Validator_32.php', + 'validator_33' => '../classes/validator/validators/Validator_33.php', + 'validator_34' => '../classes/validator/validators/Validator_34.php', + 'validator_35' => '../classes/validator/validators/Validator_35.php', + 'validator_36' => '../classes/validator/validators/Validator_36.php', + 'validator_37' => '../classes/validator/validators/Validator_37.php', + 'validator_38' => '../classes/validator/validators/Validator_38.php', + 'validator_39' => '../classes/validator/validators/Validator_39.php', + 'validator_40' => '../classes/validator/validators/Validator_40.php', + 'validator_41' => '../classes/validator/validators/Validator_41.php', + 'validator_42' => '../classes/validator/validators/Validator_42.php', + 'validator_43' => '../classes/validator/validators/Validator_43.php', + 'validator_44' => '../classes/validator/validators/Validator_44.php', + 'validator_45' => '../classes/validator/validators/Validator_45.php', + 'validator_46' => '../classes/validator/validators/Validator_46.php', + 'validator_47' => '../classes/validator/validators/Validator_47.php', + 'validator_48' => '../classes/validator/validators/Validator_48.php', + 'validator_49' => '../classes/validator/validators/Validator_49.php', + 'validator_50' => '../classes/validator/validators/Validator_50.php', + 'validator_51' => '../classes/validator/validators/Validator_51.php', + 'validator_52' => '../classes/validator/validators/Validator_52.php', + 'validator_53' => '../classes/validator/validators/Validator_53.php', + 'validator_54' => '../classes/validator/validators/Validator_54.php', + 'validator_55' => '../classes/validator/validators/Validator_55.php', + 'validator_56' => '../classes/validator/validators/Validator_56.php', + 'validator_57' => '../classes/validator/validators/Validator_57.php', + 'validator_58' => '../classes/validator/validators/Validator_58.php', + 'validator_59' => '../classes/validator/validators/Validator_59.php', + 'validator_60' => '../classes/validator/validators/Validator_60.php', + 'validator_61' => '../classes/validator/validators/Validator_61.php', + 'validator_62' => '../classes/validator/validators/Validator_62.php', + 'validator_63' => '../classes/validator/validators/Validator_63.php', + 'validator_64' => '../classes/validator/validators/Validator_64.php', + 'validator_65' => '../classes/validator/validators/Validator_65.php', + 'validator_66' => '../classes/validator/validators/Validator_66.php', + 'validator_67' => '../classes/validator/validators/Validator_67.php', + 'validator_68' => '../classes/validator/validators/Validator_68.php', + 'validator_69' => '../classes/validator/validators/Validator_69.php', + 'validator_70' => '../classes/validator/validators/Validator_70.php', + 'validator_71' => '../classes/validator/validators/Validator_71.php', + 'validator_72' => '../classes/validator/validators/Validator_72.php', + 'validator_73' => '../classes/validator/validators/Validator_73.php', + 'validator_74' => '../classes/validator/validators/Validator_74.php', + 'validator_75' => '../classes/validator/validators/Validator_75.php', + 'validator_76' => '../classes/validator/validators/Validator_76.php', + 'validator_77' => '../classes/validator/validators/Validator_77.php', + 'validator_78' => '../classes/validator/validators/Validator_78.php', + 'validator_79' => '../classes/validator/validators/Validator_79.php', + 'validator_80' => '../classes/validator/validators/Validator_80.php', + 'validator_81' => '../classes/validator/validators/Validator_81.php', + 'validator_82' => '../classes/validator/validators/Validator_82.php', + 'validator_83' => '../classes/validator/validators/Validator_83.php', + 'validator_84' => '../classes/validator/validators/Validator_84.php', + 'validator_85' => '../classes/validator/validators/Validator_85.php', + 'validator_86' => '../classes/validator/validators/Validator_86.php', + 'validator_87' => '../classes/validator/validators/Validator_87.php', + 'validator_88' => '../classes/validator/validators/Validator_88.php', + 'validator_89' => '../classes/validator/validators/Validator_89.php', + 'validator_90' => '../classes/validator/validators/Validator_90.php', + 'validator_91' => '../classes/validator/validators/Validator_91.php', + 'validator_92' => '../classes/validator/validators/Validator_92.php', + 'validator_93' => '../classes/validator/validators/Validator_93.php', + 'validator_94' => '../classes/validator/validators/Validator_94.php', + 'validator_95' => '../classes/validator/validators/Validator_95.php', + 'validator_96' => '../classes/validator/validators/Validator_96.php', + 'validator_97' => '../classes/validator/validators/Validator_97.php', + 'validator_98' => '../classes/validator/validators/Validator_98.php', + 'validator_99' => '../classes/validator/validators/Validator_99.php', + 'validator_a0' => '../classes/validator/validators/Validator_A0.php', + 'validator_a1' => '../classes/validator/validators/Validator_A1.php', + 'validator_a2' => '../classes/validator/validators/Validator_A2.php', + 'validator_a3' => '../classes/validator/validators/Validator_A3.php', + 'validator_a4' => '../classes/validator/validators/Validator_A4.php', + 'validator_a5' => '../classes/validator/validators/Validator_A5.php', + 'validator_a6' => '../classes/validator/validators/Validator_A6.php', + 'validator_a7' => '../classes/validator/validators/Validator_A7.php', + 'validator_a8' => '../classes/validator/validators/Validator_A8.php', + 'validator_a9' => '../classes/validator/validators/Validator_A9.php', + 'validator_b0' => '../classes/validator/validators/Validator_B0.php', + 'validator_b1' => '../classes/validator/validators/Validator_B1.php', + 'validator_b2' => '../classes/validator/validators/Validator_B2.php', + 'validator_b3' => '../classes/validator/validators/Validator_B3.php', + 'validator_b4' => '../classes/validator/validators/Validator_B4.php', + 'validator_b5' => '../classes/validator/validators/Validator_B5.php', + 'validator_b6' => '../classes/validator/validators/Validator_B6.php', + 'validator_b7' => '../classes/validator/validators/Validator_B7.php', + 'validator_b8' => '../classes/validator/validators/Validator_B8.php', + 'validator_b9' => '../classes/validator/validators/Validator_B9.php', + 'validator_c0' => '../classes/validator/validators/Validator_C0.php', + 'validator_c1' => '../classes/validator/validators/Validator_C1.php', + 'validator_c2' => '../classes/validator/validators/Validator_C2.php', + 'validator_c3' => '../classes/validator/validators/Validator_C3.php', + 'validator_c4' => '../classes/validator/validators/Validator_C4.php', + 'validator_c5' => '../classes/validator/validators/Validator_C5.php', + 'validator_c6' => '../classes/validator/validators/Validator_C6.php', + 'validator_c7' => '../classes/validator/validators/Validator_C7.php', + 'validator_c8' => '../classes/validator/validators/Validator_C8.php', + 'validator_c9' => '../classes/validator/validators/Validator_C9.php', + 'validator_d0' => '../classes/validator/validators/Validator_D0.php', + 'validator_d1' => '../classes/validator/validators/Validator_D1.php', + 'validator_d2' => '../classes/validator/validators/Validator_D2.php', + 'validator_d3' => '../classes/validator/validators/Validator_D3.php', + 'validator_d4' => '../classes/validator/validators/Validator_D4.php', + 'validator_d5' => '../classes/validator/validators/Validator_D5.php', + 'validator_d6' => '../classes/validator/validators/Validator_D6.php', + 'validator_d7' => '../classes/validator/validators/Validator_D7.php', + 'validator_d8' => '../classes/validator/validators/Validator_D8.php', + 'validator_d9' => '../classes/validator/validators/Validator_D9.php', + 'validator_e0' => '../classes/validator/validators/Validator_E0.php', + 'validator_e1' => '../classes/validator/validators/Validator_E1.php', + 'verifyimport' => '../classes/verify/VerifyImport.php', 'malkusch\bav\configuration' => '../classes/configuration/Configuration.php', 'malkusch\bav\logupdateplan' => '../classes/dataBackend/update/LogUpdatePlan.php', - 'bav_validator' => '../classes/validator/BAV_Validator.php', - 'bav_fileparser' => '../classes/dataBackend/file/fileParser/BAV_FileParser.php', - 'bav_databackend' => '../classes/dataBackend/BAV_DataBackend.php', - 'bav_encoding_mb' => '../classes/encoding/BAV_Encoding_MB.php', - 'bav_testapi_bav' => '../classes/verify/testAPI/BAV_TestAPI_BAV.php', - 'bav_validator_00' => '../classes/validator/validators/BAV_Validator_00.php', - 'bav_validator_01' => '../classes/validator/validators/BAV_Validator_01.php', - 'bav_validator_02' => '../classes/validator/validators/BAV_Validator_02.php', - 'bav_validator_03' => '../classes/validator/validators/BAV_Validator_03.php', - 'bav_validator_04' => '../classes/validator/validators/BAV_Validator_04.php', - 'bav_validator_05' => '../classes/validator/validators/BAV_Validator_05.php', - 'bav_validator_06' => '../classes/validator/validators/BAV_Validator_06.php', - 'bav_validator_07' => '../classes/validator/validators/BAV_Validator_07.php', - 'bav_validator_08' => '../classes/validator/validators/BAV_Validator_08.php', - 'bav_validator_09' => '../classes/validator/validators/BAV_Validator_09.php', - 'bav_validator_10' => '../classes/validator/validators/BAV_Validator_10.php', - 'bav_validator_11' => '../classes/validator/validators/BAV_Validator_11.php', - 'bav_validator_13' => '../classes/validator/validators/BAV_Validator_13.php', - 'bav_validator_14' => '../classes/validator/validators/BAV_Validator_14.php', - 'bav_validator_15' => '../classes/validator/validators/BAV_Validator_15.php', - 'bav_validator_16' => '../classes/validator/validators/BAV_Validator_16.php', - 'bav_validator_17' => '../classes/validator/validators/BAV_Validator_17.php', - 'bav_validator_18' => '../classes/validator/validators/BAV_Validator_18.php', - 'bav_validator_19' => '../classes/validator/validators/BAV_Validator_19.php', - 'bav_validator_20' => '../classes/validator/validators/BAV_Validator_20.php', - 'bav_validator_21' => '../classes/validator/validators/BAV_Validator_21.php', - 'bav_validator_22' => '../classes/validator/validators/BAV_Validator_22.php', - 'bav_validator_23' => '../classes/validator/validators/BAV_Validator_23.php', - 'bav_validator_24' => '../classes/validator/validators/BAV_Validator_24.php', - 'bav_validator_25' => '../classes/validator/validators/BAV_Validator_25.php', - 'bav_validator_26' => '../classes/validator/validators/BAV_Validator_26.php', - 'bav_validator_27' => '../classes/validator/validators/BAV_Validator_27.php', - 'bav_validator_28' => '../classes/validator/validators/BAV_Validator_28.php', - 'bav_validator_29' => '../classes/validator/validators/BAV_Validator_29.php', - 'bav_validator_30' => '../classes/validator/validators/BAV_Validator_30.php', - 'bav_validator_31' => '../classes/validator/validators/BAV_Validator_31.php', - 'bav_validator_32' => '../classes/validator/validators/BAV_Validator_32.php', - 'bav_validator_33' => '../classes/validator/validators/BAV_Validator_33.php', - 'bav_validator_34' => '../classes/validator/validators/BAV_Validator_34.php', - 'bav_validator_35' => '../classes/validator/validators/BAV_Validator_35.php', - 'bav_validator_36' => '../classes/validator/validators/BAV_Validator_36.php', - 'bav_validator_37' => '../classes/validator/validators/BAV_Validator_37.php', - 'bav_validator_38' => '../classes/validator/validators/BAV_Validator_38.php', - 'bav_validator_39' => '../classes/validator/validators/BAV_Validator_39.php', - 'bav_validator_40' => '../classes/validator/validators/BAV_Validator_40.php', - 'bav_validator_41' => '../classes/validator/validators/BAV_Validator_41.php', - 'bav_validator_42' => '../classes/validator/validators/BAV_Validator_42.php', - 'bav_validator_43' => '../classes/validator/validators/BAV_Validator_43.php', - 'bav_validator_44' => '../classes/validator/validators/BAV_Validator_44.php', - 'bav_validator_45' => '../classes/validator/validators/BAV_Validator_45.php', - 'bav_validator_46' => '../classes/validator/validators/BAV_Validator_46.php', - 'bav_validator_47' => '../classes/validator/validators/BAV_Validator_47.php', - 'bav_validator_48' => '../classes/validator/validators/BAV_Validator_48.php', - 'bav_validator_49' => '../classes/validator/validators/BAV_Validator_49.php', - 'bav_validator_50' => '../classes/validator/validators/BAV_Validator_50.php', - 'bav_validator_51' => '../classes/validator/validators/BAV_Validator_51.php', - 'bav_validator_52' => '../classes/validator/validators/BAV_Validator_52.php', - 'bav_validator_53' => '../classes/validator/validators/BAV_Validator_53.php', - 'bav_validator_54' => '../classes/validator/validators/BAV_Validator_54.php', - 'bav_validator_55' => '../classes/validator/validators/BAV_Validator_55.php', - 'bav_validator_56' => '../classes/validator/validators/BAV_Validator_56.php', - 'bav_validator_57' => '../classes/validator/validators/BAV_Validator_57.php', - 'bav_validator_58' => '../classes/validator/validators/BAV_Validator_58.php', - 'bav_validator_59' => '../classes/validator/validators/BAV_Validator_59.php', - 'bav_validator_60' => '../classes/validator/validators/BAV_Validator_60.php', - 'bav_validator_61' => '../classes/validator/validators/BAV_Validator_61.php', - 'bav_validator_62' => '../classes/validator/validators/BAV_Validator_62.php', - 'bav_validator_63' => '../classes/validator/validators/BAV_Validator_63.php', - 'bav_validator_64' => '../classes/validator/validators/BAV_Validator_64.php', - 'bav_validator_65' => '../classes/validator/validators/BAV_Validator_65.php', - 'bav_validator_66' => '../classes/validator/validators/BAV_Validator_66.php', - 'bav_validator_67' => '../classes/validator/validators/BAV_Validator_67.php', - 'bav_validator_68' => '../classes/validator/validators/BAV_Validator_68.php', - 'bav_validator_69' => '../classes/validator/validators/BAV_Validator_69.php', - 'bav_validator_70' => '../classes/validator/validators/BAV_Validator_70.php', - 'bav_validator_71' => '../classes/validator/validators/BAV_Validator_71.php', - 'bav_validator_72' => '../classes/validator/validators/BAV_Validator_72.php', - 'bav_validator_73' => '../classes/validator/validators/BAV_Validator_73.php', - 'bav_validator_74' => '../classes/validator/validators/BAV_Validator_74.php', - 'bav_validator_75' => '../classes/validator/validators/BAV_Validator_75.php', - 'bav_validator_76' => '../classes/validator/validators/BAV_Validator_76.php', - 'bav_validator_77' => '../classes/validator/validators/BAV_Validator_77.php', - 'bav_validator_78' => '../classes/validator/validators/BAV_Validator_78.php', - 'bav_validator_79' => '../classes/validator/validators/BAV_Validator_79.php', - 'bav_validator_80' => '../classes/validator/validators/BAV_Validator_80.php', - 'bav_validator_81' => '../classes/validator/validators/BAV_Validator_81.php', - 'bav_validator_82' => '../classes/validator/validators/BAV_Validator_82.php', - 'bav_validator_83' => '../classes/validator/validators/BAV_Validator_83.php', - 'bav_validator_84' => '../classes/validator/validators/BAV_Validator_84.php', - 'bav_validator_85' => '../classes/validator/validators/BAV_Validator_85.php', - 'bav_validator_86' => '../classes/validator/validators/BAV_Validator_86.php', - 'bav_validator_87' => '../classes/validator/validators/BAV_Validator_87.php', - 'bav_validator_88' => '../classes/validator/validators/BAV_Validator_88.php', - 'bav_validator_89' => '../classes/validator/validators/BAV_Validator_89.php', - 'bav_validator_90' => '../classes/validator/validators/BAV_Validator_90.php', - 'bav_validator_91' => '../classes/validator/validators/BAV_Validator_91.php', - 'bav_validator_92' => '../classes/validator/validators/BAV_Validator_92.php', - 'bav_validator_93' => '../classes/validator/validators/BAV_Validator_93.php', - 'bav_validator_94' => '../classes/validator/validators/BAV_Validator_94.php', - 'bav_validator_95' => '../classes/validator/validators/BAV_Validator_95.php', - 'bav_validator_96' => '../classes/validator/validators/BAV_Validator_96.php', - 'bav_validator_97' => '../classes/validator/validators/BAV_Validator_97.php', - 'bav_validator_98' => '../classes/validator/validators/BAV_Validator_98.php', - 'bav_validator_99' => '../classes/validator/validators/BAV_Validator_99.php', - 'bav_validator_a0' => '../classes/validator/validators/BAV_Validator_A0.php', - 'bav_validator_a1' => '../classes/validator/validators/BAV_Validator_A1.php', - 'bav_validator_a2' => '../classes/validator/validators/BAV_Validator_A2.php', - 'bav_validator_a3' => '../classes/validator/validators/BAV_Validator_A3.php', - 'bav_validator_a4' => '../classes/validator/validators/BAV_Validator_A4.php', - 'bav_validator_a5' => '../classes/validator/validators/BAV_Validator_A5.php', - 'bav_validator_a6' => '../classes/validator/validators/BAV_Validator_A6.php', - 'bav_validator_a7' => '../classes/validator/validators/BAV_Validator_A7.php', - 'bav_validator_a8' => '../classes/validator/validators/BAV_Validator_A8.php', - 'bav_validator_a9' => '../classes/validator/validators/BAV_Validator_A9.php', - 'bav_validator_b0' => '../classes/validator/validators/BAV_Validator_B0.php', - 'bav_validator_b1' => '../classes/validator/validators/BAV_Validator_B1.php', - 'bav_validator_b2' => '../classes/validator/validators/BAV_Validator_B2.php', - 'bav_validator_b3' => '../classes/validator/validators/BAV_Validator_B3.php', - 'bav_validator_b4' => '../classes/validator/validators/BAV_Validator_B4.php', - 'bav_validator_b5' => '../classes/validator/validators/BAV_Validator_B5.php', - 'bav_validator_b6' => '../classes/validator/validators/BAV_Validator_B6.php', - 'bav_validator_b7' => '../classes/validator/validators/BAV_Validator_B7.php', - 'bav_validator_b8' => '../classes/validator/validators/BAV_Validator_B8.php', - 'bav_validator_b9' => '../classes/validator/validators/BAV_Validator_B9.php', - 'bav_validator_c0' => '../classes/validator/validators/BAV_Validator_C0.php', - 'bav_validator_c1' => '../classes/validator/validators/BAV_Validator_C1.php', - 'bav_validator_c2' => '../classes/validator/validators/BAV_Validator_C2.php', - 'bav_validator_c3' => '../classes/validator/validators/BAV_Validator_C3.php', - 'bav_validator_c4' => '../classes/validator/validators/BAV_Validator_C4.php', - 'bav_validator_c5' => '../classes/validator/validators/BAV_Validator_C5.php', - 'bav_validator_c6' => '../classes/validator/validators/BAV_Validator_C6.php', - 'bav_validator_c7' => '../classes/validator/validators/BAV_Validator_C7.php', - 'bav_validator_c8' => '../classes/validator/validators/BAV_Validator_C8.php', - 'bav_validator_c9' => '../classes/validator/validators/BAV_Validator_C9.php', - 'bav_validator_d0' => '../classes/validator/validators/BAV_Validator_D0.php', - 'bav_validator_d1' => '../classes/validator/validators/BAV_Validator_D1.php', - 'bav_validator_d2' => '../classes/validator/validators/BAV_Validator_D2.php', - 'bav_validator_d3' => '../classes/validator/validators/BAV_Validator_D3.php', - 'bav_validator_d4' => '../classes/validator/validators/BAV_Validator_D4.php', - 'bav_validator_d5' => '../classes/validator/validators/BAV_Validator_D5.php', - 'bav_validator_d6' => '../classes/validator/validators/BAV_Validator_D6.php', - 'bav_validator_d7' => '../classes/validator/validators/BAV_Validator_D7.php', - 'bav_validator_d8' => '../classes/validator/validators/BAV_Validator_D8.php', - 'bav_validator_d9' => '../classes/validator/validators/BAV_Validator_D9.php', - 'bav_validator_e0' => '../classes/validator/validators/BAV_Validator_E0.php', - 'bav_validator_e1' => '../classes/validator/validators/BAV_Validator_E1.php', - 'bav_verifyimport' => '../classes/verify/BAV_VerifyImport.php', - 'bav_validator_51x' => '../classes/validator/validators/BAV_Validator_51x.php', - 'bav_validator_69b' => '../classes/validator/validators/BAV_Validator_69b.php', - 'bav_validator_77a' => '../classes/validator/validators/BAV_Validator_77a.php', - 'bav_validator_83x' => '../classes/validator/validators/BAV_Validator_83x.php', - 'bav_validator_84b' => '../classes/validator/validators/BAV_Validator_84b.php', - 'bav_validator_87a' => '../classes/validator/validators/BAV_Validator_87a.php', - 'bav_validator_87c' => '../classes/validator/validators/BAV_Validator_87c.php', - 'bav_validator_90c' => '../classes/validator/validators/BAV_Validator_90c.php', - 'bav_validator_90d' => '../classes/validator/validators/BAV_Validator_90d.php', - 'bav_validator_90e' => '../classes/validator/validators/BAV_Validator_90e.php', - 'bav_validator_90g' => '../classes/validator/validators/BAV_Validator_90g.php', - 'bav_validator_a4b' => '../classes/validator/validators/BAV_Validator_A4b.php', - 'bav_validator_b9a' => '../classes/validator/validators/BAV_Validator_B9a.php', - 'bav_validator_b9b' => '../classes/validator/validators/BAV_Validator_B9b.php', - 'bav_validator_c1b' => '../classes/validator/validators/BAV_Validator_C1b.php', - 'bav_testapiresult' => '../classes/verify/testAPI/BAV_TestAPIResult.php', - 'bav_encoding_iconv' => '../classes/encoding/BAV_Encoding_Iconv.php', - 'bav_agencyexception' => '../classes/bank/exception/BAV_AgencyException.php', - 'bav_databackend_pdo' => '../classes/dataBackend/pdo/BAV_DataBackend_PDO.php', + 'validator_51x' => '../classes/validator/validators/Validator_51x.php', + 'validator_69b' => '../classes/validator/validators/Validator_69b.php', + 'validator_77a' => '../classes/validator/validators/Validator_77a.php', + 'validator_83x' => '../classes/validator/validators/Validator_83x.php', + 'validator_84b' => '../classes/validator/validators/Validator_84b.php', + 'validator_87a' => '../classes/validator/validators/Validator_87a.php', + 'validator_87c' => '../classes/validator/validators/Validator_87c.php', + 'validator_90c' => '../classes/validator/validators/Validator_90c.php', + 'validator_90d' => '../classes/validator/validators/Validator_90d.php', + 'validator_90e' => '../classes/validator/validators/Validator_90e.php', + 'validator_90g' => '../classes/validator/validators/Validator_90g.php', + 'validator_a4b' => '../classes/validator/validators/Validator_A4b.php', + 'validator_b9a' => '../classes/validator/validators/Validator_B9a.php', + 'validator_b9b' => '../classes/validator/validators/Validator_B9b.php', + 'validator_c1b' => '../classes/validator/validators/Validator_C1b.php', + 'testapiresult' => '../classes/verify/testAPI/TestAPIResult.php', + 'encoding_iconv' => '../classes/encoding/Encoding_Iconv.php', + 'agencyexception' => '../classes/bank/exception/AgencyException.php', + 'databackend_pdo' => '../classes/dataBackend/pdo/DataBackend_PDO.php', + 'validator_chain' => '../classes/validator/Validator_Chain.php', + 'verifyexception' => '../classes/verify/exception/VerifyException.php', + 'databackend_file' => '../classes/dataBackend/file/DataBackend_File.php', + 'encoding_iso8859' => '../classes/encoding/Encoding_ISO8859.php', + 'testapiexception' => '../classes/verify/testAPI/exception/TestAPIException.php', + 'fileparsercontext' => '../classes/dataBackend/file/fileParser/FileParserContext.php', + 'encodingexception' => '../classes/encoding/exception/EncodingException.php', + 'classfileexception' => '../classes/class/exception/ClassFileException.php', + 'validatorexception' => '../classes/validator/exception/ValidatorException.php', + 'verifyexception_io' => '../classes/verify/exception/VerifyException_IO.php', + 'testapi_kontocheck' => '../classes/verify/testAPI/TestAPI_Kontocheck.php', + 'fileparserexception' => '../classes/dataBackend/file/fileParser/exception/FileParserException.php', 'malkusch\bav\automaticupdateplan' => '../classes/dataBackend/update/AutomaticUpdatePlan.php', - 'bav_validator_chain' => '../classes/validator/BAV_Validator_Chain.php', - 'bav_verifyexception' => '../classes/verify/exception/BAV_VerifyException.php', + 'validator_iteration' => '../classes/validator/Validator_Iteration.php', + 'testapiresult_error' => '../classes/verify/testAPI/TestAPIResult_Error.php', + 'testapi_ktoblzcheck' => '../classes/verify/testAPI/TestAPI_Ktoblzcheck.php', 'malkusch\bav\defaultconfiguration' => '../classes/configuration/DefaultConfiguration.php', 'malkusch\bav\databackendcontainer' => '../classes/dataBackend/DataBackendContainer.php', - 'bav_databackend_file' => '../classes/dataBackend/file/BAV_DataBackend_File.php', - 'bav_encoding_iso8859' => '../classes/encoding/BAV_Encoding_ISO8859.php', - 'bav_testapiexception' => '../classes/verify/testAPI/exception/BAV_TestAPIException.php', + 'databackendexception' => '../classes/dataBackend/exception/DataBackendException.php', + 'classfileexception_io' => '../classes/class/exception/ClassFileException_IO.php', 'malkusch\bav\configurationregistry' => '../classes/configuration/ConfigurationRegistry.php', - 'bav_fileparsercontext' => '../classes/dataBackend/file/fileParser/BAV_FileParserContext.php', - 'bav_encodingexception' => '../classes/encoding/exception/BAV_EncodingException.php', - 'bav_classfileexception' => '../classes/class/exception/BAV_ClassFileException.php', 'malkusch\bav\configurationexception' => '../classes/configuration/ConfigurationException.php', - 'bav_validatorexception' => '../classes/validator/exception/BAV_ValidatorException.php', - 'bav_verifyexception_io' => '../classes/verify/exception/BAV_VerifyException_IO.php', - 'bav_testapi_kontocheck' => '../classes/verify/testAPI/BAV_TestAPI_Kontocheck.php', - 'bav_fileparserexception' => '../classes/dataBackend/file/fileParser/exception/BAV_FileParserException.php', + 'fileparserexception_io' => '../classes/dataBackend/file/fileParser/exception/FileParserException_IO.php', + 'databackendexception_io' => '../classes/dataBackend/exception/DataBackendException_IO.php', 'malkusch\bav\pdodatabackendcontainer' => '../classes/dataBackend/pdo/PDODataBackendContainer.php', - 'bav_validator_iteration' => '../classes/validator/BAV_Validator_Iteration.php', - 'bav_testapiresult_error' => '../classes/verify/testAPI/BAV_TestAPIResult_Error.php', - 'bav_testapi_ktoblzcheck' => '../classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php', - 'bav_databackendexception' => '../classes/dataBackend/exception/BAV_DataBackendException.php', + 'validator_bankdependent' => '../classes/validator/Validator_BankDependent.php', + 'validatorexception_eser' => '../classes/validator/exception/ValidatorException_ESER.php', 'malkusch\bav\filedatabackendcontainer' => '../classes/dataBackend/file/FileDataBackendContainer.php', - 'bav_classfileexception_io' => '../classes/class/exception/BAV_ClassFileException_IO.php', - 'bav_fileparserexception_io' => '../classes/dataBackend/file/fileParser/exception/BAV_FileParserException_IO.php', - 'bav_databackendexception_io' => '../classes/dataBackend/exception/BAV_DataBackendException_IO.php', - 'bav_validator_bankdependent' => '../classes/validator/BAV_Validator_BankDependent.php', - 'bav_validatorexception_eser' => '../classes/validator/exception/BAV_ValidatorException_ESER.php', - 'bav_fileparsercontextexception' => '../classes/dataBackend/file/fileParser/exception/BAV_FileParserContextException.php', - 'bav_testapiexception_validation' => '../classes/verify/testAPI/exception/BAV_TestAPIException_Validation.php', - 'bav_validator_iteration_weighted' => '../classes/validator/BAV_Validator_Iteration_Weighted.php', - 'bav_validatorexception_notexists' => '../classes/validator/exception/BAV_ValidatorException_NotExists.php', - 'bav_encodingexception_unsupported' => '../classes/encoding/exception/BAV_EncodingException_Unsupported.php', - 'bav_fileparserexception_parseerror' => '../classes/dataBackend/file/fileParser/exception/BAV_FileParserException_ParseError.php', - 'bav_validatorexception_outofbounds' => '../classes/validator/exception/BAV_ValidatorException_OutOfBounds.php', - 'bav_classfileexception_missingclass' => '../classes/class/exception/BAV_ClassFileException_MissingClass.php', - 'bav_databackendexception_banknotfound' => '../classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php', - 'bav_databackendexception_nomainagency' => '../classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php', - 'bav_fileparserexception_filenotexists' => '../classes/dataBackend/file/fileParser/exception/BAV_FileParserException_FileNotExists.php', - 'bav_agencyexception_undefinedattribute' => '../classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php', - 'bav_validator_iteration_transformation' => '../classes/validator/BAV_Validator_Iteration_Transformation.php', - 'bav_fileparsercontextexception_undefined' => '../classes/dataBackend/file/fileParser/exception/BAV_FileParserContextException_Undefined.php', - 'bav_testapiexception_validation_banknotfound' => '../classes/verify/testAPI/exception/BAV_TestAPIException_Validation_BankNotFound.php', - 'bav_databackendexception_io_missingattributes' => '../classes/dataBackend/exception/BAV_DataBackendException_IO_MissingAttributes.php', - 'bav_testapiexception_validation_notinitialized' => '../classes/verify/testAPI/exception/BAV_TestAPIException_Validation_NotInitialized.php', + 'fileparsercontextexception' => '../classes/dataBackend/file/fileParser/exception/FileParserContextException.php', + 'testapiexception_validation' => '../classes/verify/testAPI/exception/TestAPIException_Validation.php', + 'validator_iteration_weighted' => '../classes/validator/Validator_Iteration_Weighted.php', + 'validatorexception_notexists' => '../classes/validator/exception/ValidatorException_NotExists.php', + 'encodingexception_unsupported' => '../classes/encoding/exception/EncodingException_Unsupported.php', + 'fileparserexception_parseerror' => '../classes/dataBackend/file/fileParser/exception/FileParserException_ParseError.php', + 'validatorexception_outofbounds' => '../classes/validator/exception/ValidatorException_OutOfBounds.php', + 'classfileexception_missingclass' => '../classes/class/exception/ClassFileException_MissingClass.php', + 'databackendexception_banknotfound' => '../classes/dataBackend/exception/DataBackendException_BankNotFound.php', + 'databackendexception_nomainagency' => '../classes/dataBackend/exception/DataBackendException_NoMainAgency.php', + 'fileparserexception_filenotexists' => '../classes/dataBackend/file/fileParser/exception/FileParserException_FileNotExists.php', + 'agencyexception_undefinedattribute' => '../classes/bank/exception/AgencyException_UndefinedAttribute.php', + 'validator_iteration_transformation' => '../classes/validator/Validator_Iteration_Transformation.php', + 'fileparsercontextexception_undefined' => '../classes/dataBackend/file/fileParser/exception/FileParserContextException_Undefined.php', + 'testapiexception_validation_banknotfound' => '../classes/verify/testAPI/exception/TestAPIException_Validation_BankNotFound.php', + 'databackendexception_io_missingattributes' => '../classes/dataBackend/exception/DataBackendException_IO_MissingAttributes.php', + 'testapiexception_validation_notinitialized' => '../classes/verify/testAPI/exception/TestAPIException_Validation_NotInitialized.php', ); diff --git a/autoloader/index/1.php b/autoloader/index/1.php index d54ef7da..234985a2 100644 --- a/autoloader/index/1.php +++ b/autoloader/index/1.php @@ -25,5 +25,5 @@ 'verifyimporttest' => '../tests/VerifyImportTest.php', 'dataconstrainttest' => '../tests/DataConstraintTest.php', 'malkusch\bav\backendcontainertest' => '../tests/BackendContainerTest.php', - 'bav_checkagainsttestapis' => '../tests/checkAgainstTestAPIs.php', + 'checkagainsttestapis' => '../tests/checkAgainstTestAPIs.php', ); diff --git a/bin/bav-install.php b/bin/bav-install.php index 31fd1a41..29500600 100755 --- a/bin/bav-install.php +++ b/bin/bav-install.php @@ -5,7 +5,7 @@ * * @author Markus Malkusch * @license GPL - * @see BAV_DataBackend + * @see DataBackend */ namespace malkusch\bav; @@ -19,7 +19,7 @@ $databack->install(); echo "Bundesbank file downloaded.\n"; -} catch (BAV_DataBackendException $error) { +} catch (DataBackendException $error) { die("Installation failed: {$error->getMessage()}\n"); } \ No newline at end of file diff --git a/bin/bav-update.php b/bin/bav-update.php index 330f00b3..749e2f93 100755 --- a/bin/bav-update.php +++ b/bin/bav-update.php @@ -5,7 +5,7 @@ * * @author Markus Malkusch * @license GPL - * @see BAV_DataBackend + * @see DataBackend */ namespace malkusch\bav; @@ -18,7 +18,7 @@ $databack->update(); echo "Bundesbank file downloaded.\n"; -} catch (BAV_DataBackendException $error) { +} catch (DataBackendException $error) { die("Installation failed: {$error->getMessage()}\n"); } \ No newline at end of file diff --git a/bin/verifyImport.php b/bin/verifyImport.php index e89b459b..a0a2db59 100755 --- a/bin/verifyImport.php +++ b/bin/verifyImport.php @@ -24,7 +24,7 @@ * @package scripts * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch - * @see BAV_VerifyImport + * @see VerifyImport */ @@ -35,14 +35,14 @@ /** - * This works only if you have called BAV_DataBackend_File->install(). That + * This works only if you have called DataBackend_File->install(). That * means there must exist a ../data/banklist.txt. If this does not apply to * you, you have to change these lines. */ -$databack = new BAV_DataBackend_File(); +$databack = new DataBackend_File(); -$importer = new BAV_VerifyImport($databack); +$importer = new VerifyImport($databack); /** diff --git a/classes/bank/BAV_Agency.php b/classes/bank/Agency.php similarity index 85% rename from classes/bank/BAV_Agency.php rename to classes/bank/Agency.php index 149e8e06..56f964c0 100644 --- a/classes/bank/BAV_Agency.php +++ b/classes/bank/Agency.php @@ -3,7 +3,7 @@ /** * The agency belongs to one bank. Every bank has one main agency and may have * some more agencies in different cities. Don't create this object directly. - * Use BAV_Bank->getMainAgency() or BAV_Bank->getAgencies(). + * Use Bank->getMainAgency() or Bank->getAgencies(). * * * Copyright (C) 2006 Markus Malkusch @@ -28,7 +28,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Agency +class Agency { /** @@ -37,7 +37,7 @@ class BAV_Agency private $id = 0; /** - * @var BAV_Bank + * @var Bank */ private $bank; @@ -72,8 +72,8 @@ class BAV_Agency private $name = ''; /** - * Don't create this object directly. Use BAV_Bank->getMainAgency() - * or BAV_Bank->getAgencies(). + * Don't create this object directly. Use Bank->getMainAgency() + * or Bank->getAgencies(). * * @param int $id * @param string $name @@ -83,7 +83,7 @@ class BAV_Agency * @param string $bic might be empty * @param string $pan might be empty */ - public function __construct($id, BAV_Bank $bank, $name, $shortTerm, $city, $postcode, $bic = '', $pan = '') + public function __construct($id, Bank $bank, $name, $shortTerm, $city, $postcode, $bic = '', $pan = '') { $this->id = (int)$id; $this->bank = $bank; @@ -104,7 +104,7 @@ public function isMainAgency() } /** - * @return BAV_Bank + * @return Bank */ public function getBank() { @@ -168,26 +168,26 @@ public function hasBIC() } /** - * @throws BAV_AgencyException_UndefinedAttribute + * @throws AgencyException_UndefinedAttribute * @return string */ public function getPAN() { if (! $this->hasPAN()) { - throw new BAV_AgencyException_UndefinedAttribute($this, 'pan'); + throw new AgencyException_UndefinedAttribute($this, 'pan'); } return $this->pan; } /** - * @throws BAV_AgencyException_UndefinedAttribute + * @throws AgencyException_UndefinedAttribute * @return string */ public function getBIC() { if (! $this->hasBIC()) { - throw new BAV_AgencyException_UndefinedAttribute($this, 'bic'); + throw new AgencyException_UndefinedAttribute($this, 'bic'); } return $this->bic; diff --git a/classes/bank/BAV_Bank.php b/classes/bank/Bank.php similarity index 72% rename from classes/bank/BAV_Bank.php rename to classes/bank/Bank.php index e6792725..a8ee7063 100644 --- a/classes/bank/BAV_Bank.php +++ b/classes/bank/Bank.php @@ -1,13 +1,13 @@ isValid(String $account)) and - * has a bank ID, a main agency (BAV_Bank->getMainAgency()) and optionally some - * more agencies (BAV_Bank->getAgencies()). Note that the main agency is not - * included in the array BAV_Bank->getAgencies() (which could even be empty). + * A bank can validate a bank account (Bank->isValid(String $account)) and + * has a bank ID, a main agency (Bank->getMainAgency()) and optionally some + * more agencies (Bank->getAgencies()). Note that the main agency is not + * included in the array Bank->getAgencies() (which could even be empty). * - * You should not create BAV_Bank objects directly. Use a BAV_DataBackend object - * to get a BAV_Bank object. + * You should not create Bank objects directly. Use a DataBackend object + * to get a Bank object. * * * Copyright (C) 2006 Markus Malkusch @@ -32,7 +32,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Bank +class Bank { /** @@ -46,17 +46,17 @@ class BAV_Bank private $validationType = ''; /** - * @var BAV_Validator + * @var Validator */ private $validator; /** - * @var BAV_DataBackend + * @var DataBackend */ private $dataBackend; /** - * @var BAV_Agency + * @var Agency */ private $mainAgency; @@ -66,13 +66,13 @@ class BAV_Bank private $agencies; /** - * Do not even think to use new BAV_Bank()! - * Go and use BAV_DataBackend->getBank($bankID). + * Do not even think to use new Bank()! + * Go and use DataBackend->getBank($bankID). * * @param string $bankID * @param string $validationType */ - public function __construct(BAV_DataBackend $dataBackend, $bankID, $validationType) + public function __construct(DataBackend $dataBackend, $bankID, $validationType) { $this->dataBackend = $dataBackend; $this->bankID = $bankID; @@ -98,8 +98,8 @@ public function getBankID() /** * Every bank has one main agency. This agency is not included in getAgencies(). * - * @throws BAV_DataBackendException - * @return BAV_Agency + * @throws DataBackendException + * @return Agency */ public function getMainAgency() { @@ -113,7 +113,7 @@ public function getMainAgency() /** * A bank may have more agencies. * - * @throws BAV_DataBackendException + * @throws DataBackendException * @return array */ public function getAgencies() @@ -128,7 +128,7 @@ public function getAgencies() /** * Use this method to check your bank account. * - * @throws BAV_ValidatorException_NotExists for some reason the validator might not be implemented + * @throws ValidatorException_NotExists for some reason the validator might not be implemented * @param string $account * @return bool */ @@ -138,13 +138,13 @@ public function isValid($account) } /** - * @throws BAV_ValidatorException_NotExists - * @return BAV_Validator + * @throws ValidatorException_NotExists + * @return Validator */ public function getValidator() { if (is_null($this->validator)) { - $this->validator = BAV_Validator::getInstance($this); + $this->validator = Validator::getInstance($this); } return $this->validator; diff --git a/classes/bank/exception/BAV_AgencyException.php b/classes/bank/exception/AgencyException.php similarity index 88% rename from classes/bank/exception/BAV_AgencyException.php rename to classes/bank/exception/AgencyException.php index 8fdf67aa..65f20980 100644 --- a/classes/bank/exception/BAV_AgencyException.php +++ b/classes/bank/exception/AgencyException.php @@ -23,21 +23,21 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_AgencyException extends RuntimeException +class AgencyException extends RuntimeException { /** - * @var BAV_Agency + * @var Agency */ private $agency; - public function __construct(BAV_Agency $agency) + public function __construct(Agency $agency) { $this->agency = $agency; } /** - * @return BAV_Agency + * @return Agency */ public function getAgency() { diff --git a/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php b/classes/bank/exception/AgencyException_UndefinedAttribute.php similarity index 90% rename from classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php rename to classes/bank/exception/AgencyException_UndefinedAttribute.php index 8abbbf92..36444706 100644 --- a/classes/bank/exception/BAV_AgencyException_UndefinedAttribute.php +++ b/classes/bank/exception/AgencyException_UndefinedAttribute.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_AgencyException_UndefinedAttribute extends BAV_AgencyException +class AgencyException_UndefinedAttribute extends AgencyException { /** @@ -34,7 +34,7 @@ class BAV_AgencyException_UndefinedAttribute extends BAV_AgencyException /** * @param string $attribute */ - public function __construct(BAV_Agency $agency, $attribute) + public function __construct(Agency $agency, $attribute) { parent::__construct($agency); $this->attribute = $attribute; diff --git a/classes/class/BAV_ClassFile.php b/classes/class/ClassFile.php similarity index 86% rename from classes/class/BAV_ClassFile.php rename to classes/class/ClassFile.php index dcd88f65..63291b14 100644 --- a/classes/class/BAV_ClassFile.php +++ b/classes/class/ClassFile.php @@ -23,7 +23,7 @@ * * @package classes */ -class BAV_ClassFile +class ClassFile { /** @@ -37,12 +37,12 @@ class BAV_ClassFile private $name = ''; /** - * @var BAV_ClassFile the parent class + * @var ClassFile the parent class */ private $parent = null; /** - * @var array contains BAV_ClassFile objects which are needed by this class + * @var array contains ClassFile objects which are needed by this class */ private $neededClasses = array(); @@ -60,7 +60,7 @@ class BAV_ClassFile * The constructor loads the class definition and parses it to initialize * {@link $parent} and {@link $neededClasses}. * - * @throws BAV_ClassFileException_MissingClass + * @throws ClassFileException_MissingClass * @param string $path */ private function __construct($path) @@ -81,7 +81,7 @@ private function __construct($path) preg_match_all(':extends +([a-zA-Z0-9_]+):', $this->getClassDefinition(), $matches); foreach ($matches[1] as $match) { if (! isset($this->neededClasses[$match])) { - throw new BAV_ClassFileException_MissingClass($this->name, $match); + throw new ClassFileException_MissingClass($this->name, $match); } $this->parent = $this->neededClasses[$match]; @@ -97,16 +97,16 @@ private function __construct($path) preg_match_all('/([a-zA-Z0-9_]+)::/', $this->getClassDefinition(), $matchesStatic); foreach (array_merge($matchesNew[1], $matchesStatic[1]) as $match) { if (! isset($this->neededClasses[$match])) { - throw new BAV_ClassFileException_MissingClass($this->name, $match); + throw new ClassFileException_MissingClass($this->name, $match); } } } /** - * @throws BAV_ClassFileException_MissingClass + * @throws ClassFileException_MissingClass * @param string $path - * @return BAV_ClassFile + * @return ClassFile */ public static function getClassFile($path) { @@ -118,17 +118,17 @@ public static function getClassFile($path) } /** - * @throws BAV_ClassFileException_IO - * @throws BAV_ClassFileException_MissingClass + * @throws ClassFileException_IO + * @throws ClassFileException_MissingClass * @param string $dir - * @return array BAV_ClassFile objects + * @return array ClassFile objects */ public static function getClassFiles($dir) { $classFiles = array(); $dh = opendir($dir); if (! $dh) { - throw new BAV_ClassFileException_IO(); + throw new ClassFileException_IO(); } while (($file = readdir($dh)) !== false) { @@ -162,7 +162,7 @@ public function getInstance() } /** - * @throws BAV_ClassFileException_IO + * @throws ClassFileException_IO * @return string */ public function getClassDefinition() @@ -171,7 +171,7 @@ public function getClassDefinition() $this->classDefinition = ''; $fp = fopen($this->path, 'r'); if (! $fp) { - throw new BAV_ClassFileException_IO(); + throw new ClassFileException_IO(); } $this->classDefinition = fread($fp, filesize($this->path)); diff --git a/classes/class/exception/BAV_ClassFileException.php b/classes/class/exception/ClassFileException.php similarity index 94% rename from classes/class/exception/BAV_ClassFileException.php rename to classes/class/exception/ClassFileException.php index fecc28f0..17715f32 100644 --- a/classes/class/exception/BAV_ClassFileException.php +++ b/classes/class/exception/ClassFileException.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_ClassFileException extends RuntimeException +class ClassFileException extends RuntimeException { diff --git a/classes/class/exception/BAV_ClassFileException_IO.php b/classes/class/exception/ClassFileException_IO.php similarity index 93% rename from classes/class/exception/BAV_ClassFileException_IO.php rename to classes/class/exception/ClassFileException_IO.php index 6b0edd60..edf69bac 100644 --- a/classes/class/exception/BAV_ClassFileException_IO.php +++ b/classes/class/exception/ClassFileException_IO.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_ClassFileException_IO extends BAV_ClassFileException +class ClassFileException_IO extends ClassFileException { diff --git a/classes/class/exception/BAV_ClassFileException_MissingClass.php b/classes/class/exception/ClassFileException_MissingClass.php similarity index 95% rename from classes/class/exception/BAV_ClassFileException_MissingClass.php rename to classes/class/exception/ClassFileException_MissingClass.php index 6f92ed13..ef7a1823 100644 --- a/classes/class/exception/BAV_ClassFileException_MissingClass.php +++ b/classes/class/exception/ClassFileException_MissingClass.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_ClassFileException_MissingClass extends BAV_ClassFileException +class ClassFileException_MissingClass extends ClassFileException { /** diff --git a/classes/configuration/Configuration.php b/classes/configuration/Configuration.php index da2e212e..bafed037 100644 --- a/classes/configuration/Configuration.php +++ b/classes/configuration/Configuration.php @@ -17,7 +17,7 @@ class Configuration private $automaticInstallation; /** - * @var BAV_Encoding + * @var Encoding */ private $encoding; @@ -57,7 +57,7 @@ public function getUpdatePlan() * If automatic installation is activated. The backend factory will check if it is * installed and if not so install the backend. * - * @see BAV_DataBackend::install() + * @see DataBackend::install() * @param bool $automaticInstallation Set true to turn installation on */ public function setAutomaticInstallation($automaticInstallation) @@ -96,7 +96,7 @@ public function getDataBackendContainer() /** * Sets the encoding. */ - public function setEncoding(\BAV_Encoding $encoding) + public function setEncoding(\Encoding $encoding) { $this->encoding = $encoding; } @@ -104,7 +104,7 @@ public function setEncoding(\BAV_Encoding $encoding) /** * Returns the encoding. * - * @return BAV_Encoding + * @return Encoding */ public function getEncoding() { diff --git a/classes/configuration/DefaultConfiguration.php b/classes/configuration/DefaultConfiguration.php index aebadf64..0bf1abec 100644 --- a/classes/configuration/DefaultConfiguration.php +++ b/classes/configuration/DefaultConfiguration.php @@ -27,11 +27,11 @@ public function __construct() $encoding = null; try { - $encoding = \BAV_Encoding::getInstance("UTF-8"); + $encoding = \Encoding::getInstance("UTF-8"); - } catch (\BAV_EncodingException_Unsupported $e) { + } catch (\EncodingException_Unsupported $e) { trigger_error("UTF-8 is not supported; bav is falling back to ISO-8859-15", E_WARNING); - $encoding = \BAV_Encoding::getInstance("ISO-8859-15"); + $encoding = \Encoding::getInstance("ISO-8859-15"); } $this->setEncoding($encoding); diff --git a/classes/dataBackend/BAV_DataBackend.php b/classes/dataBackend/DataBackend.php similarity index 68% rename from classes/dataBackend/BAV_DataBackend.php rename to classes/dataBackend/DataBackend.php index 829950d7..27682964 100644 --- a/classes/dataBackend/BAV_DataBackend.php +++ b/classes/dataBackend/DataBackend.php @@ -1,27 +1,27 @@ * @license GPL * @see DataBackendFactory */ -abstract class BAV_DataBackend +abstract class DataBackend { /** - * @var array All created BAV_Bank objects + * @var array All created Bank objects */ protected $instances = array(); @@ -29,14 +29,14 @@ abstract class BAV_DataBackend * You have to call this method to synchronize your datastructure to the * data of the Bundesbank. * - * @throws BAV_DataBackendException + * @throws DataBackendException */ abstract public function update(); /** * Removes the databackend physically. * - * @throws BAV_DataBackendException + * @throws DataBackendException */ abstract public function uninstall(); @@ -44,7 +44,7 @@ abstract public function uninstall(); * Installs the databackend. An implementation of install() should also * call update() to synchronize to the Bundebank. * - * @throws BAV_DataBackendException + * @throws DataBackendException */ abstract public function install(); @@ -52,7 +52,7 @@ abstract public function install(); * Returns true if the backend was installed. * * @return bool - * @throws BAV_DataBackendException + * @throws DataBackendException */ abstract public function isInstalled(); @@ -60,19 +60,19 @@ abstract public function isInstalled(); * Returns the timestamp of the last update. * * @return int timestamp - * @throws BAV_DataBackendException + * @throws DataBackendException */ abstract public function getLastUpdate(); /** - * With this method you get the BAV_Bank objects for certain IDs. Note + * With this method you get the Bank objects for certain IDs. Note * that a call to this method with an identical id will return the same * objects. * - * @throws BAV_DataBackendException_BankNotFound - * @throws BAV_DataBackendException + * @throws DataBackendException_BankNotFound + * @throws DataBackendException * @param string - * @return BAV_Bank + * @return Bank */ public function getBank($bankID) { @@ -86,7 +86,7 @@ public function getBank($bankID) /** * Perhaps you just want to know if a bank exists. * - * @throws BAV_DataBackendException + * @throws DataBackendException * @param String $bankID * @return bool */ @@ -96,7 +96,7 @@ public function bankExists($bankID) $this->getBank($bankID); return true; - } catch (BAV_DataBackendException_BankNotFound $e) { + } catch (DataBackendException_BankNotFound $e) { return false; } @@ -107,7 +107,7 @@ public function bankExists($bankID) * also take care that $instances is used an will be filled correctly in order * to garantee that there will never exist two identical objects. * - * @throws BAV_DataBackendException + * @throws DataBackendException * @return array */ abstract public function getAllBanks(); @@ -115,28 +115,28 @@ abstract public function getAllBanks(); /** * This method will be called by getBank() if getBank() thinks it is necessary to * create a new object. You have to return the new object and have not to take care - * about $instances. getBank() cares about $instances. Throw a BAV_DataBackendException_BankNotFound + * about $instances. getBank() cares about $instances. Throw a DataBackendException_BankNotFound * if the bank does not exist. * - * @throws BAV_DataBackendException - * @throws BAV_DataBackendException_BankNotFound if the bank does not exist + * @throws DataBackendException + * @throws DataBackendException_BankNotFound if the bank does not exist * @param string - * @return BAV_Bank + * @return Bank */ abstract protected function getNewBank($bankID); /** - * If you implement this method you should return the appropriate BAV_Agency object. This - * method is called by BAV_Bank->getMainAgency(), if the BAV_Bank object doesn't know its + * If you implement this method you should return the appropriate Agency object. This + * method is called by Bank->getMainAgency(), if the Bank object doesn't know its * main agency. * * @todo remove _getMainAgency() and make getMainAgency() abstract. - * @throws BAV_DataBackendException - * @return BAV_Agency - * @see BAV_Bank::getMainAgency() - * @internal YOU SHOULD NOT CALL THIS METHOD! Use BAV_Bank->getMainAgency() + * @throws DataBackendException + * @return Agency + * @see Bank::getMainAgency() + * @internal YOU SHOULD NOT CALL THIS METHOD! Use Bank->getMainAgency() */ - public function getMainAgency(BAV_Bank $bank) + public function getMainAgency(Bank $bank) { trigger_error( "_getMainAgency() was renamed into getMainAgency().", @@ -149,23 +149,23 @@ public function getMainAgency(BAV_Bank $bank) * @deprecated 0.28 * @see getMainAgency() */ - public function _getMainAgency(BAV_Bank $bank) + public function _getMainAgency(Bank $bank) { throw new BadMethodCallException("You have to override getMainAgency()"); } /** - * If you implement this method you should return an array with the appropriate BAV_Agency - * objects. This method is called by BAV_Bank->getAgencies(), if the BAV_Bank object doesn't + * If you implement this method you should return an array with the appropriate Agency + * objects. This method is called by Bank->getAgencies(), if the Bank object doesn't * know its agencies. A bank may have no agencies and will return an empty array. * * @todo remove _getAgencies() and make getAgenciesForBank() abstract. - * @throws BAV_DataBackendException - * @see BAV_Bank::getAgencies() + * @throws DataBackendException + * @see Bank::getAgencies() * @return array - * @internal YOU SHOULD NOT CALL THIS METHOD! Use BAV_Bank->getMainAgency() + * @internal YOU SHOULD NOT CALL THIS METHOD! Use Bank->getMainAgency() */ - public function getAgenciesForBank(BAV_Bank $bank) + public function getAgenciesForBank(Bank $bank) { trigger_error( "_getAgencies() was renamed into getAgenciesForBank().", @@ -178,7 +178,7 @@ public function getAgenciesForBank(BAV_Bank $bank) * @deprecated 0.28 * @see getAgenciesForBank() */ - public function _getAgencies(BAV_Bank $bank) + public function _getAgencies(Bank $bank) { throw new BadMethodCallException("You have to override getAgenciesForBank()"); } diff --git a/classes/dataBackend/DataBackendContainer.php b/classes/dataBackend/DataBackendContainer.php index 0219f8f1..3b0296b9 100644 --- a/classes/dataBackend/DataBackendContainer.php +++ b/classes/dataBackend/DataBackendContainer.php @@ -3,17 +3,17 @@ namespace malkusch\bav; /** - * Container for BAV_DataBackend objects. + * Container for DataBackend objects. * * @author Markus Malkusch * @license GPL - * @see BAV_DataBackend + * @see DataBackend */ abstract class DataBackendContainer { /** - * @var BAV_DataBackend + * @var DataBackend */ private $backend; @@ -21,7 +21,7 @@ abstract class DataBackendContainer * Returns the unconfigured backend which is only created by calling the * constructor. * - * @return BAV_DataBackend + * @return DataBackend */ abstract protected function makeDataBackend(); @@ -31,8 +31,8 @@ abstract protected function makeDataBackend(); * If configured this method would automatically install the backend. I.e. a first * call will take some amount of time. * - * @return BAV_DataBackend - * @throws BAV_DataBackendException + * @return DataBackend + * @throws DataBackendException */ private function buildDataBackend() { @@ -55,7 +55,7 @@ private function buildDataBackend() /** * Shut down hook for applying the update plan. */ - public function applyUpdatePlan(\BAV_DataBackend $backend) + public function applyUpdatePlan(\DataBackend $backend) { $plan = ConfigurationRegistry::getConfiguration()->getUpdatePlan(); if ($plan != null && $plan->isOutdated($backend)) { @@ -71,8 +71,8 @@ public function applyUpdatePlan(\BAV_DataBackend $backend) * some calls might take longer. * * @see Configuration::setAutomaticInstallation() - * @see BAV_DataBackend::install() - * @return BAV_DataBackend + * @see DataBackend::install() + * @return DataBackend */ public function getDataBackend() { diff --git a/classes/dataBackend/exception/BAV_DataBackendException_IO_MissingAttributes.php b/classes/dataBackend/exception/BAV_DataBackendException_IO_MissingAttributes.php deleted file mode 100644 index 3c29cf16..00000000 --- a/classes/dataBackend/exception/BAV_DataBackendException_IO_MissingAttributes.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * - * @package classes - * @subpackage dataBackend - * @author Markus Malkusch - * @copyright Copyright (C) 2006 Markus Malkusch - */ -class BAV_DataBackendException_IO_MissingAttributes extends BAV_DataBackendException_IO -{ - -} diff --git a/classes/encoding/exception/BAV_EncodingException.php b/classes/dataBackend/exception/DataBackendException.php similarity index 94% rename from classes/encoding/exception/BAV_EncodingException.php rename to classes/dataBackend/exception/DataBackendException.php index 3d41eef8..2fd4faa4 100644 --- a/classes/encoding/exception/BAV_EncodingException.php +++ b/classes/dataBackend/exception/DataBackendException.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_EncodingException extends RuntimeException +class DataBackendException extends RuntimeException { } diff --git a/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php b/classes/dataBackend/exception/DataBackendException_BankNotFound.php similarity index 94% rename from classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php rename to classes/dataBackend/exception/DataBackendException_BankNotFound.php index fa1460bd..8be2ebe9 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException_BankNotFound.php +++ b/classes/dataBackend/exception/DataBackendException_BankNotFound.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_DataBackendException_BankNotFound extends BAV_DataBackendException +class DataBackendException_BankNotFound extends DataBackendException { /** diff --git a/classes/dataBackend/file/fileParser/exception/BAV_FileParserContextException.php b/classes/dataBackend/exception/DataBackendException_IO.php similarity index 93% rename from classes/dataBackend/file/fileParser/exception/BAV_FileParserContextException.php rename to classes/dataBackend/exception/DataBackendException_IO.php index 01932510..a3990f7e 100644 --- a/classes/dataBackend/file/fileParser/exception/BAV_FileParserContextException.php +++ b/classes/dataBackend/exception/DataBackendException_IO.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_FileParserContextException extends RuntimeException +class DataBackendException_IO extends DataBackendException { } diff --git a/classes/dataBackend/exception/DataBackendException_IO_MissingAttributes.php b/classes/dataBackend/exception/DataBackendException_IO_MissingAttributes.php new file mode 100644 index 00000000..a366e2ea --- /dev/null +++ b/classes/dataBackend/exception/DataBackendException_IO_MissingAttributes.php @@ -0,0 +1,29 @@ + + * + * 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * + * @package classes + * @subpackage dataBackend + * @author Markus Malkusch + * @copyright Copyright (C) 2006 Markus Malkusch + */ +class DataBackendException_IO_MissingAttributes extends DataBackendException_IO +{ + +} diff --git a/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php b/classes/dataBackend/exception/DataBackendException_NoMainAgency.php similarity index 87% rename from classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php rename to classes/dataBackend/exception/DataBackendException_NoMainAgency.php index eff1c7f6..d9b169dc 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException_NoMainAgency.php +++ b/classes/dataBackend/exception/DataBackendException_NoMainAgency.php @@ -23,22 +23,22 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class BAV_DataBackendException_NoMainAgency extends BAV_DataBackendException +class DataBackendException_NoMainAgency extends DataBackendException { /** - * @var BAV_Bank + * @var Bank */ private $bank; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct("bank {$bank->getBankID()} has no main agency."); $this->bank = $bank; } /** - * @return BAV_Bank + * @return Bank */ public function getBank() { diff --git a/classes/dataBackend/file/BAV_DataBackend_File.php b/classes/dataBackend/file/DataBackend_File.php similarity index 74% rename from classes/dataBackend/file/BAV_DataBackend_File.php rename to classes/dataBackend/file/DataBackend_File.php index 4c100fe4..b7e1f11c 100644 --- a/classes/dataBackend/file/BAV_DataBackend_File.php +++ b/classes/dataBackend/file/DataBackend_File.php @@ -8,7 +8,7 @@ * @author Markus Malkusch * @license GPL */ -class BAV_DataBackend_File extends BAV_DataBackend +class DataBackend_File extends DataBackend { const DOWNLOAD_URI = "http://www.bundesbank.de/Redaktion/DE/Standardartikel/Aufgaben/Unbarer_Zahlungsverkehr/bankleitzahlen_download.html"; @@ -19,7 +19,7 @@ class BAV_DataBackend_File extends BAV_DataBackend private $contextCache = array(); /** - * @var BAV_FileParser + * @var FileParser */ private $parser; @@ -28,7 +28,7 @@ class BAV_DataBackend_File extends BAV_DataBackend */ public function __construct($file = null) { - $this->parser = new BAV_FileParser($file); + $this->parser = new FileParser($file); } /** @@ -50,31 +50,31 @@ public function getFile() * Be aware that this needs some amount of memory. * * @param String $file - * @throws BAV_DataBackendException_IO + * @throws DataBackendException_IO */ private function sortFile($file) { //read the unordered bank file $lines = file($file); if (! is_array($lines) || empty($lines)) { - throw new BAV_DataBackendException_IO("Could not read lines in '$file'."); + throw new DataBackendException_IO("Could not read lines in '$file'."); } //build a sorted index for the bankIDs $index = array(); foreach ($lines as $line => $data) { - $bankID = substr($data, BAV_FileParser::BANKID_OFFSET, BAV_FileParser::BANKID_LENGTH); + $bankID = substr($data, FileParser::BANKID_OFFSET, FileParser::BANKID_LENGTH); $index[$line] = $bankID; } asort($index); //write a sorted bank file atomically - $temp = tempnam(self::getTempdir(), "BAV_"); + $temp = tempnam(self::getTempdir(), ""); $tempH = fopen($temp, 'w'); if (! ($temp && $tempH)) { - throw new BAV_DataBackendException_IO("Could not open a temporary file."); + throw new DataBackendException_IO("Could not open a temporary file."); } foreach (array_keys($index) as $line) { @@ -82,7 +82,7 @@ private function sortFile($file) $writtenBytes = fputs($tempH, $data); if ($writtenBytes != strlen($data)) { - throw new BAV_DataBackendException_IO("Could not write sorted data: '$data' into $temp."); + throw new DataBackendException_IO("Could not write sorted data: '$data' into $temp."); } @@ -92,20 +92,20 @@ private function sortFile($file) } /** - * @see BAV_DataBackend::uninstall() - * @throws BAV_DataBackendException_IO + * @see DataBackend::uninstall() + * @throws DataBackendException_IO */ public function uninstall() { if (! unlink($this->parser->getFile())) { - throw new BAV_DataBackendException_IO(); + throw new DataBackendException_IO(); } } /** - * @see BAV_DataBackend::install() - * @throws BAV_DataBackendException_IO + * @see DataBackend::install() + * @throws DataBackendException_IO */ public function install() { @@ -116,21 +116,21 @@ public function install() * This method works only if your PHP is compiled with cURL. * TODO: test this with a proxy * - * @see BAV_DataBackend::update() - * @throws BAV_DataBackendException_IO + * @see DataBackend::update() + * @throws DataBackendException_IO */ public function update() { $ch = curl_init(self::DOWNLOAD_URI); if (! is_resource($ch)) { - throw new BAV_DataBackendException_IO(); + throw new DataBackendException_IO(); } curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $content = curl_exec($ch); $curl_info = curl_getinfo($ch); if ($curl_info['http_code'] >= 400) { - throw new BAV_DataBackendException_IO( + throw new DataBackendException_IO( sprintf( "Failed to download '%s'. HTTP Code: %d", self::DOWNLOAD_URI, @@ -139,7 +139,7 @@ public function update() ); } if (! $content) { - throw new BAV_DataBackendException_IO( + throw new DataBackendException_IO( "Failed to download '" . self::DOWNLOAD_URI . "'." ); @@ -159,14 +159,14 @@ public function update() $isZIP = false; if (! ($isTXT || $isZIP)) { - throw new BAV_DataBackendException("Could not find a file."); + throw new DataBackendException("Could not find a file."); } - $temp = tempnam(self::getTempdir(), "BAV_"); + $temp = tempnam(self::getTempdir(), ""); $tempH = fopen($temp, 'w'); if (! ($temp && $tempH)) { - throw new BAV_DataBackendException_IO(); + throw new DataBackendException_IO(); } $path = $isZIP ? $zipMatches[1] : $txtMatches[1]; @@ -196,23 +196,23 @@ public function update() if (! curl_exec($ch)) { fclose($tempH); unlink($temp); - throw new BAV_DataBackendException_IO(curl_error($ch), curl_errno($ch)); + throw new DataBackendException_IO(curl_error($ch), curl_errno($ch)); } fclose($tempH); curl_close($ch); if ($isZIP) { - $file = tempnam(self::getTempdir(), "BAV_"); + $file = tempnam(self::getTempdir(), ""); if (! $file) { unlink($temp); - throw new BAV_DataBackendException_IO(); + throw new DataBackendException_IO(); } system('unzip -qqp '.$temp.' > '.$file, $error); if (! unlink($temp) || $error !== 0) { unlink($file); - throw new BAV_DataBackendException_IO(); + throw new DataBackendException_IO(); } @@ -222,7 +222,7 @@ public function update() } // blz_20100308.txt is not sorted. - $parser = new BAV_FileParser($file); + $parser = new FileParser($file); $lastBankID = $parser->getBankID($parser->getLines()); if ($lastBankID < 80000000) { $this->sortFile($file); @@ -238,7 +238,7 @@ public function update() * * @param String $source path of the source * @param String $destination path of the destination - * @throws BAV_DataBackendException_IO + * @throws DataBackendException_IO */ private function safeRename($source, $destination) { @@ -253,7 +253,7 @@ private function safeRename($source, $destination) $isCopied = copy($source, $tempFileOnSameFS); if (! $isCopied) { - throw new BAV_DataBackendException_IO( + throw new DataBackendException_IO( "failed to copy $source to $tempFileOnSameFS." ); @@ -267,7 +267,7 @@ private function safeRename($source, $destination) $isRenamed = rename($tempFileOnSameFS, $destination); if (! $isRenamed) { - throw new BAV_DataBackendException_IO( + throw new DataBackendException_IO( "failed to rename $tempFileOnSameFS to $destination." ); @@ -275,10 +275,10 @@ private function safeRename($source, $destination) } /** - * @throws BAV_DataBackendException_IO - * @throws BAV_DataBackendException + * @throws DataBackendException_IO + * @throws DataBackendException * @return array - * @see BAV_DataBackend::getAllBanks() + * @see DataBackend::getAllBanks() */ public function getAllBanks() { @@ -291,25 +291,25 @@ public function getAllBanks() $line = $this->parser->readLine($i); $bank = $this->parser->getBank($this, $line); $this->instances[$bank->getBankID()] = $bank; - $this->contextCache[$bank->getBankID()] = new BAV_FileParserContext($i); + $this->contextCache[$bank->getBankID()] = new FileParserContext($i); } return array_values($this->instances); - } catch (BAV_FileParserException_IO $e) { - throw new BAV_DataBackendException_IO(); + } catch (FileParserException_IO $e) { + throw new DataBackendException_IO(); - } catch (BAV_FileParserException $e) { - throw new BAV_DataBackendException(); + } catch (FileParserException $e) { + throw new DataBackendException(); } } /** - * @throws BAV_DataBackendException_IO - * @throws BAV_DataBackendException_BankNotFound + * @throws DataBackendException_IO + * @throws DataBackendException_BankNotFound * @param String $bankID - * @see BAV_DataBackend::getNewBank() - * @return BAV_Bank + * @see DataBackend::getNewBank() + * @return Bank */ public function getNewBank($bankID) { @@ -331,25 +331,25 @@ public function getNewBank($bankID) } - } catch (BAV_FileParserException $e) { - throw new BAV_DataBackendException_IO(); + } catch (FileParserException $e) { + throw new DataBackendException_IO(); } } /** - * @throws BAV_DataBackendException_BankNotFound - * @throws BAV_FileParserException_ParseError - * @throws BAV_FileParserException_IO + * @throws DataBackendException_BankNotFound + * @throws FileParserException_ParseError + * @throws FileParserException_IO * @param int $bankID * @param int $offset the line number to start * @param int $length the line count - * @return BAV_Bank + * @return Bank */ private function findBank($bankID, $offset, $end) { if ($end - $offset < 0) { - throw new BAV_DataBackendException_BankNotFound($bankID); + throw new DataBackendException_BankNotFound($bankID); } $line = $offset + (int)(($end - $offset) / 2); @@ -362,13 +362,13 @@ private function findBank($bankID, $offset, $end) try { return $this->findBank($bankID, $offset, $line - 1); - } catch (BAV_DataBackendException_BankNotFound $e) { + } catch (DataBackendException_BankNotFound $e) { return $this->findBank($bankID, $line + 1, $end); } } elseif (! isset($this->contextCache[$blz])) { - $this->contextCache[$blz] = new BAV_FileParserContext($line); + $this->contextCache[$blz] = new FileParserContext($line); } @@ -385,12 +385,12 @@ private function findBank($bankID, $offset, $end) } /** - * @see BAV_DataBackend::getMainAgency() - * @throws BAV_DataBackendException - * @throws BAV_DataBackendException_NoMainAgency - * @return BAV_Agency + * @see DataBackend::getMainAgency() + * @throws DataBackendException + * @throws DataBackendException_NoMainAgency + * @return Agency */ - public function getMainAgency(BAV_Bank $bank) + public function getMainAgency(Bank $bank) { try { $context = $this->defineContextInterval($bank->getBankID()); @@ -402,27 +402,27 @@ public function getMainAgency(BAV_Bank $bank) } } // Maybe there are banks without a main agency - throw new BAV_DataBackendException_NoMainAgency($bank); + throw new DataBackendException_NoMainAgency($bank); - } catch (BAV_FileParserContextException_Undefined $e) { + } catch (FileParserContextException_Undefined $e) { throw new LogicException("Start and end should be defined."); - } catch (BAV_FileParserException_IO $e) { - throw new BAV_DataBackendException_IO("Parser Exception at bank {$bank->getBankID()}"); + } catch (FileParserException_IO $e) { + throw new DataBackendException_IO("Parser Exception at bank {$bank->getBankID()}"); - } catch (BAV_FileParserException_ParseError $e) { - throw new BAV_DataBackendException(get_class($e) . ": " . $e->getMessage()); + } catch (FileParserException_ParseError $e) { + throw new DataBackendException(get_class($e) . ": " . $e->getMessage()); } } /** - * @see BAV_DataBackend::getAgenciesForBank() - * @throws BAV_DataBackendException_IO - * @throws BAV_DataBackendException + * @see DataBackend::getAgenciesForBank() + * @throws DataBackendException_IO + * @throws DataBackendException * @return array */ - public function getAgenciesForBank(BAV_Bank $bank) + public function getAgenciesForBank(Bank $bank) { try { $context = $this->defineContextInterval($bank->getBankID()); @@ -436,20 +436,20 @@ public function getAgenciesForBank(BAV_Bank $bank) } return $agencies; - } catch (BAV_FileParserContextException_Undefined $e) { + } catch (FileParserContextException_Undefined $e) { throw new LogicException("Start and end should be defined."); - } catch (BAV_FileParserException_IO $e) { - throw new BAV_DataBackendException_IO(); + } catch (FileParserException_IO $e) { + throw new DataBackendException_IO(); - } catch (BAV_FileParserException_ParseError $e) { - throw new BAV_DataBackendException(); + } catch (FileParserException_ParseError $e) { + throw new DataBackendException(); } } /** - * @return BAV_FileParserContext + * @return FileParserContext */ private function defineContextInterval($bankID) { @@ -488,7 +488,7 @@ private function defineContextInterval($bankID) } /** - * @throws BAV_DataBackendException_IO + * @throws DataBackendException_IO * @return String a writable directory for temporary files */ public static function getTempdir() @@ -517,20 +517,20 @@ function_exists('sys_get_temp_dir') ? sys_get_temp_dir() : false, } - throw new BAV_DataBackendException_IO(); + throw new DataBackendException_IO(); } /** * Returns the timestamp of the last update. * * @return int timestamp - * @throws BAV_DataBackendException + * @throws DataBackendException */ public function getLastUpdate() { $time = filemtime($this->parser->getFile()); if ($time === false) { - return new BAV_DataBackendException( + return new DataBackendException( "Could not read modification time from {$this->parser->getFile()}" ); diff --git a/classes/dataBackend/file/FileDataBackendContainer.php b/classes/dataBackend/file/FileDataBackendContainer.php index 0fe9597b..6273d4be 100644 --- a/classes/dataBackend/file/FileDataBackendContainer.php +++ b/classes/dataBackend/file/FileDataBackendContainer.php @@ -3,11 +3,11 @@ namespace malkusch\bav; /** - * Container for BAV_DataBackend_File objects. + * Container for DataBackend_File objects. * * @author Markus Malkusch * @license GPL - * @see BAV_DataBackend + * @see DataBackend */ class FileDataBackendContainer extends DataBackendContainer { @@ -31,10 +31,10 @@ public function __construct($file = null) * Returns the unconfigured backend which is only created by calling the * constructor. * - * @return BAV_DataBackend_File + * @return DataBackend_File */ protected function makeDataBackend() { - return new \BAV_DataBackend_File($this->file); + return new \DataBackend_File($this->file); } } diff --git a/classes/dataBackend/file/fileParser/BAV_FileParser.php b/classes/dataBackend/file/fileParser/FileParser.php similarity index 76% rename from classes/dataBackend/file/fileParser/BAV_FileParser.php rename to classes/dataBackend/file/fileParser/FileParser.php index 5c11d79c..6c614074 100644 --- a/classes/dataBackend/file/fileParser/BAV_FileParser.php +++ b/classes/dataBackend/file/fileParser/FileParser.php @@ -3,7 +3,7 @@ use malkusch\bav\ConfigurationRegistry; /** - * This class is responsable for I/O and formating which helps the BAV_DataBackend_File. + * This class is responsable for I/O and formating which helps the DataBackend_File. * * * Copyright (C) 2006 Markus Malkusch @@ -28,7 +28,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_FileParser +class FileParser { const FILE_ENCODING = 'ISO-8859-15'; @@ -74,7 +74,7 @@ class BAV_FileParser private $lineLength = 0; /** - * @var BAV_Encoding + * @var Encoding */ private $encoding; @@ -97,8 +97,8 @@ public function __construct($file = null) } /** - * @throws BAV_FileParserException_IO - * @throws BAV_FileParserException_FileNotExists + * @throws FileParserException_IO + * @throws FileParserException_FileNotExists */ private function init() { @@ -109,10 +109,10 @@ private function init() $this->fp = @fopen($this->file, 'r'); if (! is_resource($this->fp)) { if (! file_exists($this->file)) { - throw new BAV_FileParserException_FileNotExists($this->file); + throw new FileParserException_FileNotExists($this->file); } else { - throw new BAV_FileParserException_IO(); + throw new FileParserException_IO(); } @@ -121,7 +121,7 @@ private function init() $dummyLine = fgets($this->fp, 1024); if (! $dummyLine) { - throw new BAV_FileParserException_IO(); + throw new FileParserException_IO(); } $this->lineLength = strlen($dummyLine); @@ -129,7 +129,7 @@ private function init() clearstatcache(); // filesize() seems to be 0 sometimes $filesize = filesize($this->file); if (! $filesize) { - throw new BAV_FileParserException_IO( + throw new FileParserException_IO( "Could not read filesize for '$this->file'." ); @@ -138,8 +138,8 @@ private function init() } /** - * @throws BAV_FileParserException_IO - * @throws BAV_FileParserException_FileNotExists + * @throws FileParserException_IO + * @throws FileParserException_FileNotExists * @return int */ public function getLines() @@ -149,34 +149,34 @@ public function getLines() } /** - * @throws BAV_FileParserException_IO - * @throws BAV_FileParserException_FileNotExists + * @throws FileParserException_IO + * @throws FileParserException_FileNotExists */ public function rewind() { if (fseek($this->getFileHandle(), 0) === -1) { - throw new BAV_FileParserException_IO(); + throw new FileParserException_IO(); } } /** - * @throws BAV_FileParserException_IO - * @throws BAV_FileParserException_FileNotExists + * @throws FileParserException_IO + * @throws FileParserException_FileNotExists * @param int $line * @param int $offset */ public function seekLine($line, $offset = 0) { if (fseek($this->getFileHandle(), $line * $this->lineLength + $offset) === -1) { - throw new BAV_FileParserException_IO(); + throw new FileParserException_IO(); } } /** - * @throws BAV_FileParserException_IO - * @throws BAV_FileParserException_FileNotExists + * @throws FileParserException_IO + * @throws FileParserException_FileNotExists * @param int $line * @return string */ @@ -187,8 +187,8 @@ public function readLine($line) } /** - * @throws BAV_FileParserException_IO - * @throws BAV_FileParserException_FileNotExists + * @throws FileParserException_IO + * @throws FileParserException_FileNotExists * @param int $line * @return string */ @@ -199,8 +199,8 @@ public function getBankID($line) } /** - * @throws BAV_FileParserException_FileNotExists - * @throws BAV_FileParserException_IO + * @throws FileParserException_FileNotExists + * @throws FileParserException_IO * @return resource */ public function getFileHandle() @@ -210,8 +210,8 @@ public function getFileHandle() } /** - * @throws BAV_FileParserException_FileNotExists - * @throws BAV_FileParserException_IO + * @throws FileParserException_FileNotExists + * @throws FileParserException_IO * @return int */ public function getLineLength() @@ -231,30 +231,30 @@ public function __destruct() } /** - * @throws BAV_FileParserException_ParseError + * @throws FileParserException_ParseError * @param string $line - * @return BAV_Bank + * @return Bank */ - public function getBank(BAV_DataBackend $dataBackend, $line) + public function getBank(DataBackend $dataBackend, $line) { if ($this->encoding->strlen($line) < self::TYPE_OFFSET + self::TYPE_LENGTH) { - throw new BAV_FileParserException_ParseError("Invalid line length in Line $line."); + throw new FileParserException_ParseError("Invalid line length in Line $line."); } $type = $this->encoding->substr($line, self::TYPE_OFFSET, self::TYPE_LENGTH); $bankID = $this->encoding->substr($line, self::BANKID_OFFSET, self::BANKID_LENGTH); - return new BAV_Bank($dataBackend, $bankID, $type); + return new Bank($dataBackend, $bankID, $type); } /** - * @throws BAV_FileParserException_ParseError + * @throws FileParserException_ParseError * @param string $line - * @return BAV_Agency + * @return Agency */ - public function getAgency(BAV_Bank $bank, $line) + public function getAgency(Bank $bank, $line) { if ($this->encoding->strlen($line) < self::ID_OFFSET + self::ID_LENGTH) { - throw new BAV_FileParserException_ParseError("Invalid line length."); + throw new FileParserException_ParseError("Invalid line length."); } $id = trim($this->encoding->substr($line, self::ID_OFFSET, self::ID_LENGTH)); @@ -264,18 +264,18 @@ public function getAgency(BAV_Bank $bank, $line) $postcode = $this->encoding->substr($line, self::POSTCODE_OFFSET, self::POSTCODE_LENGTH); $bic = trim($this->encoding->substr($line, self::BIC_OFFSET, self::BIC_LENGTH)); $pan = trim($this->encoding->substr($line, self::PAN_OFFSET, self::PAN_LENGTH)); - return new BAV_Agency($id, $bank, $name, $shortTerm, $city, $postcode, $bic, $pan); + return new Agency($id, $bank, $name, $shortTerm, $city, $postcode, $bic, $pan); } /** - * @throws BAV_FileParserException_ParseError + * @throws FileParserException_ParseError * @param string $line * @return bool */ public function isMainAgency($line) { if ($this->encoding->strlen($line) < self::TYPE_OFFSET + self::TYPE_LENGTH) { - throw new BAV_FileParserException_ParseError("Invalid line length."); + throw new FileParserException_ParseError("Invalid line length."); } return $this->encoding->substr($line, self::ISMAIN_OFFSET, 1) === '1'; diff --git a/classes/dataBackend/file/fileParser/BAV_FileParserContext.php b/classes/dataBackend/file/fileParser/FileParserContext.php similarity index 86% rename from classes/dataBackend/file/fileParser/BAV_FileParserContext.php rename to classes/dataBackend/file/fileParser/FileParserContext.php index 92f5f581..4a4a7791 100644 --- a/classes/dataBackend/file/fileParser/BAV_FileParserContext.php +++ b/classes/dataBackend/file/fileParser/FileParserContext.php @@ -1,7 +1,7 @@ * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_FileParserContext +class FileParserContext { /** @@ -63,13 +63,13 @@ public function getLine() } /** - * @throws BAV_FileParserContextException_Undefined + * @throws FileParserContextException_Undefined * @return int */ public function getStart() { if (is_null($this->start)) { - throw new BAV_FileParserContextException_Undefined(); + throw new FileParserContextException_Undefined(); } return $this->start; @@ -84,13 +84,13 @@ public function isStartDefined() } /** - * @throws BAV_FileParserContextException_Undefined + * @throws FileParserContextException_Undefined * @return int */ public function getEnd() { if (is_null($this->end)) { - throw new BAV_FileParserContextException_Undefined(); + throw new FileParserContextException_Undefined(); } return $this->end; diff --git a/classes/dataBackend/file/fileParser/exception/BAV_FileParserContextException_Undefined.php b/classes/dataBackend/file/fileParser/exception/BAV_FileParserContextException_Undefined.php deleted file mode 100644 index 67b60dd1..00000000 --- a/classes/dataBackend/file/fileParser/exception/BAV_FileParserContextException_Undefined.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * - * @package classes - * @subpackage dataBackend - * @author Markus Malkusch - * @copyright Copyright (C) 2006 Markus Malkusch - */ -class BAV_FileParserContextException_Undefined extends BAV_FileParserContextException -{ - -} diff --git a/classes/dataBackend/file/fileParser/exception/BAV_FileParserException_ParseError.php b/classes/dataBackend/file/fileParser/exception/BAV_FileParserException_ParseError.php deleted file mode 100644 index 27961a00..00000000 --- a/classes/dataBackend/file/fileParser/exception/BAV_FileParserException_ParseError.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * - * @package classes - * @subpackage dataBackend - * @author Markus Malkusch - * @copyright Copyright (C) 2006 Markus Malkusch - */ -class BAV_FileParserException_ParseError extends BAV_FileParserException -{ - -} diff --git a/classes/dataBackend/file/fileParser/exception/FileParserContextException.php b/classes/dataBackend/file/fileParser/exception/FileParserContextException.php new file mode 100644 index 00000000..f2bc011a --- /dev/null +++ b/classes/dataBackend/file/fileParser/exception/FileParserContextException.php @@ -0,0 +1,29 @@ + + * + * 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * + * @package classes + * @subpackage dataBackend + * @author Markus Malkusch + * @copyright Copyright (C) 2006 Markus Malkusch + */ +class FileParserContextException extends RuntimeException +{ + +} diff --git a/classes/dataBackend/exception/BAV_DataBackendException_IO.php b/classes/dataBackend/file/fileParser/exception/FileParserContextException_Undefined.php similarity index 92% rename from classes/dataBackend/exception/BAV_DataBackendException_IO.php rename to classes/dataBackend/file/fileParser/exception/FileParserContextException_Undefined.php index e0b0822d..7dd619cc 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException_IO.php +++ b/classes/dataBackend/file/fileParser/exception/FileParserContextException_Undefined.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_DataBackendException_IO extends BAV_DataBackendException +class FileParserContextException_Undefined extends FileParserContextException { } diff --git a/classes/dataBackend/file/fileParser/exception/BAV_FileParserException.php b/classes/dataBackend/file/fileParser/exception/FileParserException.php similarity index 94% rename from classes/dataBackend/file/fileParser/exception/BAV_FileParserException.php rename to classes/dataBackend/file/fileParser/exception/FileParserException.php index 3666cccf..a835f585 100644 --- a/classes/dataBackend/file/fileParser/exception/BAV_FileParserException.php +++ b/classes/dataBackend/file/fileParser/exception/FileParserException.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_FileParserException extends RuntimeException +class FileParserException extends RuntimeException { } diff --git a/classes/dataBackend/file/fileParser/exception/BAV_FileParserException_FileNotExists.php b/classes/dataBackend/file/fileParser/exception/FileParserException_FileNotExists.php similarity index 94% rename from classes/dataBackend/file/fileParser/exception/BAV_FileParserException_FileNotExists.php rename to classes/dataBackend/file/fileParser/exception/FileParserException_FileNotExists.php index 3694018e..a2442f17 100644 --- a/classes/dataBackend/file/fileParser/exception/BAV_FileParserException_FileNotExists.php +++ b/classes/dataBackend/file/fileParser/exception/FileParserException_FileNotExists.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_FileParserException_FileNotExists extends BAV_FileParserException +class FileParserException_FileNotExists extends FileParserException { /** diff --git a/classes/dataBackend/file/fileParser/exception/FileParserException_IO.php b/classes/dataBackend/file/fileParser/exception/FileParserException_IO.php new file mode 100644 index 00000000..bd00c704 --- /dev/null +++ b/classes/dataBackend/file/fileParser/exception/FileParserException_IO.php @@ -0,0 +1,29 @@ + + * + * 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * + * @package classes + * @subpackage dataBackend + * @author Markus Malkusch + * @copyright Copyright (C) 2006 Markus Malkusch + */ +class FileParserException_IO extends FileParserException +{ + +} diff --git a/classes/dataBackend/file/fileParser/exception/BAV_FileParserException_IO.php b/classes/dataBackend/file/fileParser/exception/FileParserException_ParseError.php similarity index 93% rename from classes/dataBackend/file/fileParser/exception/BAV_FileParserException_IO.php rename to classes/dataBackend/file/fileParser/exception/FileParserException_ParseError.php index 7334ba62..512f3b4f 100644 --- a/classes/dataBackend/file/fileParser/exception/BAV_FileParserException_IO.php +++ b/classes/dataBackend/file/fileParser/exception/FileParserException_ParseError.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_FileParserException_IO extends BAV_FileParserException +class FileParserException_ParseError extends FileParserException { } diff --git a/classes/dataBackend/pdo/BAV_DataBackend_PDO.php b/classes/dataBackend/pdo/DataBackend_PDO.php similarity index 78% rename from classes/dataBackend/pdo/BAV_DataBackend_PDO.php rename to classes/dataBackend/pdo/DataBackend_PDO.php index febfff87..1c435668 100644 --- a/classes/dataBackend/pdo/BAV_DataBackend_PDO.php +++ b/classes/dataBackend/pdo/DataBackend_PDO.php @@ -1,13 +1,13 @@ * @license GPL */ -class BAV_DataBackend_PDO extends BAV_DataBackend +class DataBackend_PDO extends DataBackend { /** @@ -85,17 +85,17 @@ public function getPrefix() } /** - * You may use an arbitrary SQL statement to receive BAV_Agency objects. + * You may use an arbitrary SQL statement to receive Agency objects. * Your statement should at least return the id of the agencies. * * If you want to perform well your query should provide all attributes of - * a BAV_Agency object (id, name, postcode, city, shortTerm, bank, pan, bic). + * a Agency object (id, name, postcode, city, shortTerm, bank, pan, bic). * If you don't, BAV needs to do one additional query for each object. * * @param string $sql - * @throws BAV_DataBackendException_IO_MissingAttributes - * @throws BAV_DataBackendException_IO - * @throws BAV_DataBackendException + * @throws DataBackendException_IO_MissingAttributes + * @throws DataBackendException_IO + * @throws DataBackendException * @return array */ public function getAgencies($sql) @@ -107,14 +107,14 @@ public function getAgencies($sql) foreach ($this->pdo->query($sql) as $result) { if (! $this->isValidAgencyResult($result)) { if (! array_key_exists('id', $result)) { - throw new BAV_DataBackendException_IO_MissingAttributes(); + throw new DataBackendException_IO_MissingAttributes(); } $this->selectAgency->execute(array(':agency' => $result['id'])); $result = $this->selectAgency->fetch(PDO::FETCH_ASSOC); $this->selectAgency->closeCursor(); if ($result === false) { - throw new BAV_DataBackendException_IO(); + throw new DataBackendException_IO(); } } @@ -123,7 +123,7 @@ public function getAgencies($sql) $bankResult = $this->selectAgencysBank->fetch(PDO::FETCH_ASSOC); $this->selectAgencysBank->closeCursor(); if ($bankResult === false) { - throw new BAV_DataBackendException_IO(); + throw new DataBackendException_IO(); } $result['bank'] = $bankResult['bank']; @@ -135,9 +135,9 @@ public function getAgencies($sql) return $agencies; } catch (PDOException $e) { - throw new BAV_DataBackendException_IO(); + throw new DataBackendException_IO(); - } catch (BAV_DataBackendException_BankNotFound $e) { + } catch (DataBackendException_BankNotFound $e) { throw new LogicException($e); } @@ -185,14 +185,14 @@ private function prepareStatements() } /** - * @see BAV_DataBackend::update() - * @throws BAV_DataBackendException + * @see DataBackend::update() + * @throws DataBackendException */ public function update() { $useTA = false; try { - $fileBackend = new BAV_DataBackend_File(tempnam(BAV_DataBackend_File::getTempdir(), 'bav')); + $fileBackend = new DataBackend_File(tempnam(DataBackend_File::getTempdir(), 'bav')); $fileBackend->install(); $insertBank = $this->pdo->prepare( @@ -238,7 +238,7 @@ public function update() )); } - } catch (BAV_DataBackendException_NoMainAgency $e) { + } catch (DataBackendException_NoMainAgency $e) { trigger_error( "Skipping bank {$e->getBank()->getBankID()} without any main agency." ); @@ -272,7 +272,7 @@ public function update() throw $e; } catch (PDOException $e2) { - throw new BAV_DataBackendException_IO( + throw new DataBackendException_IO( get_class($e) . ": {$e->getMessage()}\nadditionally: {$e2->getMessage()}" ); @@ -282,8 +282,8 @@ public function update() } /** - * @see BAV_DataBackend::install() - * @throws BAV_DataBackendException_IO + * @see DataBackend::install() + * @throws DataBackendException_IO */ public function install() { @@ -308,13 +308,13 @@ public function install() $this->pdo->exec( "CREATE TABLE {$this->prefix}agency( id int primary key, - name varchar(".BAV_FileParser::NAME_LENGTH.") NOT NULL, - postcode varchar(".BAV_FileParser::POSTCODE_LENGTH.") NOT NULL, - city varchar(".BAV_FileParser::CITY_LENGTH.") NOT NULL, - shortTerm varchar(".BAV_FileParser::SHORTTERM_LENGTH.") NOT NULL, + name varchar(".FileParser::NAME_LENGTH.") NOT NULL, + postcode varchar(".FileParser::POSTCODE_LENGTH.") NOT NULL, + city varchar(".FileParser::CITY_LENGTH.") NOT NULL, + shortTerm varchar(".FileParser::SHORTTERM_LENGTH.") NOT NULL, bank int NOT NULL, - pan char(".BAV_FileParser::PAN_LENGTH.") NULL, - bic varchar(".BAV_FileParser::BIC_LENGTH.") NULL, + pan char(".FileParser::PAN_LENGTH.") NULL, + bic varchar(".FileParser::BIC_LENGTH.") NULL, FOREIGN KEY (bank) REFERENCES {$this->prefix}bank(id) )$createOptions" @@ -337,14 +337,14 @@ public function install() $this->update(); } catch (PDOException $e) { - throw new BAV_DataBackendException_IO($e->getMessage()); + throw new DataBackendException_IO($e->getMessage()); } } /** - * @see BAV_DataBackend::uninstall() - * @throws BAV_DataBackendException_IO + * @see DataBackend::uninstall() + * @throws DataBackendException_IO */ public function uninstall() { @@ -354,14 +354,14 @@ public function uninstall() $this->pdo->exec("DROP TABLE {$this->prefix}meta"); } catch (PDOException $e) { - throw new BAV_DataBackendException_IO(); + throw new DataBackendException_IO(); } } /** - * @see BAV_DataBackend::getAllBanks() - * @throws BAV_DataBackendException + * @see DataBackend::getAllBanks() + * @throws DataBackendException * @return array */ public function getAllBanks() @@ -379,9 +379,9 @@ public function getAllBanks() return array_values($this->instances); } catch (PDOException $e) { - throw new BAV_DataBackendException_IO(); + throw new DataBackendException_IO(); - } catch (BAV_DataBackendException_IO_MissingAttributes $e) { + } catch (DataBackendException_IO_MissingAttributes $e) { $this->selectBank->closeCursor(); throw new LogicException($e); @@ -389,11 +389,11 @@ public function getAllBanks() } /** - * @throws BAV_DataBackendException - * @throws BAV_DataBackendException_BankNotFound + * @throws DataBackendException + * @throws DataBackendException_BankNotFound * @param string $bankID - * @return BAV_Bank - * @see BAV_DataBackend::getNewBank() + * @return Bank + * @see DataBackend::getNewBank() */ protected function getNewBank($bankID) { @@ -403,7 +403,7 @@ protected function getNewBank($bankID) $result = $this->selectBank->fetch(PDO::FETCH_ASSOC); if ($result === false) { $this->selectBank->closeCursor(); - throw new BAV_DataBackendException_BankNotFound($bankID); + throw new DataBackendException_BankNotFound($bankID); } $this->selectBank->closeCursor(); @@ -411,9 +411,9 @@ protected function getNewBank($bankID) } catch (PDOException $e) { $this->selectBank->closeCursor(); - throw new BAV_DataBackendException_IO(); + throw new DataBackendException_IO(); - } catch (BAV_DataBackendException_IO_MissingAttributes $e) { + } catch (DataBackendException_IO_MissingAttributes $e) { $this->selectBank->closeCursor(); throw new LogicException($e); @@ -444,30 +444,30 @@ private function isValidAgencyResult(Array $result) } /** - * @return BAV_Bank - * @throws BAV_DataBackendException_IO_MissingAttributes + * @return Bank + * @throws DataBackendException_IO_MissingAttributes */ private function getBankObject(Array $fetchedResult) { if (! $this->isValidBankResult($fetchedResult)) { - throw new BAV_DataBackendException_IO_MissingAttributes(); + throw new DataBackendException_IO_MissingAttributes(); } - return new BAV_Bank($this, $fetchedResult['id'], $fetchedResult['validator']); + return new Bank($this, $fetchedResult['id'], $fetchedResult['validator']); } /** - * @return BAV_Agency - * @throws BAV_DataBackendException_IO_MissingAttributes + * @return Agency + * @throws DataBackendException_IO_MissingAttributes */ - private function getAgencyObject(BAV_Bank $bank, Array $fetchedResult) + private function getAgencyObject(Bank $bank, Array $fetchedResult) { if (! $this->isValidAgencyResult($fetchedResult)) { - throw new BAV_DataBackendException_IO_MissingAttributes(); + throw new DataBackendException_IO_MissingAttributes(); } if (! array_key_exists($fetchedResult['id'], $this->agencies)) { - $this->agencies[$fetchedResult['id']] = new BAV_Agency( + $this->agencies[$fetchedResult['id']] = new Agency( $fetchedResult['id'], $bank, $fetchedResult['name'], @@ -483,18 +483,18 @@ private function getAgencyObject(BAV_Bank $bank, Array $fetchedResult) } /** - * @throws BAV_DataBackendException - * @return BAV_Agency - * @see BAV_DataBackend::getMainAgency() + * @throws DataBackendException + * @return Agency + * @see DataBackend::getMainAgency() */ - public function getMainAgency(BAV_Bank $bank) + public function getMainAgency(Bank $bank) { try { $this->prepareStatements(); $this->selectMainAgency->execute(array(":bankID" => $bank->getBankID())); $result = $this->selectMainAgency->fetch(); if ($result === false) { - throw new BAV_DataBackendException(); + throw new DataBackendException(); } $this->selectMainAgency->closeCursor(); @@ -502,9 +502,9 @@ public function getMainAgency(BAV_Bank $bank) } catch (PDOException $e) { $this->selectMainAgency->closeCursor(); - throw new BAV_DataBackendException_IO(); + throw new DataBackendException_IO(); - } catch (BAV_DataBackendException_IO_MissingAttributes $e) { + } catch (DataBackendException_IO_MissingAttributes $e) { $this->selectMainAgency->closeCursor(); throw new LogicException($e); @@ -512,11 +512,11 @@ public function getMainAgency(BAV_Bank $bank) } /** - * @throws BAV_DataBackendException + * @throws DataBackendException * @return array - * @see BAV_DataBackend::getAgenciesForBank() + * @see DataBackend::getAgenciesForBank() */ - public function getAgenciesForBank(BAV_Bank $bank) + public function getAgenciesForBank(Bank $bank) { try { $this->prepareStatements(); @@ -533,9 +533,9 @@ public function getAgenciesForBank(BAV_Bank $bank) } catch (PDOException $e) { $this->selectAgencies->closeCursor(); - throw new BAV_DataBackendException_IO(); + throw new DataBackendException_IO(); - } catch (BAV_DataBackendException_IO_MissingAttributes $e) { + } catch (DataBackendException_IO_MissingAttributes $e) { $this->selectAgencies->closeCursor(); throw new LogicException($e); @@ -546,7 +546,7 @@ public function getAgenciesForBank(BAV_Bank $bank) * Returns the timestamp of the last update. * * @return int timestamp - * @throws BAV_DataBackendException + * @throws DataBackendException */ public function getLastUpdate() { @@ -557,7 +557,7 @@ public function getLastUpdate() )); $result = $this->selectMeta->fetch(); if ($result === false) { - throw new BAV_DataBackendException(); + throw new DataBackendException(); } $this->selectMeta->closeCursor(); @@ -565,7 +565,7 @@ public function getLastUpdate() } catch (PDOException $e) { $this->selectMeta->closeCursor(); - throw new BAV_DataBackendException_IO($e->getMessage(), $e->getCode(), $e); + throw new DataBackendException_IO($e->getMessage(), $e->getCode(), $e); } } @@ -574,7 +574,7 @@ public function getLastUpdate() * Returns true if the backend was installed. * * @return bool - * @throws BAV_DataBackendException + * @throws DataBackendException */ public function isInstalled() { @@ -583,7 +583,7 @@ public function isInstalled() $this->selectInstalled->execute(); $result = $this->selectInstalled->fetch(); if ($result === false) { - throw new BAV_DataBackendException(); + throw new DataBackendException(); } $this->selectInstalled->closeCursor(); @@ -591,7 +591,7 @@ public function isInstalled() } catch (PDOException $e) { $this->selectInstalled->closeCursor(); - throw new BAV_DataBackendException_IO($e->getMessage(), $e->getCode(), $e); + throw new DataBackendException_IO($e->getMessage(), $e->getCode(), $e); } } diff --git a/classes/dataBackend/pdo/PDODataBackendContainer.php b/classes/dataBackend/pdo/PDODataBackendContainer.php index e72e29bf..b9199fc1 100644 --- a/classes/dataBackend/pdo/PDODataBackendContainer.php +++ b/classes/dataBackend/pdo/PDODataBackendContainer.php @@ -3,11 +3,11 @@ namespace malkusch\bav; /** - * Container for BAV_DataBackend_PDO objects. + * Container for DataBackend_PDO objects. * * @author Markus Malkusch * @license GPL - * @see BAV_DataBackend + * @see DataBackend */ class PDODataBackendContainer extends DataBackendContainer { @@ -37,10 +37,10 @@ public function __construct(\PDO $pdo, $prefix = 'bav_') * Returns the unconfigured backend which is only created by calling the * constructor. * - * @return BAV_DataBackend_PDO + * @return DataBackend_PDO */ protected function makeDataBackend() { - return new \BAV_DataBackend_PDO($this->pdo, $this->prefix); + return new \DataBackend_PDO($this->pdo, $this->prefix); } } diff --git a/classes/dataBackend/update/AutomaticUpdatePlan.php b/classes/dataBackend/update/AutomaticUpdatePlan.php index ddfdbead..3311888a 100644 --- a/classes/dataBackend/update/AutomaticUpdatePlan.php +++ b/classes/dataBackend/update/AutomaticUpdatePlan.php @@ -31,7 +31,7 @@ public function setNotice($notice) * * @see setNotice() */ - public function perform(\BAV_DataBackend $backend) + public function perform(\DataBackend $backend) { // TODO lock concurrent updates $backend->update(); diff --git a/classes/dataBackend/update/LogUpdatePlan.php b/classes/dataBackend/update/LogUpdatePlan.php index b06036b3..c9ad38f4 100644 --- a/classes/dataBackend/update/LogUpdatePlan.php +++ b/classes/dataBackend/update/LogUpdatePlan.php @@ -14,7 +14,7 @@ class LogUpdatePlan extends UpdatePlan /** * Log an E_USER_WARNING */ - public function perform(\BAV_DataBackend $backend) + public function perform(\DataBackend $backend) { trigger_error( "bav's bank data is outdated. Update the data with e.g. bin/bav-update.php", diff --git a/classes/dataBackend/update/UpdatePlan.php b/classes/dataBackend/update/UpdatePlan.php index ed4447d8..692683f7 100644 --- a/classes/dataBackend/update/UpdatePlan.php +++ b/classes/dataBackend/update/UpdatePlan.php @@ -32,15 +32,15 @@ abstract class UpdatePlan /** * Perform the update process. */ - abstract public function perform(\BAV_DataBackend $backend); + abstract public function perform(\DataBackend $backend); /** * Returns true if the data is to old and needs an update * - * @see BAV_DataBackend::getLastUpdate() + * @see DataBackend::getLastUpdate() * @return bool */ - public function isOutdated(\BAV_DataBackend $backend) + public function isOutdated(\DataBackend $backend) { /* * The following code creates a sorted list with the release months (update month - $relaseThreshold) diff --git a/classes/encoding/BAV_Encoding.php b/classes/encoding/Encoding.php similarity index 75% rename from classes/encoding/BAV_Encoding.php rename to classes/encoding/Encoding.php index f2273ad4..14355e16 100644 --- a/classes/encoding/BAV_Encoding.php +++ b/classes/encoding/Encoding.php @@ -26,7 +26,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class BAV_Encoding +abstract class Encoding { /** @@ -35,13 +35,13 @@ abstract class BAV_Encoding protected $enc = 'UTF-8'; /** - * @throws BAV_EncodingException_Unsupported + * @throws EncodingException_Unsupported * @param String $encoding */ public function __construct($encoding = 'UTF-8') { if (! $this->isSupported($encoding)) { - throw new BAV_EncodingException_Unsupported($encoding); + throw new EncodingException_Unsupported($encoding); } $this->enc = $encoding; @@ -61,7 +61,7 @@ abstract public function strlen($string); abstract public function substr($string, $offset, $length = null); /** - * @throws BAV_EncodingException + * @throws EncodingException * @param String $string * @param String $from_encoding * @return $string the encoded string @@ -78,23 +78,23 @@ public static function isSupported($encoding) } /** - * @throws BAV_EncodingException_Unsupported + * @throws EncodingException_Unsupported * @param String $encoding - * @return BAV_Encoding + * @return Encoding */ public static function getInstance($encoding) { - if (BAV_Encoding_Iconv::isSupported($encoding)) { - return new BAV_Encoding_Iconv($encoding); + if (Encoding_Iconv::isSupported($encoding)) { + return new Encoding_Iconv($encoding); - } elseif (BAV_Encoding_MB::isSupported($encoding)) { - return new BAV_Encoding_MB($encoding); + } elseif (Encoding_MB::isSupported($encoding)) { + return new Encoding_MB($encoding); - } elseif (BAV_Encoding_ISO8859::isSupported($encoding)) { - return new BAV_Encoding_ISO8859($encoding); + } elseif (Encoding_ISO8859::isSupported($encoding)) { + return new Encoding_ISO8859($encoding); } else { - throw new BAV_EncodingException_Unsupported($encoding); + throw new EncodingException_Unsupported($encoding); } } diff --git a/classes/encoding/BAV_Encoding_ISO8859.php b/classes/encoding/Encoding_ISO8859.php similarity index 93% rename from classes/encoding/BAV_Encoding_ISO8859.php rename to classes/encoding/Encoding_ISO8859.php index 2aafc096..4fc73f2c 100644 --- a/classes/encoding/BAV_Encoding_ISO8859.php +++ b/classes/encoding/Encoding_ISO8859.php @@ -26,7 +26,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Encoding_ISO8859 extends BAV_Encoding +class Encoding_ISO8859 extends Encoding { /** @@ -59,7 +59,7 @@ public function substr($string, $offset, $length = null) } /** - * @throws BAV_EncodingException + * @throws EncodingException * @param String $string * @param String $from_encoding * @return $string the encoded string @@ -70,6 +70,6 @@ public function convert($string, $from_encoding) return $string; } - throw new BAV_EncodingException(); + throw new EncodingException(); } } diff --git a/classes/encoding/BAV_Encoding_Iconv.php b/classes/encoding/Encoding_Iconv.php similarity index 92% rename from classes/encoding/BAV_Encoding_Iconv.php rename to classes/encoding/Encoding_Iconv.php index d21f1831..395c76ce 100644 --- a/classes/encoding/BAV_Encoding_Iconv.php +++ b/classes/encoding/Encoding_Iconv.php @@ -27,7 +27,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Encoding_Iconv extends BAV_Encoding +class Encoding_Iconv extends Encoding { /** @@ -39,7 +39,7 @@ public static function isSupported($encoding) } /** - * @throws BAV_EncodingException_Unsupported + * @throws EncodingException_Unsupported * @param String $encoding */ public function __construct($encoding = 'UTF-8') @@ -71,7 +71,7 @@ public function substr($string, $offset, $length = null) } /** - * @throws BAV_EncodingException + * @throws EncodingException * @param String $string * @param String $from_encoding * @return $string the encoded string @@ -80,7 +80,7 @@ public function convert($string, $from_encoding) { $encoded = iconv($from_encoding, $this->enc, $string); if ($encoded === false) { - throw new BAV_EncodingException(); + throw new EncodingException(); } return $encoded; diff --git a/classes/encoding/BAV_Encoding_MB.php b/classes/encoding/Encoding_MB.php similarity index 95% rename from classes/encoding/BAV_Encoding_MB.php rename to classes/encoding/Encoding_MB.php index 3e151bd8..1ea3213b 100644 --- a/classes/encoding/BAV_Encoding_MB.php +++ b/classes/encoding/Encoding_MB.php @@ -27,7 +27,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Encoding_MB extends BAV_Encoding +class Encoding_MB extends Encoding { /** @@ -40,7 +40,7 @@ public static function isSupported($encoding) } /** - * @throws BAV_EncodingException_Unsupported + * @throws EncodingException_Unsupported * @param String $encoding */ public function __construct($encoding = 'UTF-8') diff --git a/classes/dataBackend/exception/BAV_DataBackendException.php b/classes/encoding/exception/EncodingException.php similarity index 94% rename from classes/dataBackend/exception/BAV_DataBackendException.php rename to classes/encoding/exception/EncodingException.php index bc403399..383d3901 100644 --- a/classes/dataBackend/exception/BAV_DataBackendException.php +++ b/classes/encoding/exception/EncodingException.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_DataBackendException extends RuntimeException +class EncodingException extends RuntimeException { } diff --git a/classes/encoding/exception/BAV_EncodingException_Unsupported.php b/classes/encoding/exception/EncodingException_Unsupported.php similarity index 94% rename from classes/encoding/exception/BAV_EncodingException_Unsupported.php rename to classes/encoding/exception/EncodingException_Unsupported.php index a3022657..1d2d37be 100644 --- a/classes/encoding/exception/BAV_EncodingException_Unsupported.php +++ b/classes/encoding/exception/EncodingException_Unsupported.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_EncodingException_Unsupported extends BAV_EncodingException +class EncodingException_Unsupported extends EncodingException { /** diff --git a/classes/validator/BAV_Validator.php b/classes/validator/Validator.php similarity index 83% rename from classes/validator/BAV_Validator.php rename to classes/validator/Validator.php index 62547ca0..d64373bc 100644 --- a/classes/validator/BAV_Validator.php +++ b/classes/validator/Validator.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class BAV_Validator +abstract class Validator { /** @@ -52,27 +52,27 @@ abstract class BAV_Validator protected $doNormalization = true; /** - * @var BAV_Bank + * @var Bank */ protected $bank; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { $this->bank = $bank; $this->setChecknumberPosition(-1); } /** - * @throws BAV_ValidatorException_NotExists - * @return BAV_Validator + * @throws ValidatorException_NotExists + * @return Validator */ - public static function getInstance(BAV_Bank $bank) + public static function getInstance(Bank $bank) { $type = trim(strtoupper($bank->getValidationType())); - $class = "BAV_Validator_$type"; + $class = "Validator_$type"; $file = __DIR__."/validators/$class.php"; if (! file_exists($file)) { - throw new BAV_ValidatorException_NotExists($bank); + throw new ValidatorException_NotExists($bank); } require_once $file; @@ -90,7 +90,7 @@ public function isValid($account) $this->validate(); return ltrim($account, "0") != "" && $this->getResult(); - } catch (BAV_ValidatorException_OutOfBounds $e) { + } catch (ValidatorException_OutOfBounds $e) { return false; } @@ -138,12 +138,12 @@ protected function getChecknumber() * * @param int $pos * @return int - * @throws BAV_ValidatorException_OutOfBounds + * @throws ValidatorException_OutOfBounds */ protected function getNormalizedPosition($pos) { if ($pos >= strlen($this->account) || $pos < -strlen($this->account)) { - throw new BAV_ValidatorException_OutOfBounds("Cannot access offset $pos in String $this->account"); + throw new ValidatorException_OutOfBounds("Cannot access offset $pos in String $this->account"); } @@ -173,21 +173,21 @@ protected function crossSum($int) } /** - * @throws BAV_ValidatorException_OutOfBounds + * @throws ValidatorException_OutOfBounds * @param int $int */ protected function normalizeAccount($size) { $account = (string) $this->account; if (strlen($account) > $size) { - throw new BAV_ValidatorException_OutOfBounds("Can't normalize $account to size $size."); + throw new ValidatorException_OutOfBounds("Can't normalize $account to size $size."); } $this->account = str_repeat('0', $size - strlen($account)) . $account; } /** - * @throws BAV_ValidatorException_ESER + * @throws ValidatorException_ESER * @return string */ protected function getESER8() @@ -195,12 +195,12 @@ protected function getESER8() $account = ltrim($this->account, '0'); if (strlen($account) != 8) { - throw new BAV_ValidatorException_ESER(); + throw new ValidatorException_ESER(); } $bankID = $this->bank->getBankID(); if ($bankID{3} != 5) { - throw new BAV_ValidatorException_ESER(); + throw new ValidatorException_ESER(); } $blzPart = ltrim(substr($bankID, 4), '0'); @@ -208,7 +208,7 @@ protected function getESER8() $this->eserChecknumberOffset = -(4 - strlen($blzPart)); if (empty($blzPart)) { - throw new BAV_ValidatorException_ESER(); + throw new ValidatorException_ESER(); } $accountPart = ltrim(substr($account, 2), '0'); @@ -218,7 +218,7 @@ protected function getESER8() } /** - * @throws BAV_ValidatorException_ESER + * @throws ValidatorException_ESER * @return string */ protected function getESER9() @@ -228,11 +228,11 @@ protected function getESER9() if (strlen($account) != 9) { - throw new BAV_ValidatorException_ESER(); + throw new ValidatorException_ESER(); } if ($bankID{3} != 5) { - throw new BAV_ValidatorException_ESER(); + throw new ValidatorException_ESER(); } diff --git a/classes/validator/BAV_Validator_BankDependent.php b/classes/validator/Validator_BankDependent.php similarity index 96% rename from classes/validator/BAV_Validator_BankDependent.php rename to classes/validator/Validator_BankDependent.php index 5ca2c7a7..30acfe2f 100644 --- a/classes/validator/BAV_Validator_BankDependent.php +++ b/classes/validator/Validator_BankDependent.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -interface BAV_Validator_BankDependent +interface Validator_BankDependent { } diff --git a/classes/validator/BAV_Validator_Chain.php b/classes/validator/Validator_Chain.php similarity index 88% rename from classes/validator/BAV_Validator_Chain.php rename to classes/validator/Validator_Chain.php index 6bf7683f..351fe167 100644 --- a/classes/validator/BAV_Validator_Chain.php +++ b/classes/validator/Validator_Chain.php @@ -27,7 +27,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_Chain extends BAV_Validator +class Validator_Chain extends Validator { /** @@ -38,11 +38,11 @@ class BAV_Validator_Chain extends BAV_Validator /** * Adds a validator to the chain * - * @param BAV_Validator $validator Validator + * @param Validator $validator Validator * * @return void */ - public function addValidator(BAV_Validator $validator) + public function addValidator(Validator $validator) { $this->validators[] = $validator; } @@ -81,7 +81,7 @@ final protected function validate() * * @return bool */ - protected function continueValidation(BAV_Validator $validator) + protected function continueValidation(Validator $validator) { return true; } @@ -91,7 +91,7 @@ protected function continueValidation(BAV_Validator $validator) * * @return bool */ - protected function useValidator(BAV_Validator $validator) + protected function useValidator(Validator $validator) { return true; } diff --git a/classes/validator/BAV_Validator_Iteration.php b/classes/validator/Validator_Iteration.php similarity index 95% rename from classes/validator/BAV_Validator_Iteration.php rename to classes/validator/Validator_Iteration.php index 85a4a3d9..2c579ca8 100644 --- a/classes/validator/BAV_Validator_Iteration.php +++ b/classes/validator/Validator_Iteration.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class BAV_Validator_Iteration extends BAV_Validator +abstract class Validator_Iteration extends Validator { /** @@ -56,7 +56,7 @@ abstract class BAV_Validator_Iteration extends BAV_Validator */ private $end = 0; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/BAV_Validator_Iteration_Transformation.php b/classes/validator/Validator_Iteration_Transformation.php similarity index 96% rename from classes/validator/BAV_Validator_Iteration_Transformation.php rename to classes/validator/Validator_Iteration_Transformation.php index 5124af55..754a22df 100644 --- a/classes/validator/BAV_Validator_Iteration_Transformation.php +++ b/classes/validator/Validator_Iteration_Transformation.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class BAV_Validator_Iteration_Transformation extends BAV_Validator_Iteration +abstract class Validator_Iteration_Transformation extends Validator_Iteration { /** diff --git a/classes/validator/BAV_Validator_Iteration_Weighted.php b/classes/validator/Validator_Iteration_Weighted.php similarity index 94% rename from classes/validator/BAV_Validator_Iteration_Weighted.php rename to classes/validator/Validator_Iteration_Weighted.php index 5d75c2e7..0dc5fcf0 100644 --- a/classes/validator/BAV_Validator_Iteration_Weighted.php +++ b/classes/validator/Validator_Iteration_Weighted.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class BAV_Validator_Iteration_Weighted extends BAV_Validator_Iteration +abstract class Validator_Iteration_Weighted extends Validator_Iteration { /** diff --git a/classes/validator/exception/BAV_ValidatorException.php b/classes/validator/exception/ValidatorException.php similarity index 94% rename from classes/validator/exception/BAV_ValidatorException.php rename to classes/validator/exception/ValidatorException.php index cd78789a..e9d57ddc 100644 --- a/classes/validator/exception/BAV_ValidatorException.php +++ b/classes/validator/exception/ValidatorException.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_ValidatorException extends RuntimeException +class ValidatorException extends RuntimeException { } diff --git a/classes/validator/exception/BAV_ValidatorException_ESER.php b/classes/validator/exception/ValidatorException_ESER.php similarity index 93% rename from classes/validator/exception/BAV_ValidatorException_ESER.php rename to classes/validator/exception/ValidatorException_ESER.php index 393b27cd..9a4b237c 100644 --- a/classes/validator/exception/BAV_ValidatorException_ESER.php +++ b/classes/validator/exception/ValidatorException_ESER.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_ValidatorException_ESER extends BAV_ValidatorException +class ValidatorException_ESER extends ValidatorException { } diff --git a/classes/validator/exception/BAV_ValidatorException_NotExists.php b/classes/validator/exception/ValidatorException_NotExists.php similarity index 87% rename from classes/validator/exception/BAV_ValidatorException_NotExists.php rename to classes/validator/exception/ValidatorException_NotExists.php index b54b85bd..5adb32eb 100644 --- a/classes/validator/exception/BAV_ValidatorException_NotExists.php +++ b/classes/validator/exception/ValidatorException_NotExists.php @@ -23,21 +23,21 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_ValidatorException_NotExists extends BAV_ValidatorException +class ValidatorException_NotExists extends ValidatorException { /** - * @var BAV_Bank + * @var Bank */ private $bank; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { $this->bank = $bank; } /** - * @return BAV_Bank + * @return Bank */ public function getBank() { diff --git a/classes/validator/exception/BAV_ValidatorException_OutOfBounds.php b/classes/validator/exception/ValidatorException_OutOfBounds.php similarity index 92% rename from classes/validator/exception/BAV_ValidatorException_OutOfBounds.php rename to classes/validator/exception/ValidatorException_OutOfBounds.php index ddb587d5..76c9809f 100644 --- a/classes/validator/exception/BAV_ValidatorException_OutOfBounds.php +++ b/classes/validator/exception/ValidatorException_OutOfBounds.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_ValidatorException_OutOfBounds extends BAV_ValidatorException +class ValidatorException_OutOfBounds extends ValidatorException { } diff --git a/classes/validator/validators/BAV_Validator_00.php b/classes/validator/validators/Validator_00.php similarity index 92% rename from classes/validator/validators/BAV_Validator_00.php rename to classes/validator/validators/Validator_00.php index cd763ebe..847a7c2f 100644 --- a/classes/validator/validators/BAV_Validator_00.php +++ b/classes/validator/validators/Validator_00.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_00 extends BAV_Validator_Iteration_Weighted +class Validator_00 extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_01.php b/classes/validator/validators/Validator_01.php similarity index 91% rename from classes/validator/validators/BAV_Validator_01.php rename to classes/validator/validators/Validator_01.php index 6352b0d8..3e2ba0b3 100644 --- a/classes/validator/validators/BAV_Validator_01.php +++ b/classes/validator/validators/Validator_01.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_01 extends BAV_Validator_Iteration_Weighted +class Validator_01 extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_02.php b/classes/validator/validators/Validator_02.php similarity index 92% rename from classes/validator/validators/BAV_Validator_02.php rename to classes/validator/validators/Validator_02.php index 4f5fb29a..37c76115 100644 --- a/classes/validator/validators/BAV_Validator_02.php +++ b/classes/validator/validators/Validator_02.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_02 extends BAV_Validator_Iteration_Weighted +class Validator_02 extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_03.php b/classes/validator/validators/Validator_03.php similarity index 90% rename from classes/validator/validators/BAV_Validator_03.php rename to classes/validator/validators/Validator_03.php index ff67d885..4891eaf4 100644 --- a/classes/validator/validators/BAV_Validator_03.php +++ b/classes/validator/validators/Validator_03.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_03 extends BAV_Validator_01 +class Validator_03 extends Validator_01 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_04.php b/classes/validator/validators/Validator_04.php similarity index 90% rename from classes/validator/validators/BAV_Validator_04.php rename to classes/validator/validators/Validator_04.php index 05fc432a..0707b67b 100644 --- a/classes/validator/validators/BAV_Validator_04.php +++ b/classes/validator/validators/Validator_04.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_04 extends BAV_Validator_02 +class Validator_04 extends Validator_02 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_05.php b/classes/validator/validators/Validator_05.php similarity index 90% rename from classes/validator/validators/BAV_Validator_05.php rename to classes/validator/validators/Validator_05.php index 44e4fa3a..980caf4a 100644 --- a/classes/validator/validators/BAV_Validator_05.php +++ b/classes/validator/validators/Validator_05.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_05 extends BAV_Validator_01 +class Validator_05 extends Validator_01 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_06.php b/classes/validator/validators/Validator_06.php similarity index 92% rename from classes/validator/validators/BAV_Validator_06.php rename to classes/validator/validators/Validator_06.php index 9cc0ca5e..e726d0aa 100644 --- a/classes/validator/validators/BAV_Validator_06.php +++ b/classes/validator/validators/Validator_06.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_06 extends BAV_Validator_Iteration_Weighted +class Validator_06 extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_07.php b/classes/validator/validators/Validator_07.php similarity index 90% rename from classes/validator/validators/BAV_Validator_07.php rename to classes/validator/validators/Validator_07.php index 9a500d93..055311e9 100644 --- a/classes/validator/validators/BAV_Validator_07.php +++ b/classes/validator/validators/Validator_07.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_07 extends BAV_Validator_02 +class Validator_07 extends Validator_02 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_08.php b/classes/validator/validators/Validator_08.php similarity index 91% rename from classes/validator/validators/BAV_Validator_08.php rename to classes/validator/validators/Validator_08.php index 5037ac30..4aa52aff 100644 --- a/classes/validator/validators/BAV_Validator_08.php +++ b/classes/validator/validators/Validator_08.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_08 extends BAV_Validator_00 +class Validator_08 extends Validator_00 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_09.php b/classes/validator/validators/Validator_09.php similarity index 95% rename from classes/validator/validators/BAV_Validator_09.php rename to classes/validator/validators/Validator_09.php index aa121e84..a05d2d6f 100644 --- a/classes/validator/validators/BAV_Validator_09.php +++ b/classes/validator/validators/Validator_09.php @@ -19,7 +19,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_09 extends BAV_Validator +class Validator_09 extends Validator { protected function validate() diff --git a/classes/validator/validators/BAV_Validator_10.php b/classes/validator/validators/Validator_10.php similarity index 90% rename from classes/validator/validators/BAV_Validator_10.php rename to classes/validator/validators/Validator_10.php index c3ca6319..db164d5e 100644 --- a/classes/validator/validators/BAV_Validator_10.php +++ b/classes/validator/validators/Validator_10.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_10 extends BAV_Validator_06 +class Validator_10 extends Validator_06 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_11.php b/classes/validator/validators/Validator_11.php similarity index 92% rename from classes/validator/validators/BAV_Validator_11.php rename to classes/validator/validators/Validator_11.php index 37ae26d8..af5c4107 100644 --- a/classes/validator/validators/BAV_Validator_11.php +++ b/classes/validator/validators/Validator_11.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_11 extends BAV_Validator_06 +class Validator_11 extends Validator_06 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_13.php b/classes/validator/validators/Validator_13.php similarity index 93% rename from classes/validator/validators/BAV_Validator_13.php rename to classes/validator/validators/Validator_13.php index 730cc2aa..c91fff8f 100644 --- a/classes/validator/validators/BAV_Validator_13.php +++ b/classes/validator/validators/Validator_13.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_13 extends BAV_Validator_00 +class Validator_13 extends Validator_00 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_14.php b/classes/validator/validators/Validator_14.php similarity index 91% rename from classes/validator/validators/BAV_Validator_14.php rename to classes/validator/validators/Validator_14.php index 60c9c80d..d0518a67 100644 --- a/classes/validator/validators/BAV_Validator_14.php +++ b/classes/validator/validators/Validator_14.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_14 extends BAV_Validator_02 +class Validator_14 extends Validator_02 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_15.php b/classes/validator/validators/Validator_15.php similarity index 90% rename from classes/validator/validators/BAV_Validator_15.php rename to classes/validator/validators/Validator_15.php index c61751ef..2c1b16da 100644 --- a/classes/validator/validators/BAV_Validator_15.php +++ b/classes/validator/validators/Validator_15.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_15 extends BAV_Validator_06 +class Validator_15 extends Validator_06 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_16.php b/classes/validator/validators/Validator_16.php similarity index 92% rename from classes/validator/validators/BAV_Validator_16.php rename to classes/validator/validators/Validator_16.php index 3d1ea745..39e0b04b 100644 --- a/classes/validator/validators/BAV_Validator_16.php +++ b/classes/validator/validators/Validator_16.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_16 extends BAV_Validator_06 +class Validator_16 extends Validator_06 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_17.php b/classes/validator/validators/Validator_17.php similarity index 92% rename from classes/validator/validators/BAV_Validator_17.php rename to classes/validator/validators/Validator_17.php index df219869..2f1ba7c5 100644 --- a/classes/validator/validators/BAV_Validator_17.php +++ b/classes/validator/validators/Validator_17.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_17 extends BAV_Validator_Iteration_Weighted +class Validator_17 extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_18.php b/classes/validator/validators/Validator_18.php similarity index 90% rename from classes/validator/validators/BAV_Validator_18.php rename to classes/validator/validators/Validator_18.php index 14f4e4af..40ee9ab4 100644 --- a/classes/validator/validators/BAV_Validator_18.php +++ b/classes/validator/validators/Validator_18.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_18 extends BAV_Validator_01 +class Validator_18 extends Validator_01 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_19.php b/classes/validator/validators/Validator_19.php similarity index 90% rename from classes/validator/validators/BAV_Validator_19.php rename to classes/validator/validators/Validator_19.php index 9bf897bc..fb4de5a0 100644 --- a/classes/validator/validators/BAV_Validator_19.php +++ b/classes/validator/validators/Validator_19.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_19 extends BAV_Validator_06 +class Validator_19 extends Validator_06 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_20.php b/classes/validator/validators/Validator_20.php similarity index 90% rename from classes/validator/validators/BAV_Validator_20.php rename to classes/validator/validators/Validator_20.php index 12b3fc55..21975a6b 100644 --- a/classes/validator/validators/BAV_Validator_20.php +++ b/classes/validator/validators/Validator_20.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_20 extends BAV_Validator_06 +class Validator_20 extends Validator_06 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_21.php b/classes/validator/validators/Validator_21.php similarity index 92% rename from classes/validator/validators/BAV_Validator_21.php rename to classes/validator/validators/Validator_21.php index f25415cb..064f2184 100644 --- a/classes/validator/validators/BAV_Validator_21.php +++ b/classes/validator/validators/Validator_21.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_21 extends BAV_Validator_00 +class Validator_21 extends Validator_00 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_22.php b/classes/validator/validators/Validator_22.php similarity index 91% rename from classes/validator/validators/BAV_Validator_22.php rename to classes/validator/validators/Validator_22.php index 2bd41f7d..680b81fa 100644 --- a/classes/validator/validators/BAV_Validator_22.php +++ b/classes/validator/validators/Validator_22.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_22 extends BAV_Validator_Iteration_Weighted +class Validator_22 extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_23.php b/classes/validator/validators/Validator_23.php similarity index 91% rename from classes/validator/validators/BAV_Validator_23.php rename to classes/validator/validators/Validator_23.php index c7317b1c..f21557ac 100644 --- a/classes/validator/validators/BAV_Validator_23.php +++ b/classes/validator/validators/Validator_23.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_23 extends BAV_Validator_16 +class Validator_23 extends Validator_16 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_24.php b/classes/validator/validators/Validator_24.php similarity index 92% rename from classes/validator/validators/BAV_Validator_24.php rename to classes/validator/validators/Validator_24.php index 247adbb9..c00b024e 100644 --- a/classes/validator/validators/BAV_Validator_24.php +++ b/classes/validator/validators/Validator_24.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_24 extends BAV_Validator_Iteration_Weighted +class Validator_24 extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_25.php b/classes/validator/validators/Validator_25.php similarity index 93% rename from classes/validator/validators/BAV_Validator_25.php rename to classes/validator/validators/Validator_25.php index b5530548..78618eeb 100644 --- a/classes/validator/validators/BAV_Validator_25.php +++ b/classes/validator/validators/Validator_25.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_25 extends BAV_Validator_Iteration_Weighted +class Validator_25 extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_26.php b/classes/validator/validators/Validator_26.php similarity index 92% rename from classes/validator/validators/BAV_Validator_26.php rename to classes/validator/validators/Validator_26.php index 1fdff8aa..ff01b3c0 100644 --- a/classes/validator/validators/BAV_Validator_26.php +++ b/classes/validator/validators/Validator_26.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_26 extends BAV_Validator_06 +class Validator_26 extends Validator_06 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_27.php b/classes/validator/validators/Validator_27.php similarity index 88% rename from classes/validator/validators/BAV_Validator_27.php rename to classes/validator/validators/Validator_27.php index 97e1123d..296f3f50 100644 --- a/classes/validator/validators/BAV_Validator_27.php +++ b/classes/validator/validators/Validator_27.php @@ -19,19 +19,19 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_27 extends BAV_Validator_Iteration_Transformation +class Validator_27 extends Validator_Iteration_Transformation { /** - * @var BAV_Validator_00 + * @var Validator_00 */ private $validator00; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validator00 = new BAV_Validator_00($bank); + $this->validator00 = new Validator_00($bank); $this->setMatrix(array( array(0,1,5,9,3,7,4,8,2,6), diff --git a/classes/validator/validators/BAV_Validator_28.php b/classes/validator/validators/Validator_28.php similarity index 91% rename from classes/validator/validators/BAV_Validator_28.php rename to classes/validator/validators/Validator_28.php index c5314b3a..f5c49572 100644 --- a/classes/validator/validators/BAV_Validator_28.php +++ b/classes/validator/validators/Validator_28.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_28 extends BAV_Validator_06 +class Validator_28 extends Validator_06 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_29.php b/classes/validator/validators/Validator_29.php similarity index 91% rename from classes/validator/validators/BAV_Validator_29.php rename to classes/validator/validators/Validator_29.php index 3939bb6d..dd4d1aae 100644 --- a/classes/validator/validators/BAV_Validator_29.php +++ b/classes/validator/validators/Validator_29.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_29 extends BAV_Validator_Iteration_Transformation +class Validator_29 extends Validator_Iteration_Transformation { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_30.php b/classes/validator/validators/Validator_30.php similarity index 91% rename from classes/validator/validators/BAV_Validator_30.php rename to classes/validator/validators/Validator_30.php index 755be265..d6c12409 100644 --- a/classes/validator/validators/BAV_Validator_30.php +++ b/classes/validator/validators/Validator_30.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_30 extends BAV_Validator_00 +class Validator_30 extends Validator_00 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_31.php b/classes/validator/validators/Validator_31.php similarity index 92% rename from classes/validator/validators/BAV_Validator_31.php rename to classes/validator/validators/Validator_31.php index a837949b..a35fc9e4 100644 --- a/classes/validator/validators/BAV_Validator_31.php +++ b/classes/validator/validators/Validator_31.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_31 extends BAV_Validator_Iteration_Weighted +class Validator_31 extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_32.php b/classes/validator/validators/Validator_32.php similarity index 90% rename from classes/validator/validators/BAV_Validator_32.php rename to classes/validator/validators/Validator_32.php index 8b309738..f9d73548 100644 --- a/classes/validator/validators/BAV_Validator_32.php +++ b/classes/validator/validators/Validator_32.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_32 extends BAV_Validator_06 +class Validator_32 extends Validator_06 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_33.php b/classes/validator/validators/Validator_33.php similarity index 90% rename from classes/validator/validators/BAV_Validator_33.php rename to classes/validator/validators/Validator_33.php index 6835afdb..321e99e1 100644 --- a/classes/validator/validators/BAV_Validator_33.php +++ b/classes/validator/validators/Validator_33.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_33 extends BAV_Validator_06 +class Validator_33 extends Validator_06 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_34.php b/classes/validator/validators/Validator_34.php similarity index 90% rename from classes/validator/validators/BAV_Validator_34.php rename to classes/validator/validators/Validator_34.php index 714fc400..e7d5b313 100644 --- a/classes/validator/validators/BAV_Validator_34.php +++ b/classes/validator/validators/Validator_34.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_34 extends BAV_Validator_28 +class Validator_34 extends Validator_28 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_35.php b/classes/validator/validators/Validator_35.php similarity index 92% rename from classes/validator/validators/BAV_Validator_35.php rename to classes/validator/validators/Validator_35.php index c760e106..e9e6e421 100644 --- a/classes/validator/validators/BAV_Validator_35.php +++ b/classes/validator/validators/Validator_35.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_35 extends BAV_Validator_Iteration_Weighted +class Validator_35 extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_36.php b/classes/validator/validators/Validator_36.php similarity index 90% rename from classes/validator/validators/BAV_Validator_36.php rename to classes/validator/validators/Validator_36.php index 0c4a6e8e..f1afbd13 100644 --- a/classes/validator/validators/BAV_Validator_36.php +++ b/classes/validator/validators/Validator_36.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_36 extends BAV_Validator_06 +class Validator_36 extends Validator_06 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_37.php b/classes/validator/validators/Validator_37.php similarity index 90% rename from classes/validator/validators/BAV_Validator_37.php rename to classes/validator/validators/Validator_37.php index 76c8e258..a54ef455 100644 --- a/classes/validator/validators/BAV_Validator_37.php +++ b/classes/validator/validators/Validator_37.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_37 extends BAV_Validator_06 +class Validator_37 extends Validator_06 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_38.php b/classes/validator/validators/Validator_38.php similarity index 90% rename from classes/validator/validators/BAV_Validator_38.php rename to classes/validator/validators/Validator_38.php index 8805dc20..13607ba8 100644 --- a/classes/validator/validators/BAV_Validator_38.php +++ b/classes/validator/validators/Validator_38.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_38 extends BAV_Validator_06 +class Validator_38 extends Validator_06 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_39.php b/classes/validator/validators/Validator_39.php similarity index 90% rename from classes/validator/validators/BAV_Validator_39.php rename to classes/validator/validators/Validator_39.php index ff7a20d6..8b98b472 100644 --- a/classes/validator/validators/BAV_Validator_39.php +++ b/classes/validator/validators/Validator_39.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_39 extends BAV_Validator_06 +class Validator_39 extends Validator_06 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_40.php b/classes/validator/validators/Validator_40.php similarity index 90% rename from classes/validator/validators/BAV_Validator_40.php rename to classes/validator/validators/Validator_40.php index a8257539..759a4bda 100644 --- a/classes/validator/validators/BAV_Validator_40.php +++ b/classes/validator/validators/Validator_40.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_40 extends BAV_Validator_06 +class Validator_40 extends Validator_06 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_41.php b/classes/validator/validators/Validator_41.php similarity index 92% rename from classes/validator/validators/BAV_Validator_41.php rename to classes/validator/validators/Validator_41.php index 75d8dc96..514a2204 100644 --- a/classes/validator/validators/BAV_Validator_41.php +++ b/classes/validator/validators/Validator_41.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_41 extends BAV_Validator_00 +class Validator_41 extends Validator_00 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_42.php b/classes/validator/validators/Validator_42.php similarity index 90% rename from classes/validator/validators/BAV_Validator_42.php rename to classes/validator/validators/Validator_42.php index dd8c883e..a648ce40 100644 --- a/classes/validator/validators/BAV_Validator_42.php +++ b/classes/validator/validators/Validator_42.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_42 extends BAV_Validator_06 +class Validator_42 extends Validator_06 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_43.php b/classes/validator/validators/Validator_43.php similarity index 91% rename from classes/validator/validators/BAV_Validator_43.php rename to classes/validator/validators/Validator_43.php index 8b02fe1d..4d566bb0 100644 --- a/classes/validator/validators/BAV_Validator_43.php +++ b/classes/validator/validators/Validator_43.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_43 extends BAV_Validator_Iteration_Weighted +class Validator_43 extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_44.php b/classes/validator/validators/Validator_44.php similarity index 90% rename from classes/validator/validators/BAV_Validator_44.php rename to classes/validator/validators/Validator_44.php index e008b49a..594f044f 100644 --- a/classes/validator/validators/BAV_Validator_44.php +++ b/classes/validator/validators/Validator_44.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_44 extends BAV_Validator_33 +class Validator_44 extends Validator_33 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_45.php b/classes/validator/validators/Validator_45.php similarity index 92% rename from classes/validator/validators/BAV_Validator_45.php rename to classes/validator/validators/Validator_45.php index 017bcd01..c99d3c4d 100644 --- a/classes/validator/validators/BAV_Validator_45.php +++ b/classes/validator/validators/Validator_45.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_45 extends BAV_Validator_00 +class Validator_45 extends Validator_00 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_46.php b/classes/validator/validators/Validator_46.php similarity index 91% rename from classes/validator/validators/BAV_Validator_46.php rename to classes/validator/validators/Validator_46.php index 183fe15e..24e5102c 100644 --- a/classes/validator/validators/BAV_Validator_46.php +++ b/classes/validator/validators/Validator_46.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_46 extends BAV_Validator_06 +class Validator_46 extends Validator_06 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_47.php b/classes/validator/validators/Validator_47.php similarity index 91% rename from classes/validator/validators/BAV_Validator_47.php rename to classes/validator/validators/Validator_47.php index 8709ad17..d43bc6b9 100644 --- a/classes/validator/validators/BAV_Validator_47.php +++ b/classes/validator/validators/Validator_47.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_47 extends BAV_Validator_06 +class Validator_47 extends Validator_06 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_48.php b/classes/validator/validators/Validator_48.php similarity index 91% rename from classes/validator/validators/BAV_Validator_48.php rename to classes/validator/validators/Validator_48.php index 12f9c2b6..245166d9 100644 --- a/classes/validator/validators/BAV_Validator_48.php +++ b/classes/validator/validators/Validator_48.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_48 extends BAV_Validator_06 +class Validator_48 extends Validator_06 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_49.php b/classes/validator/validators/Validator_49.php similarity index 82% rename from classes/validator/validators/BAV_Validator_49.php rename to classes/validator/validators/Validator_49.php index 642f4145..cc006cca 100644 --- a/classes/validator/validators/BAV_Validator_49.php +++ b/classes/validator/validators/Validator_49.php @@ -25,16 +25,16 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_49 extends BAV_Validator_Chain +class Validator_49 extends Validator_Chain { /** */ - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new BAV_Validator_00($bank); - $this->validators[] = new BAV_Validator_01($bank); + $this->validators[] = new Validator_00($bank); + $this->validators[] = new Validator_01($bank); } } diff --git a/classes/validator/validators/BAV_Validator_50.php b/classes/validator/validators/Validator_50.php similarity index 93% rename from classes/validator/validators/BAV_Validator_50.php rename to classes/validator/validators/Validator_50.php index 2642cfe9..a43806e1 100644 --- a/classes/validator/validators/BAV_Validator_50.php +++ b/classes/validator/validators/Validator_50.php @@ -19,7 +19,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_50 extends BAV_Validator_06 +class Validator_50 extends Validator_06 { public function isValid($account) @@ -33,7 +33,7 @@ public function isValid($account) && parent::isValid($account); } - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_51.php b/classes/validator/validators/Validator_51.php similarity index 80% rename from classes/validator/validators/BAV_Validator_51.php rename to classes/validator/validators/Validator_51.php index 4158186d..274a80bb 100644 --- a/classes/validator/validators/BAV_Validator_51.php +++ b/classes/validator/validators/Validator_51.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_51 extends BAV_Validator_Chain +class Validator_51 extends Validator_Chain { /** @@ -39,28 +39,28 @@ class BAV_Validator_51 extends BAV_Validator_Chain private $exceptionValidators = array(); /** - * @var BAV_Validator_33 + * @var Validator_33 */ private $validatorD; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->defaultValidators[0] = new BAV_Validator_06($this->bank); + $this->defaultValidators[0] = new Validator_06($this->bank); $this->defaultValidators[0]->setWeights(array(2, 3, 4, 5, 6, 7)); $this->defaultValidators[0]->setEnd(3); - $this->defaultValidators[1] = new BAV_Validator_33($this->bank); + $this->defaultValidators[1] = new Validator_33($this->bank); $this->defaultValidators[1]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators[1]->setEnd(4); - $this->defaultValidators[2] = new BAV_Validator_00($this->bank); + $this->defaultValidators[2] = new Validator_00($this->bank); $this->defaultValidators[2]->setWeights(array(2, 1)); $this->defaultValidators[2]->setEnd(3); $this->defaultValidators[2]->setDivisor(10); - $this->validatorD = new BAV_Validator_33($this->bank); + $this->validatorD = new Validator_33($this->bank); $this->defaultValidators[3] = $this->validatorD; $this->defaultValidators[3]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators[3]->setEnd(4); @@ -72,11 +72,11 @@ public function __construct(BAV_Bank $bank) /** * @return array */ - public static function getExceptionValidators(BAV_Bank $bank) + public static function getExceptionValidators(Bank $bank) { $exceptionValidators = array(); - $exceptionValidators[] = new BAV_Validator_51x($bank); - $exceptionValidators[] = new BAV_Validator_51x($bank); + $exceptionValidators[] = new Validator_51x($bank); + $exceptionValidators[] = new Validator_51x($bank); $exceptionValidators[1]->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 10)); $exceptionValidators[1]->setEnd(0); @@ -95,7 +95,7 @@ protected function init($account) : $this->defaultValidators; } - protected function continueValidation(BAV_Validator $validator) + protected function continueValidation(Validator $validator) { if ($validator !== $this->validatorD) { return true; diff --git a/classes/validator/validators/BAV_Validator_51x.php b/classes/validator/validators/Validator_51x.php similarity index 92% rename from classes/validator/validators/BAV_Validator_51x.php rename to classes/validator/validators/Validator_51x.php index b3711e94..c908e656 100644 --- a/classes/validator/validators/BAV_Validator_51x.php +++ b/classes/validator/validators/Validator_51x.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_51x extends BAV_Validator_Iteration_Weighted +class Validator_51x extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_52.php b/classes/validator/validators/Validator_52.php similarity index 87% rename from classes/validator/validators/BAV_Validator_52.php rename to classes/validator/validators/Validator_52.php index 23c51c01..91647dcb 100644 --- a/classes/validator/validators/BAV_Validator_52.php +++ b/classes/validator/validators/Validator_52.php @@ -19,11 +19,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_52 extends BAV_Validator_Iteration_Weighted implements BAV_Validator_BankDependent +class Validator_52 extends Validator_Iteration_Weighted implements Validator_BankDependent { /** - * @var BAV_Validator_20 + * @var Validator_20 */ private $validator20; @@ -32,7 +32,7 @@ class BAV_Validator_52 extends BAV_Validator_Iteration_Weighted implements BAV_V */ private $checknumberWeight = 0; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); @@ -41,7 +41,7 @@ public function __construct(BAV_Bank $bank) $this->setEnd(0); $this->setChecknumberPosition(5); - $this->validator20 = new BAV_Validator_20($bank); + $this->validator20 = new Validator_20($bank); } public function isValid($account) @@ -51,7 +51,7 @@ public function isValid($account) ? $this->validator20->isValid($account) : parent::isValid($account); - } catch (BAV_ValidatorException_ESER $e) { + } catch (ValidatorException_ESER $e) { return false; } diff --git a/classes/validator/validators/BAV_Validator_53.php b/classes/validator/validators/Validator_53.php similarity index 95% rename from classes/validator/validators/BAV_Validator_53.php rename to classes/validator/validators/Validator_53.php index 4f5a9c9d..b45b1dfd 100644 --- a/classes/validator/validators/BAV_Validator_53.php +++ b/classes/validator/validators/Validator_53.php @@ -19,7 +19,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_53 extends BAV_Validator_52 +class Validator_53 extends Validator_52 { protected function normalizeAccount($size) diff --git a/classes/validator/validators/BAV_Validator_54.php b/classes/validator/validators/Validator_54.php similarity index 91% rename from classes/validator/validators/BAV_Validator_54.php rename to classes/validator/validators/Validator_54.php index c8eb9a61..be917d4e 100644 --- a/classes/validator/validators/BAV_Validator_54.php +++ b/classes/validator/validators/Validator_54.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_54 extends BAV_Validator_Iteration_Weighted +class Validator_54 extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_55.php b/classes/validator/validators/Validator_55.php similarity index 90% rename from classes/validator/validators/BAV_Validator_55.php rename to classes/validator/validators/Validator_55.php index 9963b2df..67ea22f0 100644 --- a/classes/validator/validators/BAV_Validator_55.php +++ b/classes/validator/validators/Validator_55.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_55 extends BAV_Validator_06 +class Validator_55 extends Validator_06 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_56.php b/classes/validator/validators/Validator_56.php similarity index 91% rename from classes/validator/validators/BAV_Validator_56.php rename to classes/validator/validators/Validator_56.php index 09c32a4c..dc235ce9 100644 --- a/classes/validator/validators/BAV_Validator_56.php +++ b/classes/validator/validators/Validator_56.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_56 extends BAV_Validator_Iteration_Weighted +class Validator_56 extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_57.php b/classes/validator/validators/Validator_57.php similarity index 91% rename from classes/validator/validators/BAV_Validator_57.php rename to classes/validator/validators/Validator_57.php index 7bd1a2f5..c1ea4c8d 100644 --- a/classes/validator/validators/BAV_Validator_57.php +++ b/classes/validator/validators/Validator_57.php @@ -19,16 +19,16 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_57 extends BAV_Validator +class Validator_57 extends Validator { /** - * @var BAV_Validator + * @var Validator */ private $validator; /** - * @var BAV_Validator_09 + * @var Validator_09 */ private $validator09; @@ -39,29 +39,29 @@ class BAV_Validator_57 extends BAV_Validator /** * @private - * @var BAV_Validator_00 + * @var Validator_00 */ private $mode1; /** * @private - * @var BAV_Validator_00 + * @var Validator_00 */ private $mode2; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validator09 = new BAV_Validator_09($bank); + $this->validator09 = new Validator_09($bank); - $this->mode1 = new BAV_Validator_00($bank); + $this->mode1 = new Validator_00($bank); $this->mode1->setWeights(array(1, 2)); $this->mode1->setStart(0); $this->mode1->setEnd(-2); - $this->mode2 = new BAV_Validator_00($bank); + $this->mode2 = new Validator_00($bank); $this->mode2->setWeights(array(1, 2, 0, 1, 2, 1, 2, 1, 2, 1)); $this->mode2->setChecknumberPosition(2); $this->mode2->setStart(0); diff --git a/classes/validator/validators/BAV_Validator_58.php b/classes/validator/validators/Validator_58.php similarity index 91% rename from classes/validator/validators/BAV_Validator_58.php rename to classes/validator/validators/Validator_58.php index 304e6521..1a0f71c0 100644 --- a/classes/validator/validators/BAV_Validator_58.php +++ b/classes/validator/validators/Validator_58.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_58 extends BAV_Validator_02 +class Validator_58 extends Validator_02 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_59.php b/classes/validator/validators/Validator_59.php similarity index 91% rename from classes/validator/validators/BAV_Validator_59.php rename to classes/validator/validators/Validator_59.php index 07f4a976..60894721 100644 --- a/classes/validator/validators/BAV_Validator_59.php +++ b/classes/validator/validators/Validator_59.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_59 extends BAV_Validator_00 +class Validator_59 extends Validator_00 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_60.php b/classes/validator/validators/Validator_60.php similarity index 90% rename from classes/validator/validators/BAV_Validator_60.php rename to classes/validator/validators/Validator_60.php index 6017231b..aec35922 100644 --- a/classes/validator/validators/BAV_Validator_60.php +++ b/classes/validator/validators/Validator_60.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_60 extends BAV_Validator_00 +class Validator_60 extends Validator_00 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_61.php b/classes/validator/validators/Validator_61.php similarity index 93% rename from classes/validator/validators/BAV_Validator_61.php rename to classes/validator/validators/Validator_61.php index bc307512..a938ddc3 100644 --- a/classes/validator/validators/BAV_Validator_61.php +++ b/classes/validator/validators/Validator_61.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_61 extends BAV_Validator_Iteration_Weighted +class Validator_61 extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_62.php b/classes/validator/validators/Validator_62.php similarity index 92% rename from classes/validator/validators/BAV_Validator_62.php rename to classes/validator/validators/Validator_62.php index bc5c4bb3..1346c8a8 100644 --- a/classes/validator/validators/BAV_Validator_62.php +++ b/classes/validator/validators/Validator_62.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_62 extends BAV_Validator_Iteration_Weighted +class Validator_62 extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_63.php b/classes/validator/validators/Validator_63.php similarity index 93% rename from classes/validator/validators/BAV_Validator_63.php rename to classes/validator/validators/Validator_63.php index c7c1acfe..32eaf851 100644 --- a/classes/validator/validators/BAV_Validator_63.php +++ b/classes/validator/validators/Validator_63.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_63 extends BAV_Validator_Iteration_Weighted +class Validator_63 extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_64.php b/classes/validator/validators/Validator_64.php similarity index 91% rename from classes/validator/validators/BAV_Validator_64.php rename to classes/validator/validators/Validator_64.php index 74c844da..47beb5c9 100644 --- a/classes/validator/validators/BAV_Validator_64.php +++ b/classes/validator/validators/Validator_64.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_64 extends BAV_Validator_06 +class Validator_64 extends Validator_06 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_65.php b/classes/validator/validators/Validator_65.php similarity index 92% rename from classes/validator/validators/BAV_Validator_65.php rename to classes/validator/validators/Validator_65.php index 34569ae9..f6ea3a95 100644 --- a/classes/validator/validators/BAV_Validator_65.php +++ b/classes/validator/validators/Validator_65.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_65 extends BAV_Validator_00 +class Validator_65 extends Validator_00 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_66.php b/classes/validator/validators/Validator_66.php similarity index 92% rename from classes/validator/validators/BAV_Validator_66.php rename to classes/validator/validators/Validator_66.php index c00a34ec..ca749c90 100644 --- a/classes/validator/validators/BAV_Validator_66.php +++ b/classes/validator/validators/Validator_66.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_66 extends BAV_Validator_Iteration_Weighted +class Validator_66 extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_67.php b/classes/validator/validators/Validator_67.php similarity index 91% rename from classes/validator/validators/BAV_Validator_67.php rename to classes/validator/validators/Validator_67.php index 84ed17e3..a5548001 100644 --- a/classes/validator/validators/BAV_Validator_67.php +++ b/classes/validator/validators/Validator_67.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_67 extends BAV_Validator_00 +class Validator_67 extends Validator_00 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_68.php b/classes/validator/validators/Validator_68.php similarity index 85% rename from classes/validator/validators/BAV_Validator_68.php rename to classes/validator/validators/Validator_68.php index 921e1fd5..43cdad29 100644 --- a/classes/validator/validators/BAV_Validator_68.php +++ b/classes/validator/validators/Validator_68.php @@ -25,24 +25,24 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_68 extends BAV_Validator_Chain +class Validator_68 extends Validator_Chain { /** - * @var BAV_Validator_10 + * @var Validator_10 */ private $validator10; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validator10 = new BAV_Validator_00($bank); + $this->validator10 = new Validator_00($bank); $this->validator10->setEnd(3); - $this->validators[] = new BAV_Validator_00($bank); + $this->validators[] = new Validator_00($bank); - $this->validators[] = new BAV_Validator_00($bank); + $this->validators[] = new Validator_00($bank); $this->validators[1]->setWeights(array(2, 1, 2, 1, 2, 0, 0, 1)); } diff --git a/classes/validator/validators/BAV_Validator_69.php b/classes/validator/validators/Validator_69.php similarity index 83% rename from classes/validator/validators/BAV_Validator_69.php rename to classes/validator/validators/Validator_69.php index f0fd28ed..5ea03a9d 100644 --- a/classes/validator/validators/BAV_Validator_69.php +++ b/classes/validator/validators/Validator_69.php @@ -25,17 +25,17 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_69 extends BAV_Validator_Chain +class Validator_69 extends Validator_Chain { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new BAV_Validator_28($bank); + $this->validators[] = new Validator_28($bank); $this->validators[0]->setWeights(array(2, 3, 4, 5, 6, 7, 8)); - $this->validators[] = new BAV_Validator_69b($bank); + $this->validators[] = new Validator_69b($bank); } public function isValid($account) @@ -46,7 +46,7 @@ public function isValid($account) /** * @return bool */ - protected function useValidator(BAV_Validator $validator) + protected function useValidator(Validator $validator) { if ($validator === $this->validators[0] && ($this->account >= 9700000000 && $this->account <= 9799999999)) { return false; diff --git a/classes/validator/validators/BAV_Validator_69b.php b/classes/validator/validators/Validator_69b.php similarity index 91% rename from classes/validator/validators/BAV_Validator_69b.php rename to classes/validator/validators/Validator_69b.php index 15593ded..42da26de 100644 --- a/classes/validator/validators/BAV_Validator_69b.php +++ b/classes/validator/validators/Validator_69b.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_69b extends BAV_Validator_Iteration_Transformation +class Validator_69b extends Validator_Iteration_Transformation { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_70.php b/classes/validator/validators/Validator_70.php similarity index 92% rename from classes/validator/validators/BAV_Validator_70.php rename to classes/validator/validators/Validator_70.php index 24b45c9a..bb93df9f 100644 --- a/classes/validator/validators/BAV_Validator_70.php +++ b/classes/validator/validators/Validator_70.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_70 extends BAV_Validator_06 +class Validator_70 extends Validator_06 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_71.php b/classes/validator/validators/Validator_71.php similarity index 92% rename from classes/validator/validators/BAV_Validator_71.php rename to classes/validator/validators/Validator_71.php index ae3901d1..3b0544e6 100644 --- a/classes/validator/validators/BAV_Validator_71.php +++ b/classes/validator/validators/Validator_71.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_71 extends BAV_Validator_Iteration_Weighted +class Validator_71 extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_72.php b/classes/validator/validators/Validator_72.php similarity index 90% rename from classes/validator/validators/BAV_Validator_72.php rename to classes/validator/validators/Validator_72.php index 00cce900..c8b02ede 100644 --- a/classes/validator/validators/BAV_Validator_72.php +++ b/classes/validator/validators/Validator_72.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_72 extends BAV_Validator_00 +class Validator_72 extends Validator_00 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_73.php b/classes/validator/validators/Validator_73.php similarity index 80% rename from classes/validator/validators/BAV_Validator_73.php rename to classes/validator/validators/Validator_73.php index 66c4509f..541b2e6b 100644 --- a/classes/validator/validators/BAV_Validator_73.php +++ b/classes/validator/validators/Validator_73.php @@ -19,7 +19,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_73 extends BAV_Validator_Chain +class Validator_73 extends Validator_Chain { /** @@ -32,23 +32,23 @@ class BAV_Validator_73 extends BAV_Validator_Chain */ private $exceptionValidators = array(); - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->defaultValidators[] = new BAV_Validator_00($bank); + $this->defaultValidators[] = new Validator_00($bank); $this->defaultValidators[0]->setEnd(3); - $this->defaultValidators[] = new BAV_Validator_00($bank); + $this->defaultValidators[] = new Validator_00($bank); $this->defaultValidators[1]->setWeights(array(2, 1)); $this->defaultValidators[1]->setEnd(4); - $this->defaultValidators[] = new BAV_Validator_00($bank); + $this->defaultValidators[] = new Validator_00($bank); $this->defaultValidators[2]->setWeights(array(2, 1)); $this->defaultValidators[2]->setDivisor(7); $this->defaultValidators[2]->setEnd(4); - $this->exceptionValidators = BAV_Validator_51::getExceptionValidators($bank); + $this->exceptionValidators = Validator_51::getExceptionValidators($bank); } /** diff --git a/classes/validator/validators/BAV_Validator_74.php b/classes/validator/validators/Validator_74.php similarity index 93% rename from classes/validator/validators/BAV_Validator_74.php rename to classes/validator/validators/Validator_74.php index 24bf525d..ae311655 100644 --- a/classes/validator/validators/BAV_Validator_74.php +++ b/classes/validator/validators/Validator_74.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_74 extends BAV_Validator_00 +class Validator_74 extends Validator_00 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_75.php b/classes/validator/validators/Validator_75.php similarity index 93% rename from classes/validator/validators/BAV_Validator_75.php rename to classes/validator/validators/Validator_75.php index 4b0c418c..c3336b54 100644 --- a/classes/validator/validators/BAV_Validator_75.php +++ b/classes/validator/validators/Validator_75.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_75 extends BAV_Validator_00 +class Validator_75 extends Validator_00 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_76.php b/classes/validator/validators/Validator_76.php similarity index 93% rename from classes/validator/validators/BAV_Validator_76.php rename to classes/validator/validators/Validator_76.php index b938c4a0..17af0e18 100644 --- a/classes/validator/validators/BAV_Validator_76.php +++ b/classes/validator/validators/Validator_76.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_76 extends BAV_Validator_Iteration_Weighted +class Validator_76 extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_77.php b/classes/validator/validators/Validator_77.php similarity index 81% rename from classes/validator/validators/BAV_Validator_77.php rename to classes/validator/validators/Validator_77.php index 9b5661db..7cbed930 100644 --- a/classes/validator/validators/BAV_Validator_77.php +++ b/classes/validator/validators/Validator_77.php @@ -19,17 +19,17 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_77 extends BAV_Validator_Chain +class Validator_77 extends Validator_Chain { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new BAV_Validator_77a($bank); + $this->validators[] = new Validator_77a($bank); $this->validators[0]->setWeights(array(1, 2, 3, 4, 5)); - $this->validators[] = new BAV_Validator_77a($bank); + $this->validators[] = new Validator_77a($bank); $this->validators[1]->setWeights(array(5, 4, 3, 4, 5)); } } diff --git a/classes/validator/validators/BAV_Validator_77a.php b/classes/validator/validators/Validator_77a.php similarity index 91% rename from classes/validator/validators/BAV_Validator_77a.php rename to classes/validator/validators/Validator_77a.php index 9f0b876b..1bbb272c 100644 --- a/classes/validator/validators/BAV_Validator_77a.php +++ b/classes/validator/validators/Validator_77a.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_77a extends BAV_Validator_Iteration_Weighted +class Validator_77a extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_78.php b/classes/validator/validators/Validator_78.php similarity index 91% rename from classes/validator/validators/BAV_Validator_78.php rename to classes/validator/validators/Validator_78.php index 3d395deb..c5db2b7a 100644 --- a/classes/validator/validators/BAV_Validator_78.php +++ b/classes/validator/validators/Validator_78.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_78 extends BAV_Validator_00 +class Validator_78 extends Validator_00 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_79.php b/classes/validator/validators/Validator_79.php similarity index 86% rename from classes/validator/validators/BAV_Validator_79.php rename to classes/validator/validators/Validator_79.php index f01b27af..2c2e8f67 100644 --- a/classes/validator/validators/BAV_Validator_79.php +++ b/classes/validator/validators/Validator_79.php @@ -23,30 +23,30 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_79 extends BAV_Validator +class Validator_79 extends Validator { /** - * @var BAV_Validator_00 + * @var Validator_00 */ private $validator; /** - * @var BAV_Validator_00 + * @var Validator_00 */ private $mode1; /** - * @var BAV_Validator_00 + * @var Validator_00 */ private $mode2; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new BAV_Validator_00($bank); - $this->mode2 = new BAV_Validator_00($bank); + $this->mode1 = new Validator_00($bank); + $this->mode2 = new Validator_00($bank); $this->mode2->setStart(-3); $this->mode2->setChecknumberPosition(-2); } diff --git a/classes/validator/validators/BAV_Validator_80.php b/classes/validator/validators/Validator_80.php similarity index 81% rename from classes/validator/validators/BAV_Validator_80.php rename to classes/validator/validators/Validator_80.php index ba404bd2..aaca1f9c 100644 --- a/classes/validator/validators/BAV_Validator_80.php +++ b/classes/validator/validators/Validator_80.php @@ -19,7 +19,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_80 extends BAV_Validator_Chain +class Validator_80 extends Validator_Chain { /** @@ -32,18 +32,18 @@ class BAV_Validator_80 extends BAV_Validator_Chain */ private $exceptionValidators = array(); - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->defaultValidators[] = new BAV_Validator_00($bank); + $this->defaultValidators[] = new Validator_00($bank); $this->defaultValidators[0]->setEnd(4); - $this->defaultValidators[] = new BAV_Validator_00($bank); + $this->defaultValidators[] = new Validator_00($bank); $this->defaultValidators[1]->setEnd(4); $this->defaultValidators[1]->setDivisor(7); - $this->exceptionValidators = BAV_Validator_51::getExceptionValidators($bank); + $this->exceptionValidators = Validator_51::getExceptionValidators($bank); } /** diff --git a/classes/validator/validators/BAV_Validator_81.php b/classes/validator/validators/Validator_81.php similarity index 84% rename from classes/validator/validators/BAV_Validator_81.php rename to classes/validator/validators/Validator_81.php index 44e16865..78056b10 100644 --- a/classes/validator/validators/BAV_Validator_81.php +++ b/classes/validator/validators/Validator_81.php @@ -19,7 +19,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_81 extends BAV_Validator_Chain +class Validator_81 extends Validator_Chain { /** @@ -32,14 +32,14 @@ class BAV_Validator_81 extends BAV_Validator_Chain */ private $exceptionValidators = array(); - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->defaultValidators[] = new BAV_Validator_32($bank); + $this->defaultValidators[] = new Validator_32($bank); $this->defaultValidators[0]->setWeights(array(2, 3, 4, 5, 6, 7)); - $this->exceptionValidators = BAV_Validator_51::getExceptionValidators($bank); + $this->exceptionValidators = Validator_51::getExceptionValidators($bank); } /** diff --git a/classes/validator/validators/BAV_Validator_82.php b/classes/validator/validators/Validator_82.php similarity index 84% rename from classes/validator/validators/BAV_Validator_82.php rename to classes/validator/validators/Validator_82.php index 25064e4b..ac491d9c 100644 --- a/classes/validator/validators/BAV_Validator_82.php +++ b/classes/validator/validators/Validator_82.php @@ -23,32 +23,32 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_82 extends BAV_Validator +class Validator_82 extends Validator { /** - * @var BAV_Validator + * @var Validator */ private $validator; /** - * @var BAV_Validator_33 + * @var Validator_33 */ private $mode1; /** - * @var BAV_Validator_10 + * @var Validator_10 */ private $mode2; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new BAV_Validator_33($bank); + $this->mode1 = new Validator_33($bank); $this->mode1->setWeights(array(2, 3, 4, 5, 6)); - $this->mode2 = new BAV_Validator_10($bank); + $this->mode2 = new Validator_10($bank); } protected function validate() diff --git a/classes/validator/validators/BAV_Validator_83.php b/classes/validator/validators/Validator_83.php similarity index 80% rename from classes/validator/validators/BAV_Validator_83.php rename to classes/validator/validators/Validator_83.php index a15d647d..e11cb9fa 100644 --- a/classes/validator/validators/BAV_Validator_83.php +++ b/classes/validator/validators/Validator_83.php @@ -19,11 +19,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_83 extends BAV_Validator_Chain +class Validator_83 extends Validator_Chain { /** - * @var BAV_Validator_33 + * @var Validator_33 */ private $modeC; @@ -37,25 +37,25 @@ class BAV_Validator_83 extends BAV_Validator_Chain */ private $exceptionValidators = array(); - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->defaultValidators[] = new BAV_Validator_32($bank); + $this->defaultValidators[] = new Validator_32($bank); $this->defaultValidators[0]->setWeights(array(2, 3, 4, 5, 6, 7)); $this->defaultValidators[0]->setEnd(3); - $this->defaultValidators[] = new BAV_Validator_33($bank); + $this->defaultValidators[] = new Validator_33($bank); $this->defaultValidators[1]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators[1]->setEnd(4); - $this->modeC = new BAV_Validator_33($bank); + $this->modeC = new Validator_33($bank); $this->defaultValidators[] = $this->modeC; $this->defaultValidators[2]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators[2]->setEnd(4); $this->defaultValidators[2]->setDivisor(7); - $this->exceptionValidators[] = new BAV_Validator_83x($bank); + $this->exceptionValidators[] = new Validator_83x($bank); } /** @@ -69,7 +69,7 @@ protected function init($account) : $this->defaultValidators; } - protected function continueValidation(BAV_Validator $validator) + protected function continueValidation(Validator $validator) { return $validator !== $this->modeC || $this->account{9} < 7; } diff --git a/classes/validator/validators/BAV_Validator_83x.php b/classes/validator/validators/Validator_83x.php similarity index 92% rename from classes/validator/validators/BAV_Validator_83x.php rename to classes/validator/validators/Validator_83x.php index fe340eec..a5b697e4 100644 --- a/classes/validator/validators/BAV_Validator_83x.php +++ b/classes/validator/validators/Validator_83x.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_83x extends BAV_Validator_Iteration_Weighted +class Validator_83x extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_84.php b/classes/validator/validators/Validator_84.php similarity index 80% rename from classes/validator/validators/BAV_Validator_84.php rename to classes/validator/validators/Validator_84.php index 26448051..14f4a60d 100644 --- a/classes/validator/validators/BAV_Validator_84.php +++ b/classes/validator/validators/Validator_84.php @@ -19,7 +19,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_84 extends BAV_Validator_Chain +class Validator_84 extends Validator_Chain { /** @@ -32,23 +32,23 @@ class BAV_Validator_84 extends BAV_Validator_Chain */ private $exceptionValidators = array(); - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->defaultValidators[0] = new BAV_Validator_33($bank); + $this->defaultValidators[0] = new Validator_33($bank); $this->defaultValidators[0]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators[0]->setEnd(4); - $this->defaultValidators[1] = new BAV_Validator_84b($bank); + $this->defaultValidators[1] = new Validator_84b($bank); // Bundesbank update 2013-06-03 - $this->defaultValidators[2] = new BAV_Validator_06($bank); + $this->defaultValidators[2] = new Validator_06($bank); $this->defaultValidators[2]->setWeights(array(2, 1)); $this->defaultValidators[2]->setEnd(4); $this->defaultValidators[2]->setDivisor(10); - $this->exceptionValidators = BAV_Validator_51::getExceptionValidators($bank); + $this->exceptionValidators = Validator_51::getExceptionValidators($bank); } /** diff --git a/classes/validator/validators/BAV_Validator_84b.php b/classes/validator/validators/Validator_84b.php similarity index 91% rename from classes/validator/validators/BAV_Validator_84b.php rename to classes/validator/validators/Validator_84b.php index 2df4e722..52e928ef 100644 --- a/classes/validator/validators/BAV_Validator_84b.php +++ b/classes/validator/validators/Validator_84b.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_84b extends BAV_Validator_Iteration_Weighted +class Validator_84b extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_85.php b/classes/validator/validators/Validator_85.php similarity index 81% rename from classes/validator/validators/BAV_Validator_85.php rename to classes/validator/validators/Validator_85.php index 4dba3be6..6b10a9de 100644 --- a/classes/validator/validators/BAV_Validator_85.php +++ b/classes/validator/validators/Validator_85.php @@ -19,11 +19,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_85 extends BAV_Validator_Chain +class Validator_85 extends Validator_Chain { /** - * @var BAV_Validator_33 + * @var Validator_33 */ private $modeC; @@ -37,25 +37,25 @@ class BAV_Validator_85 extends BAV_Validator_Chain */ private $exceptionValidators = array(); - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->defaultValidators[] = new BAV_Validator_06($bank); + $this->defaultValidators[] = new Validator_06($bank); $this->defaultValidators[0]->setWeights(array(2, 3, 4, 5, 6, 7)); $this->defaultValidators[0]->setEnd(3); - $this->defaultValidators[] = new BAV_Validator_33($bank); + $this->defaultValidators[] = new Validator_33($bank); $this->defaultValidators[1]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators[1]->setEnd(4); - $this->modeC = new BAV_Validator_33($bank); + $this->modeC = new Validator_33($bank); $this->defaultValidators[] = $this->modeC; $this->defaultValidators[2]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators[2]->setEnd(4); $this->defaultValidators[2]->setDivisor(7); - $this->exceptionValidators[] = new BAV_Validator_02($bank); + $this->exceptionValidators[] = new Validator_02($bank); $this->exceptionValidators[0]->setWeights(array(2, 3, 4, 5, 6, 7, 8)); $this->exceptionValidators[0]->setEnd(2); } @@ -71,7 +71,7 @@ protected function init($account) : $this->defaultValidators; } - protected function continueValidation(BAV_Validator $validator) + protected function continueValidation(Validator $validator) { return $validator !== $this->modeC || $this->account{9} < 7; } diff --git a/classes/validator/validators/BAV_Validator_86.php b/classes/validator/validators/Validator_86.php similarity index 82% rename from classes/validator/validators/BAV_Validator_86.php rename to classes/validator/validators/Validator_86.php index 57435082..bb035e4d 100644 --- a/classes/validator/validators/BAV_Validator_86.php +++ b/classes/validator/validators/Validator_86.php @@ -19,7 +19,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_86 extends BAV_Validator_Chain +class Validator_86 extends Validator_Chain { /** @@ -32,19 +32,19 @@ class BAV_Validator_86 extends BAV_Validator_Chain */ private $exceptionValidators = array(); - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->defaultValidators[] = new BAV_Validator_00($bank); + $this->defaultValidators[] = new Validator_00($bank); $this->defaultValidators[0]->setWeights(array(2, 1)); $this->defaultValidators[0]->setEnd(3); - $this->defaultValidators[] = new BAV_Validator_32($bank); + $this->defaultValidators[] = new Validator_32($bank); $this->defaultValidators[1]->setWeights(array(2, 3, 4, 5, 6, 7)); $this->defaultValidators[1]->setEnd(3); - $this->exceptionValidators = BAV_Validator_51::getExceptionValidators($bank); + $this->exceptionValidators = Validator_51::getExceptionValidators($bank); } /** diff --git a/classes/validator/validators/BAV_Validator_87.php b/classes/validator/validators/Validator_87.php similarity index 78% rename from classes/validator/validators/BAV_Validator_87.php rename to classes/validator/validators/Validator_87.php index 02fb2934..8ddd0f29 100644 --- a/classes/validator/validators/BAV_Validator_87.php +++ b/classes/validator/validators/Validator_87.php @@ -19,7 +19,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_87 extends BAV_Validator_Chain +class Validator_87 extends Validator_Chain { /** @@ -32,19 +32,19 @@ class BAV_Validator_87 extends BAV_Validator_Chain */ private $exceptionValidators = array(); - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->defaultValidators[] = new BAV_Validator_87a($bank); + $this->defaultValidators[] = new Validator_87a($bank); - $this->defaultValidators[] = new BAV_Validator_33($bank); + $this->defaultValidators[] = new Validator_33($bank); $this->defaultValidators[1]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators[1]->setEnd(4); - $this->defaultValidators[] = new BAV_Validator_87c($bank); + $this->defaultValidators[] = new Validator_87c($bank); - $this->exceptionValidators = BAV_Validator_51::getExceptionValidators($bank); + $this->exceptionValidators = Validator_51::getExceptionValidators($bank); } /** diff --git a/classes/validator/validators/BAV_Validator_87a.php b/classes/validator/validators/Validator_87a.php similarity index 98% rename from classes/validator/validators/BAV_Validator_87a.php rename to classes/validator/validators/Validator_87a.php index b460f480..82e64353 100644 --- a/classes/validator/validators/BAV_Validator_87a.php +++ b/classes/validator/validators/Validator_87a.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_87a extends BAV_Validator +class Validator_87a extends Validator { protected function validate() diff --git a/classes/validator/validators/BAV_Validator_87c.php b/classes/validator/validators/Validator_87c.php similarity index 91% rename from classes/validator/validators/BAV_Validator_87c.php rename to classes/validator/validators/Validator_87c.php index b4a0125e..7fb6f121 100644 --- a/classes/validator/validators/BAV_Validator_87c.php +++ b/classes/validator/validators/Validator_87c.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_87c extends BAV_Validator_Iteration_Weighted +class Validator_87c extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_88.php b/classes/validator/validators/Validator_88.php similarity index 91% rename from classes/validator/validators/BAV_Validator_88.php rename to classes/validator/validators/Validator_88.php index e0d6ddac..cfdbfca1 100644 --- a/classes/validator/validators/BAV_Validator_88.php +++ b/classes/validator/validators/Validator_88.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_88 extends BAV_Validator_06 +class Validator_88 extends Validator_06 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_89.php b/classes/validator/validators/Validator_89.php similarity index 88% rename from classes/validator/validators/BAV_Validator_89.php rename to classes/validator/validators/Validator_89.php index 8e62172c..7f46148c 100644 --- a/classes/validator/validators/BAV_Validator_89.php +++ b/classes/validator/validators/Validator_89.php @@ -19,22 +19,22 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_89 extends BAV_Validator_06 +class Validator_89 extends Validator_06 { /** - * @var BAV_Validator_10 + * @var Validator_10 */ private $validator10; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); $this->setWeights(array(2, 3, 4, 5, 6, 7)); $this->setEnd(3); - $this->validator10 = new BAV_Validator_10($bank); + $this->validator10 = new Validator_10($bank); } protected function iterationStep() diff --git a/classes/validator/validators/BAV_Validator_90.php b/classes/validator/validators/Validator_90.php similarity index 72% rename from classes/validator/validators/BAV_Validator_90.php rename to classes/validator/validators/Validator_90.php index bdfd4f49..36a75106 100644 --- a/classes/validator/validators/BAV_Validator_90.php +++ b/classes/validator/validators/Validator_90.php @@ -19,11 +19,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_90 extends BAV_Validator_Chain +class Validator_90 extends Validator_Chain { /** - * @var BAV_Validator + * @var Validator */ private $modeF; @@ -32,25 +32,25 @@ class BAV_Validator_90 extends BAV_Validator_Chain */ private $defaultValidators = array(); - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->defaultValidators["a"] = new BAV_Validator_06($bank); + $this->defaultValidators["a"] = new Validator_06($bank); $this->defaultValidators["a"]->setWeights(array(2, 3, 4, 5, 6, 7)); $this->defaultValidators["a"]->setEnd(3); - $this->defaultValidators["b"] = new BAV_Validator_06($bank); + $this->defaultValidators["b"] = new Validator_06($bank); $this->defaultValidators["b"]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators["b"]->setEnd(4); - $this->defaultValidators["c"] = new BAV_Validator_90c($bank); - $this->defaultValidators["d"] = new BAV_Validator_90d($bank); - $this->defaultValidators["e"] = new BAV_Validator_90e($bank); - $this->defaultValidators["g"] = new BAV_Validator_90g($bank); + $this->defaultValidators["c"] = new Validator_90c($bank); + $this->defaultValidators["d"] = new Validator_90d($bank); + $this->defaultValidators["e"] = new Validator_90e($bank); + $this->defaultValidators["g"] = new Validator_90g($bank); - $this->modeF = new BAV_Validator_06($bank); + $this->modeF = new Validator_06($bank); $this->modeF->setWeights(array(2, 3, 4, 5, 6, 7, 8)); $this->modeF->setEnd(2); } diff --git a/classes/validator/validators/BAV_Validator_90c.php b/classes/validator/validators/Validator_90c.php similarity index 92% rename from classes/validator/validators/BAV_Validator_90c.php rename to classes/validator/validators/Validator_90c.php index 0c19dd89..9c1038ff 100644 --- a/classes/validator/validators/BAV_Validator_90c.php +++ b/classes/validator/validators/Validator_90c.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_90c extends BAV_Validator_Iteration_Weighted +class Validator_90c extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_90d.php b/classes/validator/validators/Validator_90d.php similarity index 92% rename from classes/validator/validators/BAV_Validator_90d.php rename to classes/validator/validators/Validator_90d.php index 8cf09f4b..d8563e22 100644 --- a/classes/validator/validators/BAV_Validator_90d.php +++ b/classes/validator/validators/Validator_90d.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_90d extends BAV_Validator_Iteration_Weighted +class Validator_90d extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_90e.php b/classes/validator/validators/Validator_90e.php similarity index 91% rename from classes/validator/validators/BAV_Validator_90e.php rename to classes/validator/validators/Validator_90e.php index 7848374d..7268b107 100644 --- a/classes/validator/validators/BAV_Validator_90e.php +++ b/classes/validator/validators/Validator_90e.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_90e extends BAV_Validator_Iteration_Weighted +class Validator_90e extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_90g.php b/classes/validator/validators/Validator_90g.php similarity index 92% rename from classes/validator/validators/BAV_Validator_90g.php rename to classes/validator/validators/Validator_90g.php index ad40bcc4..5487945d 100644 --- a/classes/validator/validators/BAV_Validator_90g.php +++ b/classes/validator/validators/Validator_90g.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_90g extends BAV_Validator_Iteration_Weighted +class Validator_90g extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_91.php b/classes/validator/validators/Validator_91.php similarity index 89% rename from classes/validator/validators/BAV_Validator_91.php rename to classes/validator/validators/Validator_91.php index 9bfc36cf..d713050b 100644 --- a/classes/validator/validators/BAV_Validator_91.php +++ b/classes/validator/validators/Validator_91.php @@ -19,15 +19,15 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_91 extends BAV_Validator_Chain +class Validator_91 extends Validator_Chain { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); for ($i = 0; $i < 4; $i++) { - $this->validators[] = new BAV_Validator_06($bank); + $this->validators[] = new Validator_06($bank); $this->validators[$i]->setChecknumberPosition(6); $this->validators[$i]->setStart(5); } diff --git a/classes/validator/validators/BAV_Validator_92.php b/classes/validator/validators/Validator_92.php similarity index 90% rename from classes/validator/validators/BAV_Validator_92.php rename to classes/validator/validators/Validator_92.php index 73f7df43..801535b8 100644 --- a/classes/validator/validators/BAV_Validator_92.php +++ b/classes/validator/validators/Validator_92.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_92 extends BAV_Validator_01 +class Validator_92 extends Validator_01 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_93.php b/classes/validator/validators/Validator_93.php similarity index 83% rename from classes/validator/validators/BAV_Validator_93.php rename to classes/validator/validators/Validator_93.php index 863ac00b..d8c14f49 100644 --- a/classes/validator/validators/BAV_Validator_93.php +++ b/classes/validator/validators/Validator_93.php @@ -19,26 +19,26 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_93 extends BAV_Validator_Chain +class Validator_93 extends Validator_Chain { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new BAV_Validator_06($bank); + $this->validators[] = new Validator_06($bank); $this->validators[0]->setWeights(array(2, 3, 4, 5, 6)); $this->validators[0]->setEnd(4); - $this->validators[] = new BAV_Validator_06($bank); + $this->validators[] = new Validator_06($bank); $this->validators[1]->setWeights(array(2, 3, 4, 5, 6)); $this->validators[1]->setEnd(4); $this->validators[1]->setDivisor(7); } /** - * @throws BAV_ValidatorException_OutOfBounds + * @throws ValidatorException_OutOfBounds * @param int $int */ protected function normalizeAccount($size) diff --git a/classes/validator/validators/BAV_Validator_94.php b/classes/validator/validators/Validator_94.php similarity index 90% rename from classes/validator/validators/BAV_Validator_94.php rename to classes/validator/validators/Validator_94.php index 13323736..14dc5997 100644 --- a/classes/validator/validators/BAV_Validator_94.php +++ b/classes/validator/validators/Validator_94.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_94 extends BAV_Validator_00 +class Validator_94 extends Validator_00 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_95.php b/classes/validator/validators/Validator_95.php similarity index 92% rename from classes/validator/validators/BAV_Validator_95.php rename to classes/validator/validators/Validator_95.php index 8722506d..4c899631 100644 --- a/classes/validator/validators/BAV_Validator_95.php +++ b/classes/validator/validators/Validator_95.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_95 extends BAV_Validator_06 +class Validator_95 extends Validator_06 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_96.php b/classes/validator/validators/Validator_96.php similarity index 84% rename from classes/validator/validators/BAV_Validator_96.php rename to classes/validator/validators/Validator_96.php index db728d0f..6af6d20b 100644 --- a/classes/validator/validators/BAV_Validator_96.php +++ b/classes/validator/validators/Validator_96.php @@ -19,18 +19,18 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_96 extends BAV_Validator_Chain +class Validator_96 extends Validator_Chain { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new BAV_Validator_19($bank); + $this->validators[] = new Validator_19($bank); $this->validators[0]->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 1)); - $this->validators[] = new BAV_Validator_00($bank); + $this->validators[] = new Validator_00($bank); $this->validators[1]->setWeights(array(2, 1)); } diff --git a/classes/validator/validators/BAV_Validator_97.php b/classes/validator/validators/Validator_97.php similarity index 96% rename from classes/validator/validators/BAV_Validator_97.php rename to classes/validator/validators/Validator_97.php index 4506a643..e2e5ab71 100644 --- a/classes/validator/validators/BAV_Validator_97.php +++ b/classes/validator/validators/Validator_97.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_97 extends BAV_Validator +class Validator_97 extends Validator { /** diff --git a/classes/validator/validators/BAV_Validator_98.php b/classes/validator/validators/Validator_98.php similarity index 81% rename from classes/validator/validators/BAV_Validator_98.php rename to classes/validator/validators/Validator_98.php index 9a4fcca4..4c4c05f7 100644 --- a/classes/validator/validators/BAV_Validator_98.php +++ b/classes/validator/validators/Validator_98.php @@ -19,18 +19,18 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_98 extends BAV_Validator_Chain +class Validator_98 extends Validator_Chain { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new BAV_Validator_01($bank); + $this->validators[] = new Validator_01($bank); $this->validators[0]->setWeights(array(3, 1, 7)); $this->validators[0]->setEnd(2); - $this->validators[] = new BAV_Validator_32($bank); + $this->validators[] = new Validator_32($bank); } } diff --git a/classes/validator/validators/BAV_Validator_99.php b/classes/validator/validators/Validator_99.php similarity index 91% rename from classes/validator/validators/BAV_Validator_99.php rename to classes/validator/validators/Validator_99.php index b2cdaa8f..ea1ac23b 100644 --- a/classes/validator/validators/BAV_Validator_99.php +++ b/classes/validator/validators/Validator_99.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_99 extends BAV_Validator_06 +class Validator_99 extends Validator_06 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_A0.php b/classes/validator/validators/Validator_A0.php similarity index 92% rename from classes/validator/validators/BAV_Validator_A0.php rename to classes/validator/validators/Validator_A0.php index f1b28938..5e2ee232 100644 --- a/classes/validator/validators/BAV_Validator_A0.php +++ b/classes/validator/validators/Validator_A0.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_A0 extends BAV_Validator_Iteration_Weighted +class Validator_A0 extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_A1.php b/classes/validator/validators/Validator_A1.php similarity index 91% rename from classes/validator/validators/BAV_Validator_A1.php rename to classes/validator/validators/Validator_A1.php index e7200587..bacb8a56 100644 --- a/classes/validator/validators/BAV_Validator_A1.php +++ b/classes/validator/validators/Validator_A1.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_A1 extends BAV_Validator_00 +class Validator_A1 extends Validator_00 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_A2.php b/classes/validator/validators/Validator_A2.php similarity index 81% rename from classes/validator/validators/BAV_Validator_A2.php rename to classes/validator/validators/Validator_A2.php index cf43b449..292eb271 100644 --- a/classes/validator/validators/BAV_Validator_A2.php +++ b/classes/validator/validators/Validator_A2.php @@ -19,17 +19,17 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_A2 extends BAV_Validator_Chain +class Validator_A2 extends Validator_Chain { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new BAV_Validator_00($bank); + $this->validators[] = new Validator_00($bank); $this->validators[0]->setWeights(array(2, 1)); - $this->validators[] = new BAV_Validator_04($bank); + $this->validators[] = new Validator_04($bank); $this->validators[1]->setWeights(array(2, 3, 4, 5, 6, 7)); } } diff --git a/classes/validator/validators/BAV_Validator_A3.php b/classes/validator/validators/Validator_A3.php similarity index 82% rename from classes/validator/validators/BAV_Validator_A3.php rename to classes/validator/validators/Validator_A3.php index b7e5d093..0058dc47 100644 --- a/classes/validator/validators/BAV_Validator_A3.php +++ b/classes/validator/validators/Validator_A3.php @@ -19,17 +19,17 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_A3 extends BAV_Validator_Chain +class Validator_A3 extends Validator_Chain { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new BAV_Validator_00($bank); + $this->validators[] = new Validator_00($bank); $this->validators[0]->setWeights(array(2, 1)); - $this->validators[] = new BAV_Validator_10($bank); + $this->validators[] = new Validator_10($bank); $this->validators[1]->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 10)); } } diff --git a/classes/validator/validators/BAV_Validator_A4.php b/classes/validator/validators/Validator_A4.php similarity index 78% rename from classes/validator/validators/BAV_Validator_A4.php rename to classes/validator/validators/Validator_A4.php index b91e8381..cfd733e1 100644 --- a/classes/validator/validators/BAV_Validator_A4.php +++ b/classes/validator/validators/Validator_A4.php @@ -19,24 +19,24 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_A4 extends BAV_Validator_Chain +class Validator_A4 extends Validator_Chain { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new BAV_Validator_06($bank); + $this->validators[] = new Validator_06($bank); $this->validators[0]->setWeights(array(2, 3, 4, 5, 6, 7, 0, 0, 0)); $this->validators[0]->setEnd(3); - $this->validators[] = new BAV_Validator_A4b($bank); + $this->validators[] = new Validator_A4b($bank); - $this->validators[] = new BAV_Validator_06($bank); + $this->validators[] = new Validator_06($bank); $this->validators[2]->setWeights(array(2, 3, 4, 5, 6, 0, 0, 0, 0)); $this->validators[2]->setEnd(4); - $this->validators[] = new BAV_Validator_93($bank); + $this->validators[] = new Validator_93($bank); } /** @@ -44,7 +44,7 @@ public function __construct(BAV_Bank $bank) * * @return bool */ - protected function useValidator(BAV_Validator $validator) + protected function useValidator(Validator $validator) { if (substr($this->account, 2, 2) == '99') { return $validator === $this->validators[2] diff --git a/classes/validator/validators/BAV_Validator_A4b.php b/classes/validator/validators/Validator_A4b.php similarity index 92% rename from classes/validator/validators/BAV_Validator_A4b.php rename to classes/validator/validators/Validator_A4b.php index be63de8e..ef3a3766 100644 --- a/classes/validator/validators/BAV_Validator_A4b.php +++ b/classes/validator/validators/Validator_A4b.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_A4b extends BAV_Validator_Iteration_Weighted +class Validator_A4b extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_A5.php b/classes/validator/validators/Validator_A5.php similarity index 80% rename from classes/validator/validators/BAV_Validator_A5.php rename to classes/validator/validators/Validator_A5.php index 6afb53b7..11acab0b 100644 --- a/classes/validator/validators/BAV_Validator_A5.php +++ b/classes/validator/validators/Validator_A5.php @@ -19,21 +19,21 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_A5 extends BAV_Validator_Chain +class Validator_A5 extends Validator_Chain { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new BAV_Validator_00($bank); + $this->validators[] = new Validator_00($bank); $this->validators[0]->setWeights(array(2, 1)); - $this->validators[] = new BAV_Validator_10($bank); + $this->validators[] = new Validator_10($bank); $this->validators[1]->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 10)); } - protected function continueValidation(BAV_Validator $validator) + protected function continueValidation(Validator $validator) { if ($validator === $this->validators[1]) { return $this->account{0} !== '9'; diff --git a/classes/validator/validators/BAV_Validator_A6.php b/classes/validator/validators/Validator_A6.php similarity index 84% rename from classes/validator/validators/BAV_Validator_A6.php rename to classes/validator/validators/Validator_A6.php index c8c51765..befa3ece 100644 --- a/classes/validator/validators/BAV_Validator_A6.php +++ b/classes/validator/validators/Validator_A6.php @@ -23,32 +23,32 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_A6 extends BAV_Validator +class Validator_A6 extends Validator { /** - * @var BAV_Validator + * @var Validator */ protected $validator; /** - * @var BAV_Validator_00 + * @var Validator_00 */ protected $mode1; /** - * @var BAV_Validator_01 + * @var Validator_01 */ protected $mode2; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new BAV_Validator_00($bank); + $this->mode1 = new Validator_00($bank); $this->mode1->setWeights(array(2, 1)); - $this->mode2 = new BAV_Validator_01($bank); + $this->mode2 = new Validator_01($bank); $this->mode2->setWeights(array(3, 7, 1)); } diff --git a/classes/validator/validators/BAV_Validator_A7.php b/classes/validator/validators/Validator_A7.php similarity index 80% rename from classes/validator/validators/BAV_Validator_A7.php rename to classes/validator/validators/Validator_A7.php index 67ff61a4..2c923cdc 100644 --- a/classes/validator/validators/BAV_Validator_A7.php +++ b/classes/validator/validators/Validator_A7.php @@ -19,16 +19,16 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_A7 extends BAV_Validator_Chain +class Validator_A7 extends Validator_Chain { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new BAV_Validator_00($bank); + $this->validators[] = new Validator_00($bank); $this->validators[0]->setWeights(array(2, 1)); - $this->validators[] = new BAV_Validator_03($bank); + $this->validators[] = new Validator_03($bank); } } diff --git a/classes/validator/validators/BAV_Validator_A8.php b/classes/validator/validators/Validator_A8.php similarity index 83% rename from classes/validator/validators/BAV_Validator_A8.php rename to classes/validator/validators/Validator_A8.php index c4ab0d28..aab30439 100644 --- a/classes/validator/validators/BAV_Validator_A8.php +++ b/classes/validator/validators/Validator_A8.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_A8 extends BAV_Validator_Chain +class Validator_A8 extends Validator_Chain { /** @@ -38,20 +38,20 @@ class BAV_Validator_A8 extends BAV_Validator_Chain */ private $exceptionValidators = array(); - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->defaultValidators[] = new BAV_Validator_06($bank); + $this->defaultValidators[] = new Validator_06($bank); $this->defaultValidators[0]->setEnd(3); $this->defaultValidators[0]->setWeights(array(2, 3, 4, 5, 6, 7)); - $this->defaultValidators[] = new BAV_Validator_00($bank); + $this->defaultValidators[] = new Validator_00($bank); $this->defaultValidators[1]->setEnd(3); $this->defaultValidators[1]->setWeights(array(2, 1)); - $this->exceptionValidators = BAV_Validator_51::getExceptionValidators($bank); + $this->exceptionValidators = Validator_51::getExceptionValidators($bank); } /** diff --git a/classes/validator/validators/BAV_Validator_A9.php b/classes/validator/validators/Validator_A9.php similarity index 82% rename from classes/validator/validators/BAV_Validator_A9.php rename to classes/validator/validators/Validator_A9.php index 9eea88f0..5ec01eb4 100644 --- a/classes/validator/validators/BAV_Validator_A9.php +++ b/classes/validator/validators/Validator_A9.php @@ -19,17 +19,17 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_A9 extends BAV_Validator_Chain +class Validator_A9 extends Validator_Chain { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new BAV_Validator_01($bank); + $this->validators[] = new Validator_01($bank); $this->validators[0]->setWeights(array(3, 7, 1)); - $this->validators[] = new BAV_Validator_06($bank); + $this->validators[] = new Validator_06($bank); $this->validators[1]->setWeights(array(2, 3, 4, 5, 6, 7)); } } diff --git a/classes/validator/validators/BAV_Validator_B0.php b/classes/validator/validators/Validator_B0.php similarity index 85% rename from classes/validator/validators/BAV_Validator_B0.php rename to classes/validator/validators/Validator_B0.php index b00ed9da..6c5fdfd7 100644 --- a/classes/validator/validators/BAV_Validator_B0.php +++ b/classes/validator/validators/Validator_B0.php @@ -23,31 +23,31 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_B0 extends BAV_Validator +class Validator_B0 extends Validator { /** - * @var BAV_Validator + * @var Validator */ protected $validator; /** - * @var BAV_Validator_09 + * @var Validator_09 */ protected $mode1; /** - * @var BAV_Validator_06 + * @var Validator_06 */ protected $mode2; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new BAV_Validator_09($bank); + $this->mode1 = new Validator_09($bank); - $this->mode2 = new BAV_Validator_06($bank); + $this->mode2 = new Validator_06($bank); $this->mode2->setWeights(array(2, 3, 4, 5, 6, 7)); } diff --git a/classes/validator/validators/BAV_Validator_B1.php b/classes/validator/validators/Validator_B1.php similarity index 81% rename from classes/validator/validators/BAV_Validator_B1.php rename to classes/validator/validators/Validator_B1.php index 9829355c..d5bbedaf 100644 --- a/classes/validator/validators/BAV_Validator_B1.php +++ b/classes/validator/validators/Validator_B1.php @@ -19,17 +19,17 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_B1 extends BAV_Validator_Chain +class Validator_B1 extends Validator_Chain { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new BAV_Validator_05($bank); + $this->validators[] = new Validator_05($bank); $this->validators[0]->setWeights(array(7, 3, 1)); - $this->validators[] = new BAV_Validator_01($bank); + $this->validators[] = new Validator_01($bank); $this->validators[1]->setWeights(array(3, 7, 1)); } } diff --git a/classes/validator/validators/BAV_Validator_B2.php b/classes/validator/validators/Validator_B2.php similarity index 84% rename from classes/validator/validators/BAV_Validator_B2.php rename to classes/validator/validators/Validator_B2.php index 305505e6..3251ae48 100644 --- a/classes/validator/validators/BAV_Validator_B2.php +++ b/classes/validator/validators/Validator_B2.php @@ -23,32 +23,32 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_B2 extends BAV_Validator +class Validator_B2 extends Validator { /** - * @var BAV_Validator + * @var Validator */ protected $validator; /** - * @var BAV_Validator_02 + * @var Validator_02 */ protected $mode1; /** - * @var BAV_Validator_00 + * @var Validator_00 */ protected $mode2; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new BAV_Validator_02($bank); + $this->mode1 = new Validator_02($bank); $this->mode1->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9)); - $this->mode2 = new BAV_Validator_00($bank); + $this->mode2 = new Validator_00($bank); $this->mode2->setWeights(array(2, 1)); } diff --git a/classes/validator/validators/BAV_Validator_B3.php b/classes/validator/validators/Validator_B3.php similarity index 84% rename from classes/validator/validators/BAV_Validator_B3.php rename to classes/validator/validators/Validator_B3.php index a0d43919..898da234 100644 --- a/classes/validator/validators/BAV_Validator_B3.php +++ b/classes/validator/validators/Validator_B3.php @@ -23,32 +23,32 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_B3 extends BAV_Validator +class Validator_B3 extends Validator { /** - * @var BAV_Validator + * @var Validator */ protected $validator; /** - * @var BAV_Validator_32 + * @var Validator_32 */ protected $mode1; /** - * @var BAV_Validator_06 + * @var Validator_06 */ protected $mode2; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new BAV_Validator_32($bank); + $this->mode1 = new Validator_32($bank); $this->mode1->setWeights(array(2, 3, 4, 5, 6, 7)); - $this->mode2 = new BAV_Validator_06($bank); + $this->mode2 = new Validator_06($bank); $this->mode2->setWeights(array(2, 3, 4, 5, 6, 7)); } diff --git a/classes/validator/validators/BAV_Validator_B4.php b/classes/validator/validators/Validator_B4.php similarity index 84% rename from classes/validator/validators/BAV_Validator_B4.php rename to classes/validator/validators/Validator_B4.php index 1706e901..3e6a5b7e 100644 --- a/classes/validator/validators/BAV_Validator_B4.php +++ b/classes/validator/validators/Validator_B4.php @@ -23,32 +23,32 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_B4 extends BAV_Validator +class Validator_B4 extends Validator { /** - * @var BAV_Validator + * @var Validator */ protected $validator; /** - * @var BAV_Validator_00 + * @var Validator_00 */ protected $mode1; /** - * @var BAV_Validator_02 + * @var Validator_02 */ protected $mode2; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new BAV_Validator_00($bank); + $this->mode1 = new Validator_00($bank); $this->mode1->setWeights(array(2, 1)); - $this->mode2 = new BAV_Validator_02($bank); + $this->mode2 = new Validator_02($bank); $this->mode2->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 10)); } diff --git a/classes/validator/validators/BAV_Validator_B5.php b/classes/validator/validators/Validator_B5.php similarity index 80% rename from classes/validator/validators/BAV_Validator_B5.php rename to classes/validator/validators/Validator_B5.php index 2dede5db..b587be3c 100644 --- a/classes/validator/validators/BAV_Validator_B5.php +++ b/classes/validator/validators/Validator_B5.php @@ -19,24 +19,24 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_B5 extends BAV_Validator_Chain +class Validator_B5 extends Validator_Chain { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new BAV_Validator_01($bank); + $this->validators[] = new Validator_01($bank); $this->validators[0]->setWeights(array(7, 3, 1)); - $this->validators[] = new BAV_Validator_00($bank); + $this->validators[] = new Validator_00($bank); $this->validators[1]->setWeights(array(2, 1)); } /** * @return bool */ - protected function continueValidation(BAV_Validator $validator) + protected function continueValidation(Validator $validator) { if ($validator === $this->validators[1]) { return $this->account{0} < 8; diff --git a/classes/validator/validators/BAV_Validator_B6.php b/classes/validator/validators/Validator_B6.php similarity index 83% rename from classes/validator/validators/BAV_Validator_B6.php rename to classes/validator/validators/Validator_B6.php index 0c2f9041..d25d76e0 100644 --- a/classes/validator/validators/BAV_Validator_B6.php +++ b/classes/validator/validators/Validator_B6.php @@ -23,32 +23,32 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_B6 extends BAV_Validator implements BAV_Validator_BankDependent +class Validator_B6 extends Validator implements Validator_BankDependent { /** - * @var BAV_Validator + * @var Validator */ protected $validator; /** - * @var BAV_Validator_20 + * @var Validator_20 */ protected $mode1; /** - * @var BAV_Validator_53 + * @var Validator_53 */ protected $mode2; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new BAV_Validator_20($bank); + $this->mode1 = new Validator_20($bank); $this->mode1->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 3)); - $this->mode2 = new BAV_Validator_53($bank); + $this->mode2 = new Validator_53($bank); $this->mode2->setWeights(array(2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4)); } diff --git a/classes/validator/validators/BAV_Validator_B7.php b/classes/validator/validators/Validator_B7.php similarity index 92% rename from classes/validator/validators/BAV_Validator_B7.php rename to classes/validator/validators/Validator_B7.php index f2c2d1cd..3295cf0f 100644 --- a/classes/validator/validators/BAV_Validator_B7.php +++ b/classes/validator/validators/Validator_B7.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_B7 extends BAV_Validator_01 +class Validator_B7 extends Validator_01 { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_B8.php b/classes/validator/validators/Validator_B8.php similarity index 78% rename from classes/validator/validators/BAV_Validator_B8.php rename to classes/validator/validators/Validator_B8.php index 08135ce3..140ffd41 100644 --- a/classes/validator/validators/BAV_Validator_B8.php +++ b/classes/validator/validators/Validator_B8.php @@ -19,24 +19,24 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_B8 extends BAV_Validator_Chain +class Validator_B8 extends Validator_Chain { /** - * @param BAV_Validator_09 Validator + * @param Validator_09 Validator */ private $validator9; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new BAV_Validator_20($bank); + $this->validators[] = new Validator_20($bank); $this->validators[0]->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 3)); - $this->validators[] = new BAV_Validator_29($bank); + $this->validators[] = new Validator_29($bank); - $this->validator9 = new BAV_Validator_09($bank); + $this->validator9 = new Validator_09($bank); $this->validators[] = $this->validator9; } @@ -45,7 +45,7 @@ public function __construct(BAV_Bank $bank) * * @return bool */ - protected function useValidator(BAV_Validator $validator) + protected function useValidator(Validator $validator) { if ($validator !== $this->validator9) { return true; diff --git a/classes/validator/validators/BAV_Validator_B9.php b/classes/validator/validators/Validator_B9.php similarity index 84% rename from classes/validator/validators/BAV_Validator_B9.php rename to classes/validator/validators/Validator_B9.php index 718e5126..19f0ec48 100644 --- a/classes/validator/validators/BAV_Validator_B9.php +++ b/classes/validator/validators/Validator_B9.php @@ -23,30 +23,30 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_B9 extends BAV_Validator +class Validator_B9 extends Validator { /** - * @var BAV_Validator + * @var Validator */ protected $validator; /** - * @var BAV_Validator_B9a + * @var Validator_B9a */ protected $mode1; /** - * @var BAV_Validator_B9b + * @var Validator_B9b */ protected $mode2; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new BAV_Validator_B9a($bank); - $this->mode2 = new BAV_Validator_B9b($bank); + $this->mode1 = new Validator_B9a($bank); + $this->mode2 = new Validator_B9b($bank); } protected function validate() diff --git a/classes/validator/validators/BAV_Validator_B9a.php b/classes/validator/validators/Validator_B9a.php similarity index 92% rename from classes/validator/validators/BAV_Validator_B9a.php rename to classes/validator/validators/Validator_B9a.php index ba38f5dc..efdcd487 100644 --- a/classes/validator/validators/BAV_Validator_B9a.php +++ b/classes/validator/validators/Validator_B9a.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_B9a extends BAV_Validator_Iteration_Weighted +class Validator_B9a extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_B9b.php b/classes/validator/validators/Validator_B9b.php similarity index 92% rename from classes/validator/validators/BAV_Validator_B9b.php rename to classes/validator/validators/Validator_B9b.php index 2262f622..58f0718a 100644 --- a/classes/validator/validators/BAV_Validator_B9b.php +++ b/classes/validator/validators/Validator_B9b.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_B9b extends BAV_Validator_Iteration_Weighted +class Validator_B9b extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_C0.php b/classes/validator/validators/Validator_C0.php similarity index 78% rename from classes/validator/validators/BAV_Validator_C0.php rename to classes/validator/validators/Validator_C0.php index b341db38..9ec34131 100644 --- a/classes/validator/validators/BAV_Validator_C0.php +++ b/classes/validator/validators/Validator_C0.php @@ -19,21 +19,21 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_C0 extends BAV_Validator_Chain implements BAV_Validator_BankDependent +class Validator_C0 extends Validator_Chain implements Validator_BankDependent { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new BAV_Validator_52($bank); + $this->validators[] = new Validator_52($bank); $this->validators[0]->setWeights(array(2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4)); - $this->validators[] = new BAV_Validator_20($bank); + $this->validators[] = new Validator_20($bank); $this->validators[1]->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 3)); } - public function useValidator(BAV_Validator $validator) + public function useValidator(Validator $validator) { return $validator !== $this->validators[0] || preg_match('~^00[^0]~', $this->account); diff --git a/classes/validator/validators/BAV_Validator_C1.php b/classes/validator/validators/Validator_C1.php similarity index 83% rename from classes/validator/validators/BAV_Validator_C1.php rename to classes/validator/validators/Validator_C1.php index 74dddcbe..77587d82 100644 --- a/classes/validator/validators/BAV_Validator_C1.php +++ b/classes/validator/validators/Validator_C1.php @@ -23,32 +23,32 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_Validator_C1 extends BAV_Validator +class Validator_C1 extends Validator { /** - * @var BAV_Validator + * @var Validator */ protected $validator; /** - * @var BAV_Validator_17 + * @var Validator_17 */ protected $mode1; /** - * @var BAV_Validator_C1b + * @var Validator_C1b */ protected $mode2; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new BAV_Validator_17($bank); + $this->mode1 = new Validator_17($bank); $this->mode1->setWeights(array(1, 2)); - $this->mode2 = new BAV_Validator_C1b($bank); + $this->mode2 = new Validator_C1b($bank); } protected function validate() diff --git a/classes/validator/validators/BAV_Validator_C1b.php b/classes/validator/validators/Validator_C1b.php similarity index 91% rename from classes/validator/validators/BAV_Validator_C1b.php rename to classes/validator/validators/Validator_C1b.php index e1cbcac2..8d356415 100644 --- a/classes/validator/validators/BAV_Validator_C1b.php +++ b/classes/validator/validators/Validator_C1b.php @@ -19,10 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_C1b extends BAV_Validator_Iteration_Weighted +class Validator_C1b extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_C2.php b/classes/validator/validators/Validator_C2.php similarity index 81% rename from classes/validator/validators/BAV_Validator_C2.php rename to classes/validator/validators/Validator_C2.php index cc4f1b0c..11dd8082 100644 --- a/classes/validator/validators/BAV_Validator_C2.php +++ b/classes/validator/validators/Validator_C2.php @@ -19,17 +19,17 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_C2 extends BAV_Validator_Chain +class Validator_C2 extends Validator_Chain { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new BAV_Validator_22($bank); + $this->validators[] = new Validator_22($bank); $this->validators[0]->setWeights(array(3, 1)); - $this->validators[] = new BAV_Validator_00($bank); + $this->validators[] = new Validator_00($bank); $this->validators[1]->setWeights(array(2, 1)); } } diff --git a/classes/validator/validators/BAV_Validator_C3.php b/classes/validator/validators/Validator_C3.php similarity index 84% rename from classes/validator/validators/BAV_Validator_C3.php rename to classes/validator/validators/Validator_C3.php index 2b4338c5..bdcdb213 100644 --- a/classes/validator/validators/BAV_Validator_C3.php +++ b/classes/validator/validators/Validator_C3.php @@ -23,32 +23,32 @@ * @author Markus Malkusch * @copyright Copyright (C) 2007 Markus Malkusch */ -class BAV_Validator_C3 extends BAV_Validator +class Validator_C3 extends Validator { /** - * @var BAV_Validator + * @var Validator */ protected $validator; /** - * @var BAV_Validator_00 + * @var Validator_00 */ protected $mode1; /** - * @var BAV_Validator_58 + * @var Validator_58 */ protected $mode2; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new BAV_Validator_00($bank); + $this->mode1 = new Validator_00($bank); $this->mode1->setWeights(array(2, 1)); - $this->mode2 = new BAV_Validator_58($bank); + $this->mode2 = new Validator_58($bank); $this->mode2->setWeights(array(2, 3, 4, 5, 6, 0, 0, 0, 0)); } diff --git a/classes/validator/validators/BAV_Validator_C4.php b/classes/validator/validators/Validator_C4.php similarity index 84% rename from classes/validator/validators/BAV_Validator_C4.php rename to classes/validator/validators/Validator_C4.php index 2aed4c6a..dbe40be0 100644 --- a/classes/validator/validators/BAV_Validator_C4.php +++ b/classes/validator/validators/Validator_C4.php @@ -23,32 +23,32 @@ * @author Markus Malkusch * @copyright Copyright (C) 2007 Markus Malkusch */ -class BAV_Validator_C4 extends BAV_Validator +class Validator_C4 extends Validator { /** - * @var BAV_Validator + * @var Validator */ protected $validator; /** - * @var BAV_Validator_15 + * @var Validator_15 */ protected $mode1; /** - * @var BAV_Validator_58 + * @var Validator_58 */ protected $mode2; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new BAV_Validator_15($bank); + $this->mode1 = new Validator_15($bank); $this->mode1->setWeights(array(2, 3, 4, 5)); - $this->mode2 = new BAV_Validator_58($bank); + $this->mode2 = new Validator_58($bank); $this->mode2->setWeights(array(2, 3, 4, 5, 6, 0, 0, 0, 0)); } diff --git a/classes/validator/validators/BAV_Validator_C5.php b/classes/validator/validators/Validator_C5.php similarity index 84% rename from classes/validator/validators/BAV_Validator_C5.php rename to classes/validator/validators/Validator_C5.php index 6c6cf3a4..5d859a43 100644 --- a/classes/validator/validators/BAV_Validator_C5.php +++ b/classes/validator/validators/Validator_C5.php @@ -23,42 +23,42 @@ * @author Markus Malkusch * @copyright Copyright (C) 2007 Markus Malkusch */ -class BAV_Validator_C5 extends BAV_Validator +class Validator_C5 extends Validator { /** - * @var BAV_Validator + * @var Validator */ protected $validator; /** - * @var BAV_Validator_75 + * @var Validator_75 */ protected $mode1; /** - * @var BAV_Validator_29 + * @var Validator_29 */ protected $mode2; /** - * @var BAV_Validator_00 + * @var Validator_00 */ protected $mode3; /** - * @var BAV_Validator_09 + * @var Validator_09 */ protected $mode4; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new BAV_Validator_75($bank); - $this->mode2 = new BAV_Validator_29($bank); - $this->mode3 = new BAV_Validator_00($bank); - $this->mode4 = new BAV_Validator_09($bank); + $this->mode1 = new Validator_75($bank); + $this->mode2 = new Validator_29($bank); + $this->mode3 = new Validator_00($bank); + $this->mode4 = new Validator_09($bank); } protected function validate() diff --git a/classes/validator/validators/BAV_Validator_C6.php b/classes/validator/validators/Validator_C6.php similarity index 92% rename from classes/validator/validators/BAV_Validator_C6.php rename to classes/validator/validators/Validator_C6.php index 4f4a77b0..38169087 100644 --- a/classes/validator/validators/BAV_Validator_C6.php +++ b/classes/validator/validators/Validator_C6.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2007 Markus Malkusch */ -class BAV_Validator_C6 extends BAV_Validator +class Validator_C6 extends Validator { /** @@ -48,15 +48,15 @@ class BAV_Validator_C6 extends BAV_Validator protected $transformedAccount = ''; /** - * @var BAV_Validator_00 + * @var Validator_00 */ protected $validator; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validator = new BAV_Validator_00($bank); + $this->validator = new Validator_00($bank); } protected function validate() diff --git a/classes/validator/validators/BAV_Validator_C7.php b/classes/validator/validators/Validator_C7.php similarity index 81% rename from classes/validator/validators/BAV_Validator_C7.php rename to classes/validator/validators/Validator_C7.php index 40402deb..3be1e55d 100644 --- a/classes/validator/validators/BAV_Validator_C7.php +++ b/classes/validator/validators/Validator_C7.php @@ -19,16 +19,16 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_C7 extends BAV_Validator_Chain +class Validator_C7 extends Validator_Chain { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new BAV_Validator_63($bank); + $this->validators[] = new Validator_63($bank); - $this->validators[] = new BAV_Validator_06($bank); + $this->validators[] = new Validator_06($bank); $this->validators[1]->setWeights(array(2, 3, 4, 5, 6, 7)); } } diff --git a/classes/validator/validators/BAV_Validator_C8.php b/classes/validator/validators/Validator_C8.php similarity index 75% rename from classes/validator/validators/BAV_Validator_C8.php rename to classes/validator/validators/Validator_C8.php index 4af1b2bc..5937564f 100644 --- a/classes/validator/validators/BAV_Validator_C8.php +++ b/classes/validator/validators/Validator_C8.php @@ -19,15 +19,15 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_C8 extends BAV_Validator_Chain +class Validator_C8 extends Validator_Chain { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new BAV_Validator_00($bank); - $this->validators[] = new BAV_Validator_04($bank); - $this->validators[] = new BAV_Validator_07($bank); + $this->validators[] = new Validator_00($bank); + $this->validators[] = new Validator_04($bank); + $this->validators[] = new Validator_07($bank); } } diff --git a/classes/validator/validators/BAV_Validator_C9.php b/classes/validator/validators/Validator_C9.php similarity index 79% rename from classes/validator/validators/BAV_Validator_C9.php rename to classes/validator/validators/Validator_C9.php index 7447a705..b61ec38c 100644 --- a/classes/validator/validators/BAV_Validator_C9.php +++ b/classes/validator/validators/Validator_C9.php @@ -19,14 +19,14 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class BAV_Validator_C9 extends BAV_Validator_Chain +class Validator_C9 extends Validator_Chain { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new BAV_Validator_00($bank); - $this->validators[] = new BAV_Validator_07($bank); + $this->validators[] = new Validator_00($bank); + $this->validators[] = new Validator_07($bank); } } diff --git a/classes/validator/validators/BAV_Validator_D0.php b/classes/validator/validators/Validator_D0.php similarity index 84% rename from classes/validator/validators/BAV_Validator_D0.php rename to classes/validator/validators/Validator_D0.php index b3b3fc07..35f1af9b 100644 --- a/classes/validator/validators/BAV_Validator_D0.php +++ b/classes/validator/validators/Validator_D0.php @@ -23,17 +23,17 @@ * @author Markus Malkusch * @copyright Copyright (C) 2008 Markus Malkusch */ -class BAV_Validator_D0 extends BAV_Validator +class Validator_D0 extends Validator { const SWITCH_PREFIX = '57'; /** - * @var BAV_Validator + * @var Validator */ private $validator; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); } @@ -41,8 +41,8 @@ public function __construct(BAV_Bank $bank) protected function validate() { $this->validator = substr($this->account, 0, 2) !== self::SWITCH_PREFIX - ? new BAV_Validator_20($this->bank) - : new BAV_Validator_09($this->bank); + ? new Validator_20($this->bank) + : new Validator_09($this->bank); } /** diff --git a/classes/validator/validators/BAV_Validator_D1.php b/classes/validator/validators/Validator_D1.php similarity index 92% rename from classes/validator/validators/BAV_Validator_D1.php rename to classes/validator/validators/Validator_D1.php index a8e94544..6722b87c 100644 --- a/classes/validator/validators/BAV_Validator_D1.php +++ b/classes/validator/validators/Validator_D1.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class BAV_Validator_D1 extends BAV_Validator +class Validator_D1 extends Validator { /** @@ -47,15 +47,15 @@ class BAV_Validator_D1 extends BAV_Validator protected $transformedAccount = ''; /** - * @var BAV_Validator_00 + * @var Validator_00 */ protected $validator; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validator = new BAV_Validator_00($bank); + $this->validator = new Validator_00($bank); } protected function validate() diff --git a/classes/validator/validators/BAV_Validator_D2.php b/classes/validator/validators/Validator_D2.php similarity index 79% rename from classes/validator/validators/BAV_Validator_D2.php rename to classes/validator/validators/Validator_D2.php index 9d1e5483..a21bb5f0 100644 --- a/classes/validator/validators/BAV_Validator_D2.php +++ b/classes/validator/validators/Validator_D2.php @@ -24,7 +24,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class BAV_Validator_D2 extends BAV_Validator_Chain +class Validator_D2 extends Validator_Chain { /** @@ -32,12 +32,12 @@ class BAV_Validator_D2 extends BAV_Validator_Chain */ protected $doNormalization = false; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new BAV_Validator_95($bank); - $this->validators[] = new BAV_Validator_00($bank); - $this->validators[] = new BAV_Validator_68($bank); + $this->validators[] = new Validator_95($bank); + $this->validators[] = new Validator_00($bank); + $this->validators[] = new Validator_68($bank); } } diff --git a/classes/validator/validators/BAV_Validator_D3.php b/classes/validator/validators/Validator_D3.php similarity index 82% rename from classes/validator/validators/BAV_Validator_D3.php rename to classes/validator/validators/Validator_D3.php index 85eef20d..b6956631 100644 --- a/classes/validator/validators/BAV_Validator_D3.php +++ b/classes/validator/validators/Validator_D3.php @@ -24,14 +24,14 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class BAV_Validator_D3 extends BAV_Validator_Chain +class Validator_D3 extends Validator_Chain { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new BAV_Validator_00($bank); - $this->validators[] = new BAV_Validator_27($bank); + $this->validators[] = new Validator_00($bank); + $this->validators[] = new Validator_27($bank); } } diff --git a/classes/validator/validators/BAV_Validator_D4.php b/classes/validator/validators/Validator_D4.php similarity index 89% rename from classes/validator/validators/BAV_Validator_D4.php rename to classes/validator/validators/Validator_D4.php index 6e1f3aad..0ea51a28 100644 --- a/classes/validator/validators/BAV_Validator_D4.php +++ b/classes/validator/validators/Validator_D4.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class BAV_Validator_D4 extends BAV_Validator +class Validator_D4 extends Validator { /** @@ -34,17 +34,17 @@ class BAV_Validator_D4 extends BAV_Validator protected $transformedAccount = ''; /** - * @var BAV_Validator_00 + * @var Validator_00 */ protected $validator; const TRANSFORMATION = 428259; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validator = new BAV_Validator_00($bank); + $this->validator = new Validator_00($bank); $this->validator->setNormalizedSize(10 + strlen(self::TRANSFORMATION)); } diff --git a/classes/validator/validators/BAV_Validator_D5.php b/classes/validator/validators/Validator_D5.php similarity index 82% rename from classes/validator/validators/BAV_Validator_D5.php rename to classes/validator/validators/Validator_D5.php index 4a57ce3d..5eda2248 100644 --- a/classes/validator/validators/BAV_Validator_D5.php +++ b/classes/validator/validators/Validator_D5.php @@ -25,43 +25,43 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class BAV_Validator_D5 extends BAV_Validator +class Validator_D5 extends Validator { /** - * @var BAV_Validator + * @var Validator */ private $validator; /** - * @var BAV_Validator_06 + * @var Validator_06 */ private $validator1; /** - * @var BAV_Validator_Chain + * @var Validator_Chain */ private $validatorChain; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validator1 = new BAV_Validator_06($bank); + $this->validator1 = new Validator_06($bank); $this->validator1->setWeights(array(2, 3, 4, 5, 6, 7, 8, 0, 0)); - $this->validatorChain = new BAV_Validator_Chain($bank); + $this->validatorChain = new Validator_Chain($bank); - $validator2 = new BAV_Validator_06($bank); + $validator2 = new Validator_06($bank); $validator2->setWeights(array(2, 3, 4, 5, 6, 7, 0, 0, 0)); $this->validatorChain->addValidator($validator2); - $validator3 = new BAV_Validator_06($bank); + $validator3 = new Validator_06($bank); $validator3->setWeights(array(2, 3, 4, 5, 6, 7, 0, 0, 0)); $validator3->setDivisor(7); $this->validatorChain->addValidator($validator3); - $validator4 = new BAV_Validator_06($bank); + $validator4 = new Validator_06($bank); $validator4->setWeights(array(2, 3, 4, 5, 6, 7, 0, 0, 0)); $validator4->setDivisor(10); $this->validatorChain->addValidator($validator4); diff --git a/classes/validator/validators/BAV_Validator_D6.php b/classes/validator/validators/Validator_D6.php similarity index 78% rename from classes/validator/validators/BAV_Validator_D6.php rename to classes/validator/validators/Validator_D6.php index cd8c1e22..4bcff1c8 100644 --- a/classes/validator/validators/BAV_Validator_D6.php +++ b/classes/validator/validators/Validator_D6.php @@ -24,15 +24,15 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class BAV_Validator_D6 extends BAV_Validator_Chain +class Validator_D6 extends Validator_Chain { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new BAV_Validator_07($bank); - $this->validators[] = new BAV_Validator_03($bank); - $this->validators[] = new BAV_Validator_00($bank); + $this->validators[] = new Validator_07($bank); + $this->validators[] = new Validator_03($bank); + $this->validators[] = new Validator_00($bank); } } diff --git a/classes/validator/validators/BAV_Validator_D7.php b/classes/validator/validators/Validator_D7.php similarity index 92% rename from classes/validator/validators/BAV_Validator_D7.php rename to classes/validator/validators/Validator_D7.php index 485fbe7c..0df1c147 100644 --- a/classes/validator/validators/BAV_Validator_D7.php +++ b/classes/validator/validators/Validator_D7.php @@ -25,10 +25,10 @@ * @author Markus Malkusch * @copyright Copyright (C) 2011 Markus Malkusch */ -class BAV_Validator_D7 extends BAV_Validator_Iteration_Weighted +class Validator_D7 extends Validator_Iteration_Weighted { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/validator/validators/BAV_Validator_D8.php b/classes/validator/validators/Validator_D8.php similarity index 88% rename from classes/validator/validators/BAV_Validator_D8.php rename to classes/validator/validators/Validator_D8.php index 8c5280ac..f08f0633 100644 --- a/classes/validator/validators/BAV_Validator_D8.php +++ b/classes/validator/validators/Validator_D8.php @@ -25,19 +25,19 @@ * @author Markus Malkusch * @copyright Copyright (C) 2011 Markus Malkusch */ -class BAV_Validator_D8 extends BAV_Validator +class Validator_D8 extends Validator { /** - * @var BAV_Validator_00 + * @var Validator_00 */ private $validator; - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validator = new BAV_Validator_00($bank); + $this->validator = new Validator_00($bank); } protected function validate() diff --git a/classes/validator/validators/BAV_Validator_D9.php b/classes/validator/validators/Validator_D9.php similarity index 78% rename from classes/validator/validators/BAV_Validator_D9.php rename to classes/validator/validators/Validator_D9.php index e4a14a43..f69edd71 100644 --- a/classes/validator/validators/BAV_Validator_D9.php +++ b/classes/validator/validators/Validator_D9.php @@ -24,15 +24,15 @@ * @author Markus Malkusch * @copyright Copyright (C) 2012 Markus Malkusch */ -class BAV_Validator_D9 extends BAV_Validator_Chain +class Validator_D9 extends Validator_Chain { - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new BAV_Validator_00($bank); - $this->validators[] = new BAV_Validator_10($bank); - $this->validators[] = new BAV_Validator_18($bank); + $this->validators[] = new Validator_00($bank); + $this->validators[] = new Validator_10($bank); + $this->validators[] = new Validator_18($bank); } } diff --git a/classes/validator/validators/BAV_Validator_E0.php b/classes/validator/validators/Validator_E0.php similarity index 95% rename from classes/validator/validators/BAV_Validator_E0.php rename to classes/validator/validators/Validator_E0.php index 83898873..ade35519 100644 --- a/classes/validator/validators/BAV_Validator_E0.php +++ b/classes/validator/validators/Validator_E0.php @@ -21,7 +21,7 @@ * * @author hhilbert 2013-03-12 added */ -class BAV_Validator_E0 extends BAV_Validator_00 +class Validator_E0 extends Validator_00 { protected function validate() diff --git a/classes/validator/validators/BAV_Validator_E1.php b/classes/validator/validators/Validator_E1.php similarity index 93% rename from classes/validator/validators/BAV_Validator_E1.php rename to classes/validator/validators/Validator_E1.php index 7736100c..c49b25e1 100644 --- a/classes/validator/validators/BAV_Validator_E1.php +++ b/classes/validator/validators/Validator_E1.php @@ -23,12 +23,12 @@ * https://github.com/jschaedl/Bav/blob/master/library/Bav/Validator/De/SystemE1.php */ -class BAV_Validator_E1 extends BAV_Validator_Iteration_Weighted +class Validator_E1 extends Validator_Iteration_Weighted { private static $subsitutions = array(48, 49, 50, 51, 52, 53, 54, 55, 56, 57); - public function __construct(BAV_Bank $bank) + public function __construct(Bank $bank) { parent::__construct($bank); diff --git a/classes/verify/BAV_VerifyImport.php b/classes/verify/VerifyImport.php similarity index 84% rename from classes/verify/BAV_VerifyImport.php rename to classes/verify/VerifyImport.php index 3f4f147b..c447bbb8 100644 --- a/classes/verify/BAV_VerifyImport.php +++ b/classes/verify/VerifyImport.php @@ -28,14 +28,14 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * BAV_DataBackend + * DataBackend * * @package classes * @subpackage verify * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_VerifyImport +class VerifyImport { /** @@ -49,14 +49,14 @@ class BAV_VerifyImport private $invalidNumbers = array(); /** - * @var BAV_DataBackend + * @var DataBackend */ private $dataBackend; /** - * @param BAV_DataBackend $dataBackend The backend is needed to get the validation algorithm. + * @param DataBackend $dataBackend The backend is needed to get the validation algorithm. */ - public function __construct(BAV_DataBackend $dataBackend) + public function __construct(DataBackend $dataBackend) { $this->dataBackend = $dataBackend; } @@ -75,14 +75,14 @@ private function getFile($file) * Imports an existing verify.ini. * * @param string $file - * @throws BAV_VerifyException + * @throws VerifyException */ public function importVerifyFile($file = null) { $file = $this->getFile($file); $verify = parse_ini_file($file, true); if (! $verify) { - throw new BAV_VerifyException("couldn't parse $file"); + throw new VerifyException("couldn't parse $file"); } @@ -115,15 +115,15 @@ private function mergeVerifyArray($verifyArray, & $targetArray) * @param string $bankID * @param string $accountID * @param bool $isValid if $accountID should be valid or not. Defaults to TRUE for valid. - * @throws BAV_DataBackendException_BankNotFound - * @throws BAV_DataBackendException + * @throws DataBackendException_BankNotFound + * @throws DataBackendException */ public function import($bankID, $accountID, $isValid = true) { $bankID = $this->normalize($bankID); $accountID = $this->normalize($accountID); $bank = $this->dataBackend->getBank($bankID); - $type = $bank->getValidator() instanceof BAV_Validator_BankDependent + $type = $bank->getValidator() instanceof Validator_BankDependent ? $bankID : $bank->getValidationType(); if ($isValid) { @@ -148,14 +148,14 @@ private function normalize($id) /** * @param string $filePath The file where the arrays are saved (default's to ../../data/verify.ini) - * @throws BAV_VerifyException_IO + * @throws VerifyException_IO */ public function save($file = null) { $file = $this->getFile($file); $fp = fopen($file, 'w'); if (! is_resource($fp)) { - throw new BAV_VerifyException_IO("Could not open $file."); + throw new VerifyException_IO("Could not open $file."); } try { @@ -163,7 +163,7 @@ public function save($file = null) $this->saveArray($fp, $this->validNumbers, 'valid'); fclose($fp); - } catch (BAV_VerifyException_IO $e) { + } catch (VerifyException_IO $e) { fclose($fp); throw $e; @@ -174,12 +174,12 @@ public function save($file = null) * @param Resource $fp Filepointer * @param Array $array Array with bank IDs * @param String $name Name of the section - * @throws BAV_VerifyException_IO + * @throws VerifyException_IO */ private function saveArray($fp, Array $array, $name) { if (! fwrite($fp, "\n\n".'['.$name.']')) { - throw new BAV_VerifyException_IO(); + throw new VerifyException_IO(); } ksort($array); @@ -190,12 +190,12 @@ private function saveArray($fp, Array $array, $name) } if (! fwrite($fp, "\n".' '.$type.' = ')) { - throw new BAV_VerifyException_IO(); + throw new VerifyException_IO(); } $line = implode(', ', array_unique($numbers)); if (fwrite($fp, $line, strlen($line)) !== strlen($line)) { - throw new BAV_VerifyException_IO(); + throw new VerifyException_IO(); } @@ -205,8 +205,8 @@ private function saveArray($fp, Array $array, $name) /** * @param String $bankID * @return String - * @throws BAV_DataBackendException_BankNotFound - * @throws BAV_DataBackendException + * @throws DataBackendException_BankNotFound + * @throws DataBackendException */ private function bankIDToType($bankID) { diff --git a/classes/verify/exception/BAV_VerifyException.php b/classes/verify/exception/VerifyException.php similarity index 94% rename from classes/verify/exception/BAV_VerifyException.php rename to classes/verify/exception/VerifyException.php index 7f78917d..70f2092e 100644 --- a/classes/verify/exception/BAV_VerifyException.php +++ b/classes/verify/exception/VerifyException.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_VerifyException extends RuntimeException +class VerifyException extends RuntimeException { } diff --git a/classes/verify/exception/BAV_VerifyException_IO.php b/classes/verify/exception/VerifyException_IO.php similarity index 94% rename from classes/verify/exception/BAV_VerifyException_IO.php rename to classes/verify/exception/VerifyException_IO.php index 7fd7c8c6..c183923f 100644 --- a/classes/verify/exception/BAV_VerifyException_IO.php +++ b/classes/verify/exception/VerifyException_IO.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class BAV_VerifyException_IO extends BAV_VerifyException +class VerifyException_IO extends VerifyException { } diff --git a/classes/verify/testAPI/BAV_TestAPI.php b/classes/verify/testAPI/TestAPI.php similarity index 78% rename from classes/verify/testAPI/BAV_TestAPI.php rename to classes/verify/testAPI/TestAPI.php index 35e92701..5d75df25 100644 --- a/classes/verify/testAPI/BAV_TestAPI.php +++ b/classes/verify/testAPI/TestAPI.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -abstract class BAV_TestAPI +abstract class TestAPI { /** @@ -36,9 +36,9 @@ abstract class BAV_TestAPI /** * @param int $account * @return bool - * @throws BAV_TestAPIException_Validation + * @throws TestAPIException_Validation */ - abstract protected function isValid(BAV_Bank $bank, $account); + abstract protected function isValid(Bank $bank, $account); public function __construct() { @@ -55,20 +55,20 @@ protected function setName($name) /** * @param int $account - * @return BAV_TestAPIResult + * @return TestAPIResult */ - public function getResult(BAV_Bank $bank, $account) + public function getResult(Bank $bank, $account) { try { $result = $this->isValid($bank, $account) - ? BAV_TestAPIResult::VALID - : BAV_TestAPIResult::INVALID; - return new BAV_TestAPIResult($this, $result); + ? TestAPIResult::VALID + : TestAPIResult::INVALID; + return new TestAPIResult($this, $result); } catch (Exception $e) { - return new BAV_TestAPIResult_Error( + return new TestAPIResult_Error( $this, - BAV_TestAPIResult::ERROR, + TestAPIResult::ERROR, $e->getMessage() ); diff --git a/classes/verify/testAPI/BAV_TestAPIResult.php b/classes/verify/testAPI/TestAPIResult.php similarity index 89% rename from classes/verify/testAPI/BAV_TestAPIResult.php rename to classes/verify/testAPI/TestAPIResult.php index 9a9890b6..7ee1dcdc 100644 --- a/classes/verify/testAPI/BAV_TestAPIResult.php +++ b/classes/verify/testAPI/TestAPIResult.php @@ -22,7 +22,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_TestAPIResult +class TestAPIResult { const VALID = 1; @@ -31,7 +31,7 @@ class BAV_TestAPIResult const ERROR = 4; /** - * @var BAV_TestAPI + * @var TestAPI */ private $testAPI; /** @@ -40,17 +40,17 @@ class BAV_TestAPIResult private $result; /** - * @param BAV_TestAPI $testAPI + * @param TestAPI $testAPI * @param int $result */ - public function __construct(BAV_TestAPI $testAPI, $result) + public function __construct(TestAPI $testAPI, $result) { $this->testAPI = $testAPI; $this->result = $result; } /** - * @return BAV_TestAPI + * @return TestAPI */ public function getTestAPI() { diff --git a/classes/verify/testAPI/BAV_TestAPIResult_Error.php b/classes/verify/testAPI/TestAPIResult_Error.php similarity index 88% rename from classes/verify/testAPI/BAV_TestAPIResult_Error.php rename to classes/verify/testAPI/TestAPIResult_Error.php index 9d3b174b..205f6734 100644 --- a/classes/verify/testAPI/BAV_TestAPIResult_Error.php +++ b/classes/verify/testAPI/TestAPIResult_Error.php @@ -22,7 +22,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_TestAPIResult_Error extends BAV_TestAPIResult +class TestAPIResult_Error extends TestAPIResult { /** @@ -31,11 +31,11 @@ class BAV_TestAPIResult_Error extends BAV_TestAPIResult private $message = ''; /** - * @param BAV_TestAPI $testAPI + * @param TestAPI $testAPI * @param int $result * @param String $message */ - public function __construct(BAV_TestAPI $testAPI, $result, $message = '') + public function __construct(TestAPI $testAPI, $result, $message = '') { parent::__construct($testAPI, $result); diff --git a/classes/verify/testAPI/BAV_TestAPI_BAV.php b/classes/verify/testAPI/TestAPI_BAV.php similarity index 89% rename from classes/verify/testAPI/BAV_TestAPI_BAV.php rename to classes/verify/testAPI/TestAPI_BAV.php index d6ff29b2..eb754eda 100644 --- a/classes/verify/testAPI/BAV_TestAPI_BAV.php +++ b/classes/verify/testAPI/TestAPI_BAV.php @@ -24,7 +24,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_TestAPI_BAV extends BAV_TestAPI +class TestAPI_BAV extends TestAPI { public function __construct() @@ -38,9 +38,9 @@ public function __construct() * @param int $bankCode * @param int $account * @return bool - * @throws BAV_TestAPIException_Validation_BankNotFound + * @throws TestAPIException_Validation_BankNotFound */ - protected function isValid(BAV_Bank $bank, $account) + protected function isValid(Bank $bank, $account) { try { return $bank->isValid($account); diff --git a/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php b/classes/verify/testAPI/TestAPI_Kontocheck.php similarity index 74% rename from classes/verify/testAPI/BAV_TestAPI_Kontocheck.php rename to classes/verify/testAPI/TestAPI_Kontocheck.php index 2d1fdcbc..af2a1bf7 100644 --- a/classes/verify/testAPI/BAV_TestAPI_Kontocheck.php +++ b/classes/verify/testAPI/TestAPI_Kontocheck.php @@ -24,7 +24,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_TestAPI_Kontocheck extends BAV_TestAPI +class TestAPI_Kontocheck extends TestAPI { const NOT_INITIALIZED = -40; @@ -36,7 +36,7 @@ class BAV_TestAPI_Kontocheck extends BAV_TestAPI /** * @param String $lutFile * @param int $lutVersion - * @throws BAV_TestAPIException + * @throws TestAPIException */ public function __construct($lutFile, $lutVersion) { @@ -45,7 +45,7 @@ public function __construct($lutFile, $lutVersion) $this->setName("kc"); if (! lut_init($lutFile, $lutVersion)) { - throw new BAV_TestAPIException("Could not initialize LUT."); + throw new TestAPIException("Could not initialize LUT."); } } @@ -54,21 +54,21 @@ public function __construct($lutFile, $lutVersion) * @param int $bank * @param int $account * @return bool - * @throws BAV_TestAPIException_Validation - * @throws BAV_TestAPIException_Validation_NotInitialized - * @throws BAV_TestAPIException_Validation_BankNotFound + * @throws TestAPIException_Validation + * @throws TestAPIException_Validation_NotInitialized + * @throws TestAPIException_Validation_BankNotFound */ - protected function isValid(BAV_Bank $bank, $account) + protected function isValid(Bank $bank, $account) { $isValid = kto_check_blz($bank->getBankID(), $account); switch ($isValid) { case self::NOT_INITIALIZED: - throw new BAV_TestAPIException_Validation_NotInitialized("LUT not initialized"); + throw new TestAPIException_Validation_NotInitialized("LUT not initialized"); case self::BANK_NOT_FOUND: - throw new BAV_TestAPIException_Validation_BankNotFound($bank->getBankID()); + throw new TestAPIException_Validation_BankNotFound($bank->getBankID()); case self::INVALID_NULL: case self::INVALID_KTO: @@ -77,7 +77,7 @@ protected function isValid(BAV_Bank $bank, $account) default: if ($isValid < 0) { - throw new BAV_TestAPIException_Validation("unknown code $isValid"); + throw new TestAPIException_Validation("unknown code $isValid"); } return true; diff --git a/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php b/classes/verify/testAPI/TestAPI_Ktoblzcheck.php similarity index 79% rename from classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php rename to classes/verify/testAPI/TestAPI_Ktoblzcheck.php index dd847358..5a459b33 100644 --- a/classes/verify/testAPI/BAV_TestAPI_Ktoblzcheck.php +++ b/classes/verify/testAPI/TestAPI_Ktoblzcheck.php @@ -24,7 +24,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_TestAPI_Ktoblzcheck extends BAV_TestAPI +class TestAPI_Ktoblzcheck extends TestAPI { const BINARY = "ktoblzcheck"; @@ -45,7 +45,7 @@ class BAV_TestAPI_Ktoblzcheck extends BAV_TestAPI /** * @param String $bankdata * @param String $binary - * @throws BAV_TestAPIException + * @throws TestAPIException */ public function __construct($bankdata, $binary = null) { @@ -60,11 +60,11 @@ public function __construct($bankdata, $binary = null) /** * @param int $account * @return bool - * @throws BAV_TestAPIException_Validation - * @throws BAV_TestAPIException_Validation_NotInitialized - * @throws BAV_TestAPIException_Validation_BankNotFound + * @throws TestAPIException_Validation + * @throws TestAPIException_Validation_NotInitialized + * @throws TestAPIException_Validation_BankNotFound */ - protected function isValid(BAV_Bank $bank, $account) + protected function isValid(Bank $bank, $account) { exec( "$this->binary --file=$this->bankdata {$bank->getBankID()} $account", @@ -81,10 +81,10 @@ protected function isValid(BAV_Bank $bank, $account) return false; case self::BANK_NOT_FOUND: - throw new BAV_TestAPIException_Validation_BankNotFound("Bank not found: {$bank->getBankID()}"); + throw new TestAPIException_Validation_BankNotFound("Bank not found: {$bank->getBankID()}"); default: - throw new BAV_TestAPIException_Validation("unknown code $result: " . implode("\n", $out)); + throw new TestAPIException_Validation("unknown code $result: " . implode("\n", $out)); } } diff --git a/classes/verify/testAPI/exception/BAV_TestAPIException.php b/classes/verify/testAPI/exception/TestAPIException.php similarity index 94% rename from classes/verify/testAPI/exception/BAV_TestAPIException.php rename to classes/verify/testAPI/exception/TestAPIException.php index 1e273301..20a60b49 100644 --- a/classes/verify/testAPI/exception/BAV_TestAPIException.php +++ b/classes/verify/testAPI/exception/TestAPIException.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_TestAPIException extends RuntimeException +class TestAPIException extends RuntimeException { } diff --git a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation.php b/classes/verify/testAPI/exception/TestAPIException_Validation.php similarity index 93% rename from classes/verify/testAPI/exception/BAV_TestAPIException_Validation.php rename to classes/verify/testAPI/exception/TestAPIException_Validation.php index 04af0ab7..83e0026c 100644 --- a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation.php +++ b/classes/verify/testAPI/exception/TestAPIException_Validation.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_TestAPIException_Validation extends BAV_TestAPIException +class TestAPIException_Validation extends TestAPIException { } diff --git a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_BankNotFound.php b/classes/verify/testAPI/exception/TestAPIException_Validation_BankNotFound.php similarity index 91% rename from classes/verify/testAPI/exception/BAV_TestAPIException_Validation_BankNotFound.php rename to classes/verify/testAPI/exception/TestAPIException_Validation_BankNotFound.php index 971486f4..b273e3a6 100644 --- a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_BankNotFound.php +++ b/classes/verify/testAPI/exception/TestAPIException_Validation_BankNotFound.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_TestAPIException_Validation_BankNotFound extends BAV_TestAPIException_Validation +class TestAPIException_Validation_BankNotFound extends TestAPIException_Validation { } diff --git a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_NotInitialized.php b/classes/verify/testAPI/exception/TestAPIException_Validation_NotInitialized.php similarity index 90% rename from classes/verify/testAPI/exception/BAV_TestAPIException_Validation_NotInitialized.php rename to classes/verify/testAPI/exception/TestAPIException_Validation_NotInitialized.php index c2d10807..3e47dbcb 100644 --- a/classes/verify/testAPI/exception/BAV_TestAPIException_Validation_NotInitialized.php +++ b/classes/verify/testAPI/exception/TestAPIException_Validation_NotInitialized.php @@ -23,7 +23,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_TestAPIException_Validation_NotInitialized extends BAV_TestAPIException_Validation +class TestAPIException_Validation_NotInitialized extends TestAPIException_Validation { } diff --git a/tests/AgencyQueryTest.php b/tests/AgencyQueryTest.php index 7badc3f3..4a9f4539 100755 --- a/tests/AgencyQueryTest.php +++ b/tests/AgencyQueryTest.php @@ -3,7 +3,7 @@ require_once __DIR__ . "/../autoloader/autoloader.php"; /** - * check BAV_DataBackend_PDO->getAgencies($sql) + * check DataBackend_PDO->getAgencies($sql) * * Copyright (C) 2009 Markus Malkusch * @@ -29,7 +29,7 @@ class AgencyQueryTest extends PHPUnit_Framework_TestCase { /** - * @var BAV_DataBackend_PDO + * @var DataBackend_PDO */ private $backend; @@ -37,7 +37,7 @@ class AgencyQueryTest extends PHPUnit_Framework_TestCase */ protected function setUp() { - $this->backend = new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); + $this->backend = new DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); } public function testOnlyID() @@ -65,7 +65,7 @@ public function testNoBank() } /** - * @expectedException BAV_DataBackendException_IO_MissingAttributes + * @expectedException DataBackendException_IO_MissingAttributes */ public function testNoID() { diff --git a/tests/BackendContainerTest.php b/tests/BackendContainerTest.php index 3ccc5dac..1a58e343 100644 --- a/tests/BackendContainerTest.php +++ b/tests/BackendContainerTest.php @@ -19,7 +19,7 @@ class BackendContainerTest extends \PHPUnit_Framework_TestCase public function testAutomaticInstallation() { ConfigurationRegistry::getConfiguration()->setUpdatePlan(null); - $container = new FileDataBackendContainer(tempnam(\BAV_DataBackend_File::getTempdir(), 'bavtest')); + $container = new FileDataBackendContainer(tempnam(\DataBackend_File::getTempdir(), 'bavtest')); $this->assertTrue(ConfigurationRegistry::getConfiguration()->isAutomaticInstallation()); @@ -38,7 +38,7 @@ public function testAutomaticUpdate() $updatePlan->setNotice(false); ConfigurationRegistry::getConfiguration()->setUpdatePlan($updatePlan); - $container = new FileDataBackendContainer(tempnam(\BAV_DataBackend_File::getTempdir(), 'bavtest')); + $container = new FileDataBackendContainer(tempnam(\DataBackend_File::getTempdir(), 'bavtest')); $backend = $container->getDataBackend(); touch($backend->getFile(), strtotime("-1 year")); diff --git a/tests/BackendTest.php b/tests/BackendTest.php index 21abad77..bba9a41c 100755 --- a/tests/BackendTest.php +++ b/tests/BackendTest.php @@ -13,7 +13,7 @@ class BackendTest extends PHPUnit_Framework_TestCase { /** - * @var BAV_DataBackend_File + * @var DataBackend_File */ private static $referenceBackend; @@ -22,7 +22,7 @@ class BackendTest extends PHPUnit_Framework_TestCase */ public static function classConstructor() { - self::$referenceBackend = new BAV_DataBackend_File(); + self::$referenceBackend = new DataBackend_File(); } /** @@ -30,10 +30,10 @@ public static function classConstructor() */ public function provideBackends() { - $pdoBackend = new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); + $pdoBackend = new DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); $this->setupBackend($pdoBackend); - $fileBackend = new BAV_DataBackend_File(); + $fileBackend = new DataBackend_File(); $this->setupBackend($fileBackend); return array( @@ -42,7 +42,7 @@ public function provideBackends() ); } - private function setupBackend(BAV_DataBackend $backend) + private function setupBackend(DataBackend $backend) { if ($backend->isInstalled()) { return; @@ -55,10 +55,10 @@ private function setupBackend(BAV_DataBackend $backend) */ public function provideInstallationBackends() { - $pdoBackend = new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test'), 'bavtest_'); + $pdoBackend = new DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test'), 'bavtest_'); $this->setupInstallationBackends($pdoBackend); - $fileBackend = new BAV_DataBackend_File(tempnam(BAV_DataBackend_File::getTempdir(), 'bavtest')); + $fileBackend = new DataBackend_File(tempnam(DataBackend_File::getTempdir(), 'bavtest')); $this->setupInstallationBackends($fileBackend); return array( @@ -67,7 +67,7 @@ public function provideInstallationBackends() ); } - private function setupInstallationBackends(BAV_DataBackend $backend) + private function setupInstallationBackends(DataBackend $backend) { if (! $backend->isInstalled()) { return; @@ -124,7 +124,7 @@ public function provideAgencies() /** * @dataProvider provideInstallationBackends */ - public function testInstallation(BAV_DataBackend $backend) + public function testInstallation(DataBackend $backend) { $backend->install(); $backend->update(); @@ -134,7 +134,7 @@ public function testInstallation(BAV_DataBackend $backend) /** * @dataProvider provideInstallationBackends */ - public function testIsInstalled(BAV_DataBackend $backend) + public function testIsInstalled(DataBackend $backend) { $backend->install(); $this->assertTrue($backend->isInstalled()); @@ -146,7 +146,7 @@ public function testIsInstalled(BAV_DataBackend $backend) /** * @dataProvider provideInstallationBackends */ - public function testLastUpdate(BAV_DataBackend $backend) + public function testLastUpdate(DataBackend $backend) { $now = time(); $backend->install(); @@ -164,7 +164,7 @@ public function testLastUpdate(BAV_DataBackend $backend) /** * @dataProvider provideInstallationBackends */ - public function testInstallationIsComplete(BAV_DataBackend $backend) + public function testInstallationIsComplete(DataBackend $backend) { $this->markTestIncomplete(); //TODO test if the installation process fills all banks @@ -176,7 +176,7 @@ public function testInstallationIsComplete(BAV_DataBackend $backend) * * @dataProvider provideBackends */ - public function testSingleInstances(BAV_DataBackend $backend) + public function testSingleInstances(DataBackend $backend) { foreach (self::$referenceBackend->getAllBanks() as $refBank) { $this->assertTrue( @@ -189,7 +189,7 @@ public function testSingleInstances(BAV_DataBackend $backend) /** * @dataProvider provideBackends */ - public function testGetAllBanks(BAV_DataBackend $backend) + public function testGetAllBanks(DataBackend $backend) { $this->assertEquals( count(self::$referenceBackend->getAllBanks()), @@ -200,7 +200,7 @@ public function testGetAllBanks(BAV_DataBackend $backend) /** * @dataProvider provideBanks */ - public function testBanks(BAV_Bank $referenceBank, BAV_Bank $testedBank) + public function testBanks(Bank $referenceBank, Bank $testedBank) { $this->assertEquals( $referenceBank->getValidationType(), @@ -221,12 +221,12 @@ public function testBanks(BAV_Bank $referenceBank, BAV_Bank $testedBank) /** * @dataProvider provideAgencies */ - public function testAgencies(BAV_Agency $referenceAgency, BAV_Agency $testedAgency) + public function testAgencies(Agency $referenceAgency, Agency $testedAgency) { $this->assertEqualAgency($referenceAgency, $testedAgency); } - private function assertEqualAgency(BAV_Agency $a, BAV_Agency $b) + private function assertEqualAgency(Agency $a, Agency $b) { $this->assertTrue($a->getBank()->getBankID() === $b->getBank()->getBankID()); $this->assertTrue($a->getID() === $b->getID()); diff --git a/tests/CrossProjectTest.php b/tests/CrossProjectTest.php index e2a4564e..2d7a3fa3 100755 --- a/tests/CrossProjectTest.php +++ b/tests/CrossProjectTest.php @@ -55,9 +55,9 @@ protected function setUp() $ktoblzcheckPath = __DIR__ . "/../tmp/ktoblzcheck/ktoblzcheck-1.21/src"; $this->testAPIs = array( - new BAV_TestAPI_BAV(), - new BAV_TestAPI_Kontocheck('/etc/blz.lut2', 2), - new BAV_TestAPI_Ktoblzcheck( + new TestAPI_BAV(), + new TestAPI_Kontocheck('/etc/blz.lut2', 2), + new TestAPI_Ktoblzcheck( "$ktoblzcheckPath/bankdata/bankdata.txt", "$ktoblzcheckPath/bin/ktoblzcheck" ) @@ -70,7 +70,7 @@ protected function setUp() public function provideBanks() { $banks = array(); - $backend = new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); + $backend = new DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); foreach ($backend->getAllBanks() as $bank) { $banks[] = array($bank); @@ -81,10 +81,10 @@ public function provideBanks() /** * @dataProvider provideBanks */ - public function testCrossProjects(BAV_Bank $bank) + public function testCrossProjects(Bank $bank) { try { - $isSkip = $bank->getValidator() instanceof BAV_Validator_BankDependent + $isSkip = $bank->getValidator() instanceof Validator_BankDependent ? array_key_exists($bank->getValidationType(), $this->failedBankDependentValidators) : array_key_exists($bank->getValidationType(), $this->testedValidators); @@ -101,11 +101,11 @@ public function testCrossProjects(BAV_Bank $bank) } } - } catch (BAV_TestAPIException_Validation_BankNotFound $e) { + } catch (TestAPIException_Validation_BankNotFound $e) { return; } catch (Exception $e) { - if ($bank instanceof BAV_Validator_BankDependent) { + if ($bank instanceof Validator_BankDependent) { $this->failedBankDependentValidators[$bank->getValidationType()] = true; } @@ -115,7 +115,7 @@ public function testCrossProjects(BAV_Bank $bank) $this->testedValidators[$bank->getValidationType()] = true; } - private function assertSameResult(BAV_Bank $bank, $account) + private function assertSameResult(Bank $bank, $account) { $results = array(); $resultValues = array(); @@ -134,17 +134,17 @@ private function assertSameResult(BAV_Bank $bank, $account) } /** - * @param BAV_Bank $bank + * @param Bank $bank * @param String $account * @param array $results * @return String */ - private function getErrorMessage(BAV_Bank $bank, $account, Array $results) + private function getErrorMessage(Bank $bank, $account, Array $results) { $resultTranslation = array( - BAV_TestAPIResult::VALID => "valid", - BAV_TestAPIResult::INVALID => "invalid", - BAV_TestAPIResult::ERROR => "error" + TestAPIResult::VALID => "valid", + TestAPIResult::INVALID => "invalid", + TestAPIResult::ERROR => "error" ); $message = "{$bank->getBankID()}/{$bank->getValidationType()}\t" @@ -153,7 +153,7 @@ private function getErrorMessage(BAV_Bank $bank, $account, Array $results) foreach ($results as $result) { $message .= "{$result->getTestAPI()->getName()}: " . str_pad($resultTranslation[$result->getResult()], 8); - if ($result instanceof BAV_TestAPIResult_Error) { + if ($result instanceof TestAPIResult_Error) { $message .= " {$result->getMessage()}"; } diff --git a/tests/DataConstraintTest.php b/tests/DataConstraintTest.php index 10b27d6b..2e3ec141 100755 --- a/tests/DataConstraintTest.php +++ b/tests/DataConstraintTest.php @@ -85,13 +85,13 @@ public static function setUpBeforeClass() */ public function provideParsedLines() { - $parser = new BAV_FileParser(); + $parser = new FileParser(); $lines = array(); for ($i = 0; $i < $parser->getLines(); $i++) { $line = $parser->readLine($i); $blz = mb_substr($line, 0, 8, 'UTF-8'); - $type = mb_substr($line, BAV_FileParser::TYPE_OFFSET, BAV_FileParser::TYPE_LENGTH, 'UTF-8'); + $type = mb_substr($line, FileParser::TYPE_OFFSET, FileParser::TYPE_LENGTH, 'UTF-8'); $lines[] = array($blz, $type); } diff --git a/tests/UpdatePlanTest.php b/tests/UpdatePlanTest.php index 91a56091..59c803db 100644 --- a/tests/UpdatePlanTest.php +++ b/tests/UpdatePlanTest.php @@ -47,9 +47,9 @@ public function provideTestIsOutdated() */ public function testIsOutdated($mtime, $time, $expectedIsOutdated) { - $file = tempnam(\BAV_DataBackend_File::getTempdir(), 'bavtest'); + $file = tempnam(\DataBackend_File::getTempdir(), 'bavtest'); touch($file, strtotime($mtime)); - $backend = new \BAV_DataBackend_File($file); + $backend = new \DataBackend_File($file); TimeMock::setTime(strtotime($time)); @@ -65,7 +65,7 @@ public function testIsOutdated($mtime, $time, $expectedIsOutdated) public function testLogUpdatePlan() { $updatePlan = new LogUpdatePlan(); - $updatePlan->perform(new \BAV_DataBackend_File()); + $updatePlan->perform(new \DataBackend_File()); } /** @@ -74,9 +74,9 @@ public function testLogUpdatePlan() */ public function testAutomaticUpdatePlanNotice() { - $file = tempnam(\BAV_DataBackend_File::getTempdir(), 'bavtest'); + $file = tempnam(\DataBackend_File::getTempdir(), 'bavtest'); $updatePlan = new AutomaticUpdatePlan(); - $updatePlan->perform(new \BAV_DataBackend_File($file)); + $updatePlan->perform(new \DataBackend_File($file)); } /** @@ -85,9 +85,9 @@ public function testAutomaticUpdatePlanNotice() */ public function testAutomaticUpdatePlan() { - $file = tempnam(\BAV_DataBackend_File::getTempdir(), 'bavtest'); + $file = tempnam(\DataBackend_File::getTempdir(), 'bavtest'); touch($file, strtotime("-1 year")); - $backend = new \BAV_DataBackend_File($file); + $backend = new \DataBackend_File($file); $updatePlan = new AutomaticUpdatePlan(); $this->assertTrue($updatePlan->isOutdated($backend)); diff --git a/tests/ValidatorTest.php b/tests/ValidatorTest.php index 4283bd8f..f157f665 100755 --- a/tests/ValidatorTest.php +++ b/tests/ValidatorTest.php @@ -30,7 +30,7 @@ class ValidatorTest extends PHPUnit_Framework_TestCase { /** - * @var BAV_DataBackend + * @var DataBackend */ private static $dataBackend; @@ -45,8 +45,8 @@ class ValidatorTest extends PHPUnit_Framework_TestCase private static $knownBanks = array(); /** - * @throws BAV_FileParserException_IO - * @throws BAV_FileParserException_FileNotExists + * @throws FileParserException_IO + * @throws FileParserException_FileNotExists */ protected function setUp() { @@ -54,8 +54,8 @@ protected function setUp() return; } - #self::$dataBackend = new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); - self::$dataBackend = new BAV_DataBackend_File(); + #self::$dataBackend = new DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); + self::$dataBackend = new DataBackend_File(); foreach (self::$dataBackend->getAllBanks() as $bank) { @@ -72,16 +72,16 @@ public function provideBanks() $this->setUp(); $banks = array(); - $files = BAV_ClassFile::getClassFiles(__DIR__.'/../classes/validator/validators/'); + $files = ClassFile::getClassFiles(__DIR__.'/../classes/validator/validators/'); foreach ($files as $class) { - if (! preg_match('~^BAV_Validator_([A-Z0-9]{2})$~', $class->getName(), $matchType)) { + if (! preg_match('~^Validator_([A-Z0-9]{2})$~', $class->getName(), $matchType)) { continue; } $validatorType = $matchType[1]; $bank = array_key_exists($validatorType, self::$knownBanks) ? self::$knownBanks[$validatorType] - : new BAV_Bank(self::$dataBackend, 12345678, $validatorType); + : new Bank(self::$dataBackend, 12345678, $validatorType); $banks[] = array($bank); self::$implementedBanks[$validatorType] = $bank; @@ -111,11 +111,11 @@ public function provideAccountsAndBanksInAllLengths() * and fills {@link $implementedBanks}. * * @param String $validatorType - * @throws BAV_ClassFileException_IO - * @throws BAV_ClassFileException_MissingClass + * @throws ClassFileException_IO + * @throws ClassFileException_MissingClass * @dataProvider provideBanks */ - public function testFindParseErrors(BAV_Bank $bank) + public function testFindParseErrors(Bank $bank) { /** * testing 10 random bank accounts @@ -130,11 +130,11 @@ public function testFindParseErrors(BAV_Bank $bank) * 0 - 0000000000 should always be invalid * * @param String $validatorType - * @throws BAV_ClassFileException_IO - * @throws BAV_ClassFileException_MissingClass + * @throws ClassFileException_IO + * @throws ClassFileException_MissingClass * @dataProvider provideBanks */ - public function testNullIsInvalid(BAV_Bank $bank) + public function testNullIsInvalid(Bank $bank) { for ($length = 0; $length <= 10; $length++) { $account = str_pad("0", $length, "0", STR_PAD_LEFT); @@ -150,11 +150,11 @@ public function testNullIsInvalid(BAV_Bank $bank) * Short accounts should not raise exception. * * @param int $account - * @throws BAV_ClassFileException_IO - * @throws BAV_ClassFileException_MissingClass + * @throws ClassFileException_IO + * @throws ClassFileException_MissingClass * @dataProvider provideAccountsAndBanksInAllLengths */ - public function testAccountLength(BAV_Bank $bank, $account) + public function testAccountLength(Bank $bank, $account) { $bank->isValid($account); } @@ -208,29 +208,29 @@ public function testAccount($typeOrBankID, Array $accountIDs, $expectedValidatio try { $bank = self::$dataBackend->getBank($typeOrBankID); - } catch (BAV_DataBackendException_BankNotFound $e) { + } catch (DataBackendException_BankNotFound $e) { switch ($e->getBankID()) { case '13051052': case '13051172': case '81053132': - $bank = new BAV_Bank(self::$dataBackend, $e->getBankID(), '52'); + $bank = new Bank(self::$dataBackend, $e->getBankID(), '52'); break; case '16052072': case '85055142': - $bank = new BAV_Bank(self::$dataBackend, $e->getBankID(), '53'); + $bank = new Bank(self::$dataBackend, $e->getBankID(), '53'); break; case '80053762': case '80053772': case '80053782': - $bank = new BAV_Bank(self::$dataBackend, $e->getBankID(), 'B6'); + $bank = new Bank(self::$dataBackend, $e->getBankID(), 'B6'); break; case '81053272': case '86055462': - $bank = new BAV_Bank(self::$dataBackend, $e->getBankID(), 'C0'); + $bank = new Bank(self::$dataBackend, $e->getBankID(), 'C0'); break; default: diff --git a/tests/VerifyImportTest.php b/tests/VerifyImportTest.php index 6d247579..9205de1d 100755 --- a/tests/VerifyImportTest.php +++ b/tests/VerifyImportTest.php @@ -3,7 +3,7 @@ require_once __DIR__ . "/../autoloader/autoloader.php"; /** - * A test for BAV_VerifyImport. + * A test for VerifyImport. * * * Copyright (C) 2009 Markus Malkusch @@ -25,7 +25,7 @@ * @package test * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch - * @see BAV_VerifyImport + * @see VerifyImport */ class VerifyImportTest extends PHPUnit_Framework_TestCase { @@ -41,13 +41,13 @@ class VerifyImportTest extends PHPUnit_Framework_TestCase private $verifyArray = array(); /** - * @var BAV_DataBackend_File + * @var DataBackend_File */ private $databack; protected function setUp() { - $this->databack = new BAV_DataBackend_File(); + $this->databack = new DataBackend_File(); $this->verifyArray = parse_ini_file(__DIR__.'/../data/verify.ini', true); $this->assertInternalType( @@ -64,14 +64,14 @@ protected function setUp() public function testFileImport() { - $importer = new BAV_VerifyImport($this->databack); + $importer = new VerifyImport($this->databack); $importer->importVerifyFile(); $this->assertImporter($importer); } public function testSequentialImport() { - $importer = new BAV_VerifyImport($this->databack); + $importer = new VerifyImport($this->databack); $notSupported = array(); foreach ($this->verifyArray as $expect => $array) { foreach ($array as $type => $accounts) { @@ -84,7 +84,7 @@ public function testSequentialImport() } - } catch (BAV_DataBackendException_BankNotFound $e) { + } catch (DataBackendException_BankNotFound $e) { $notSupported[] = $type; } @@ -95,7 +95,7 @@ public function testSequentialImport() $this->assertImporter($importer, $notSupported); } - private function assertImporter(BAV_VerifyImport $importer, Array $notSupported = array()) + private function assertImporter(VerifyImport $importer, Array $notSupported = array()) { $file = tempnam('/tmp', 'BAV'); $this->assertFileExists($file); @@ -134,12 +134,12 @@ private function assertImporter(BAV_VerifyImport $importer, Array $notSupported /** * @param String $validationType - * @return BAV_Bank + * @return Bank */ private function getBank($validationType) { if (! isset($this->validationMap[$validationType])) { - throw new BAV_DataBackendException_BankNotFound($validationType); + throw new DataBackendException_BankNotFound($validationType); } return $this->validationMap[$validationType]; diff --git a/tests/checkAgainstTestAPIs.php b/tests/checkAgainstTestAPIs.php index 740294ef..917c6090 100755 --- a/tests/checkAgainstTestAPIs.php +++ b/tests/checkAgainstTestAPIs.php @@ -27,7 +27,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class BAV_CheckAgainstTestAPIs +class CheckAgainstTestAPIs { const VALID = 1; @@ -65,16 +65,16 @@ public function __construct() { $ktoblzcheckPath = __DIR__ . "/../tmp/ktoblzcheck/ktoblzcheck-1.21/src"; - $this->testAPIs[] = new BAV_TestAPI_BAV(); - $this->testAPIs[] = new BAV_TestAPI_Kontocheck('/etc/blz.lut', 2); - $this->testAPIs[] = new BAV_TestAPI_Ktoblzcheck( + $this->testAPIs[] = new TestAPI_BAV(); + $this->testAPIs[] = new TestAPI_Kontocheck('/etc/blz.lut', 2); + $this->testAPIs[] = new TestAPI_Ktoblzcheck( "$ktoblzcheckPath/bankdata/bankdata.txt", "$ktoblzcheckPath/bin/ktoblzcheck" ); - #$backend = new BAV_DataBackend_File(); - $backend = new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); + #$backend = new DataBackend_File(); + $backend = new DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); if (! empty($GLOBALS['argv'][1])) { @@ -120,7 +120,7 @@ public function __construct() foreach ($backend->getAllBanks() as $bank) { try { if (array_key_exists($bank->getValidationType(), $this->testedValidators) - && ! $bank->getValidator() instanceof BAV_Validator_BankDependent) { + && ! $bank->getValidator() instanceof Validator_BankDependent) { continue; @@ -140,14 +140,14 @@ public function __construct() $this->testedValidators[$bank->getValidationType()] = true; - } catch (BAV_TestAPIException_Validation_BankNotFound $e) { + } catch (TestAPIException_Validation_BankNotFound $e) { continue; } } } - private function testAccount(BAV_Bank $bank, $account) + private function testAccount(Bank $bank, $account) { $results = array(); $resultValues = array(); @@ -165,9 +165,9 @@ private function testAccount(BAV_Bank $bank, $account) $resultTranslation = array( - BAV_TestAPIResult::VALID => "valid", - BAV_TestAPIResult::INVALID => "invalid", - BAV_TestAPIResult::ERROR => "error" + TestAPIResult::VALID => "valid", + TestAPIResult::INVALID => "invalid", + TestAPIResult::ERROR => "error" ); echo "{$bank->getBankID()}/{$bank->getValidationType()}\t", @@ -176,7 +176,7 @@ private function testAccount(BAV_Bank $bank, $account) foreach ($results as $result) { echo "{$result->getTestAPI()->getName()}: ", str_pad($resultTranslation[$result->getResult()], 8); - if ($result instanceof BAV_TestAPIResult_Error) { + if ($result instanceof TestAPIResult_Error) { echo " {$result->getMessage()}"; } @@ -189,4 +189,4 @@ private function testAccount(BAV_Bank $bank, $account) } } -new BAV_CheckAgainstTestAPIs(); +new CheckAgainstTestAPIs(); From 3598af4edb6e9a7711fe06824eb20b7fe980cc42 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 04:23:43 +0200 Subject: [PATCH 097/303] moved into namespace malkusch\bav --- autoloader/index/0.php | 418 +++++++++--------- autoloader/index/1.php | 16 +- bin/verifyImport.php | 3 + classes/bank/Agency.php | 2 + classes/bank/Bank.php | 2 + classes/bank/exception/AgencyException.php | 4 +- .../AgencyException_UndefinedAttribute.php | 2 + classes/class/ClassFile.php | 2 + .../class/exception/ClassFileException.php | 4 +- .../class/exception/ClassFileException_IO.php | 2 + .../ClassFileException_MissingClass.php | 2 + classes/configuration/Configuration.php | 2 +- .../configuration/DefaultConfiguration.php | 6 +- classes/dataBackend/DataBackend.php | 2 + classes/dataBackend/DataBackendContainer.php | 2 +- .../exception/DataBackendException.php | 4 +- .../DataBackendException_BankNotFound.php | 2 + .../exception/DataBackendException_IO.php | 2 + ...aBackendException_IO_MissingAttributes.php | 2 + .../DataBackendException_NoMainAgency.php | 2 + classes/dataBackend/file/DataBackend_File.php | 2 + .../file/FileDataBackendContainer.php | 2 +- .../file/fileParser/FileParser.php | 2 +- .../file/fileParser/FileParserContext.php | 2 + .../exception/FileParserContextException.php | 4 +- .../FileParserContextException_Undefined.php | 2 + .../exception/FileParserException.php | 4 +- .../FileParserException_FileNotExists.php | 2 + .../exception/FileParserException_IO.php | 2 + .../FileParserException_ParseError.php | 2 + classes/dataBackend/pdo/DataBackend_PDO.php | 54 +-- .../pdo/PDODataBackendContainer.php | 4 +- .../update/AutomaticUpdatePlan.php | 2 +- classes/dataBackend/update/LogUpdatePlan.php | 2 +- classes/dataBackend/update/UpdatePlan.php | 4 +- classes/encoding/Encoding.php | 2 + classes/encoding/Encoding_ISO8859.php | 2 + classes/encoding/Encoding_Iconv.php | 2 + classes/encoding/Encoding_MB.php | 2 + .../encoding/exception/EncodingException.php | 4 +- .../EncodingException_Unsupported.php | 2 + classes/validator/Validator.php | 5 +- classes/validator/Validator_BankDependent.php | 2 + classes/validator/Validator_Chain.php | 2 + classes/validator/Validator_Iteration.php | 2 + .../Validator_Iteration_Transformation.php | 2 + .../Validator_Iteration_Weighted.php | 2 + .../exception/ValidatorException.php | 4 +- .../exception/ValidatorException_ESER.php | 2 + .../ValidatorException_NotExists.php | 2 + .../ValidatorException_OutOfBounds.php | 2 + classes/validator/validators/Validator_00.php | 2 + classes/validator/validators/Validator_01.php | 2 + classes/validator/validators/Validator_02.php | 2 + classes/validator/validators/Validator_03.php | 2 + classes/validator/validators/Validator_04.php | 2 + classes/validator/validators/Validator_05.php | 2 + classes/validator/validators/Validator_06.php | 2 + classes/validator/validators/Validator_07.php | 2 + classes/validator/validators/Validator_08.php | 2 + classes/validator/validators/Validator_09.php | 2 + classes/validator/validators/Validator_10.php | 2 + classes/validator/validators/Validator_11.php | 2 + classes/validator/validators/Validator_13.php | 2 + classes/validator/validators/Validator_14.php | 2 + classes/validator/validators/Validator_15.php | 2 + classes/validator/validators/Validator_16.php | 2 + classes/validator/validators/Validator_17.php | 2 + classes/validator/validators/Validator_18.php | 2 + classes/validator/validators/Validator_19.php | 2 + classes/validator/validators/Validator_20.php | 2 + classes/validator/validators/Validator_21.php | 2 + classes/validator/validators/Validator_22.php | 2 + classes/validator/validators/Validator_23.php | 2 + classes/validator/validators/Validator_24.php | 2 + classes/validator/validators/Validator_25.php | 2 + classes/validator/validators/Validator_26.php | 2 + classes/validator/validators/Validator_27.php | 2 + classes/validator/validators/Validator_28.php | 2 + classes/validator/validators/Validator_29.php | 2 + classes/validator/validators/Validator_30.php | 2 + classes/validator/validators/Validator_31.php | 2 + classes/validator/validators/Validator_32.php | 2 + classes/validator/validators/Validator_33.php | 2 + classes/validator/validators/Validator_34.php | 2 + classes/validator/validators/Validator_35.php | 2 + classes/validator/validators/Validator_36.php | 2 + classes/validator/validators/Validator_37.php | 2 + classes/validator/validators/Validator_38.php | 2 + classes/validator/validators/Validator_39.php | 2 + classes/validator/validators/Validator_40.php | 2 + classes/validator/validators/Validator_41.php | 2 + classes/validator/validators/Validator_42.php | 2 + classes/validator/validators/Validator_43.php | 2 + classes/validator/validators/Validator_44.php | 2 + classes/validator/validators/Validator_45.php | 2 + classes/validator/validators/Validator_46.php | 2 + classes/validator/validators/Validator_47.php | 2 + classes/validator/validators/Validator_48.php | 2 + classes/validator/validators/Validator_49.php | 2 + classes/validator/validators/Validator_50.php | 2 + classes/validator/validators/Validator_51.php | 2 + .../validator/validators/Validator_51x.php | 2 + classes/validator/validators/Validator_52.php | 2 + classes/validator/validators/Validator_53.php | 2 + classes/validator/validators/Validator_54.php | 2 + classes/validator/validators/Validator_55.php | 2 + classes/validator/validators/Validator_56.php | 2 + classes/validator/validators/Validator_57.php | 2 + classes/validator/validators/Validator_58.php | 2 + classes/validator/validators/Validator_59.php | 2 + classes/validator/validators/Validator_60.php | 2 + classes/validator/validators/Validator_61.php | 2 + classes/validator/validators/Validator_62.php | 2 + classes/validator/validators/Validator_63.php | 2 + classes/validator/validators/Validator_64.php | 2 + classes/validator/validators/Validator_65.php | 2 + classes/validator/validators/Validator_66.php | 2 + classes/validator/validators/Validator_67.php | 2 + classes/validator/validators/Validator_68.php | 2 + classes/validator/validators/Validator_69.php | 2 + .../validator/validators/Validator_69b.php | 2 + classes/validator/validators/Validator_70.php | 2 + classes/validator/validators/Validator_71.php | 2 + classes/validator/validators/Validator_72.php | 2 + classes/validator/validators/Validator_73.php | 2 + classes/validator/validators/Validator_74.php | 2 + classes/validator/validators/Validator_75.php | 2 + classes/validator/validators/Validator_76.php | 2 + classes/validator/validators/Validator_77.php | 2 + .../validator/validators/Validator_77a.php | 2 + classes/validator/validators/Validator_78.php | 2 + classes/validator/validators/Validator_79.php | 2 + classes/validator/validators/Validator_80.php | 2 + classes/validator/validators/Validator_81.php | 2 + classes/validator/validators/Validator_82.php | 2 + classes/validator/validators/Validator_83.php | 2 + .../validator/validators/Validator_83x.php | 2 + classes/validator/validators/Validator_84.php | 2 + .../validator/validators/Validator_84b.php | 2 + classes/validator/validators/Validator_85.php | 2 + classes/validator/validators/Validator_86.php | 2 + classes/validator/validators/Validator_87.php | 2 + .../validator/validators/Validator_87a.php | 2 + .../validator/validators/Validator_87c.php | 2 + classes/validator/validators/Validator_88.php | 2 + classes/validator/validators/Validator_89.php | 2 + classes/validator/validators/Validator_90.php | 2 + .../validator/validators/Validator_90c.php | 2 + .../validator/validators/Validator_90d.php | 2 + .../validator/validators/Validator_90e.php | 2 + .../validator/validators/Validator_90g.php | 2 + classes/validator/validators/Validator_91.php | 2 + classes/validator/validators/Validator_92.php | 2 + classes/validator/validators/Validator_93.php | 2 + classes/validator/validators/Validator_94.php | 2 + classes/validator/validators/Validator_95.php | 2 + classes/validator/validators/Validator_96.php | 2 + classes/validator/validators/Validator_97.php | 2 + classes/validator/validators/Validator_98.php | 2 + classes/validator/validators/Validator_99.php | 2 + classes/validator/validators/Validator_A0.php | 2 + classes/validator/validators/Validator_A1.php | 2 + classes/validator/validators/Validator_A2.php | 2 + classes/validator/validators/Validator_A3.php | 2 + classes/validator/validators/Validator_A4.php | 2 + .../validator/validators/Validator_A4b.php | 2 + classes/validator/validators/Validator_A5.php | 2 + classes/validator/validators/Validator_A6.php | 2 + classes/validator/validators/Validator_A7.php | 2 + classes/validator/validators/Validator_A8.php | 2 + classes/validator/validators/Validator_A9.php | 2 + classes/validator/validators/Validator_B0.php | 2 + classes/validator/validators/Validator_B1.php | 2 + classes/validator/validators/Validator_B2.php | 2 + classes/validator/validators/Validator_B3.php | 2 + classes/validator/validators/Validator_B4.php | 2 + classes/validator/validators/Validator_B5.php | 2 + classes/validator/validators/Validator_B6.php | 2 + classes/validator/validators/Validator_B7.php | 2 + classes/validator/validators/Validator_B8.php | 2 + classes/validator/validators/Validator_B9.php | 2 + .../validator/validators/Validator_B9a.php | 2 + .../validator/validators/Validator_B9b.php | 2 + classes/validator/validators/Validator_C0.php | 2 + classes/validator/validators/Validator_C1.php | 2 + .../validator/validators/Validator_C1b.php | 2 + classes/validator/validators/Validator_C2.php | 2 + classes/validator/validators/Validator_C3.php | 2 + classes/validator/validators/Validator_C4.php | 2 + classes/validator/validators/Validator_C5.php | 2 + classes/validator/validators/Validator_C6.php | 2 + classes/validator/validators/Validator_C7.php | 2 + classes/validator/validators/Validator_C8.php | 2 + classes/validator/validators/Validator_C9.php | 2 + classes/validator/validators/Validator_D0.php | 2 + classes/validator/validators/Validator_D1.php | 2 + classes/validator/validators/Validator_D2.php | 2 + classes/validator/validators/Validator_D3.php | 2 + classes/validator/validators/Validator_D4.php | 2 + classes/validator/validators/Validator_D5.php | 2 + classes/validator/validators/Validator_D6.php | 2 + classes/validator/validators/Validator_D7.php | 2 + classes/validator/validators/Validator_D8.php | 2 + classes/validator/validators/Validator_D9.php | 2 + classes/validator/validators/Validator_E0.php | 2 + classes/validator/validators/Validator_E1.php | 2 + classes/verify/VerifyImport.php | 2 + classes/verify/exception/VerifyException.php | 4 +- .../verify/exception/VerifyException_IO.php | 2 + classes/verify/testAPI/TestAPI.php | 2 + classes/verify/testAPI/TestAPIResult.php | 2 + .../verify/testAPI/TestAPIResult_Error.php | 2 + classes/verify/testAPI/TestAPI_BAV.php | 2 + classes/verify/testAPI/TestAPI_Kontocheck.php | 2 + .../verify/testAPI/TestAPI_Ktoblzcheck.php | 2 + .../testAPI/exception/TestAPIException.php | 4 +- .../exception/TestAPIException_Validation.php | 2 + ...stAPIException_Validation_BankNotFound.php | 2 + ...APIException_Validation_NotInitialized.php | 2 + docs/changelog.txt | 4 +- tests/AgencyQueryTest.php | 8 +- tests/BackendContainerTest.php | 4 +- tests/BackendTest.php | 8 +- tests/CrossProjectTest.php | 6 +- tests/DataConstraintTest.php | 10 +- tests/TestSuite.php | 4 +- tests/UpdatePlanTest.php | 14 +- tests/ValidatorTest.php | 7 +- tests/VerifyImportTest.php | 4 +- tests/checkAgainstTestAPIs.php | 4 +- tests/classes/TimeMock.php | 2 + 232 files changed, 733 insertions(+), 294 deletions(-) diff --git a/autoloader/index/0.php b/autoloader/index/0.php index ef4bc4ea..e16fd33f 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -15,224 +15,224 @@ */ return array( - 'bank' => '../classes/bank/Bank.php', - 'agency' => '../classes/bank/Agency.php', - 'testapi' => '../classes/verify/testAPI/TestAPI.php', - 'encoding' => '../classes/encoding/Encoding.php', - 'classfile' => '../classes/class/ClassFile.php', - 'validator' => '../classes/validator/Validator.php', - 'fileparser' => '../classes/dataBackend/file/fileParser/FileParser.php', + 'malkusch\bav\bank' => '../classes/bank/Bank.php', + 'malkusch\bav\agency' => '../classes/bank/Agency.php', + 'malkusch\bav\testapi' => '../classes/verify/testAPI/TestAPI.php', + 'malkusch\bav\encoding' => '../classes/encoding/Encoding.php', + 'malkusch\bav\classfile' => '../classes/class/ClassFile.php', + 'malkusch\bav\validator' => '../classes/validator/Validator.php', + 'malkusch\bav\fileparser' => '../classes/dataBackend/file/fileParser/FileParser.php', 'malkusch\bav\updateplan' => '../classes/dataBackend/update/UpdatePlan.php', - 'databackend' => '../classes/dataBackend/DataBackend.php', - 'encoding_mb' => '../classes/encoding/Encoding_MB.php', - 'testapi_bav' => '../classes/verify/testAPI/TestAPI_BAV.php', + 'malkusch\bav\databackend' => '../classes/dataBackend/DataBackend.php', + 'malkusch\bav\encoding_mb' => '../classes/encoding/Encoding_MB.php', + 'malkusch\bav\testapi_bav' => '../classes/verify/testAPI/TestAPI_BAV.php', 'malkusch\bav\bavexception' => '../classes/exception/BAVException.php', - 'validator_00' => '../classes/validator/validators/Validator_00.php', - 'validator_01' => '../classes/validator/validators/Validator_01.php', - 'validator_02' => '../classes/validator/validators/Validator_02.php', - 'validator_03' => '../classes/validator/validators/Validator_03.php', - 'validator_04' => '../classes/validator/validators/Validator_04.php', - 'validator_05' => '../classes/validator/validators/Validator_05.php', - 'validator_06' => '../classes/validator/validators/Validator_06.php', - 'validator_07' => '../classes/validator/validators/Validator_07.php', - 'validator_08' => '../classes/validator/validators/Validator_08.php', - 'validator_09' => '../classes/validator/validators/Validator_09.php', - 'validator_10' => '../classes/validator/validators/Validator_10.php', - 'validator_11' => '../classes/validator/validators/Validator_11.php', - 'validator_13' => '../classes/validator/validators/Validator_13.php', - 'validator_14' => '../classes/validator/validators/Validator_14.php', - 'validator_15' => '../classes/validator/validators/Validator_15.php', - 'validator_16' => '../classes/validator/validators/Validator_16.php', - 'validator_17' => '../classes/validator/validators/Validator_17.php', - 'validator_18' => '../classes/validator/validators/Validator_18.php', - 'validator_19' => '../classes/validator/validators/Validator_19.php', - 'validator_20' => '../classes/validator/validators/Validator_20.php', - 'validator_21' => '../classes/validator/validators/Validator_21.php', - 'validator_22' => '../classes/validator/validators/Validator_22.php', - 'validator_23' => '../classes/validator/validators/Validator_23.php', - 'validator_24' => '../classes/validator/validators/Validator_24.php', - 'validator_25' => '../classes/validator/validators/Validator_25.php', - 'validator_26' => '../classes/validator/validators/Validator_26.php', - 'validator_27' => '../classes/validator/validators/Validator_27.php', - 'validator_28' => '../classes/validator/validators/Validator_28.php', - 'validator_29' => '../classes/validator/validators/Validator_29.php', - 'validator_30' => '../classes/validator/validators/Validator_30.php', - 'validator_31' => '../classes/validator/validators/Validator_31.php', - 'validator_32' => '../classes/validator/validators/Validator_32.php', - 'validator_33' => '../classes/validator/validators/Validator_33.php', - 'validator_34' => '../classes/validator/validators/Validator_34.php', - 'validator_35' => '../classes/validator/validators/Validator_35.php', - 'validator_36' => '../classes/validator/validators/Validator_36.php', - 'validator_37' => '../classes/validator/validators/Validator_37.php', - 'validator_38' => '../classes/validator/validators/Validator_38.php', - 'validator_39' => '../classes/validator/validators/Validator_39.php', - 'validator_40' => '../classes/validator/validators/Validator_40.php', - 'validator_41' => '../classes/validator/validators/Validator_41.php', - 'validator_42' => '../classes/validator/validators/Validator_42.php', - 'validator_43' => '../classes/validator/validators/Validator_43.php', - 'validator_44' => '../classes/validator/validators/Validator_44.php', - 'validator_45' => '../classes/validator/validators/Validator_45.php', - 'validator_46' => '../classes/validator/validators/Validator_46.php', - 'validator_47' => '../classes/validator/validators/Validator_47.php', - 'validator_48' => '../classes/validator/validators/Validator_48.php', - 'validator_49' => '../classes/validator/validators/Validator_49.php', - 'validator_50' => '../classes/validator/validators/Validator_50.php', - 'validator_51' => '../classes/validator/validators/Validator_51.php', - 'validator_52' => '../classes/validator/validators/Validator_52.php', - 'validator_53' => '../classes/validator/validators/Validator_53.php', - 'validator_54' => '../classes/validator/validators/Validator_54.php', - 'validator_55' => '../classes/validator/validators/Validator_55.php', - 'validator_56' => '../classes/validator/validators/Validator_56.php', - 'validator_57' => '../classes/validator/validators/Validator_57.php', - 'validator_58' => '../classes/validator/validators/Validator_58.php', - 'validator_59' => '../classes/validator/validators/Validator_59.php', - 'validator_60' => '../classes/validator/validators/Validator_60.php', - 'validator_61' => '../classes/validator/validators/Validator_61.php', - 'validator_62' => '../classes/validator/validators/Validator_62.php', - 'validator_63' => '../classes/validator/validators/Validator_63.php', - 'validator_64' => '../classes/validator/validators/Validator_64.php', - 'validator_65' => '../classes/validator/validators/Validator_65.php', - 'validator_66' => '../classes/validator/validators/Validator_66.php', - 'validator_67' => '../classes/validator/validators/Validator_67.php', - 'validator_68' => '../classes/validator/validators/Validator_68.php', - 'validator_69' => '../classes/validator/validators/Validator_69.php', - 'validator_70' => '../classes/validator/validators/Validator_70.php', - 'validator_71' => '../classes/validator/validators/Validator_71.php', - 'validator_72' => '../classes/validator/validators/Validator_72.php', - 'validator_73' => '../classes/validator/validators/Validator_73.php', - 'validator_74' => '../classes/validator/validators/Validator_74.php', - 'validator_75' => '../classes/validator/validators/Validator_75.php', - 'validator_76' => '../classes/validator/validators/Validator_76.php', - 'validator_77' => '../classes/validator/validators/Validator_77.php', - 'validator_78' => '../classes/validator/validators/Validator_78.php', - 'validator_79' => '../classes/validator/validators/Validator_79.php', - 'validator_80' => '../classes/validator/validators/Validator_80.php', - 'validator_81' => '../classes/validator/validators/Validator_81.php', - 'validator_82' => '../classes/validator/validators/Validator_82.php', - 'validator_83' => '../classes/validator/validators/Validator_83.php', - 'validator_84' => '../classes/validator/validators/Validator_84.php', - 'validator_85' => '../classes/validator/validators/Validator_85.php', - 'validator_86' => '../classes/validator/validators/Validator_86.php', - 'validator_87' => '../classes/validator/validators/Validator_87.php', - 'validator_88' => '../classes/validator/validators/Validator_88.php', - 'validator_89' => '../classes/validator/validators/Validator_89.php', - 'validator_90' => '../classes/validator/validators/Validator_90.php', - 'validator_91' => '../classes/validator/validators/Validator_91.php', - 'validator_92' => '../classes/validator/validators/Validator_92.php', - 'validator_93' => '../classes/validator/validators/Validator_93.php', - 'validator_94' => '../classes/validator/validators/Validator_94.php', - 'validator_95' => '../classes/validator/validators/Validator_95.php', - 'validator_96' => '../classes/validator/validators/Validator_96.php', - 'validator_97' => '../classes/validator/validators/Validator_97.php', - 'validator_98' => '../classes/validator/validators/Validator_98.php', - 'validator_99' => '../classes/validator/validators/Validator_99.php', - 'validator_a0' => '../classes/validator/validators/Validator_A0.php', - 'validator_a1' => '../classes/validator/validators/Validator_A1.php', - 'validator_a2' => '../classes/validator/validators/Validator_A2.php', - 'validator_a3' => '../classes/validator/validators/Validator_A3.php', - 'validator_a4' => '../classes/validator/validators/Validator_A4.php', - 'validator_a5' => '../classes/validator/validators/Validator_A5.php', - 'validator_a6' => '../classes/validator/validators/Validator_A6.php', - 'validator_a7' => '../classes/validator/validators/Validator_A7.php', - 'validator_a8' => '../classes/validator/validators/Validator_A8.php', - 'validator_a9' => '../classes/validator/validators/Validator_A9.php', - 'validator_b0' => '../classes/validator/validators/Validator_B0.php', - 'validator_b1' => '../classes/validator/validators/Validator_B1.php', - 'validator_b2' => '../classes/validator/validators/Validator_B2.php', - 'validator_b3' => '../classes/validator/validators/Validator_B3.php', - 'validator_b4' => '../classes/validator/validators/Validator_B4.php', - 'validator_b5' => '../classes/validator/validators/Validator_B5.php', - 'validator_b6' => '../classes/validator/validators/Validator_B6.php', - 'validator_b7' => '../classes/validator/validators/Validator_B7.php', - 'validator_b8' => '../classes/validator/validators/Validator_B8.php', - 'validator_b9' => '../classes/validator/validators/Validator_B9.php', - 'validator_c0' => '../classes/validator/validators/Validator_C0.php', - 'validator_c1' => '../classes/validator/validators/Validator_C1.php', - 'validator_c2' => '../classes/validator/validators/Validator_C2.php', - 'validator_c3' => '../classes/validator/validators/Validator_C3.php', - 'validator_c4' => '../classes/validator/validators/Validator_C4.php', - 'validator_c5' => '../classes/validator/validators/Validator_C5.php', - 'validator_c6' => '../classes/validator/validators/Validator_C6.php', - 'validator_c7' => '../classes/validator/validators/Validator_C7.php', - 'validator_c8' => '../classes/validator/validators/Validator_C8.php', - 'validator_c9' => '../classes/validator/validators/Validator_C9.php', - 'validator_d0' => '../classes/validator/validators/Validator_D0.php', - 'validator_d1' => '../classes/validator/validators/Validator_D1.php', - 'validator_d2' => '../classes/validator/validators/Validator_D2.php', - 'validator_d3' => '../classes/validator/validators/Validator_D3.php', - 'validator_d4' => '../classes/validator/validators/Validator_D4.php', - 'validator_d5' => '../classes/validator/validators/Validator_D5.php', - 'validator_d6' => '../classes/validator/validators/Validator_D6.php', - 'validator_d7' => '../classes/validator/validators/Validator_D7.php', - 'validator_d8' => '../classes/validator/validators/Validator_D8.php', - 'validator_d9' => '../classes/validator/validators/Validator_D9.php', - 'validator_e0' => '../classes/validator/validators/Validator_E0.php', - 'validator_e1' => '../classes/validator/validators/Validator_E1.php', - 'verifyimport' => '../classes/verify/VerifyImport.php', + 'malkusch\bav\validator_00' => '../classes/validator/validators/Validator_00.php', + 'malkusch\bav\validator_01' => '../classes/validator/validators/Validator_01.php', + 'malkusch\bav\validator_02' => '../classes/validator/validators/Validator_02.php', + 'malkusch\bav\validator_03' => '../classes/validator/validators/Validator_03.php', + 'malkusch\bav\validator_04' => '../classes/validator/validators/Validator_04.php', + 'malkusch\bav\validator_05' => '../classes/validator/validators/Validator_05.php', + 'malkusch\bav\validator_06' => '../classes/validator/validators/Validator_06.php', + 'malkusch\bav\validator_07' => '../classes/validator/validators/Validator_07.php', + 'malkusch\bav\validator_08' => '../classes/validator/validators/Validator_08.php', + 'malkusch\bav\validator_09' => '../classes/validator/validators/Validator_09.php', + 'malkusch\bav\validator_10' => '../classes/validator/validators/Validator_10.php', + 'malkusch\bav\validator_11' => '../classes/validator/validators/Validator_11.php', + 'malkusch\bav\validator_13' => '../classes/validator/validators/Validator_13.php', + 'malkusch\bav\validator_14' => '../classes/validator/validators/Validator_14.php', + 'malkusch\bav\validator_15' => '../classes/validator/validators/Validator_15.php', + 'malkusch\bav\validator_16' => '../classes/validator/validators/Validator_16.php', + 'malkusch\bav\validator_17' => '../classes/validator/validators/Validator_17.php', + 'malkusch\bav\validator_18' => '../classes/validator/validators/Validator_18.php', + 'malkusch\bav\validator_19' => '../classes/validator/validators/Validator_19.php', + 'malkusch\bav\validator_20' => '../classes/validator/validators/Validator_20.php', + 'malkusch\bav\validator_21' => '../classes/validator/validators/Validator_21.php', + 'malkusch\bav\validator_22' => '../classes/validator/validators/Validator_22.php', + 'malkusch\bav\validator_23' => '../classes/validator/validators/Validator_23.php', + 'malkusch\bav\validator_24' => '../classes/validator/validators/Validator_24.php', + 'malkusch\bav\validator_25' => '../classes/validator/validators/Validator_25.php', + 'malkusch\bav\validator_26' => '../classes/validator/validators/Validator_26.php', + 'malkusch\bav\validator_27' => '../classes/validator/validators/Validator_27.php', + 'malkusch\bav\validator_28' => '../classes/validator/validators/Validator_28.php', + 'malkusch\bav\validator_29' => '../classes/validator/validators/Validator_29.php', + 'malkusch\bav\validator_30' => '../classes/validator/validators/Validator_30.php', + 'malkusch\bav\validator_31' => '../classes/validator/validators/Validator_31.php', + 'malkusch\bav\validator_32' => '../classes/validator/validators/Validator_32.php', + 'malkusch\bav\validator_33' => '../classes/validator/validators/Validator_33.php', + 'malkusch\bav\validator_34' => '../classes/validator/validators/Validator_34.php', + 'malkusch\bav\validator_35' => '../classes/validator/validators/Validator_35.php', + 'malkusch\bav\validator_36' => '../classes/validator/validators/Validator_36.php', + 'malkusch\bav\validator_37' => '../classes/validator/validators/Validator_37.php', + 'malkusch\bav\validator_38' => '../classes/validator/validators/Validator_38.php', + 'malkusch\bav\validator_39' => '../classes/validator/validators/Validator_39.php', + 'malkusch\bav\validator_40' => '../classes/validator/validators/Validator_40.php', + 'malkusch\bav\validator_41' => '../classes/validator/validators/Validator_41.php', + 'malkusch\bav\validator_42' => '../classes/validator/validators/Validator_42.php', + 'malkusch\bav\validator_43' => '../classes/validator/validators/Validator_43.php', + 'malkusch\bav\validator_44' => '../classes/validator/validators/Validator_44.php', + 'malkusch\bav\validator_45' => '../classes/validator/validators/Validator_45.php', + 'malkusch\bav\validator_46' => '../classes/validator/validators/Validator_46.php', + 'malkusch\bav\validator_47' => '../classes/validator/validators/Validator_47.php', + 'malkusch\bav\validator_48' => '../classes/validator/validators/Validator_48.php', + 'malkusch\bav\validator_49' => '../classes/validator/validators/Validator_49.php', + 'malkusch\bav\validator_50' => '../classes/validator/validators/Validator_50.php', + 'malkusch\bav\validator_51' => '../classes/validator/validators/Validator_51.php', + 'malkusch\bav\validator_52' => '../classes/validator/validators/Validator_52.php', + 'malkusch\bav\validator_53' => '../classes/validator/validators/Validator_53.php', + 'malkusch\bav\validator_54' => '../classes/validator/validators/Validator_54.php', + 'malkusch\bav\validator_55' => '../classes/validator/validators/Validator_55.php', + 'malkusch\bav\validator_56' => '../classes/validator/validators/Validator_56.php', + 'malkusch\bav\validator_57' => '../classes/validator/validators/Validator_57.php', + 'malkusch\bav\validator_58' => '../classes/validator/validators/Validator_58.php', + 'malkusch\bav\validator_59' => '../classes/validator/validators/Validator_59.php', + 'malkusch\bav\validator_60' => '../classes/validator/validators/Validator_60.php', + 'malkusch\bav\validator_61' => '../classes/validator/validators/Validator_61.php', + 'malkusch\bav\validator_62' => '../classes/validator/validators/Validator_62.php', + 'malkusch\bav\validator_63' => '../classes/validator/validators/Validator_63.php', + 'malkusch\bav\validator_64' => '../classes/validator/validators/Validator_64.php', + 'malkusch\bav\validator_65' => '../classes/validator/validators/Validator_65.php', + 'malkusch\bav\validator_66' => '../classes/validator/validators/Validator_66.php', + 'malkusch\bav\validator_67' => '../classes/validator/validators/Validator_67.php', + 'malkusch\bav\validator_68' => '../classes/validator/validators/Validator_68.php', + 'malkusch\bav\validator_69' => '../classes/validator/validators/Validator_69.php', + 'malkusch\bav\validator_70' => '../classes/validator/validators/Validator_70.php', + 'malkusch\bav\validator_71' => '../classes/validator/validators/Validator_71.php', + 'malkusch\bav\validator_72' => '../classes/validator/validators/Validator_72.php', + 'malkusch\bav\validator_73' => '../classes/validator/validators/Validator_73.php', + 'malkusch\bav\validator_74' => '../classes/validator/validators/Validator_74.php', + 'malkusch\bav\validator_75' => '../classes/validator/validators/Validator_75.php', + 'malkusch\bav\validator_76' => '../classes/validator/validators/Validator_76.php', + 'malkusch\bav\validator_77' => '../classes/validator/validators/Validator_77.php', + 'malkusch\bav\validator_78' => '../classes/validator/validators/Validator_78.php', + 'malkusch\bav\validator_79' => '../classes/validator/validators/Validator_79.php', + 'malkusch\bav\validator_80' => '../classes/validator/validators/Validator_80.php', + 'malkusch\bav\validator_81' => '../classes/validator/validators/Validator_81.php', + 'malkusch\bav\validator_82' => '../classes/validator/validators/Validator_82.php', + 'malkusch\bav\validator_83' => '../classes/validator/validators/Validator_83.php', + 'malkusch\bav\validator_84' => '../classes/validator/validators/Validator_84.php', + 'malkusch\bav\validator_85' => '../classes/validator/validators/Validator_85.php', + 'malkusch\bav\validator_86' => '../classes/validator/validators/Validator_86.php', + 'malkusch\bav\validator_87' => '../classes/validator/validators/Validator_87.php', + 'malkusch\bav\validator_88' => '../classes/validator/validators/Validator_88.php', + 'malkusch\bav\validator_89' => '../classes/validator/validators/Validator_89.php', + 'malkusch\bav\validator_90' => '../classes/validator/validators/Validator_90.php', + 'malkusch\bav\validator_91' => '../classes/validator/validators/Validator_91.php', + 'malkusch\bav\validator_92' => '../classes/validator/validators/Validator_92.php', + 'malkusch\bav\validator_93' => '../classes/validator/validators/Validator_93.php', + 'malkusch\bav\validator_94' => '../classes/validator/validators/Validator_94.php', + 'malkusch\bav\validator_95' => '../classes/validator/validators/Validator_95.php', + 'malkusch\bav\validator_96' => '../classes/validator/validators/Validator_96.php', + 'malkusch\bav\validator_97' => '../classes/validator/validators/Validator_97.php', + 'malkusch\bav\validator_98' => '../classes/validator/validators/Validator_98.php', + 'malkusch\bav\validator_99' => '../classes/validator/validators/Validator_99.php', + 'malkusch\bav\validator_a0' => '../classes/validator/validators/Validator_A0.php', + 'malkusch\bav\validator_a1' => '../classes/validator/validators/Validator_A1.php', + 'malkusch\bav\validator_a2' => '../classes/validator/validators/Validator_A2.php', + 'malkusch\bav\validator_a3' => '../classes/validator/validators/Validator_A3.php', + 'malkusch\bav\validator_a4' => '../classes/validator/validators/Validator_A4.php', + 'malkusch\bav\validator_a5' => '../classes/validator/validators/Validator_A5.php', + 'malkusch\bav\validator_a6' => '../classes/validator/validators/Validator_A6.php', + 'malkusch\bav\validator_a7' => '../classes/validator/validators/Validator_A7.php', + 'malkusch\bav\validator_a8' => '../classes/validator/validators/Validator_A8.php', + 'malkusch\bav\validator_a9' => '../classes/validator/validators/Validator_A9.php', + 'malkusch\bav\validator_b0' => '../classes/validator/validators/Validator_B0.php', + 'malkusch\bav\validator_b1' => '../classes/validator/validators/Validator_B1.php', + 'malkusch\bav\validator_b2' => '../classes/validator/validators/Validator_B2.php', + 'malkusch\bav\validator_b3' => '../classes/validator/validators/Validator_B3.php', + 'malkusch\bav\validator_b4' => '../classes/validator/validators/Validator_B4.php', + 'malkusch\bav\validator_b5' => '../classes/validator/validators/Validator_B5.php', + 'malkusch\bav\validator_b6' => '../classes/validator/validators/Validator_B6.php', + 'malkusch\bav\validator_b7' => '../classes/validator/validators/Validator_B7.php', + 'malkusch\bav\validator_b8' => '../classes/validator/validators/Validator_B8.php', + 'malkusch\bav\validator_b9' => '../classes/validator/validators/Validator_B9.php', + 'malkusch\bav\validator_c0' => '../classes/validator/validators/Validator_C0.php', + 'malkusch\bav\validator_c1' => '../classes/validator/validators/Validator_C1.php', + 'malkusch\bav\validator_c2' => '../classes/validator/validators/Validator_C2.php', + 'malkusch\bav\validator_c3' => '../classes/validator/validators/Validator_C3.php', + 'malkusch\bav\validator_c4' => '../classes/validator/validators/Validator_C4.php', + 'malkusch\bav\validator_c5' => '../classes/validator/validators/Validator_C5.php', + 'malkusch\bav\validator_c6' => '../classes/validator/validators/Validator_C6.php', + 'malkusch\bav\validator_c7' => '../classes/validator/validators/Validator_C7.php', + 'malkusch\bav\validator_c8' => '../classes/validator/validators/Validator_C8.php', + 'malkusch\bav\validator_c9' => '../classes/validator/validators/Validator_C9.php', + 'malkusch\bav\validator_d0' => '../classes/validator/validators/Validator_D0.php', + 'malkusch\bav\validator_d1' => '../classes/validator/validators/Validator_D1.php', + 'malkusch\bav\validator_d2' => '../classes/validator/validators/Validator_D2.php', + 'malkusch\bav\validator_d3' => '../classes/validator/validators/Validator_D3.php', + 'malkusch\bav\validator_d4' => '../classes/validator/validators/Validator_D4.php', + 'malkusch\bav\validator_d5' => '../classes/validator/validators/Validator_D5.php', + 'malkusch\bav\validator_d6' => '../classes/validator/validators/Validator_D6.php', + 'malkusch\bav\validator_d7' => '../classes/validator/validators/Validator_D7.php', + 'malkusch\bav\validator_d8' => '../classes/validator/validators/Validator_D8.php', + 'malkusch\bav\validator_d9' => '../classes/validator/validators/Validator_D9.php', + 'malkusch\bav\validator_e0' => '../classes/validator/validators/Validator_E0.php', + 'malkusch\bav\validator_e1' => '../classes/validator/validators/Validator_E1.php', + 'malkusch\bav\verifyimport' => '../classes/verify/VerifyImport.php', 'malkusch\bav\configuration' => '../classes/configuration/Configuration.php', 'malkusch\bav\logupdateplan' => '../classes/dataBackend/update/LogUpdatePlan.php', - 'validator_51x' => '../classes/validator/validators/Validator_51x.php', - 'validator_69b' => '../classes/validator/validators/Validator_69b.php', - 'validator_77a' => '../classes/validator/validators/Validator_77a.php', - 'validator_83x' => '../classes/validator/validators/Validator_83x.php', - 'validator_84b' => '../classes/validator/validators/Validator_84b.php', - 'validator_87a' => '../classes/validator/validators/Validator_87a.php', - 'validator_87c' => '../classes/validator/validators/Validator_87c.php', - 'validator_90c' => '../classes/validator/validators/Validator_90c.php', - 'validator_90d' => '../classes/validator/validators/Validator_90d.php', - 'validator_90e' => '../classes/validator/validators/Validator_90e.php', - 'validator_90g' => '../classes/validator/validators/Validator_90g.php', - 'validator_a4b' => '../classes/validator/validators/Validator_A4b.php', - 'validator_b9a' => '../classes/validator/validators/Validator_B9a.php', - 'validator_b9b' => '../classes/validator/validators/Validator_B9b.php', - 'validator_c1b' => '../classes/validator/validators/Validator_C1b.php', - 'testapiresult' => '../classes/verify/testAPI/TestAPIResult.php', - 'encoding_iconv' => '../classes/encoding/Encoding_Iconv.php', - 'agencyexception' => '../classes/bank/exception/AgencyException.php', - 'databackend_pdo' => '../classes/dataBackend/pdo/DataBackend_PDO.php', - 'validator_chain' => '../classes/validator/Validator_Chain.php', - 'verifyexception' => '../classes/verify/exception/VerifyException.php', - 'databackend_file' => '../classes/dataBackend/file/DataBackend_File.php', - 'encoding_iso8859' => '../classes/encoding/Encoding_ISO8859.php', - 'testapiexception' => '../classes/verify/testAPI/exception/TestAPIException.php', - 'fileparsercontext' => '../classes/dataBackend/file/fileParser/FileParserContext.php', - 'encodingexception' => '../classes/encoding/exception/EncodingException.php', - 'classfileexception' => '../classes/class/exception/ClassFileException.php', - 'validatorexception' => '../classes/validator/exception/ValidatorException.php', - 'verifyexception_io' => '../classes/verify/exception/VerifyException_IO.php', - 'testapi_kontocheck' => '../classes/verify/testAPI/TestAPI_Kontocheck.php', - 'fileparserexception' => '../classes/dataBackend/file/fileParser/exception/FileParserException.php', + 'malkusch\bav\validator_51x' => '../classes/validator/validators/Validator_51x.php', + 'malkusch\bav\validator_69b' => '../classes/validator/validators/Validator_69b.php', + 'malkusch\bav\validator_77a' => '../classes/validator/validators/Validator_77a.php', + 'malkusch\bav\validator_83x' => '../classes/validator/validators/Validator_83x.php', + 'malkusch\bav\validator_84b' => '../classes/validator/validators/Validator_84b.php', + 'malkusch\bav\validator_87a' => '../classes/validator/validators/Validator_87a.php', + 'malkusch\bav\validator_87c' => '../classes/validator/validators/Validator_87c.php', + 'malkusch\bav\validator_90c' => '../classes/validator/validators/Validator_90c.php', + 'malkusch\bav\validator_90d' => '../classes/validator/validators/Validator_90d.php', + 'malkusch\bav\validator_90e' => '../classes/validator/validators/Validator_90e.php', + 'malkusch\bav\validator_90g' => '../classes/validator/validators/Validator_90g.php', + 'malkusch\bav\validator_a4b' => '../classes/validator/validators/Validator_A4b.php', + 'malkusch\bav\validator_b9a' => '../classes/validator/validators/Validator_B9a.php', + 'malkusch\bav\validator_b9b' => '../classes/validator/validators/Validator_B9b.php', + 'malkusch\bav\validator_c1b' => '../classes/validator/validators/Validator_C1b.php', + 'malkusch\bav\testapiresult' => '../classes/verify/testAPI/TestAPIResult.php', + 'malkusch\bav\encoding_iconv' => '../classes/encoding/Encoding_Iconv.php', + 'malkusch\bav\agencyexception' => '../classes/bank/exception/AgencyException.php', + 'malkusch\bav\databackend_pdo' => '../classes/dataBackend/pdo/DataBackend_PDO.php', + 'malkusch\bav\validator_chain' => '../classes/validator/Validator_Chain.php', + 'malkusch\bav\verifyexception' => '../classes/verify/exception/VerifyException.php', + 'malkusch\bav\databackend_file' => '../classes/dataBackend/file/DataBackend_File.php', + 'malkusch\bav\encoding_iso8859' => '../classes/encoding/Encoding_ISO8859.php', + 'malkusch\bav\testapiexception' => '../classes/verify/testAPI/exception/TestAPIException.php', + 'malkusch\bav\fileparsercontext' => '../classes/dataBackend/file/fileParser/FileParserContext.php', + 'malkusch\bav\encodingexception' => '../classes/encoding/exception/EncodingException.php', + 'malkusch\bav\classfileexception' => '../classes/class/exception/ClassFileException.php', + 'malkusch\bav\validatorexception' => '../classes/validator/exception/ValidatorException.php', + 'malkusch\bav\verifyexception_io' => '../classes/verify/exception/VerifyException_IO.php', + 'malkusch\bav\testapi_kontocheck' => '../classes/verify/testAPI/TestAPI_Kontocheck.php', + 'malkusch\bav\fileparserexception' => '../classes/dataBackend/file/fileParser/exception/FileParserException.php', 'malkusch\bav\automaticupdateplan' => '../classes/dataBackend/update/AutomaticUpdatePlan.php', - 'validator_iteration' => '../classes/validator/Validator_Iteration.php', - 'testapiresult_error' => '../classes/verify/testAPI/TestAPIResult_Error.php', - 'testapi_ktoblzcheck' => '../classes/verify/testAPI/TestAPI_Ktoblzcheck.php', + 'malkusch\bav\validator_iteration' => '../classes/validator/Validator_Iteration.php', + 'malkusch\bav\testapiresult_error' => '../classes/verify/testAPI/TestAPIResult_Error.php', + 'malkusch\bav\testapi_ktoblzcheck' => '../classes/verify/testAPI/TestAPI_Ktoblzcheck.php', 'malkusch\bav\defaultconfiguration' => '../classes/configuration/DefaultConfiguration.php', 'malkusch\bav\databackendcontainer' => '../classes/dataBackend/DataBackendContainer.php', - 'databackendexception' => '../classes/dataBackend/exception/DataBackendException.php', - 'classfileexception_io' => '../classes/class/exception/ClassFileException_IO.php', + 'malkusch\bav\databackendexception' => '../classes/dataBackend/exception/DataBackendException.php', + 'malkusch\bav\classfileexception_io' => '../classes/class/exception/ClassFileException_IO.php', 'malkusch\bav\configurationregistry' => '../classes/configuration/ConfigurationRegistry.php', 'malkusch\bav\configurationexception' => '../classes/configuration/ConfigurationException.php', - 'fileparserexception_io' => '../classes/dataBackend/file/fileParser/exception/FileParserException_IO.php', - 'databackendexception_io' => '../classes/dataBackend/exception/DataBackendException_IO.php', + 'malkusch\bav\fileparserexception_io' => '../classes/dataBackend/file/fileParser/exception/FileParserException_IO.php', + 'malkusch\bav\databackendexception_io' => '../classes/dataBackend/exception/DataBackendException_IO.php', 'malkusch\bav\pdodatabackendcontainer' => '../classes/dataBackend/pdo/PDODataBackendContainer.php', - 'validator_bankdependent' => '../classes/validator/Validator_BankDependent.php', - 'validatorexception_eser' => '../classes/validator/exception/ValidatorException_ESER.php', + 'malkusch\bav\validator_bankdependent' => '../classes/validator/Validator_BankDependent.php', + 'malkusch\bav\validatorexception_eser' => '../classes/validator/exception/ValidatorException_ESER.php', 'malkusch\bav\filedatabackendcontainer' => '../classes/dataBackend/file/FileDataBackendContainer.php', - 'fileparsercontextexception' => '../classes/dataBackend/file/fileParser/exception/FileParserContextException.php', - 'testapiexception_validation' => '../classes/verify/testAPI/exception/TestAPIException_Validation.php', - 'validator_iteration_weighted' => '../classes/validator/Validator_Iteration_Weighted.php', - 'validatorexception_notexists' => '../classes/validator/exception/ValidatorException_NotExists.php', - 'encodingexception_unsupported' => '../classes/encoding/exception/EncodingException_Unsupported.php', - 'fileparserexception_parseerror' => '../classes/dataBackend/file/fileParser/exception/FileParserException_ParseError.php', - 'validatorexception_outofbounds' => '../classes/validator/exception/ValidatorException_OutOfBounds.php', - 'classfileexception_missingclass' => '../classes/class/exception/ClassFileException_MissingClass.php', - 'databackendexception_banknotfound' => '../classes/dataBackend/exception/DataBackendException_BankNotFound.php', - 'databackendexception_nomainagency' => '../classes/dataBackend/exception/DataBackendException_NoMainAgency.php', - 'fileparserexception_filenotexists' => '../classes/dataBackend/file/fileParser/exception/FileParserException_FileNotExists.php', - 'agencyexception_undefinedattribute' => '../classes/bank/exception/AgencyException_UndefinedAttribute.php', - 'validator_iteration_transformation' => '../classes/validator/Validator_Iteration_Transformation.php', - 'fileparsercontextexception_undefined' => '../classes/dataBackend/file/fileParser/exception/FileParserContextException_Undefined.php', - 'testapiexception_validation_banknotfound' => '../classes/verify/testAPI/exception/TestAPIException_Validation_BankNotFound.php', - 'databackendexception_io_missingattributes' => '../classes/dataBackend/exception/DataBackendException_IO_MissingAttributes.php', - 'testapiexception_validation_notinitialized' => '../classes/verify/testAPI/exception/TestAPIException_Validation_NotInitialized.php', + 'malkusch\bav\fileparsercontextexception' => '../classes/dataBackend/file/fileParser/exception/FileParserContextException.php', + 'malkusch\bav\testapiexception_validation' => '../classes/verify/testAPI/exception/TestAPIException_Validation.php', + 'malkusch\bav\validator_iteration_weighted' => '../classes/validator/Validator_Iteration_Weighted.php', + 'malkusch\bav\validatorexception_notexists' => '../classes/validator/exception/ValidatorException_NotExists.php', + 'malkusch\bav\encodingexception_unsupported' => '../classes/encoding/exception/EncodingException_Unsupported.php', + 'malkusch\bav\fileparserexception_parseerror' => '../classes/dataBackend/file/fileParser/exception/FileParserException_ParseError.php', + 'malkusch\bav\validatorexception_outofbounds' => '../classes/validator/exception/ValidatorException_OutOfBounds.php', + 'malkusch\bav\classfileexception_missingclass' => '../classes/class/exception/ClassFileException_MissingClass.php', + 'malkusch\bav\databackendexception_banknotfound' => '../classes/dataBackend/exception/DataBackendException_BankNotFound.php', + 'malkusch\bav\databackendexception_nomainagency' => '../classes/dataBackend/exception/DataBackendException_NoMainAgency.php', + 'malkusch\bav\fileparserexception_filenotexists' => '../classes/dataBackend/file/fileParser/exception/FileParserException_FileNotExists.php', + 'malkusch\bav\agencyexception_undefinedattribute' => '../classes/bank/exception/AgencyException_UndefinedAttribute.php', + 'malkusch\bav\validator_iteration_transformation' => '../classes/validator/Validator_Iteration_Transformation.php', + 'malkusch\bav\fileparsercontextexception_undefined' => '../classes/dataBackend/file/fileParser/exception/FileParserContextException_Undefined.php', + 'malkusch\bav\testapiexception_validation_banknotfound' => '../classes/verify/testAPI/exception/TestAPIException_Validation_BankNotFound.php', + 'malkusch\bav\databackendexception_io_missingattributes' => '../classes/dataBackend/exception/DataBackendException_IO_MissingAttributes.php', + 'malkusch\bav\testapiexception_validation_notinitialized' => '../classes/verify/testAPI/exception/TestAPIException_Validation_NotInitialized.php', ); diff --git a/autoloader/index/1.php b/autoloader/index/1.php index 234985a2..6ad7cd9a 100644 --- a/autoloader/index/1.php +++ b/autoloader/index/1.php @@ -16,14 +16,14 @@ return array( 'malkusch\bav\timemock' => '../tests/classes/TimeMock.php', - 'testsuite' => '../tests/TestSuite.php', - 'backendtest' => '../tests/BackendTest.php', - 'validatortest' => '../tests/ValidatorTest.php', + 'malkusch\bav\testsuite' => '../tests/TestSuite.php', + 'malkusch\bav\backendtest' => '../tests/BackendTest.php', + 'malkusch\bav\validatortest' => '../tests/ValidatorTest.php', 'malkusch\bav\updateplantest' => '../tests/UpdatePlanTest.php', - 'agencyquerytest' => '../tests/AgencyQueryTest.php', - 'crossprojecttest' => '../tests/CrossProjectTest.php', - 'verifyimporttest' => '../tests/VerifyImportTest.php', - 'dataconstrainttest' => '../tests/DataConstraintTest.php', + 'malkusch\bav\agencyquerytest' => '../tests/AgencyQueryTest.php', + 'malkusch\bav\crossprojecttest' => '../tests/CrossProjectTest.php', + 'malkusch\bav\verifyimporttest' => '../tests/VerifyImportTest.php', + 'malkusch\bav\dataconstrainttest' => '../tests/DataConstraintTest.php', 'malkusch\bav\backendcontainertest' => '../tests/BackendContainerTest.php', - 'checkagainsttestapis' => '../tests/checkAgainstTestAPIs.php', + 'malkusch\bav\checkagainsttestapis' => '../tests/checkAgainstTestAPIs.php', ); diff --git a/bin/verifyImport.php b/bin/verifyImport.php index a0a2db59..df48258d 100755 --- a/bin/verifyImport.php +++ b/bin/verifyImport.php @@ -1,5 +1,8 @@ #!/bin/env php isValid(String $account)) and * has a bank ID, a main agency (Bank->getMainAgency()) and optionally some diff --git a/classes/bank/exception/AgencyException.php b/classes/bank/exception/AgencyException.php index 65f20980..203f0676 100644 --- a/classes/bank/exception/AgencyException.php +++ b/classes/bank/exception/AgencyException.php @@ -1,5 +1,7 @@ * @@ -23,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class AgencyException extends RuntimeException +class AgencyException extends BAVException { /** diff --git a/classes/bank/exception/AgencyException_UndefinedAttribute.php b/classes/bank/exception/AgencyException_UndefinedAttribute.php index 36444706..09c0d1a5 100644 --- a/classes/bank/exception/AgencyException_UndefinedAttribute.php +++ b/classes/bank/exception/AgencyException_UndefinedAttribute.php @@ -1,5 +1,7 @@ * diff --git a/classes/class/ClassFile.php b/classes/class/ClassFile.php index 63291b14..9f869ee5 100644 --- a/classes/class/ClassFile.php +++ b/classes/class/ClassFile.php @@ -1,5 +1,7 @@ * @@ -23,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class ClassFileException extends RuntimeException +class ClassFileException extends BAVException { diff --git a/classes/class/exception/ClassFileException_IO.php b/classes/class/exception/ClassFileException_IO.php index edf69bac..4996bf44 100644 --- a/classes/class/exception/ClassFileException_IO.php +++ b/classes/class/exception/ClassFileException_IO.php @@ -1,5 +1,7 @@ * diff --git a/classes/class/exception/ClassFileException_MissingClass.php b/classes/class/exception/ClassFileException_MissingClass.php index ef7a1823..ee4eba34 100644 --- a/classes/class/exception/ClassFileException_MissingClass.php +++ b/classes/class/exception/ClassFileException_MissingClass.php @@ -1,5 +1,7 @@ * diff --git a/classes/configuration/Configuration.php b/classes/configuration/Configuration.php index bafed037..1183d853 100644 --- a/classes/configuration/Configuration.php +++ b/classes/configuration/Configuration.php @@ -96,7 +96,7 @@ public function getDataBackendContainer() /** * Sets the encoding. */ - public function setEncoding(\Encoding $encoding) + public function setEncoding(Encoding $encoding) { $this->encoding = $encoding; } diff --git a/classes/configuration/DefaultConfiguration.php b/classes/configuration/DefaultConfiguration.php index 0bf1abec..67085b78 100644 --- a/classes/configuration/DefaultConfiguration.php +++ b/classes/configuration/DefaultConfiguration.php @@ -27,11 +27,11 @@ public function __construct() $encoding = null; try { - $encoding = \Encoding::getInstance("UTF-8"); + $encoding = Encoding::getInstance("UTF-8"); - } catch (\EncodingException_Unsupported $e) { + } catch (EncodingException_Unsupported $e) { trigger_error("UTF-8 is not supported; bav is falling back to ISO-8859-15", E_WARNING); - $encoding = \Encoding::getInstance("ISO-8859-15"); + $encoding = Encoding::getInstance("ISO-8859-15"); } $this->setEncoding($encoding); diff --git a/classes/dataBackend/DataBackend.php b/classes/dataBackend/DataBackend.php index 27682964..7ca4af9e 100644 --- a/classes/dataBackend/DataBackend.php +++ b/classes/dataBackend/DataBackend.php @@ -1,5 +1,7 @@ getUpdatePlan(); if ($plan != null && $plan->isOutdated($backend)) { diff --git a/classes/dataBackend/exception/DataBackendException.php b/classes/dataBackend/exception/DataBackendException.php index 2fd4faa4..2e0d4ca3 100644 --- a/classes/dataBackend/exception/DataBackendException.php +++ b/classes/dataBackend/exception/DataBackendException.php @@ -1,5 +1,7 @@ * @@ -23,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class DataBackendException extends RuntimeException +class DataBackendException extends BAVException { } diff --git a/classes/dataBackend/exception/DataBackendException_BankNotFound.php b/classes/dataBackend/exception/DataBackendException_BankNotFound.php index 8be2ebe9..6fcddda1 100644 --- a/classes/dataBackend/exception/DataBackendException_BankNotFound.php +++ b/classes/dataBackend/exception/DataBackendException_BankNotFound.php @@ -1,5 +1,7 @@ * diff --git a/classes/dataBackend/exception/DataBackendException_IO.php b/classes/dataBackend/exception/DataBackendException_IO.php index a3990f7e..5f802c0d 100644 --- a/classes/dataBackend/exception/DataBackendException_IO.php +++ b/classes/dataBackend/exception/DataBackendException_IO.php @@ -1,5 +1,7 @@ * diff --git a/classes/dataBackend/exception/DataBackendException_IO_MissingAttributes.php b/classes/dataBackend/exception/DataBackendException_IO_MissingAttributes.php index a366e2ea..2fa10e0d 100644 --- a/classes/dataBackend/exception/DataBackendException_IO_MissingAttributes.php +++ b/classes/dataBackend/exception/DataBackendException_IO_MissingAttributes.php @@ -1,5 +1,7 @@ * diff --git a/classes/dataBackend/exception/DataBackendException_NoMainAgency.php b/classes/dataBackend/exception/DataBackendException_NoMainAgency.php index d9b169dc..053fab0d 100644 --- a/classes/dataBackend/exception/DataBackendException_NoMainAgency.php +++ b/classes/dataBackend/exception/DataBackendException_NoMainAgency.php @@ -1,5 +1,7 @@ * diff --git a/classes/dataBackend/file/DataBackend_File.php b/classes/dataBackend/file/DataBackend_File.php index b7e1f11c..58e3d91a 100644 --- a/classes/dataBackend/file/DataBackend_File.php +++ b/classes/dataBackend/file/DataBackend_File.php @@ -1,5 +1,7 @@ file); + return new DataBackend_File($this->file); } } diff --git a/classes/dataBackend/file/fileParser/FileParser.php b/classes/dataBackend/file/fileParser/FileParser.php index 6c614074..ef88a6ed 100644 --- a/classes/dataBackend/file/fileParser/FileParser.php +++ b/classes/dataBackend/file/fileParser/FileParser.php @@ -1,6 +1,6 @@ * @@ -23,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class FileParserContextException extends RuntimeException +class FileParserContextException extends BAVException { } diff --git a/classes/dataBackend/file/fileParser/exception/FileParserContextException_Undefined.php b/classes/dataBackend/file/fileParser/exception/FileParserContextException_Undefined.php index 7dd619cc..425ec9db 100644 --- a/classes/dataBackend/file/fileParser/exception/FileParserContextException_Undefined.php +++ b/classes/dataBackend/file/fileParser/exception/FileParserContextException_Undefined.php @@ -1,5 +1,7 @@ * diff --git a/classes/dataBackend/file/fileParser/exception/FileParserException.php b/classes/dataBackend/file/fileParser/exception/FileParserException.php index a835f585..25ef3146 100644 --- a/classes/dataBackend/file/fileParser/exception/FileParserException.php +++ b/classes/dataBackend/file/fileParser/exception/FileParserException.php @@ -1,5 +1,7 @@ * @@ -23,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class FileParserException extends RuntimeException +class FileParserException extends BAVException { } diff --git a/classes/dataBackend/file/fileParser/exception/FileParserException_FileNotExists.php b/classes/dataBackend/file/fileParser/exception/FileParserException_FileNotExists.php index a2442f17..e798b6de 100644 --- a/classes/dataBackend/file/fileParser/exception/FileParserException_FileNotExists.php +++ b/classes/dataBackend/file/fileParser/exception/FileParserException_FileNotExists.php @@ -1,5 +1,7 @@ * diff --git a/classes/dataBackend/file/fileParser/exception/FileParserException_IO.php b/classes/dataBackend/file/fileParser/exception/FileParserException_IO.php index bd00c704..c0fc23b5 100644 --- a/classes/dataBackend/file/fileParser/exception/FileParserException_IO.php +++ b/classes/dataBackend/file/fileParser/exception/FileParserException_IO.php @@ -1,5 +1,7 @@ * diff --git a/classes/dataBackend/file/fileParser/exception/FileParserException_ParseError.php b/classes/dataBackend/file/fileParser/exception/FileParserException_ParseError.php index 512f3b4f..d83ef968 100644 --- a/classes/dataBackend/file/fileParser/exception/FileParserException_ParseError.php +++ b/classes/dataBackend/file/fileParser/exception/FileParserException_ParseError.php @@ -1,5 +1,7 @@ * diff --git a/classes/dataBackend/pdo/DataBackend_PDO.php b/classes/dataBackend/pdo/DataBackend_PDO.php index 1c435668..a657f857 100644 --- a/classes/dataBackend/pdo/DataBackend_PDO.php +++ b/classes/dataBackend/pdo/DataBackend_PDO.php @@ -1,5 +1,7 @@ pdo = $pdo; $this->prefix = $prefix; - $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + $this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); } /** @@ -111,7 +113,7 @@ public function getAgencies($sql) } $this->selectAgency->execute(array(':agency' => $result['id'])); - $result = $this->selectAgency->fetch(PDO::FETCH_ASSOC); + $result = $this->selectAgency->fetch(\PDO::FETCH_ASSOC); $this->selectAgency->closeCursor(); if ($result === false) { throw new DataBackendException_IO(); @@ -120,7 +122,7 @@ public function getAgencies($sql) } if (! array_key_exists('bank', $result)) { $this->selectAgencysBank->execute(array(':agency' => $result['id'])); - $bankResult = $this->selectAgencysBank->fetch(PDO::FETCH_ASSOC); + $bankResult = $this->selectAgencysBank->fetch(\PDO::FETCH_ASSOC); $this->selectAgencysBank->closeCursor(); if ($bankResult === false) { throw new DataBackendException_IO(); @@ -134,7 +136,7 @@ public function getAgencies($sql) } return $agencies; - } catch (PDOException $e) { + } catch (\PDOException $e) { throw new DataBackendException_IO(); } catch (DataBackendException_BankNotFound $e) { @@ -144,7 +146,7 @@ public function getAgencies($sql) } /** - * @throws PDOException + * @throws \PDOException */ private function prepareStatements() { @@ -209,7 +211,7 @@ public function update() $this->pdo->beginTransaction(); $useTA = true; - } catch (PDOException $e) { + } catch (\PDOException $e) { trigger_error("Your DBS doesn't support transactions. Your data may be corrupted."); } @@ -271,7 +273,7 @@ public function update() } throw $e; - } catch (PDOException $e2) { + } catch (\PDOException $e2) { throw new DataBackendException_IO( get_class($e) . ": {$e->getMessage()}\nadditionally: {$e2->getMessage()}" ); @@ -289,7 +291,7 @@ public function install() { try { $createOptions = ''; - switch ($this->pdo->getAttribute(PDO::ATTR_DRIVER_NAME)) { + switch ($this->pdo->getAttribute(\PDO::ATTR_DRIVER_NAME)) { case 'mysql': $createOptions .= " engine=InnoDB"; @@ -336,7 +338,7 @@ public function install() )); $this->update(); - } catch (PDOException $e) { + } catch (\PDOException $e) { throw new DataBackendException_IO($e->getMessage()); } @@ -353,7 +355,7 @@ public function uninstall() $this->pdo->exec("DROP TABLE {$this->prefix}bank"); $this->pdo->exec("DROP TABLE {$this->prefix}meta"); - } catch (PDOException $e) { + } catch (\PDOException $e) { throw new DataBackendException_IO(); } @@ -378,7 +380,7 @@ public function getAllBanks() } return array_values($this->instances); - } catch (PDOException $e) { + } catch (\PDOException $e) { throw new DataBackendException_IO(); } catch (DataBackendException_IO_MissingAttributes $e) { @@ -400,7 +402,7 @@ protected function getNewBank($bankID) try { $this->prepareStatements(); $this->selectBank->execute(array(':bankID' => $bankID)); - $result = $this->selectBank->fetch(PDO::FETCH_ASSOC); + $result = $this->selectBank->fetch(\PDO::FETCH_ASSOC); if ($result === false) { $this->selectBank->closeCursor(); throw new DataBackendException_BankNotFound($bankID); @@ -409,7 +411,7 @@ protected function getNewBank($bankID) $this->selectBank->closeCursor(); return $this->getBankObject($result); - } catch (PDOException $e) { + } catch (\PDOException $e) { $this->selectBank->closeCursor(); throw new DataBackendException_IO(); @@ -500,7 +502,7 @@ public function getMainAgency(Bank $bank) $this->selectMainAgency->closeCursor(); return $this->getAgencyObject($bank, $result); - } catch (PDOException $e) { + } catch (\PDOException $e) { $this->selectMainAgency->closeCursor(); throw new DataBackendException_IO(); @@ -531,7 +533,7 @@ public function getAgenciesForBank(Bank $bank) $this->selectAgencies->closeCursor(); return $agencies; - } catch (PDOException $e) { + } catch (\PDOException $e) { $this->selectAgencies->closeCursor(); throw new DataBackendException_IO(); @@ -563,7 +565,7 @@ public function getLastUpdate() $this->selectMeta->closeCursor(); return $result["value"]; - } catch (PDOException $e) { + } catch (\PDOException $e) { $this->selectMeta->closeCursor(); throw new DataBackendException_IO($e->getMessage(), $e->getCode(), $e); @@ -589,7 +591,7 @@ public function isInstalled() $this->selectInstalled->closeCursor(); return $result[0] == 1; - } catch (PDOException $e) { + } catch (\PDOException $e) { $this->selectInstalled->closeCursor(); throw new DataBackendException_IO($e->getMessage(), $e->getCode(), $e); diff --git a/classes/dataBackend/pdo/PDODataBackendContainer.php b/classes/dataBackend/pdo/PDODataBackendContainer.php index b9199fc1..76b0e1f3 100644 --- a/classes/dataBackend/pdo/PDODataBackendContainer.php +++ b/classes/dataBackend/pdo/PDODataBackendContainer.php @@ -13,7 +13,7 @@ class PDODataBackendContainer extends DataBackendContainer { /** - * @var PDO + * @var \PDO */ private $pdo; @@ -41,6 +41,6 @@ public function __construct(\PDO $pdo, $prefix = 'bav_') */ protected function makeDataBackend() { - return new \DataBackend_PDO($this->pdo, $this->prefix); + return new DataBackend_PDO($this->pdo, $this->prefix); } } diff --git a/classes/dataBackend/update/AutomaticUpdatePlan.php b/classes/dataBackend/update/AutomaticUpdatePlan.php index 3311888a..7ec6b426 100644 --- a/classes/dataBackend/update/AutomaticUpdatePlan.php +++ b/classes/dataBackend/update/AutomaticUpdatePlan.php @@ -31,7 +31,7 @@ public function setNotice($notice) * * @see setNotice() */ - public function perform(\DataBackend $backend) + public function perform(DataBackend $backend) { // TODO lock concurrent updates $backend->update(); diff --git a/classes/dataBackend/update/LogUpdatePlan.php b/classes/dataBackend/update/LogUpdatePlan.php index c9ad38f4..2dbcff2b 100644 --- a/classes/dataBackend/update/LogUpdatePlan.php +++ b/classes/dataBackend/update/LogUpdatePlan.php @@ -14,7 +14,7 @@ class LogUpdatePlan extends UpdatePlan /** * Log an E_USER_WARNING */ - public function perform(\DataBackend $backend) + public function perform(DataBackend $backend) { trigger_error( "bav's bank data is outdated. Update the data with e.g. bin/bav-update.php", diff --git a/classes/dataBackend/update/UpdatePlan.php b/classes/dataBackend/update/UpdatePlan.php index 692683f7..894fdb39 100644 --- a/classes/dataBackend/update/UpdatePlan.php +++ b/classes/dataBackend/update/UpdatePlan.php @@ -32,7 +32,7 @@ abstract class UpdatePlan /** * Perform the update process. */ - abstract public function perform(\DataBackend $backend); + abstract public function perform(DataBackend $backend); /** * Returns true if the data is to old and needs an update @@ -40,7 +40,7 @@ abstract public function perform(\DataBackend $backend); * @see DataBackend::getLastUpdate() * @return bool */ - public function isOutdated(\DataBackend $backend) + public function isOutdated(DataBackend $backend) { /* * The following code creates a sorted list with the release months (update month - $relaseThreshold) diff --git a/classes/encoding/Encoding.php b/classes/encoding/Encoding.php index 14355e16..9d47e863 100644 --- a/classes/encoding/Encoding.php +++ b/classes/encoding/Encoding.php @@ -1,5 +1,7 @@ * @@ -23,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class EncodingException extends RuntimeException +class EncodingException extends BAVException { } diff --git a/classes/encoding/exception/EncodingException_Unsupported.php b/classes/encoding/exception/EncodingException_Unsupported.php index 1d2d37be..09ca58ad 100644 --- a/classes/encoding/exception/EncodingException_Unsupported.php +++ b/classes/encoding/exception/EncodingException_Unsupported.php @@ -1,5 +1,7 @@ * diff --git a/classes/validator/Validator.php b/classes/validator/Validator.php index d64373bc..b9d10aab 100644 --- a/classes/validator/Validator.php +++ b/classes/validator/Validator.php @@ -1,5 +1,7 @@ * @@ -76,7 +78,8 @@ public static function getInstance(Bank $bank) } require_once $file; - return new $class($bank); + $nsClass = __NAMESPACE__ . "\\$class"; + return new $nsClass($bank); } /** diff --git a/classes/validator/Validator_BankDependent.php b/classes/validator/Validator_BankDependent.php index 30acfe2f..37730303 100644 --- a/classes/validator/Validator_BankDependent.php +++ b/classes/validator/Validator_BankDependent.php @@ -1,5 +1,7 @@ * diff --git a/classes/validator/Validator_Iteration_Transformation.php b/classes/validator/Validator_Iteration_Transformation.php index 754a22df..8682492c 100644 --- a/classes/validator/Validator_Iteration_Transformation.php +++ b/classes/validator/Validator_Iteration_Transformation.php @@ -1,5 +1,7 @@ * diff --git a/classes/validator/Validator_Iteration_Weighted.php b/classes/validator/Validator_Iteration_Weighted.php index 0dc5fcf0..50482847 100644 --- a/classes/validator/Validator_Iteration_Weighted.php +++ b/classes/validator/Validator_Iteration_Weighted.php @@ -1,5 +1,7 @@ * diff --git a/classes/validator/exception/ValidatorException.php b/classes/validator/exception/ValidatorException.php index e9d57ddc..67695a82 100644 --- a/classes/validator/exception/ValidatorException.php +++ b/classes/validator/exception/ValidatorException.php @@ -1,5 +1,7 @@ * @@ -23,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class ValidatorException extends RuntimeException +class ValidatorException extends BAVException { } diff --git a/classes/validator/exception/ValidatorException_ESER.php b/classes/validator/exception/ValidatorException_ESER.php index 9a4b237c..b56777e3 100644 --- a/classes/validator/exception/ValidatorException_ESER.php +++ b/classes/validator/exception/ValidatorException_ESER.php @@ -1,5 +1,7 @@ * diff --git a/classes/validator/exception/ValidatorException_NotExists.php b/classes/validator/exception/ValidatorException_NotExists.php index 5adb32eb..a531a13d 100644 --- a/classes/validator/exception/ValidatorException_NotExists.php +++ b/classes/validator/exception/ValidatorException_NotExists.php @@ -1,5 +1,7 @@ * diff --git a/classes/validator/exception/ValidatorException_OutOfBounds.php b/classes/validator/exception/ValidatorException_OutOfBounds.php index 76c9809f..24567c2d 100644 --- a/classes/validator/exception/ValidatorException_OutOfBounds.php +++ b/classes/validator/exception/ValidatorException_OutOfBounds.php @@ -1,5 +1,7 @@ * diff --git a/classes/validator/validators/Validator_00.php b/classes/validator/validators/Validator_00.php index 847a7c2f..66fe07dd 100644 --- a/classes/validator/validators/Validator_00.php +++ b/classes/validator/validators/Validator_00.php @@ -1,5 +1,7 @@ * diff --git a/classes/validator/validators/Validator_80.php b/classes/validator/validators/Validator_80.php index aaca1f9c..f513aeae 100644 --- a/classes/validator/validators/Validator_80.php +++ b/classes/validator/validators/Validator_80.php @@ -1,5 +1,7 @@ * diff --git a/classes/validator/validators/Validator_83.php b/classes/validator/validators/Validator_83.php index e11cb9fa..f371da34 100644 --- a/classes/validator/validators/Validator_83.php +++ b/classes/validator/validators/Validator_83.php @@ -1,5 +1,7 @@ * diff --git a/classes/validator/validators/Validator_A7.php b/classes/validator/validators/Validator_A7.php index 2c923cdc..aad3d9fe 100644 --- a/classes/validator/validators/Validator_A7.php +++ b/classes/validator/validators/Validator_A7.php @@ -1,5 +1,7 @@ * diff --git a/classes/validator/validators/Validator_B1.php b/classes/validator/validators/Validator_B1.php index d5bbedaf..2e991d01 100644 --- a/classes/validator/validators/Validator_B1.php +++ b/classes/validator/validators/Validator_B1.php @@ -1,5 +1,7 @@ * diff --git a/classes/validator/validators/Validator_B3.php b/classes/validator/validators/Validator_B3.php index 898da234..33c48006 100644 --- a/classes/validator/validators/Validator_B3.php +++ b/classes/validator/validators/Validator_B3.php @@ -1,5 +1,7 @@ * diff --git a/classes/validator/validators/Validator_B4.php b/classes/validator/validators/Validator_B4.php index 3e6a5b7e..18c902a9 100644 --- a/classes/validator/validators/Validator_B4.php +++ b/classes/validator/validators/Validator_B4.php @@ -1,5 +1,7 @@ * diff --git a/classes/validator/validators/Validator_B5.php b/classes/validator/validators/Validator_B5.php index b587be3c..a7ad8795 100644 --- a/classes/validator/validators/Validator_B5.php +++ b/classes/validator/validators/Validator_B5.php @@ -1,5 +1,7 @@ * diff --git a/classes/validator/validators/Validator_B7.php b/classes/validator/validators/Validator_B7.php index 3295cf0f..1a770351 100644 --- a/classes/validator/validators/Validator_B7.php +++ b/classes/validator/validators/Validator_B7.php @@ -1,5 +1,7 @@ * diff --git a/classes/validator/validators/Validator_B9a.php b/classes/validator/validators/Validator_B9a.php index efdcd487..75e39343 100644 --- a/classes/validator/validators/Validator_B9a.php +++ b/classes/validator/validators/Validator_B9a.php @@ -1,5 +1,7 @@ * diff --git a/classes/validator/validators/Validator_C1b.php b/classes/validator/validators/Validator_C1b.php index 8d356415..7ff0d210 100644 --- a/classes/validator/validators/Validator_C1b.php +++ b/classes/validator/validators/Validator_C1b.php @@ -1,5 +1,7 @@ * diff --git a/classes/validator/validators/Validator_C4.php b/classes/validator/validators/Validator_C4.php index dbe40be0..317b8fb5 100644 --- a/classes/validator/validators/Validator_C4.php +++ b/classes/validator/validators/Validator_C4.php @@ -1,5 +1,7 @@ * diff --git a/classes/validator/validators/Validator_C5.php b/classes/validator/validators/Validator_C5.php index 5d859a43..65a632c7 100644 --- a/classes/validator/validators/Validator_C5.php +++ b/classes/validator/validators/Validator_C5.php @@ -1,5 +1,7 @@ * diff --git a/classes/validator/validators/Validator_C6.php b/classes/validator/validators/Validator_C6.php index 38169087..6e2b884e 100644 --- a/classes/validator/validators/Validator_C6.php +++ b/classes/validator/validators/Validator_C6.php @@ -1,5 +1,7 @@ * diff --git a/classes/validator/validators/Validator_C7.php b/classes/validator/validators/Validator_C7.php index 3be1e55d..79805399 100644 --- a/classes/validator/validators/Validator_C7.php +++ b/classes/validator/validators/Validator_C7.php @@ -1,5 +1,7 @@ * diff --git a/classes/validator/validators/Validator_D1.php b/classes/validator/validators/Validator_D1.php index 6722b87c..363b64e8 100644 --- a/classes/validator/validators/Validator_D1.php +++ b/classes/validator/validators/Validator_D1.php @@ -1,5 +1,7 @@ * diff --git a/classes/validator/validators/Validator_D2.php b/classes/validator/validators/Validator_D2.php index a21bb5f0..b40902ea 100644 --- a/classes/validator/validators/Validator_D2.php +++ b/classes/validator/validators/Validator_D2.php @@ -1,5 +1,7 @@ * @@ -23,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class VerifyException extends RuntimeException +class VerifyException extends BAVException { } diff --git a/classes/verify/exception/VerifyException_IO.php b/classes/verify/exception/VerifyException_IO.php index c183923f..7621dd19 100644 --- a/classes/verify/exception/VerifyException_IO.php +++ b/classes/verify/exception/VerifyException_IO.php @@ -1,5 +1,7 @@ * diff --git a/classes/verify/testAPI/TestAPI.php b/classes/verify/testAPI/TestAPI.php index 5d75df25..7a61ed2b 100644 --- a/classes/verify/testAPI/TestAPI.php +++ b/classes/verify/testAPI/TestAPI.php @@ -1,5 +1,7 @@ * diff --git a/classes/verify/testAPI/TestAPIResult_Error.php b/classes/verify/testAPI/TestAPIResult_Error.php index 205f6734..8df1b931 100644 --- a/classes/verify/testAPI/TestAPIResult_Error.php +++ b/classes/verify/testAPI/TestAPIResult_Error.php @@ -1,5 +1,7 @@ * diff --git a/classes/verify/testAPI/TestAPI_BAV.php b/classes/verify/testAPI/TestAPI_BAV.php index eb754eda..3d1613d3 100644 --- a/classes/verify/testAPI/TestAPI_BAV.php +++ b/classes/verify/testAPI/TestAPI_BAV.php @@ -1,5 +1,7 @@ * @@ -23,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class TestAPIException extends RuntimeException +class TestAPIException extends BAVException { } diff --git a/classes/verify/testAPI/exception/TestAPIException_Validation.php b/classes/verify/testAPI/exception/TestAPIException_Validation.php index 83e0026c..594abea2 100644 --- a/classes/verify/testAPI/exception/TestAPIException_Validation.php +++ b/classes/verify/testAPI/exception/TestAPIException_Validation.php @@ -1,5 +1,7 @@ * diff --git a/classes/verify/testAPI/exception/TestAPIException_Validation_BankNotFound.php b/classes/verify/testAPI/exception/TestAPIException_Validation_BankNotFound.php index b273e3a6..6e0678d0 100644 --- a/classes/verify/testAPI/exception/TestAPIException_Validation_BankNotFound.php +++ b/classes/verify/testAPI/exception/TestAPIException_Validation_BankNotFound.php @@ -1,5 +1,7 @@ * diff --git a/classes/verify/testAPI/exception/TestAPIException_Validation_NotInitialized.php b/classes/verify/testAPI/exception/TestAPIException_Validation_NotInitialized.php index 3e47dbcb..efc3492a 100644 --- a/classes/verify/testAPI/exception/TestAPIException_Validation_NotInitialized.php +++ b/classes/verify/testAPI/exception/TestAPIException_Validation_NotInitialized.php @@ -1,5 +1,7 @@ * diff --git a/docs/changelog.txt b/docs/changelog.txt index c52ca3d8..a86ff0b5 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -4,9 +4,11 @@ Version 1.0.0 - not yet released - added BAV_DataBackend::isInstalled() - - removed BAV::$encoding, BAV::setEncoding() and BAV::getEncoding() + - removed class BAV and BAV_Version - added support for automatic installation and update + + - using namespace malkusch\bav and removed the class prefix BAV_ Version 0.28 - May 26, 2014 --------------------------- diff --git a/tests/AgencyQueryTest.php b/tests/AgencyQueryTest.php index 4a9f4539..7c4bc73c 100755 --- a/tests/AgencyQueryTest.php +++ b/tests/AgencyQueryTest.php @@ -1,5 +1,7 @@ * @copyright Copyright (C) 2009 Markus Malkusch */ -class AgencyQueryTest extends PHPUnit_Framework_TestCase +class AgencyQueryTest extends \PHPUnit_Framework_TestCase { /** @@ -37,7 +39,7 @@ class AgencyQueryTest extends PHPUnit_Framework_TestCase */ protected function setUp() { - $this->backend = new DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); + $this->backend = new DataBackend_PDO(new \PDO('mysql:host=localhost;dbname=test', 'test')); } public function testOnlyID() @@ -65,7 +67,7 @@ public function testNoBank() } /** - * @expectedException DataBackendException_IO_MissingAttributes + * @expectedException malkusch\bav\DataBackendException_IO_MissingAttributes */ public function testNoID() { diff --git a/tests/BackendContainerTest.php b/tests/BackendContainerTest.php index 1a58e343..390dd674 100644 --- a/tests/BackendContainerTest.php +++ b/tests/BackendContainerTest.php @@ -19,7 +19,7 @@ class BackendContainerTest extends \PHPUnit_Framework_TestCase public function testAutomaticInstallation() { ConfigurationRegistry::getConfiguration()->setUpdatePlan(null); - $container = new FileDataBackendContainer(tempnam(\DataBackend_File::getTempdir(), 'bavtest')); + $container = new FileDataBackendContainer(tempnam(DataBackend_File::getTempdir(), 'bavtest')); $this->assertTrue(ConfigurationRegistry::getConfiguration()->isAutomaticInstallation()); @@ -38,7 +38,7 @@ public function testAutomaticUpdate() $updatePlan->setNotice(false); ConfigurationRegistry::getConfiguration()->setUpdatePlan($updatePlan); - $container = new FileDataBackendContainer(tempnam(\DataBackend_File::getTempdir(), 'bavtest')); + $container = new FileDataBackendContainer(tempnam(DataBackend_File::getTempdir(), 'bavtest')); $backend = $container->getDataBackend(); touch($backend->getFile(), strtotime("-1 year")); diff --git a/tests/BackendTest.php b/tests/BackendTest.php index bba9a41c..beb17ef8 100755 --- a/tests/BackendTest.php +++ b/tests/BackendTest.php @@ -1,5 +1,7 @@ */ -class BackendTest extends PHPUnit_Framework_TestCase +class BackendTest extends \PHPUnit_Framework_TestCase { /** @@ -30,7 +32,7 @@ public static function classConstructor() */ public function provideBackends() { - $pdoBackend = new DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); + $pdoBackend = new DataBackend_PDO(new \PDO('mysql:host=localhost;dbname=test', 'test')); $this->setupBackend($pdoBackend); $fileBackend = new DataBackend_File(); @@ -55,7 +57,7 @@ private function setupBackend(DataBackend $backend) */ public function provideInstallationBackends() { - $pdoBackend = new DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test'), 'bavtest_'); + $pdoBackend = new DataBackend_PDO(new \PDO('mysql:host=localhost;dbname=test', 'test'), 'bavtest_'); $this->setupInstallationBackends($pdoBackend); $fileBackend = new DataBackend_File(tempnam(DataBackend_File::getTempdir(), 'bavtest')); diff --git a/tests/CrossProjectTest.php b/tests/CrossProjectTest.php index 2d7a3fa3..1d12417c 100755 --- a/tests/CrossProjectTest.php +++ b/tests/CrossProjectTest.php @@ -1,5 +1,7 @@ * @copyright Copyright (C) 2009 Markus Malkusch */ -class CrossProjectTest extends PHPUnit_Framework_TestCase +class CrossProjectTest extends \PHPUnit_Framework_TestCase { /** @@ -70,7 +72,7 @@ protected function setUp() public function provideBanks() { $banks = array(); - $backend = new DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); + $backend = new DataBackend_PDO(new \PDO('mysql:host=localhost;dbname=test', 'test')); foreach ($backend->getAllBanks() as $bank) { $banks[] = array($bank); diff --git a/tests/DataConstraintTest.php b/tests/DataConstraintTest.php index 2e3ec141..c2171841 100755 --- a/tests/DataConstraintTest.php +++ b/tests/DataConstraintTest.php @@ -1,23 +1,25 @@ setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + self::$pdo = new \PDO('mysql:host=localhost;dbname=test', 'test'); + self::$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); self::$pdo->exec("DROP TABLE IF EXISTS bank"); self::$pdo->exec( diff --git a/tests/TestSuite.php b/tests/TestSuite.php index 61c64dfd..ef2367bf 100644 --- a/tests/TestSuite.php +++ b/tests/TestSuite.php @@ -1,5 +1,7 @@ * @@ -28,7 +30,7 @@ require_once __DIR__ . '/ValidatorTest.php'; require_once __DIR__ . '/VerifyImportTest.php'; -class TestSuite extends PHPUnit_Framework_TestSuite +class TestSuite extends \PHPUnit_Framework_TestSuite { /** diff --git a/tests/UpdatePlanTest.php b/tests/UpdatePlanTest.php index 59c803db..7f328fe0 100644 --- a/tests/UpdatePlanTest.php +++ b/tests/UpdatePlanTest.php @@ -47,9 +47,9 @@ public function provideTestIsOutdated() */ public function testIsOutdated($mtime, $time, $expectedIsOutdated) { - $file = tempnam(\DataBackend_File::getTempdir(), 'bavtest'); + $file = tempnam(DataBackend_File::getTempdir(), 'bavtest'); touch($file, strtotime($mtime)); - $backend = new \DataBackend_File($file); + $backend = new DataBackend_File($file); TimeMock::setTime(strtotime($time)); @@ -65,7 +65,7 @@ public function testIsOutdated($mtime, $time, $expectedIsOutdated) public function testLogUpdatePlan() { $updatePlan = new LogUpdatePlan(); - $updatePlan->perform(new \DataBackend_File()); + $updatePlan->perform(new DataBackend_File()); } /** @@ -74,9 +74,9 @@ public function testLogUpdatePlan() */ public function testAutomaticUpdatePlanNotice() { - $file = tempnam(\DataBackend_File::getTempdir(), 'bavtest'); + $file = tempnam(DataBackend_File::getTempdir(), 'bavtest'); $updatePlan = new AutomaticUpdatePlan(); - $updatePlan->perform(new \DataBackend_File($file)); + $updatePlan->perform(new DataBackend_File($file)); } /** @@ -85,9 +85,9 @@ public function testAutomaticUpdatePlanNotice() */ public function testAutomaticUpdatePlan() { - $file = tempnam(\DataBackend_File::getTempdir(), 'bavtest'); + $file = tempnam(DataBackend_File::getTempdir(), 'bavtest'); touch($file, strtotime("-1 year")); - $backend = new \DataBackend_File($file); + $backend = new DataBackend_File($file); $updatePlan = new AutomaticUpdatePlan(); $this->assertTrue($updatePlan->isOutdated($backend)); diff --git a/tests/ValidatorTest.php b/tests/ValidatorTest.php index f157f665..96afc909 100755 --- a/tests/ValidatorTest.php +++ b/tests/ValidatorTest.php @@ -1,7 +1,8 @@ * @copyright Copyright (C) 2009 Markus Malkusch */ -class ValidatorTest extends PHPUnit_Framework_TestCase +class ValidatorTest extends \PHPUnit_Framework_TestCase { /** @@ -54,7 +55,7 @@ protected function setUp() return; } - #self::$dataBackend = new DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); + #self::$dataBackend = new DataBackend_PDO(new \PDO('mysql:host=localhost;dbname=test', 'test')); self::$dataBackend = new DataBackend_File(); diff --git a/tests/VerifyImportTest.php b/tests/VerifyImportTest.php index 9205de1d..4aaabcd1 100755 --- a/tests/VerifyImportTest.php +++ b/tests/VerifyImportTest.php @@ -1,5 +1,7 @@ Date: Fri, 30 May 2014 04:43:21 +0200 Subject: [PATCH 098/303] moved test classes into tests/classes --- autoloader/index/0.php | 14 -------------- autoloader/index/1.php | 14 ++++++++++++++ tests/classes/TimeMock.php | 2 -- {classes => tests/classes}/class/ClassFile.php | 0 .../class/exception/ClassFileException.php | 0 .../class/exception/ClassFileException_IO.php | 0 .../exception/ClassFileException_MissingClass.php | 0 .../verify => tests/classes}/testAPI/TestAPI.php | 0 .../classes}/testAPI/TestAPIResult.php | 0 .../classes}/testAPI/TestAPIResult_Error.php | 0 .../classes}/testAPI/TestAPI_BAV.php | 0 .../classes}/testAPI/TestAPI_Kontocheck.php | 0 .../classes}/testAPI/TestAPI_Ktoblzcheck.php | 0 .../testAPI/exception/TestAPIException.php | 0 .../exception/TestAPIException_Validation.php | 0 .../TestAPIException_Validation_BankNotFound.php | 0 .../TestAPIException_Validation_NotInitialized.php | 0 17 files changed, 14 insertions(+), 16 deletions(-) rename {classes => tests/classes}/class/ClassFile.php (100%) rename {classes => tests/classes}/class/exception/ClassFileException.php (100%) rename {classes => tests/classes}/class/exception/ClassFileException_IO.php (100%) rename {classes => tests/classes}/class/exception/ClassFileException_MissingClass.php (100%) rename {classes/verify => tests/classes}/testAPI/TestAPI.php (100%) rename {classes/verify => tests/classes}/testAPI/TestAPIResult.php (100%) rename {classes/verify => tests/classes}/testAPI/TestAPIResult_Error.php (100%) rename {classes/verify => tests/classes}/testAPI/TestAPI_BAV.php (100%) rename {classes/verify => tests/classes}/testAPI/TestAPI_Kontocheck.php (100%) rename {classes/verify => tests/classes}/testAPI/TestAPI_Ktoblzcheck.php (100%) rename {classes/verify => tests/classes}/testAPI/exception/TestAPIException.php (100%) rename {classes/verify => tests/classes}/testAPI/exception/TestAPIException_Validation.php (100%) rename {classes/verify => tests/classes}/testAPI/exception/TestAPIException_Validation_BankNotFound.php (100%) rename {classes/verify => tests/classes}/testAPI/exception/TestAPIException_Validation_NotInitialized.php (100%) diff --git a/autoloader/index/0.php b/autoloader/index/0.php index e16fd33f..1b1a409e 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -17,15 +17,12 @@ return array( 'malkusch\bav\bank' => '../classes/bank/Bank.php', 'malkusch\bav\agency' => '../classes/bank/Agency.php', - 'malkusch\bav\testapi' => '../classes/verify/testAPI/TestAPI.php', 'malkusch\bav\encoding' => '../classes/encoding/Encoding.php', - 'malkusch\bav\classfile' => '../classes/class/ClassFile.php', 'malkusch\bav\validator' => '../classes/validator/Validator.php', 'malkusch\bav\fileparser' => '../classes/dataBackend/file/fileParser/FileParser.php', 'malkusch\bav\updateplan' => '../classes/dataBackend/update/UpdatePlan.php', 'malkusch\bav\databackend' => '../classes/dataBackend/DataBackend.php', 'malkusch\bav\encoding_mb' => '../classes/encoding/Encoding_MB.php', - 'malkusch\bav\testapi_bav' => '../classes/verify/testAPI/TestAPI_BAV.php', 'malkusch\bav\bavexception' => '../classes/exception/BAVException.php', 'malkusch\bav\validator_00' => '../classes/validator/validators/Validator_00.php', 'malkusch\bav\validator_01' => '../classes/validator/validators/Validator_01.php', @@ -186,7 +183,6 @@ 'malkusch\bav\validator_b9a' => '../classes/validator/validators/Validator_B9a.php', 'malkusch\bav\validator_b9b' => '../classes/validator/validators/Validator_B9b.php', 'malkusch\bav\validator_c1b' => '../classes/validator/validators/Validator_C1b.php', - 'malkusch\bav\testapiresult' => '../classes/verify/testAPI/TestAPIResult.php', 'malkusch\bav\encoding_iconv' => '../classes/encoding/Encoding_Iconv.php', 'malkusch\bav\agencyexception' => '../classes/bank/exception/AgencyException.php', 'malkusch\bav\databackend_pdo' => '../classes/dataBackend/pdo/DataBackend_PDO.php', @@ -194,22 +190,16 @@ 'malkusch\bav\verifyexception' => '../classes/verify/exception/VerifyException.php', 'malkusch\bav\databackend_file' => '../classes/dataBackend/file/DataBackend_File.php', 'malkusch\bav\encoding_iso8859' => '../classes/encoding/Encoding_ISO8859.php', - 'malkusch\bav\testapiexception' => '../classes/verify/testAPI/exception/TestAPIException.php', 'malkusch\bav\fileparsercontext' => '../classes/dataBackend/file/fileParser/FileParserContext.php', 'malkusch\bav\encodingexception' => '../classes/encoding/exception/EncodingException.php', - 'malkusch\bav\classfileexception' => '../classes/class/exception/ClassFileException.php', 'malkusch\bav\validatorexception' => '../classes/validator/exception/ValidatorException.php', 'malkusch\bav\verifyexception_io' => '../classes/verify/exception/VerifyException_IO.php', - 'malkusch\bav\testapi_kontocheck' => '../classes/verify/testAPI/TestAPI_Kontocheck.php', 'malkusch\bav\fileparserexception' => '../classes/dataBackend/file/fileParser/exception/FileParserException.php', 'malkusch\bav\automaticupdateplan' => '../classes/dataBackend/update/AutomaticUpdatePlan.php', 'malkusch\bav\validator_iteration' => '../classes/validator/Validator_Iteration.php', - 'malkusch\bav\testapiresult_error' => '../classes/verify/testAPI/TestAPIResult_Error.php', - 'malkusch\bav\testapi_ktoblzcheck' => '../classes/verify/testAPI/TestAPI_Ktoblzcheck.php', 'malkusch\bav\defaultconfiguration' => '../classes/configuration/DefaultConfiguration.php', 'malkusch\bav\databackendcontainer' => '../classes/dataBackend/DataBackendContainer.php', 'malkusch\bav\databackendexception' => '../classes/dataBackend/exception/DataBackendException.php', - 'malkusch\bav\classfileexception_io' => '../classes/class/exception/ClassFileException_IO.php', 'malkusch\bav\configurationregistry' => '../classes/configuration/ConfigurationRegistry.php', 'malkusch\bav\configurationexception' => '../classes/configuration/ConfigurationException.php', 'malkusch\bav\fileparserexception_io' => '../classes/dataBackend/file/fileParser/exception/FileParserException_IO.php', @@ -219,20 +209,16 @@ 'malkusch\bav\validatorexception_eser' => '../classes/validator/exception/ValidatorException_ESER.php', 'malkusch\bav\filedatabackendcontainer' => '../classes/dataBackend/file/FileDataBackendContainer.php', 'malkusch\bav\fileparsercontextexception' => '../classes/dataBackend/file/fileParser/exception/FileParserContextException.php', - 'malkusch\bav\testapiexception_validation' => '../classes/verify/testAPI/exception/TestAPIException_Validation.php', 'malkusch\bav\validator_iteration_weighted' => '../classes/validator/Validator_Iteration_Weighted.php', 'malkusch\bav\validatorexception_notexists' => '../classes/validator/exception/ValidatorException_NotExists.php', 'malkusch\bav\encodingexception_unsupported' => '../classes/encoding/exception/EncodingException_Unsupported.php', 'malkusch\bav\fileparserexception_parseerror' => '../classes/dataBackend/file/fileParser/exception/FileParserException_ParseError.php', 'malkusch\bav\validatorexception_outofbounds' => '../classes/validator/exception/ValidatorException_OutOfBounds.php', - 'malkusch\bav\classfileexception_missingclass' => '../classes/class/exception/ClassFileException_MissingClass.php', 'malkusch\bav\databackendexception_banknotfound' => '../classes/dataBackend/exception/DataBackendException_BankNotFound.php', 'malkusch\bav\databackendexception_nomainagency' => '../classes/dataBackend/exception/DataBackendException_NoMainAgency.php', 'malkusch\bav\fileparserexception_filenotexists' => '../classes/dataBackend/file/fileParser/exception/FileParserException_FileNotExists.php', 'malkusch\bav\agencyexception_undefinedattribute' => '../classes/bank/exception/AgencyException_UndefinedAttribute.php', 'malkusch\bav\validator_iteration_transformation' => '../classes/validator/Validator_Iteration_Transformation.php', 'malkusch\bav\fileparsercontextexception_undefined' => '../classes/dataBackend/file/fileParser/exception/FileParserContextException_Undefined.php', - 'malkusch\bav\testapiexception_validation_banknotfound' => '../classes/verify/testAPI/exception/TestAPIException_Validation_BankNotFound.php', 'malkusch\bav\databackendexception_io_missingattributes' => '../classes/dataBackend/exception/DataBackendException_IO_MissingAttributes.php', - 'malkusch\bav\testapiexception_validation_notinitialized' => '../classes/verify/testAPI/exception/TestAPIException_Validation_NotInitialized.php', ); diff --git a/autoloader/index/1.php b/autoloader/index/1.php index 6ad7cd9a..d6399f66 100644 --- a/autoloader/index/1.php +++ b/autoloader/index/1.php @@ -15,15 +15,29 @@ */ return array( + 'malkusch\bav\testapi' => '../tests/classes/testAPI/TestAPI.php', 'malkusch\bav\timemock' => '../tests/classes/TimeMock.php', 'malkusch\bav\testsuite' => '../tests/TestSuite.php', + 'malkusch\bav\classfile' => '../tests/classes/class/ClassFile.php', 'malkusch\bav\backendtest' => '../tests/BackendTest.php', + 'malkusch\bav\testapi_bav' => '../tests/classes/testAPI/TestAPI_BAV.php', 'malkusch\bav\validatortest' => '../tests/ValidatorTest.php', + 'malkusch\bav\testapiresult' => '../tests/classes/testAPI/TestAPIResult.php', 'malkusch\bav\updateplantest' => '../tests/UpdatePlanTest.php', 'malkusch\bav\agencyquerytest' => '../tests/AgencyQueryTest.php', 'malkusch\bav\crossprojecttest' => '../tests/CrossProjectTest.php', 'malkusch\bav\verifyimporttest' => '../tests/VerifyImportTest.php', + 'malkusch\bav\testapiexception' => '../tests/classes/testAPI/exception/TestAPIException.php', 'malkusch\bav\dataconstrainttest' => '../tests/DataConstraintTest.php', + 'malkusch\bav\classfileexception' => '../tests/classes/class/exception/ClassFileException.php', + 'malkusch\bav\testapi_kontocheck' => '../tests/classes/testAPI/TestAPI_Kontocheck.php', + 'malkusch\bav\testapiresult_error' => '../tests/classes/testAPI/TestAPIResult_Error.php', + 'malkusch\bav\testapi_ktoblzcheck' => '../tests/classes/testAPI/TestAPI_Ktoblzcheck.php', 'malkusch\bav\backendcontainertest' => '../tests/BackendContainerTest.php', 'malkusch\bav\checkagainsttestapis' => '../tests/checkAgainstTestAPIs.php', + 'malkusch\bav\classfileexception_io' => '../tests/classes/class/exception/ClassFileException_IO.php', + 'malkusch\bav\testapiexception_validation' => '../tests/classes/testAPI/exception/TestAPIException_Validation.php', + 'malkusch\bav\classfileexception_missingclass' => '../tests/classes/class/exception/ClassFileException_MissingClass.php', + 'malkusch\bav\testapiexception_validation_banknotfound' => '../tests/classes/testAPI/exception/TestAPIException_Validation_BankNotFound.php', + 'malkusch\bav\testapiexception_validation_notinitialized' => '../tests/classes/testAPI/exception/TestAPIException_Validation_NotInitialized.php', ); diff --git a/tests/classes/TimeMock.php b/tests/classes/TimeMock.php index 567ee443..1b5c5f9b 100644 --- a/tests/classes/TimeMock.php +++ b/tests/classes/TimeMock.php @@ -2,8 +2,6 @@ namespace malkusch\bav; -namespace malkusch\bav; - /** * time() mock. */ diff --git a/classes/class/ClassFile.php b/tests/classes/class/ClassFile.php similarity index 100% rename from classes/class/ClassFile.php rename to tests/classes/class/ClassFile.php diff --git a/classes/class/exception/ClassFileException.php b/tests/classes/class/exception/ClassFileException.php similarity index 100% rename from classes/class/exception/ClassFileException.php rename to tests/classes/class/exception/ClassFileException.php diff --git a/classes/class/exception/ClassFileException_IO.php b/tests/classes/class/exception/ClassFileException_IO.php similarity index 100% rename from classes/class/exception/ClassFileException_IO.php rename to tests/classes/class/exception/ClassFileException_IO.php diff --git a/classes/class/exception/ClassFileException_MissingClass.php b/tests/classes/class/exception/ClassFileException_MissingClass.php similarity index 100% rename from classes/class/exception/ClassFileException_MissingClass.php rename to tests/classes/class/exception/ClassFileException_MissingClass.php diff --git a/classes/verify/testAPI/TestAPI.php b/tests/classes/testAPI/TestAPI.php similarity index 100% rename from classes/verify/testAPI/TestAPI.php rename to tests/classes/testAPI/TestAPI.php diff --git a/classes/verify/testAPI/TestAPIResult.php b/tests/classes/testAPI/TestAPIResult.php similarity index 100% rename from classes/verify/testAPI/TestAPIResult.php rename to tests/classes/testAPI/TestAPIResult.php diff --git a/classes/verify/testAPI/TestAPIResult_Error.php b/tests/classes/testAPI/TestAPIResult_Error.php similarity index 100% rename from classes/verify/testAPI/TestAPIResult_Error.php rename to tests/classes/testAPI/TestAPIResult_Error.php diff --git a/classes/verify/testAPI/TestAPI_BAV.php b/tests/classes/testAPI/TestAPI_BAV.php similarity index 100% rename from classes/verify/testAPI/TestAPI_BAV.php rename to tests/classes/testAPI/TestAPI_BAV.php diff --git a/classes/verify/testAPI/TestAPI_Kontocheck.php b/tests/classes/testAPI/TestAPI_Kontocheck.php similarity index 100% rename from classes/verify/testAPI/TestAPI_Kontocheck.php rename to tests/classes/testAPI/TestAPI_Kontocheck.php diff --git a/classes/verify/testAPI/TestAPI_Ktoblzcheck.php b/tests/classes/testAPI/TestAPI_Ktoblzcheck.php similarity index 100% rename from classes/verify/testAPI/TestAPI_Ktoblzcheck.php rename to tests/classes/testAPI/TestAPI_Ktoblzcheck.php diff --git a/classes/verify/testAPI/exception/TestAPIException.php b/tests/classes/testAPI/exception/TestAPIException.php similarity index 100% rename from classes/verify/testAPI/exception/TestAPIException.php rename to tests/classes/testAPI/exception/TestAPIException.php diff --git a/classes/verify/testAPI/exception/TestAPIException_Validation.php b/tests/classes/testAPI/exception/TestAPIException_Validation.php similarity index 100% rename from classes/verify/testAPI/exception/TestAPIException_Validation.php rename to tests/classes/testAPI/exception/TestAPIException_Validation.php diff --git a/classes/verify/testAPI/exception/TestAPIException_Validation_BankNotFound.php b/tests/classes/testAPI/exception/TestAPIException_Validation_BankNotFound.php similarity index 100% rename from classes/verify/testAPI/exception/TestAPIException_Validation_BankNotFound.php rename to tests/classes/testAPI/exception/TestAPIException_Validation_BankNotFound.php diff --git a/classes/verify/testAPI/exception/TestAPIException_Validation_NotInitialized.php b/tests/classes/testAPI/exception/TestAPIException_Validation_NotInitialized.php similarity index 100% rename from classes/verify/testAPI/exception/TestAPIException_Validation_NotInitialized.php rename to tests/classes/testAPI/exception/TestAPIException_Validation_NotInitialized.php From 8931f29a701ef90449126345b57f172a08331cfd Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 04:46:48 +0200 Subject: [PATCH 099/303] removed DataBackend::_getAgencies() and DataBackend::_getMainAgency() --- classes/dataBackend/DataBackend.php | 36 ++--------------------------- docs/changelog.txt | 2 ++ 2 files changed, 4 insertions(+), 34 deletions(-) diff --git a/classes/dataBackend/DataBackend.php b/classes/dataBackend/DataBackend.php index 7ca4af9e..d8ba0151 100644 --- a/classes/dataBackend/DataBackend.php +++ b/classes/dataBackend/DataBackend.php @@ -138,23 +138,7 @@ abstract protected function getNewBank($bankID); * @see Bank::getMainAgency() * @internal YOU SHOULD NOT CALL THIS METHOD! Use Bank->getMainAgency() */ - public function getMainAgency(Bank $bank) - { - trigger_error( - "_getMainAgency() was renamed into getMainAgency().", - E_USER_DEPRECATED - ); - return $this->_getMainAgency($bank); - } - - /** - * @deprecated 0.28 - * @see getMainAgency() - */ - public function _getMainAgency(Bank $bank) - { - throw new BadMethodCallException("You have to override getMainAgency()"); - } + abstract public function getMainAgency(Bank $bank); /** * If you implement this method you should return an array with the appropriate Agency @@ -167,21 +151,5 @@ public function _getMainAgency(Bank $bank) * @return array * @internal YOU SHOULD NOT CALL THIS METHOD! Use Bank->getMainAgency() */ - public function getAgenciesForBank(Bank $bank) - { - trigger_error( - "_getAgencies() was renamed into getAgenciesForBank().", - E_USER_DEPRECATED - ); - return $this->_getAgencies($bank); - } - - /** - * @deprecated 0.28 - * @see getAgenciesForBank() - */ - public function _getAgencies(Bank $bank) - { - throw new BadMethodCallException("You have to override getAgenciesForBank()"); - } + abstract public function getAgenciesForBank(Bank $bank); } diff --git a/docs/changelog.txt b/docs/changelog.txt index a86ff0b5..2e972708 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -10,6 +10,8 @@ Version 1.0.0 - not yet released - using namespace malkusch\bav and removed the class prefix BAV_ + - removed DataBackend::_getAgencies() and DataBackend::_getMainAgency() + Version 0.28 - May 26, 2014 --------------------------- - added Composer support From 6fe91eb55ca9a6c9ad417fc8392b29fbc9df2f82 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 04:57:54 +0200 Subject: [PATCH 100/303] [PSR2] renamed Validator_* into Validator --- autoloader/index/0.php | 322 +++++++++--------- classes/validator/Validator.php | 2 +- ...pendent.php => ValidatorBankDependent.php} | 2 +- ...Validator_Chain.php => ValidatorChain.php} | 2 +- ...r_Iteration.php => ValidatorIteration.php} | 2 +- ... => ValidatorIteration_Transformation.php} | 2 +- ...ed.php => ValidatorIteration_Weighted.php} | 2 +- .../{Validator_00.php => Validator00.php} | 2 +- .../{Validator_01.php => Validator01.php} | 2 +- .../{Validator_02.php => Validator02.php} | 2 +- .../{Validator_03.php => Validator03.php} | 2 +- .../{Validator_04.php => Validator04.php} | 2 +- .../{Validator_05.php => Validator05.php} | 2 +- .../{Validator_06.php => Validator06.php} | 2 +- .../{Validator_07.php => Validator07.php} | 2 +- .../{Validator_08.php => Validator08.php} | 2 +- .../{Validator_09.php => Validator09.php} | 2 +- .../{Validator_10.php => Validator10.php} | 2 +- .../{Validator_11.php => Validator11.php} | 2 +- .../{Validator_13.php => Validator13.php} | 2 +- .../{Validator_14.php => Validator14.php} | 2 +- .../{Validator_15.php => Validator15.php} | 2 +- .../{Validator_16.php => Validator16.php} | 2 +- .../{Validator_17.php => Validator17.php} | 2 +- .../{Validator_18.php => Validator18.php} | 2 +- .../{Validator_19.php => Validator19.php} | 2 +- .../{Validator_20.php => Validator20.php} | 2 +- .../{Validator_21.php => Validator21.php} | 2 +- .../{Validator_22.php => Validator22.php} | 2 +- .../{Validator_23.php => Validator23.php} | 2 +- .../{Validator_24.php => Validator24.php} | 2 +- .../{Validator_25.php => Validator25.php} | 2 +- .../{Validator_26.php => Validator26.php} | 2 +- .../{Validator_27.php => Validator27.php} | 6 +- .../{Validator_28.php => Validator28.php} | 2 +- .../{Validator_29.php => Validator29.php} | 2 +- .../{Validator_30.php => Validator30.php} | 2 +- .../{Validator_31.php => Validator31.php} | 2 +- .../{Validator_32.php => Validator32.php} | 2 +- .../{Validator_33.php => Validator33.php} | 2 +- .../{Validator_34.php => Validator34.php} | 2 +- .../{Validator_35.php => Validator35.php} | 2 +- .../{Validator_36.php => Validator36.php} | 2 +- .../{Validator_37.php => Validator37.php} | 2 +- .../{Validator_38.php => Validator38.php} | 2 +- .../{Validator_39.php => Validator39.php} | 2 +- .../{Validator_40.php => Validator40.php} | 2 +- .../{Validator_41.php => Validator41.php} | 2 +- .../{Validator_42.php => Validator42.php} | 2 +- .../{Validator_43.php => Validator43.php} | 2 +- .../{Validator_44.php => Validator44.php} | 2 +- .../{Validator_45.php => Validator45.php} | 2 +- .../{Validator_46.php => Validator46.php} | 2 +- .../{Validator_47.php => Validator47.php} | 2 +- .../{Validator_48.php => Validator48.php} | 2 +- .../{Validator_49.php => Validator49.php} | 6 +- .../{Validator_50.php => Validator50.php} | 2 +- .../{Validator_51.php => Validator51.php} | 16 +- .../{Validator_51x.php => Validator51x.php} | 2 +- .../{Validator_52.php => Validator52.php} | 6 +- .../{Validator_53.php => Validator53.php} | 2 +- .../{Validator_54.php => Validator54.php} | 2 +- .../{Validator_55.php => Validator55.php} | 2 +- .../{Validator_56.php => Validator56.php} | 2 +- .../{Validator_57.php => Validator57.php} | 14 +- .../{Validator_58.php => Validator58.php} | 2 +- .../{Validator_59.php => Validator59.php} | 2 +- .../{Validator_60.php => Validator60.php} | 2 +- .../{Validator_61.php => Validator61.php} | 2 +- .../{Validator_62.php => Validator62.php} | 2 +- .../{Validator_63.php => Validator63.php} | 2 +- .../{Validator_64.php => Validator64.php} | 2 +- .../{Validator_65.php => Validator65.php} | 2 +- .../{Validator_66.php => Validator66.php} | 2 +- .../{Validator_67.php => Validator67.php} | 2 +- .../{Validator_68.php => Validator68.php} | 10 +- .../{Validator_69.php => Validator69.php} | 6 +- .../{Validator_69b.php => Validator69b.php} | 2 +- .../{Validator_70.php => Validator70.php} | 2 +- .../{Validator_71.php => Validator71.php} | 2 +- .../{Validator_72.php => Validator72.php} | 2 +- .../{Validator_73.php => Validator73.php} | 10 +- .../{Validator_74.php => Validator74.php} | 2 +- .../{Validator_75.php => Validator75.php} | 2 +- .../{Validator_76.php => Validator76.php} | 2 +- .../{Validator_77.php => Validator77.php} | 6 +- .../{Validator_77a.php => Validator77a.php} | 2 +- .../{Validator_78.php => Validator78.php} | 2 +- .../{Validator_79.php => Validator79.php} | 12 +- .../{Validator_80.php => Validator80.php} | 8 +- .../{Validator_81.php => Validator81.php} | 6 +- .../{Validator_82.php => Validator82.php} | 10 +- .../{Validator_83.php => Validator83.php} | 12 +- .../{Validator_83x.php => Validator83x.php} | 2 +- .../{Validator_84.php => Validator84.php} | 10 +- .../{Validator_84b.php => Validator84b.php} | 2 +- .../{Validator_85.php => Validator85.php} | 12 +- .../{Validator_86.php => Validator86.php} | 8 +- .../{Validator_87.php => Validator87.php} | 10 +- .../{Validator_87a.php => Validator87a.php} | 2 +- .../{Validator_87c.php => Validator87c.php} | 2 +- .../{Validator_88.php => Validator88.php} | 2 +- .../{Validator_89.php => Validator89.php} | 6 +- .../{Validator_90.php => Validator90.php} | 16 +- .../{Validator_90c.php => Validator90c.php} | 2 +- .../{Validator_90d.php => Validator90d.php} | 2 +- .../{Validator_90e.php => Validator90e.php} | 2 +- .../{Validator_90g.php => Validator90g.php} | 2 +- .../{Validator_91.php => Validator91.php} | 4 +- .../{Validator_92.php => Validator92.php} | 2 +- .../{Validator_93.php => Validator93.php} | 6 +- .../{Validator_94.php => Validator94.php} | 2 +- .../{Validator_95.php => Validator95.php} | 2 +- .../{Validator_96.php => Validator96.php} | 6 +- .../{Validator_97.php => Validator97.php} | 2 +- .../{Validator_98.php => Validator98.php} | 6 +- .../{Validator_99.php => Validator99.php} | 2 +- .../{Validator_A0.php => ValidatorA0.php} | 2 +- .../{Validator_A1.php => ValidatorA1.php} | 2 +- .../{Validator_A2.php => ValidatorA2.php} | 6 +- .../{Validator_A3.php => ValidatorA3.php} | 6 +- .../{Validator_A4.php => ValidatorA4.php} | 10 +- .../{Validator_A4b.php => ValidatorA4b.php} | 2 +- .../{Validator_A5.php => ValidatorA5.php} | 6 +- .../{Validator_A6.php => ValidatorA6.php} | 10 +- .../{Validator_A7.php => ValidatorA7.php} | 6 +- .../{Validator_A8.php => ValidatorA8.php} | 8 +- .../{Validator_A9.php => ValidatorA9.php} | 6 +- .../{Validator_B0.php => ValidatorB0.php} | 10 +- .../{Validator_B1.php => ValidatorB1.php} | 6 +- .../{Validator_B2.php => ValidatorB2.php} | 10 +- .../{Validator_B3.php => ValidatorB3.php} | 10 +- .../{Validator_B4.php => ValidatorB4.php} | 10 +- .../{Validator_B5.php => ValidatorB5.php} | 6 +- .../{Validator_B6.php => ValidatorB6.php} | 10 +- .../{Validator_B7.php => ValidatorB7.php} | 2 +- .../{Validator_B8.php => ValidatorB8.php} | 12 +- .../{Validator_B9.php => ValidatorB9.php} | 10 +- .../{Validator_B9a.php => ValidatorB9a.php} | 2 +- .../{Validator_B9b.php => ValidatorB9b.php} | 2 +- .../{Validator_C0.php => ValidatorC0.php} | 6 +- .../{Validator_C1.php => ValidatorC1.php} | 10 +- .../{Validator_C1b.php => ValidatorC1b.php} | 2 +- .../{Validator_C2.php => ValidatorC2.php} | 6 +- .../{Validator_C3.php => ValidatorC3.php} | 10 +- .../{Validator_C4.php => ValidatorC4.php} | 10 +- .../{Validator_C5.php => ValidatorC5.php} | 18 +- .../{Validator_C6.php => ValidatorC6.php} | 6 +- .../{Validator_C7.php => ValidatorC7.php} | 6 +- .../{Validator_C8.php => ValidatorC8.php} | 8 +- .../{Validator_C9.php => ValidatorC9.php} | 6 +- .../{Validator_D0.php => ValidatorD0.php} | 6 +- .../{Validator_D1.php => ValidatorD1.php} | 6 +- .../{Validator_D2.php => ValidatorD2.php} | 8 +- .../{Validator_D3.php => ValidatorD3.php} | 6 +- .../{Validator_D4.php => ValidatorD4.php} | 6 +- .../{Validator_D5.php => ValidatorD5.php} | 16 +- .../{Validator_D6.php => ValidatorD6.php} | 8 +- .../{Validator_D7.php => ValidatorD7.php} | 2 +- .../{Validator_D8.php => ValidatorD8.php} | 6 +- .../{Validator_D9.php => ValidatorD9.php} | 8 +- .../{Validator_E0.php => ValidatorE0.php} | 2 +- .../{Validator_E1.php => ValidatorE1.php} | 2 +- tests/ValidatorTest.php | 2 +- 164 files changed, 519 insertions(+), 519 deletions(-) rename classes/validator/{Validator_BankDependent.php => ValidatorBankDependent.php} (96%) rename classes/validator/{Validator_Chain.php => ValidatorChain.php} (98%) rename classes/validator/{Validator_Iteration.php => ValidatorIteration.php} (98%) rename classes/validator/{Validator_Iteration_Transformation.php => ValidatorIteration_Transformation.php} (96%) rename classes/validator/{Validator_Iteration_Weighted.php => ValidatorIteration_Weighted.php} (95%) rename classes/validator/validators/{Validator_00.php => Validator00.php} (96%) rename classes/validator/validators/{Validator_01.php => Validator01.php} (95%) rename classes/validator/validators/{Validator_02.php => Validator02.php} (96%) rename classes/validator/validators/{Validator_03.php => Validator03.php} (96%) rename classes/validator/validators/{Validator_04.php => Validator04.php} (96%) rename classes/validator/validators/{Validator_05.php => Validator05.php} (96%) rename classes/validator/validators/{Validator_06.php => Validator06.php} (96%) rename classes/validator/validators/{Validator_07.php => Validator07.php} (96%) rename classes/validator/validators/{Validator_08.php => Validator08.php} (96%) rename classes/validator/validators/{Validator_09.php => Validator09.php} (96%) rename classes/validator/validators/{Validator_10.php => Validator10.php} (96%) rename classes/validator/validators/{Validator_11.php => Validator11.php} (97%) rename classes/validator/validators/{Validator_13.php => Validator13.php} (97%) rename classes/validator/validators/{Validator_14.php => Validator14.php} (96%) rename classes/validator/validators/{Validator_15.php => Validator15.php} (96%) rename classes/validator/validators/{Validator_16.php => Validator16.php} (96%) rename classes/validator/validators/{Validator_17.php => Validator17.php} (96%) rename classes/validator/validators/{Validator_18.php => Validator18.php} (96%) rename classes/validator/validators/{Validator_19.php => Validator19.php} (96%) rename classes/validator/validators/{Validator_20.php => Validator20.php} (96%) rename classes/validator/validators/{Validator_21.php => Validator21.php} (96%) rename classes/validator/validators/{Validator_22.php => Validator22.php} (95%) rename classes/validator/validators/{Validator_23.php => Validator23.php} (96%) rename classes/validator/validators/{Validator_24.php => Validator24.php} (96%) rename classes/validator/validators/{Validator_25.php => Validator25.php} (96%) rename classes/validator/validators/{Validator_26.php => Validator26.php} (96%) rename classes/validator/validators/{Validator_27.php => Validator27.php} (92%) rename classes/validator/validators/{Validator_28.php => Validator28.php} (96%) rename classes/validator/validators/{Validator_29.php => Validator29.php} (95%) rename classes/validator/validators/{Validator_30.php => Validator30.php} (96%) rename classes/validator/validators/{Validator_31.php => Validator31.php} (96%) rename classes/validator/validators/{Validator_32.php => Validator32.php} (96%) rename classes/validator/validators/{Validator_33.php => Validator33.php} (96%) rename classes/validator/validators/{Validator_34.php => Validator34.php} (96%) rename classes/validator/validators/{Validator_35.php => Validator35.php} (96%) rename classes/validator/validators/{Validator_36.php => Validator36.php} (96%) rename classes/validator/validators/{Validator_37.php => Validator37.php} (96%) rename classes/validator/validators/{Validator_38.php => Validator38.php} (96%) rename classes/validator/validators/{Validator_39.php => Validator39.php} (96%) rename classes/validator/validators/{Validator_40.php => Validator40.php} (96%) rename classes/validator/validators/{Validator_41.php => Validator41.php} (96%) rename classes/validator/validators/{Validator_42.php => Validator42.php} (96%) rename classes/validator/validators/{Validator_43.php => Validator43.php} (95%) rename classes/validator/validators/{Validator_44.php => Validator44.php} (96%) rename classes/validator/validators/{Validator_45.php => Validator45.php} (96%) rename classes/validator/validators/{Validator_46.php => Validator46.php} (96%) rename classes/validator/validators/{Validator_47.php => Validator47.php} (96%) rename classes/validator/validators/{Validator_48.php => Validator48.php} (96%) rename classes/validator/validators/{Validator_49.php => Validator49.php} (87%) rename classes/validator/validators/{Validator_50.php => Validator50.php} (97%) rename classes/validator/validators/{Validator_51.php => Validator51.php} (86%) rename classes/validator/validators/{Validator_51x.php => Validator51x.php} (96%) rename classes/validator/validators/{Validator_52.php => Validator52.php} (92%) rename classes/validator/validators/{Validator_53.php => Validator53.php} (95%) rename classes/validator/validators/{Validator_54.php => Validator54.php} (95%) rename classes/validator/validators/{Validator_55.php => Validator55.php} (96%) rename classes/validator/validators/{Validator_56.php => Validator56.php} (96%) rename classes/validator/validators/{Validator_57.php => Validator57.php} (94%) rename classes/validator/validators/{Validator_58.php => Validator58.php} (96%) rename classes/validator/validators/{Validator_59.php => Validator59.php} (96%) rename classes/validator/validators/{Validator_60.php => Validator60.php} (96%) rename classes/validator/validators/{Validator_61.php => Validator61.php} (96%) rename classes/validator/validators/{Validator_62.php => Validator62.php} (96%) rename classes/validator/validators/{Validator_63.php => Validator63.php} (96%) rename classes/validator/validators/{Validator_64.php => Validator64.php} (96%) rename classes/validator/validators/{Validator_65.php => Validator65.php} (96%) rename classes/validator/validators/{Validator_66.php => Validator66.php} (96%) rename classes/validator/validators/{Validator_67.php => Validator67.php} (96%) rename classes/validator/validators/{Validator_68.php => Validator68.php} (88%) rename classes/validator/validators/{Validator_69.php => Validator69.php} (91%) rename classes/validator/validators/{Validator_69b.php => Validator69b.php} (95%) rename classes/validator/validators/{Validator_70.php => Validator70.php} (96%) rename classes/validator/validators/{Validator_71.php => Validator71.php} (96%) rename classes/validator/validators/{Validator_72.php => Validator72.php} (96%) rename classes/validator/validators/{Validator_73.php => Validator73.php} (84%) rename classes/validator/validators/{Validator_74.php => Validator74.php} (97%) rename classes/validator/validators/{Validator_75.php => Validator75.php} (97%) rename classes/validator/validators/{Validator_76.php => Validator76.php} (96%) rename classes/validator/validators/{Validator_77.php => Validator77.php} (87%) rename classes/validator/validators/{Validator_77a.php => Validator77a.php} (95%) rename classes/validator/validators/{Validator_78.php => Validator78.php} (96%) rename classes/validator/validators/{Validator_79.php => Validator79.php} (90%) rename classes/validator/validators/{Validator_80.php => Validator80.php} (85%) rename classes/validator/validators/{Validator_81.php => Validator81.php} (88%) rename classes/validator/validators/{Validator_82.php => Validator82.php} (89%) rename classes/validator/validators/{Validator_83.php => Validator83.php} (86%) rename classes/validator/validators/{Validator_83x.php => Validator83x.php} (96%) rename classes/validator/validators/{Validator_84.php => Validator84.php} (84%) rename classes/validator/validators/{Validator_84b.php => Validator84b.php} (95%) rename classes/validator/validators/{Validator_85.php => Validator85.php} (87%) rename classes/validator/validators/{Validator_86.php => Validator86.php} (86%) rename classes/validator/validators/{Validator_87.php => Validator87.php} (82%) rename classes/validator/validators/{Validator_87a.php => Validator87a.php} (99%) rename classes/validator/validators/{Validator_87c.php => Validator87c.php} (95%) rename classes/validator/validators/{Validator_88.php => Validator88.php} (96%) rename classes/validator/validators/{Validator_89.php => Validator89.php} (92%) rename classes/validator/validators/{Validator_90.php => Validator90.php} (77%) rename classes/validator/validators/{Validator_90c.php => Validator90c.php} (96%) rename classes/validator/validators/{Validator_90d.php => Validator90d.php} (96%) rename classes/validator/validators/{Validator_90e.php => Validator90e.php} (95%) rename classes/validator/validators/{Validator_90g.php => Validator90g.php} (96%) rename classes/validator/validators/{Validator_91.php => Validator91.php} (93%) rename classes/validator/validators/{Validator_92.php => Validator92.php} (96%) rename classes/validator/validators/{Validator_93.php => Validator93.php} (90%) rename classes/validator/validators/{Validator_94.php => Validator94.php} (96%) rename classes/validator/validators/{Validator_95.php => Validator95.php} (97%) rename classes/validator/validators/{Validator_96.php => Validator96.php} (88%) rename classes/validator/validators/{Validator_97.php => Validator97.php} (97%) rename classes/validator/validators/{Validator_98.php => Validator98.php} (87%) rename classes/validator/validators/{Validator_99.php => Validator99.php} (96%) rename classes/validator/validators/{Validator_A0.php => ValidatorA0.php} (96%) rename classes/validator/validators/{Validator_A1.php => ValidatorA1.php} (96%) rename classes/validator/validators/{Validator_A2.php => ValidatorA2.php} (87%) rename classes/validator/validators/{Validator_A3.php => ValidatorA3.php} (87%) rename classes/validator/validators/{Validator_A4.php => ValidatorA4.php} (85%) rename classes/validator/validators/{Validator_A4b.php => ValidatorA4b.php} (96%) rename classes/validator/validators/{Validator_A5.php => ValidatorA5.php} (89%) rename classes/validator/validators/{Validator_A6.php => ValidatorA6.php} (89%) rename classes/validator/validators/{Validator_A7.php => ValidatorA7.php} (86%) rename classes/validator/validators/{Validator_A8.php => ValidatorA8.php} (87%) rename classes/validator/validators/{Validator_A9.php => ValidatorA9.php} (87%) rename classes/validator/validators/{Validator_B0.php => ValidatorB0.php} (90%) rename classes/validator/validators/{Validator_B1.php => ValidatorB1.php} (87%) rename classes/validator/validators/{Validator_B2.php => ValidatorB2.php} (89%) rename classes/validator/validators/{Validator_B3.php => ValidatorB3.php} (90%) rename classes/validator/validators/{Validator_B4.php => ValidatorB4.php} (89%) rename classes/validator/validators/{Validator_B5.php => ValidatorB5.php} (89%) rename classes/validator/validators/{Validator_B6.php => ValidatorB6.php} (88%) rename classes/validator/validators/{Validator_B7.php => ValidatorB7.php} (96%) rename classes/validator/validators/{Validator_B8.php => ValidatorB8.php} (83%) rename classes/validator/validators/{Validator_B9.php => ValidatorB9.php} (90%) rename classes/validator/validators/{Validator_B9a.php => ValidatorB9a.php} (96%) rename classes/validator/validators/{Validator_B9b.php => ValidatorB9b.php} (96%) rename classes/validator/validators/{Validator_C0.php => ValidatorC0.php} (87%) rename classes/validator/validators/{Validator_C1.php => ValidatorC1.php} (89%) rename classes/validator/validators/{Validator_C1b.php => ValidatorC1b.php} (95%) rename classes/validator/validators/{Validator_C2.php => ValidatorC2.php} (87%) rename classes/validator/validators/{Validator_C3.php => ValidatorC3.php} (89%) rename classes/validator/validators/{Validator_C4.php => ValidatorC4.php} (90%) rename classes/validator/validators/{Validator_C5.php => ValidatorC5.php} (88%) rename classes/validator/validators/{Validator_C6.php => ValidatorC6.php} (94%) rename classes/validator/validators/{Validator_C7.php => ValidatorC7.php} (86%) rename classes/validator/validators/{Validator_C8.php => ValidatorC8.php} (81%) rename classes/validator/validators/{Validator_C9.php => ValidatorC9.php} (85%) rename classes/validator/validators/{Validator_D0.php => ValidatorD0.php} (90%) rename classes/validator/validators/{Validator_D1.php => ValidatorD1.php} (95%) rename classes/validator/validators/{Validator_D2.php => ValidatorD2.php} (84%) rename classes/validator/validators/{Validator_D3.php => ValidatorD3.php} (87%) rename classes/validator/validators/{Validator_D4.php => ValidatorD4.php} (93%) rename classes/validator/validators/{Validator_D5.php => ValidatorD5.php} (86%) rename classes/validator/validators/{Validator_D6.php => ValidatorD6.php} (83%) rename classes/validator/validators/{Validator_D7.php => ValidatorD7.php} (96%) rename classes/validator/validators/{Validator_D8.php => ValidatorD8.php} (92%) rename classes/validator/validators/{Validator_D9.php => ValidatorD9.php} (83%) rename classes/validator/validators/{Validator_E0.php => ValidatorE0.php} (96%) rename classes/validator/validators/{Validator_E1.php => ValidatorE1.php} (96%) diff --git a/autoloader/index/0.php b/autoloader/index/0.php index 1b1a409e..11ee9fcb 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -23,193 +23,193 @@ 'malkusch\bav\updateplan' => '../classes/dataBackend/update/UpdatePlan.php', 'malkusch\bav\databackend' => '../classes/dataBackend/DataBackend.php', 'malkusch\bav\encoding_mb' => '../classes/encoding/Encoding_MB.php', + 'malkusch\bav\validator00' => '../classes/validator/validators/Validator00.php', + 'malkusch\bav\validator01' => '../classes/validator/validators/Validator01.php', + 'malkusch\bav\validator02' => '../classes/validator/validators/Validator02.php', + 'malkusch\bav\validator03' => '../classes/validator/validators/Validator03.php', + 'malkusch\bav\validator04' => '../classes/validator/validators/Validator04.php', + 'malkusch\bav\validator05' => '../classes/validator/validators/Validator05.php', + 'malkusch\bav\validator06' => '../classes/validator/validators/Validator06.php', + 'malkusch\bav\validator07' => '../classes/validator/validators/Validator07.php', + 'malkusch\bav\validator08' => '../classes/validator/validators/Validator08.php', + 'malkusch\bav\validator09' => '../classes/validator/validators/Validator09.php', + 'malkusch\bav\validator10' => '../classes/validator/validators/Validator10.php', + 'malkusch\bav\validator11' => '../classes/validator/validators/Validator11.php', + 'malkusch\bav\validator13' => '../classes/validator/validators/Validator13.php', + 'malkusch\bav\validator14' => '../classes/validator/validators/Validator14.php', + 'malkusch\bav\validator15' => '../classes/validator/validators/Validator15.php', + 'malkusch\bav\validator16' => '../classes/validator/validators/Validator16.php', + 'malkusch\bav\validator17' => '../classes/validator/validators/Validator17.php', + 'malkusch\bav\validator18' => '../classes/validator/validators/Validator18.php', + 'malkusch\bav\validator19' => '../classes/validator/validators/Validator19.php', + 'malkusch\bav\validator20' => '../classes/validator/validators/Validator20.php', + 'malkusch\bav\validator21' => '../classes/validator/validators/Validator21.php', + 'malkusch\bav\validator22' => '../classes/validator/validators/Validator22.php', + 'malkusch\bav\validator23' => '../classes/validator/validators/Validator23.php', + 'malkusch\bav\validator24' => '../classes/validator/validators/Validator24.php', + 'malkusch\bav\validator25' => '../classes/validator/validators/Validator25.php', + 'malkusch\bav\validator26' => '../classes/validator/validators/Validator26.php', + 'malkusch\bav\validator27' => '../classes/validator/validators/Validator27.php', + 'malkusch\bav\validator28' => '../classes/validator/validators/Validator28.php', + 'malkusch\bav\validator29' => '../classes/validator/validators/Validator29.php', + 'malkusch\bav\validator30' => '../classes/validator/validators/Validator30.php', + 'malkusch\bav\validator31' => '../classes/validator/validators/Validator31.php', + 'malkusch\bav\validator32' => '../classes/validator/validators/Validator32.php', + 'malkusch\bav\validator33' => '../classes/validator/validators/Validator33.php', + 'malkusch\bav\validator34' => '../classes/validator/validators/Validator34.php', + 'malkusch\bav\validator35' => '../classes/validator/validators/Validator35.php', + 'malkusch\bav\validator36' => '../classes/validator/validators/Validator36.php', + 'malkusch\bav\validator37' => '../classes/validator/validators/Validator37.php', + 'malkusch\bav\validator38' => '../classes/validator/validators/Validator38.php', + 'malkusch\bav\validator39' => '../classes/validator/validators/Validator39.php', + 'malkusch\bav\validator40' => '../classes/validator/validators/Validator40.php', + 'malkusch\bav\validator41' => '../classes/validator/validators/Validator41.php', + 'malkusch\bav\validator42' => '../classes/validator/validators/Validator42.php', + 'malkusch\bav\validator43' => '../classes/validator/validators/Validator43.php', + 'malkusch\bav\validator44' => '../classes/validator/validators/Validator44.php', + 'malkusch\bav\validator45' => '../classes/validator/validators/Validator45.php', + 'malkusch\bav\validator46' => '../classes/validator/validators/Validator46.php', + 'malkusch\bav\validator47' => '../classes/validator/validators/Validator47.php', + 'malkusch\bav\validator48' => '../classes/validator/validators/Validator48.php', + 'malkusch\bav\validator49' => '../classes/validator/validators/Validator49.php', + 'malkusch\bav\validator50' => '../classes/validator/validators/Validator50.php', + 'malkusch\bav\validator51' => '../classes/validator/validators/Validator51.php', + 'malkusch\bav\validator52' => '../classes/validator/validators/Validator52.php', + 'malkusch\bav\validator53' => '../classes/validator/validators/Validator53.php', + 'malkusch\bav\validator54' => '../classes/validator/validators/Validator54.php', + 'malkusch\bav\validator55' => '../classes/validator/validators/Validator55.php', + 'malkusch\bav\validator56' => '../classes/validator/validators/Validator56.php', + 'malkusch\bav\validator57' => '../classes/validator/validators/Validator57.php', + 'malkusch\bav\validator58' => '../classes/validator/validators/Validator58.php', + 'malkusch\bav\validator59' => '../classes/validator/validators/Validator59.php', + 'malkusch\bav\validator60' => '../classes/validator/validators/Validator60.php', + 'malkusch\bav\validator61' => '../classes/validator/validators/Validator61.php', + 'malkusch\bav\validator62' => '../classes/validator/validators/Validator62.php', + 'malkusch\bav\validator63' => '../classes/validator/validators/Validator63.php', + 'malkusch\bav\validator64' => '../classes/validator/validators/Validator64.php', + 'malkusch\bav\validator65' => '../classes/validator/validators/Validator65.php', + 'malkusch\bav\validator66' => '../classes/validator/validators/Validator66.php', + 'malkusch\bav\validator67' => '../classes/validator/validators/Validator67.php', + 'malkusch\bav\validator68' => '../classes/validator/validators/Validator68.php', + 'malkusch\bav\validator69' => '../classes/validator/validators/Validator69.php', + 'malkusch\bav\validator70' => '../classes/validator/validators/Validator70.php', + 'malkusch\bav\validator71' => '../classes/validator/validators/Validator71.php', + 'malkusch\bav\validator72' => '../classes/validator/validators/Validator72.php', + 'malkusch\bav\validator73' => '../classes/validator/validators/Validator73.php', + 'malkusch\bav\validator74' => '../classes/validator/validators/Validator74.php', + 'malkusch\bav\validator75' => '../classes/validator/validators/Validator75.php', + 'malkusch\bav\validator76' => '../classes/validator/validators/Validator76.php', + 'malkusch\bav\validator77' => '../classes/validator/validators/Validator77.php', + 'malkusch\bav\validator78' => '../classes/validator/validators/Validator78.php', + 'malkusch\bav\validator79' => '../classes/validator/validators/Validator79.php', + 'malkusch\bav\validator80' => '../classes/validator/validators/Validator80.php', + 'malkusch\bav\validator81' => '../classes/validator/validators/Validator81.php', + 'malkusch\bav\validator82' => '../classes/validator/validators/Validator82.php', + 'malkusch\bav\validator83' => '../classes/validator/validators/Validator83.php', + 'malkusch\bav\validator84' => '../classes/validator/validators/Validator84.php', + 'malkusch\bav\validator85' => '../classes/validator/validators/Validator85.php', + 'malkusch\bav\validator86' => '../classes/validator/validators/Validator86.php', + 'malkusch\bav\validator87' => '../classes/validator/validators/Validator87.php', + 'malkusch\bav\validator88' => '../classes/validator/validators/Validator88.php', + 'malkusch\bav\validator89' => '../classes/validator/validators/Validator89.php', + 'malkusch\bav\validator90' => '../classes/validator/validators/Validator90.php', + 'malkusch\bav\validator91' => '../classes/validator/validators/Validator91.php', + 'malkusch\bav\validator92' => '../classes/validator/validators/Validator92.php', + 'malkusch\bav\validator93' => '../classes/validator/validators/Validator93.php', + 'malkusch\bav\validator94' => '../classes/validator/validators/Validator94.php', + 'malkusch\bav\validator95' => '../classes/validator/validators/Validator95.php', + 'malkusch\bav\validator96' => '../classes/validator/validators/Validator96.php', + 'malkusch\bav\validator97' => '../classes/validator/validators/Validator97.php', + 'malkusch\bav\validator98' => '../classes/validator/validators/Validator98.php', + 'malkusch\bav\validator99' => '../classes/validator/validators/Validator99.php', + 'malkusch\bav\validatora0' => '../classes/validator/validators/ValidatorA0.php', + 'malkusch\bav\validatora1' => '../classes/validator/validators/ValidatorA1.php', + 'malkusch\bav\validatora2' => '../classes/validator/validators/ValidatorA2.php', + 'malkusch\bav\validatora3' => '../classes/validator/validators/ValidatorA3.php', + 'malkusch\bav\validatora4' => '../classes/validator/validators/ValidatorA4.php', + 'malkusch\bav\validatora5' => '../classes/validator/validators/ValidatorA5.php', + 'malkusch\bav\validatora6' => '../classes/validator/validators/ValidatorA6.php', + 'malkusch\bav\validatora7' => '../classes/validator/validators/ValidatorA7.php', + 'malkusch\bav\validatora8' => '../classes/validator/validators/ValidatorA8.php', + 'malkusch\bav\validatora9' => '../classes/validator/validators/ValidatorA9.php', + 'malkusch\bav\validatorb0' => '../classes/validator/validators/ValidatorB0.php', + 'malkusch\bav\validatorb1' => '../classes/validator/validators/ValidatorB1.php', + 'malkusch\bav\validatorb2' => '../classes/validator/validators/ValidatorB2.php', + 'malkusch\bav\validatorb3' => '../classes/validator/validators/ValidatorB3.php', + 'malkusch\bav\validatorb4' => '../classes/validator/validators/ValidatorB4.php', + 'malkusch\bav\validatorb5' => '../classes/validator/validators/ValidatorB5.php', + 'malkusch\bav\validatorb6' => '../classes/validator/validators/ValidatorB6.php', + 'malkusch\bav\validatorb7' => '../classes/validator/validators/ValidatorB7.php', + 'malkusch\bav\validatorb8' => '../classes/validator/validators/ValidatorB8.php', + 'malkusch\bav\validatorb9' => '../classes/validator/validators/ValidatorB9.php', + 'malkusch\bav\validatorc0' => '../classes/validator/validators/ValidatorC0.php', + 'malkusch\bav\validatorc1' => '../classes/validator/validators/ValidatorC1.php', + 'malkusch\bav\validatorc2' => '../classes/validator/validators/ValidatorC2.php', + 'malkusch\bav\validatorc3' => '../classes/validator/validators/ValidatorC3.php', + 'malkusch\bav\validatorc4' => '../classes/validator/validators/ValidatorC4.php', + 'malkusch\bav\validatorc5' => '../classes/validator/validators/ValidatorC5.php', + 'malkusch\bav\validatorc6' => '../classes/validator/validators/ValidatorC6.php', + 'malkusch\bav\validatorc7' => '../classes/validator/validators/ValidatorC7.php', + 'malkusch\bav\validatorc8' => '../classes/validator/validators/ValidatorC8.php', + 'malkusch\bav\validatorc9' => '../classes/validator/validators/ValidatorC9.php', + 'malkusch\bav\validatord0' => '../classes/validator/validators/ValidatorD0.php', + 'malkusch\bav\validatord1' => '../classes/validator/validators/ValidatorD1.php', + 'malkusch\bav\validatord2' => '../classes/validator/validators/ValidatorD2.php', + 'malkusch\bav\validatord3' => '../classes/validator/validators/ValidatorD3.php', + 'malkusch\bav\validatord4' => '../classes/validator/validators/ValidatorD4.php', + 'malkusch\bav\validatord5' => '../classes/validator/validators/ValidatorD5.php', + 'malkusch\bav\validatord6' => '../classes/validator/validators/ValidatorD6.php', + 'malkusch\bav\validatord7' => '../classes/validator/validators/ValidatorD7.php', + 'malkusch\bav\validatord8' => '../classes/validator/validators/ValidatorD8.php', + 'malkusch\bav\validatord9' => '../classes/validator/validators/ValidatorD9.php', + 'malkusch\bav\validatore0' => '../classes/validator/validators/ValidatorE0.php', + 'malkusch\bav\validatore1' => '../classes/validator/validators/ValidatorE1.php', 'malkusch\bav\bavexception' => '../classes/exception/BAVException.php', - 'malkusch\bav\validator_00' => '../classes/validator/validators/Validator_00.php', - 'malkusch\bav\validator_01' => '../classes/validator/validators/Validator_01.php', - 'malkusch\bav\validator_02' => '../classes/validator/validators/Validator_02.php', - 'malkusch\bav\validator_03' => '../classes/validator/validators/Validator_03.php', - 'malkusch\bav\validator_04' => '../classes/validator/validators/Validator_04.php', - 'malkusch\bav\validator_05' => '../classes/validator/validators/Validator_05.php', - 'malkusch\bav\validator_06' => '../classes/validator/validators/Validator_06.php', - 'malkusch\bav\validator_07' => '../classes/validator/validators/Validator_07.php', - 'malkusch\bav\validator_08' => '../classes/validator/validators/Validator_08.php', - 'malkusch\bav\validator_09' => '../classes/validator/validators/Validator_09.php', - 'malkusch\bav\validator_10' => '../classes/validator/validators/Validator_10.php', - 'malkusch\bav\validator_11' => '../classes/validator/validators/Validator_11.php', - 'malkusch\bav\validator_13' => '../classes/validator/validators/Validator_13.php', - 'malkusch\bav\validator_14' => '../classes/validator/validators/Validator_14.php', - 'malkusch\bav\validator_15' => '../classes/validator/validators/Validator_15.php', - 'malkusch\bav\validator_16' => '../classes/validator/validators/Validator_16.php', - 'malkusch\bav\validator_17' => '../classes/validator/validators/Validator_17.php', - 'malkusch\bav\validator_18' => '../classes/validator/validators/Validator_18.php', - 'malkusch\bav\validator_19' => '../classes/validator/validators/Validator_19.php', - 'malkusch\bav\validator_20' => '../classes/validator/validators/Validator_20.php', - 'malkusch\bav\validator_21' => '../classes/validator/validators/Validator_21.php', - 'malkusch\bav\validator_22' => '../classes/validator/validators/Validator_22.php', - 'malkusch\bav\validator_23' => '../classes/validator/validators/Validator_23.php', - 'malkusch\bav\validator_24' => '../classes/validator/validators/Validator_24.php', - 'malkusch\bav\validator_25' => '../classes/validator/validators/Validator_25.php', - 'malkusch\bav\validator_26' => '../classes/validator/validators/Validator_26.php', - 'malkusch\bav\validator_27' => '../classes/validator/validators/Validator_27.php', - 'malkusch\bav\validator_28' => '../classes/validator/validators/Validator_28.php', - 'malkusch\bav\validator_29' => '../classes/validator/validators/Validator_29.php', - 'malkusch\bav\validator_30' => '../classes/validator/validators/Validator_30.php', - 'malkusch\bav\validator_31' => '../classes/validator/validators/Validator_31.php', - 'malkusch\bav\validator_32' => '../classes/validator/validators/Validator_32.php', - 'malkusch\bav\validator_33' => '../classes/validator/validators/Validator_33.php', - 'malkusch\bav\validator_34' => '../classes/validator/validators/Validator_34.php', - 'malkusch\bav\validator_35' => '../classes/validator/validators/Validator_35.php', - 'malkusch\bav\validator_36' => '../classes/validator/validators/Validator_36.php', - 'malkusch\bav\validator_37' => '../classes/validator/validators/Validator_37.php', - 'malkusch\bav\validator_38' => '../classes/validator/validators/Validator_38.php', - 'malkusch\bav\validator_39' => '../classes/validator/validators/Validator_39.php', - 'malkusch\bav\validator_40' => '../classes/validator/validators/Validator_40.php', - 'malkusch\bav\validator_41' => '../classes/validator/validators/Validator_41.php', - 'malkusch\bav\validator_42' => '../classes/validator/validators/Validator_42.php', - 'malkusch\bav\validator_43' => '../classes/validator/validators/Validator_43.php', - 'malkusch\bav\validator_44' => '../classes/validator/validators/Validator_44.php', - 'malkusch\bav\validator_45' => '../classes/validator/validators/Validator_45.php', - 'malkusch\bav\validator_46' => '../classes/validator/validators/Validator_46.php', - 'malkusch\bav\validator_47' => '../classes/validator/validators/Validator_47.php', - 'malkusch\bav\validator_48' => '../classes/validator/validators/Validator_48.php', - 'malkusch\bav\validator_49' => '../classes/validator/validators/Validator_49.php', - 'malkusch\bav\validator_50' => '../classes/validator/validators/Validator_50.php', - 'malkusch\bav\validator_51' => '../classes/validator/validators/Validator_51.php', - 'malkusch\bav\validator_52' => '../classes/validator/validators/Validator_52.php', - 'malkusch\bav\validator_53' => '../classes/validator/validators/Validator_53.php', - 'malkusch\bav\validator_54' => '../classes/validator/validators/Validator_54.php', - 'malkusch\bav\validator_55' => '../classes/validator/validators/Validator_55.php', - 'malkusch\bav\validator_56' => '../classes/validator/validators/Validator_56.php', - 'malkusch\bav\validator_57' => '../classes/validator/validators/Validator_57.php', - 'malkusch\bav\validator_58' => '../classes/validator/validators/Validator_58.php', - 'malkusch\bav\validator_59' => '../classes/validator/validators/Validator_59.php', - 'malkusch\bav\validator_60' => '../classes/validator/validators/Validator_60.php', - 'malkusch\bav\validator_61' => '../classes/validator/validators/Validator_61.php', - 'malkusch\bav\validator_62' => '../classes/validator/validators/Validator_62.php', - 'malkusch\bav\validator_63' => '../classes/validator/validators/Validator_63.php', - 'malkusch\bav\validator_64' => '../classes/validator/validators/Validator_64.php', - 'malkusch\bav\validator_65' => '../classes/validator/validators/Validator_65.php', - 'malkusch\bav\validator_66' => '../classes/validator/validators/Validator_66.php', - 'malkusch\bav\validator_67' => '../classes/validator/validators/Validator_67.php', - 'malkusch\bav\validator_68' => '../classes/validator/validators/Validator_68.php', - 'malkusch\bav\validator_69' => '../classes/validator/validators/Validator_69.php', - 'malkusch\bav\validator_70' => '../classes/validator/validators/Validator_70.php', - 'malkusch\bav\validator_71' => '../classes/validator/validators/Validator_71.php', - 'malkusch\bav\validator_72' => '../classes/validator/validators/Validator_72.php', - 'malkusch\bav\validator_73' => '../classes/validator/validators/Validator_73.php', - 'malkusch\bav\validator_74' => '../classes/validator/validators/Validator_74.php', - 'malkusch\bav\validator_75' => '../classes/validator/validators/Validator_75.php', - 'malkusch\bav\validator_76' => '../classes/validator/validators/Validator_76.php', - 'malkusch\bav\validator_77' => '../classes/validator/validators/Validator_77.php', - 'malkusch\bav\validator_78' => '../classes/validator/validators/Validator_78.php', - 'malkusch\bav\validator_79' => '../classes/validator/validators/Validator_79.php', - 'malkusch\bav\validator_80' => '../classes/validator/validators/Validator_80.php', - 'malkusch\bav\validator_81' => '../classes/validator/validators/Validator_81.php', - 'malkusch\bav\validator_82' => '../classes/validator/validators/Validator_82.php', - 'malkusch\bav\validator_83' => '../classes/validator/validators/Validator_83.php', - 'malkusch\bav\validator_84' => '../classes/validator/validators/Validator_84.php', - 'malkusch\bav\validator_85' => '../classes/validator/validators/Validator_85.php', - 'malkusch\bav\validator_86' => '../classes/validator/validators/Validator_86.php', - 'malkusch\bav\validator_87' => '../classes/validator/validators/Validator_87.php', - 'malkusch\bav\validator_88' => '../classes/validator/validators/Validator_88.php', - 'malkusch\bav\validator_89' => '../classes/validator/validators/Validator_89.php', - 'malkusch\bav\validator_90' => '../classes/validator/validators/Validator_90.php', - 'malkusch\bav\validator_91' => '../classes/validator/validators/Validator_91.php', - 'malkusch\bav\validator_92' => '../classes/validator/validators/Validator_92.php', - 'malkusch\bav\validator_93' => '../classes/validator/validators/Validator_93.php', - 'malkusch\bav\validator_94' => '../classes/validator/validators/Validator_94.php', - 'malkusch\bav\validator_95' => '../classes/validator/validators/Validator_95.php', - 'malkusch\bav\validator_96' => '../classes/validator/validators/Validator_96.php', - 'malkusch\bav\validator_97' => '../classes/validator/validators/Validator_97.php', - 'malkusch\bav\validator_98' => '../classes/validator/validators/Validator_98.php', - 'malkusch\bav\validator_99' => '../classes/validator/validators/Validator_99.php', - 'malkusch\bav\validator_a0' => '../classes/validator/validators/Validator_A0.php', - 'malkusch\bav\validator_a1' => '../classes/validator/validators/Validator_A1.php', - 'malkusch\bav\validator_a2' => '../classes/validator/validators/Validator_A2.php', - 'malkusch\bav\validator_a3' => '../classes/validator/validators/Validator_A3.php', - 'malkusch\bav\validator_a4' => '../classes/validator/validators/Validator_A4.php', - 'malkusch\bav\validator_a5' => '../classes/validator/validators/Validator_A5.php', - 'malkusch\bav\validator_a6' => '../classes/validator/validators/Validator_A6.php', - 'malkusch\bav\validator_a7' => '../classes/validator/validators/Validator_A7.php', - 'malkusch\bav\validator_a8' => '../classes/validator/validators/Validator_A8.php', - 'malkusch\bav\validator_a9' => '../classes/validator/validators/Validator_A9.php', - 'malkusch\bav\validator_b0' => '../classes/validator/validators/Validator_B0.php', - 'malkusch\bav\validator_b1' => '../classes/validator/validators/Validator_B1.php', - 'malkusch\bav\validator_b2' => '../classes/validator/validators/Validator_B2.php', - 'malkusch\bav\validator_b3' => '../classes/validator/validators/Validator_B3.php', - 'malkusch\bav\validator_b4' => '../classes/validator/validators/Validator_B4.php', - 'malkusch\bav\validator_b5' => '../classes/validator/validators/Validator_B5.php', - 'malkusch\bav\validator_b6' => '../classes/validator/validators/Validator_B6.php', - 'malkusch\bav\validator_b7' => '../classes/validator/validators/Validator_B7.php', - 'malkusch\bav\validator_b8' => '../classes/validator/validators/Validator_B8.php', - 'malkusch\bav\validator_b9' => '../classes/validator/validators/Validator_B9.php', - 'malkusch\bav\validator_c0' => '../classes/validator/validators/Validator_C0.php', - 'malkusch\bav\validator_c1' => '../classes/validator/validators/Validator_C1.php', - 'malkusch\bav\validator_c2' => '../classes/validator/validators/Validator_C2.php', - 'malkusch\bav\validator_c3' => '../classes/validator/validators/Validator_C3.php', - 'malkusch\bav\validator_c4' => '../classes/validator/validators/Validator_C4.php', - 'malkusch\bav\validator_c5' => '../classes/validator/validators/Validator_C5.php', - 'malkusch\bav\validator_c6' => '../classes/validator/validators/Validator_C6.php', - 'malkusch\bav\validator_c7' => '../classes/validator/validators/Validator_C7.php', - 'malkusch\bav\validator_c8' => '../classes/validator/validators/Validator_C8.php', - 'malkusch\bav\validator_c9' => '../classes/validator/validators/Validator_C9.php', - 'malkusch\bav\validator_d0' => '../classes/validator/validators/Validator_D0.php', - 'malkusch\bav\validator_d1' => '../classes/validator/validators/Validator_D1.php', - 'malkusch\bav\validator_d2' => '../classes/validator/validators/Validator_D2.php', - 'malkusch\bav\validator_d3' => '../classes/validator/validators/Validator_D3.php', - 'malkusch\bav\validator_d4' => '../classes/validator/validators/Validator_D4.php', - 'malkusch\bav\validator_d5' => '../classes/validator/validators/Validator_D5.php', - 'malkusch\bav\validator_d6' => '../classes/validator/validators/Validator_D6.php', - 'malkusch\bav\validator_d7' => '../classes/validator/validators/Validator_D7.php', - 'malkusch\bav\validator_d8' => '../classes/validator/validators/Validator_D8.php', - 'malkusch\bav\validator_d9' => '../classes/validator/validators/Validator_D9.php', - 'malkusch\bav\validator_e0' => '../classes/validator/validators/Validator_E0.php', - 'malkusch\bav\validator_e1' => '../classes/validator/validators/Validator_E1.php', + 'malkusch\bav\validator51x' => '../classes/validator/validators/Validator51x.php', + 'malkusch\bav\validator69b' => '../classes/validator/validators/Validator69b.php', + 'malkusch\bav\validator77a' => '../classes/validator/validators/Validator77a.php', + 'malkusch\bav\validator83x' => '../classes/validator/validators/Validator83x.php', + 'malkusch\bav\validator84b' => '../classes/validator/validators/Validator84b.php', + 'malkusch\bav\validator87a' => '../classes/validator/validators/Validator87a.php', + 'malkusch\bav\validator87c' => '../classes/validator/validators/Validator87c.php', + 'malkusch\bav\validator90c' => '../classes/validator/validators/Validator90c.php', + 'malkusch\bav\validator90d' => '../classes/validator/validators/Validator90d.php', + 'malkusch\bav\validator90e' => '../classes/validator/validators/Validator90e.php', + 'malkusch\bav\validator90g' => '../classes/validator/validators/Validator90g.php', + 'malkusch\bav\validatora4b' => '../classes/validator/validators/ValidatorA4b.php', + 'malkusch\bav\validatorb9a' => '../classes/validator/validators/ValidatorB9a.php', + 'malkusch\bav\validatorb9b' => '../classes/validator/validators/ValidatorB9b.php', + 'malkusch\bav\validatorc1b' => '../classes/validator/validators/ValidatorC1b.php', 'malkusch\bav\verifyimport' => '../classes/verify/VerifyImport.php', 'malkusch\bav\configuration' => '../classes/configuration/Configuration.php', 'malkusch\bav\logupdateplan' => '../classes/dataBackend/update/LogUpdatePlan.php', - 'malkusch\bav\validator_51x' => '../classes/validator/validators/Validator_51x.php', - 'malkusch\bav\validator_69b' => '../classes/validator/validators/Validator_69b.php', - 'malkusch\bav\validator_77a' => '../classes/validator/validators/Validator_77a.php', - 'malkusch\bav\validator_83x' => '../classes/validator/validators/Validator_83x.php', - 'malkusch\bav\validator_84b' => '../classes/validator/validators/Validator_84b.php', - 'malkusch\bav\validator_87a' => '../classes/validator/validators/Validator_87a.php', - 'malkusch\bav\validator_87c' => '../classes/validator/validators/Validator_87c.php', - 'malkusch\bav\validator_90c' => '../classes/validator/validators/Validator_90c.php', - 'malkusch\bav\validator_90d' => '../classes/validator/validators/Validator_90d.php', - 'malkusch\bav\validator_90e' => '../classes/validator/validators/Validator_90e.php', - 'malkusch\bav\validator_90g' => '../classes/validator/validators/Validator_90g.php', - 'malkusch\bav\validator_a4b' => '../classes/validator/validators/Validator_A4b.php', - 'malkusch\bav\validator_b9a' => '../classes/validator/validators/Validator_B9a.php', - 'malkusch\bav\validator_b9b' => '../classes/validator/validators/Validator_B9b.php', - 'malkusch\bav\validator_c1b' => '../classes/validator/validators/Validator_C1b.php', 'malkusch\bav\encoding_iconv' => '../classes/encoding/Encoding_Iconv.php', + 'malkusch\bav\validatorchain' => '../classes/validator/ValidatorChain.php', 'malkusch\bav\agencyexception' => '../classes/bank/exception/AgencyException.php', 'malkusch\bav\databackend_pdo' => '../classes/dataBackend/pdo/DataBackend_PDO.php', - 'malkusch\bav\validator_chain' => '../classes/validator/Validator_Chain.php', 'malkusch\bav\verifyexception' => '../classes/verify/exception/VerifyException.php', 'malkusch\bav\databackend_file' => '../classes/dataBackend/file/DataBackend_File.php', 'malkusch\bav\encoding_iso8859' => '../classes/encoding/Encoding_ISO8859.php', 'malkusch\bav\fileparsercontext' => '../classes/dataBackend/file/fileParser/FileParserContext.php', 'malkusch\bav\encodingexception' => '../classes/encoding/exception/EncodingException.php', + 'malkusch\bav\validatoriteration' => '../classes/validator/ValidatorIteration.php', 'malkusch\bav\validatorexception' => '../classes/validator/exception/ValidatorException.php', 'malkusch\bav\verifyexception_io' => '../classes/verify/exception/VerifyException_IO.php', 'malkusch\bav\fileparserexception' => '../classes/dataBackend/file/fileParser/exception/FileParserException.php', 'malkusch\bav\automaticupdateplan' => '../classes/dataBackend/update/AutomaticUpdatePlan.php', - 'malkusch\bav\validator_iteration' => '../classes/validator/Validator_Iteration.php', 'malkusch\bav\defaultconfiguration' => '../classes/configuration/DefaultConfiguration.php', 'malkusch\bav\databackendcontainer' => '../classes/dataBackend/DataBackendContainer.php', 'malkusch\bav\databackendexception' => '../classes/dataBackend/exception/DataBackendException.php', 'malkusch\bav\configurationregistry' => '../classes/configuration/ConfigurationRegistry.php', 'malkusch\bav\configurationexception' => '../classes/configuration/ConfigurationException.php', 'malkusch\bav\fileparserexception_io' => '../classes/dataBackend/file/fileParser/exception/FileParserException_IO.php', + 'malkusch\bav\validatorbankdependent' => '../classes/validator/ValidatorBankDependent.php', 'malkusch\bav\databackendexception_io' => '../classes/dataBackend/exception/DataBackendException_IO.php', 'malkusch\bav\pdodatabackendcontainer' => '../classes/dataBackend/pdo/PDODataBackendContainer.php', - 'malkusch\bav\validator_bankdependent' => '../classes/validator/Validator_BankDependent.php', 'malkusch\bav\validatorexception_eser' => '../classes/validator/exception/ValidatorException_ESER.php', 'malkusch\bav\filedatabackendcontainer' => '../classes/dataBackend/file/FileDataBackendContainer.php', 'malkusch\bav\fileparsercontextexception' => '../classes/dataBackend/file/fileParser/exception/FileParserContextException.php', - 'malkusch\bav\validator_iteration_weighted' => '../classes/validator/Validator_Iteration_Weighted.php', + 'malkusch\bav\validatoriteration_weighted' => '../classes/validator/ValidatorIteration_Weighted.php', 'malkusch\bav\validatorexception_notexists' => '../classes/validator/exception/ValidatorException_NotExists.php', 'malkusch\bav\encodingexception_unsupported' => '../classes/encoding/exception/EncodingException_Unsupported.php', 'malkusch\bav\fileparserexception_parseerror' => '../classes/dataBackend/file/fileParser/exception/FileParserException_ParseError.php', @@ -217,8 +217,8 @@ 'malkusch\bav\databackendexception_banknotfound' => '../classes/dataBackend/exception/DataBackendException_BankNotFound.php', 'malkusch\bav\databackendexception_nomainagency' => '../classes/dataBackend/exception/DataBackendException_NoMainAgency.php', 'malkusch\bav\fileparserexception_filenotexists' => '../classes/dataBackend/file/fileParser/exception/FileParserException_FileNotExists.php', + 'malkusch\bav\validatoriteration_transformation' => '../classes/validator/ValidatorIteration_Transformation.php', 'malkusch\bav\agencyexception_undefinedattribute' => '../classes/bank/exception/AgencyException_UndefinedAttribute.php', - 'malkusch\bav\validator_iteration_transformation' => '../classes/validator/Validator_Iteration_Transformation.php', 'malkusch\bav\fileparsercontextexception_undefined' => '../classes/dataBackend/file/fileParser/exception/FileParserContextException_Undefined.php', 'malkusch\bav\databackendexception_io_missingattributes' => '../classes/dataBackend/exception/DataBackendException_IO_MissingAttributes.php', ); diff --git a/classes/validator/Validator.php b/classes/validator/Validator.php index b9d10aab..52a7239b 100644 --- a/classes/validator/Validator.php +++ b/classes/validator/Validator.php @@ -71,7 +71,7 @@ public function __construct(Bank $bank) public static function getInstance(Bank $bank) { $type = trim(strtoupper($bank->getValidationType())); - $class = "Validator_$type"; + $class = "Validator$type"; $file = __DIR__."/validators/$class.php"; if (! file_exists($file)) { throw new ValidatorException_NotExists($bank); diff --git a/classes/validator/Validator_BankDependent.php b/classes/validator/ValidatorBankDependent.php similarity index 96% rename from classes/validator/Validator_BankDependent.php rename to classes/validator/ValidatorBankDependent.php index 37730303..0787bc5f 100644 --- a/classes/validator/Validator_BankDependent.php +++ b/classes/validator/ValidatorBankDependent.php @@ -27,7 +27,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -interface Validator_BankDependent +interface ValidatorBankDependent { } diff --git a/classes/validator/Validator_Chain.php b/classes/validator/ValidatorChain.php similarity index 98% rename from classes/validator/Validator_Chain.php rename to classes/validator/ValidatorChain.php index 30f45462..41e59420 100644 --- a/classes/validator/Validator_Chain.php +++ b/classes/validator/ValidatorChain.php @@ -29,7 +29,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class Validator_Chain extends Validator +class ValidatorChain extends Validator { /** diff --git a/classes/validator/Validator_Iteration.php b/classes/validator/ValidatorIteration.php similarity index 98% rename from classes/validator/Validator_Iteration.php rename to classes/validator/ValidatorIteration.php index 1505b7de..3e8e37ac 100644 --- a/classes/validator/Validator_Iteration.php +++ b/classes/validator/ValidatorIteration.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class Validator_Iteration extends Validator +abstract class ValidatorIteration extends Validator { /** diff --git a/classes/validator/Validator_Iteration_Transformation.php b/classes/validator/ValidatorIteration_Transformation.php similarity index 96% rename from classes/validator/Validator_Iteration_Transformation.php rename to classes/validator/ValidatorIteration_Transformation.php index 8682492c..42a5a56b 100644 --- a/classes/validator/Validator_Iteration_Transformation.php +++ b/classes/validator/ValidatorIteration_Transformation.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class Validator_Iteration_Transformation extends Validator_Iteration +abstract class ValidatorIteration_Transformation extends ValidatorIteration { /** diff --git a/classes/validator/Validator_Iteration_Weighted.php b/classes/validator/ValidatorIteration_Weighted.php similarity index 95% rename from classes/validator/Validator_Iteration_Weighted.php rename to classes/validator/ValidatorIteration_Weighted.php index 50482847..c825540a 100644 --- a/classes/validator/Validator_Iteration_Weighted.php +++ b/classes/validator/ValidatorIteration_Weighted.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class Validator_Iteration_Weighted extends Validator_Iteration +abstract class ValidatorIteration_Weighted extends ValidatorIteration { /** diff --git a/classes/validator/validators/Validator_00.php b/classes/validator/validators/Validator00.php similarity index 96% rename from classes/validator/validators/Validator_00.php rename to classes/validator/validators/Validator00.php index 66fe07dd..f316a32e 100644 --- a/classes/validator/validators/Validator_00.php +++ b/classes/validator/validators/Validator00.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_00 extends Validator_Iteration_Weighted +class Validator00 extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_01.php b/classes/validator/validators/Validator01.php similarity index 95% rename from classes/validator/validators/Validator_01.php rename to classes/validator/validators/Validator01.php index dbaacb23..2914d3cf 100644 --- a/classes/validator/validators/Validator_01.php +++ b/classes/validator/validators/Validator01.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_01 extends Validator_Iteration_Weighted +class Validator01 extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_02.php b/classes/validator/validators/Validator02.php similarity index 96% rename from classes/validator/validators/Validator_02.php rename to classes/validator/validators/Validator02.php index 7763bfed..9d7ee486 100644 --- a/classes/validator/validators/Validator_02.php +++ b/classes/validator/validators/Validator02.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_02 extends Validator_Iteration_Weighted +class Validator02 extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_03.php b/classes/validator/validators/Validator03.php similarity index 96% rename from classes/validator/validators/Validator_03.php rename to classes/validator/validators/Validator03.php index 626c40fa..077815f1 100644 --- a/classes/validator/validators/Validator_03.php +++ b/classes/validator/validators/Validator03.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_03 extends Validator_01 +class Validator03 extends Validator01 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_04.php b/classes/validator/validators/Validator04.php similarity index 96% rename from classes/validator/validators/Validator_04.php rename to classes/validator/validators/Validator04.php index 0f8a88f0..4264b3c3 100644 --- a/classes/validator/validators/Validator_04.php +++ b/classes/validator/validators/Validator04.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_04 extends Validator_02 +class Validator04 extends Validator02 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_05.php b/classes/validator/validators/Validator05.php similarity index 96% rename from classes/validator/validators/Validator_05.php rename to classes/validator/validators/Validator05.php index abf4aff5..e192b001 100644 --- a/classes/validator/validators/Validator_05.php +++ b/classes/validator/validators/Validator05.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_05 extends Validator_01 +class Validator05 extends Validator01 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_06.php b/classes/validator/validators/Validator06.php similarity index 96% rename from classes/validator/validators/Validator_06.php rename to classes/validator/validators/Validator06.php index 5cd1e977..88430b7f 100644 --- a/classes/validator/validators/Validator_06.php +++ b/classes/validator/validators/Validator06.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_06 extends Validator_Iteration_Weighted +class Validator06 extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_07.php b/classes/validator/validators/Validator07.php similarity index 96% rename from classes/validator/validators/Validator_07.php rename to classes/validator/validators/Validator07.php index 7de18e2e..2ca71ac1 100644 --- a/classes/validator/validators/Validator_07.php +++ b/classes/validator/validators/Validator07.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_07 extends Validator_02 +class Validator07 extends Validator02 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_08.php b/classes/validator/validators/Validator08.php similarity index 96% rename from classes/validator/validators/Validator_08.php rename to classes/validator/validators/Validator08.php index 4675a367..da632e93 100644 --- a/classes/validator/validators/Validator_08.php +++ b/classes/validator/validators/Validator08.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_08 extends Validator_00 +class Validator08 extends Validator00 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_09.php b/classes/validator/validators/Validator09.php similarity index 96% rename from classes/validator/validators/Validator_09.php rename to classes/validator/validators/Validator09.php index 5f960449..ddd8fbda 100644 --- a/classes/validator/validators/Validator_09.php +++ b/classes/validator/validators/Validator09.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_09 extends Validator +class Validator09 extends Validator { protected function validate() diff --git a/classes/validator/validators/Validator_10.php b/classes/validator/validators/Validator10.php similarity index 96% rename from classes/validator/validators/Validator_10.php rename to classes/validator/validators/Validator10.php index c2e326ab..a6ba929d 100644 --- a/classes/validator/validators/Validator_10.php +++ b/classes/validator/validators/Validator10.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_10 extends Validator_06 +class Validator10 extends Validator06 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_11.php b/classes/validator/validators/Validator11.php similarity index 97% rename from classes/validator/validators/Validator_11.php rename to classes/validator/validators/Validator11.php index 8dac2cec..7b563023 100644 --- a/classes/validator/validators/Validator_11.php +++ b/classes/validator/validators/Validator11.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_11 extends Validator_06 +class Validator11 extends Validator06 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_13.php b/classes/validator/validators/Validator13.php similarity index 97% rename from classes/validator/validators/Validator_13.php rename to classes/validator/validators/Validator13.php index 9809b145..fb5625c1 100644 --- a/classes/validator/validators/Validator_13.php +++ b/classes/validator/validators/Validator13.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_13 extends Validator_00 +class Validator13 extends Validator00 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_14.php b/classes/validator/validators/Validator14.php similarity index 96% rename from classes/validator/validators/Validator_14.php rename to classes/validator/validators/Validator14.php index c6a5227c..f7b85425 100644 --- a/classes/validator/validators/Validator_14.php +++ b/classes/validator/validators/Validator14.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_14 extends Validator_02 +class Validator14 extends Validator02 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_15.php b/classes/validator/validators/Validator15.php similarity index 96% rename from classes/validator/validators/Validator_15.php rename to classes/validator/validators/Validator15.php index 8531bd7e..a47999a5 100644 --- a/classes/validator/validators/Validator_15.php +++ b/classes/validator/validators/Validator15.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_15 extends Validator_06 +class Validator15 extends Validator06 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_16.php b/classes/validator/validators/Validator16.php similarity index 96% rename from classes/validator/validators/Validator_16.php rename to classes/validator/validators/Validator16.php index f5c73a0e..e7b47e37 100644 --- a/classes/validator/validators/Validator_16.php +++ b/classes/validator/validators/Validator16.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_16 extends Validator_06 +class Validator16 extends Validator06 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_17.php b/classes/validator/validators/Validator17.php similarity index 96% rename from classes/validator/validators/Validator_17.php rename to classes/validator/validators/Validator17.php index 3e5bb02f..2827b4f7 100644 --- a/classes/validator/validators/Validator_17.php +++ b/classes/validator/validators/Validator17.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_17 extends Validator_Iteration_Weighted +class Validator17 extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_18.php b/classes/validator/validators/Validator18.php similarity index 96% rename from classes/validator/validators/Validator_18.php rename to classes/validator/validators/Validator18.php index b9cff125..e63faecb 100644 --- a/classes/validator/validators/Validator_18.php +++ b/classes/validator/validators/Validator18.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_18 extends Validator_01 +class Validator18 extends Validator01 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_19.php b/classes/validator/validators/Validator19.php similarity index 96% rename from classes/validator/validators/Validator_19.php rename to classes/validator/validators/Validator19.php index e4c4cb1e..66616ac4 100644 --- a/classes/validator/validators/Validator_19.php +++ b/classes/validator/validators/Validator19.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_19 extends Validator_06 +class Validator19 extends Validator06 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_20.php b/classes/validator/validators/Validator20.php similarity index 96% rename from classes/validator/validators/Validator_20.php rename to classes/validator/validators/Validator20.php index 860710c3..d046f405 100644 --- a/classes/validator/validators/Validator_20.php +++ b/classes/validator/validators/Validator20.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_20 extends Validator_06 +class Validator20 extends Validator06 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_21.php b/classes/validator/validators/Validator21.php similarity index 96% rename from classes/validator/validators/Validator_21.php rename to classes/validator/validators/Validator21.php index 66891b38..f658e638 100644 --- a/classes/validator/validators/Validator_21.php +++ b/classes/validator/validators/Validator21.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_21 extends Validator_00 +class Validator21 extends Validator00 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_22.php b/classes/validator/validators/Validator22.php similarity index 95% rename from classes/validator/validators/Validator_22.php rename to classes/validator/validators/Validator22.php index 99656be3..dc9c75d0 100644 --- a/classes/validator/validators/Validator_22.php +++ b/classes/validator/validators/Validator22.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_22 extends Validator_Iteration_Weighted +class Validator22 extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_23.php b/classes/validator/validators/Validator23.php similarity index 96% rename from classes/validator/validators/Validator_23.php rename to classes/validator/validators/Validator23.php index b0c53314..707bbc0e 100644 --- a/classes/validator/validators/Validator_23.php +++ b/classes/validator/validators/Validator23.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_23 extends Validator_16 +class Validator23 extends Validator16 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_24.php b/classes/validator/validators/Validator24.php similarity index 96% rename from classes/validator/validators/Validator_24.php rename to classes/validator/validators/Validator24.php index c43b02ef..d83d1c75 100644 --- a/classes/validator/validators/Validator_24.php +++ b/classes/validator/validators/Validator24.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_24 extends Validator_Iteration_Weighted +class Validator24 extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_25.php b/classes/validator/validators/Validator25.php similarity index 96% rename from classes/validator/validators/Validator_25.php rename to classes/validator/validators/Validator25.php index d21792a2..7d02e9ce 100644 --- a/classes/validator/validators/Validator_25.php +++ b/classes/validator/validators/Validator25.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_25 extends Validator_Iteration_Weighted +class Validator25 extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_26.php b/classes/validator/validators/Validator26.php similarity index 96% rename from classes/validator/validators/Validator_26.php rename to classes/validator/validators/Validator26.php index f19972ec..bd1f5174 100644 --- a/classes/validator/validators/Validator_26.php +++ b/classes/validator/validators/Validator26.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_26 extends Validator_06 +class Validator26 extends Validator06 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_27.php b/classes/validator/validators/Validator27.php similarity index 92% rename from classes/validator/validators/Validator_27.php rename to classes/validator/validators/Validator27.php index d842ff95..24511ed5 100644 --- a/classes/validator/validators/Validator_27.php +++ b/classes/validator/validators/Validator27.php @@ -21,11 +21,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_27 extends Validator_Iteration_Transformation +class Validator27 extends ValidatorIteration_Transformation { /** - * @var Validator_00 + * @var Validator00 */ private $validator00; @@ -33,7 +33,7 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->validator00 = new Validator_00($bank); + $this->validator00 = new Validator00($bank); $this->setMatrix(array( array(0,1,5,9,3,7,4,8,2,6), diff --git a/classes/validator/validators/Validator_28.php b/classes/validator/validators/Validator28.php similarity index 96% rename from classes/validator/validators/Validator_28.php rename to classes/validator/validators/Validator28.php index 76a783cb..65790fcb 100644 --- a/classes/validator/validators/Validator_28.php +++ b/classes/validator/validators/Validator28.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_28 extends Validator_06 +class Validator28 extends Validator06 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_29.php b/classes/validator/validators/Validator29.php similarity index 95% rename from classes/validator/validators/Validator_29.php rename to classes/validator/validators/Validator29.php index 980f11b1..5de7162e 100644 --- a/classes/validator/validators/Validator_29.php +++ b/classes/validator/validators/Validator29.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_29 extends Validator_Iteration_Transformation +class Validator29 extends ValidatorIteration_Transformation { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_30.php b/classes/validator/validators/Validator30.php similarity index 96% rename from classes/validator/validators/Validator_30.php rename to classes/validator/validators/Validator30.php index dd15bb67..ecc4b9a6 100644 --- a/classes/validator/validators/Validator_30.php +++ b/classes/validator/validators/Validator30.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_30 extends Validator_00 +class Validator30 extends Validator00 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_31.php b/classes/validator/validators/Validator31.php similarity index 96% rename from classes/validator/validators/Validator_31.php rename to classes/validator/validators/Validator31.php index bc3ad08e..135d2728 100644 --- a/classes/validator/validators/Validator_31.php +++ b/classes/validator/validators/Validator31.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_31 extends Validator_Iteration_Weighted +class Validator31 extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_32.php b/classes/validator/validators/Validator32.php similarity index 96% rename from classes/validator/validators/Validator_32.php rename to classes/validator/validators/Validator32.php index cdad1f53..7346ab00 100644 --- a/classes/validator/validators/Validator_32.php +++ b/classes/validator/validators/Validator32.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_32 extends Validator_06 +class Validator32 extends Validator06 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_33.php b/classes/validator/validators/Validator33.php similarity index 96% rename from classes/validator/validators/Validator_33.php rename to classes/validator/validators/Validator33.php index 95cf2477..e32550ea 100644 --- a/classes/validator/validators/Validator_33.php +++ b/classes/validator/validators/Validator33.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_33 extends Validator_06 +class Validator33 extends Validator06 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_34.php b/classes/validator/validators/Validator34.php similarity index 96% rename from classes/validator/validators/Validator_34.php rename to classes/validator/validators/Validator34.php index 42a9249d..c1b919e7 100644 --- a/classes/validator/validators/Validator_34.php +++ b/classes/validator/validators/Validator34.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_34 extends Validator_28 +class Validator34 extends Validator28 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_35.php b/classes/validator/validators/Validator35.php similarity index 96% rename from classes/validator/validators/Validator_35.php rename to classes/validator/validators/Validator35.php index bd21a1d2..54e4106c 100644 --- a/classes/validator/validators/Validator_35.php +++ b/classes/validator/validators/Validator35.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_35 extends Validator_Iteration_Weighted +class Validator35 extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_36.php b/classes/validator/validators/Validator36.php similarity index 96% rename from classes/validator/validators/Validator_36.php rename to classes/validator/validators/Validator36.php index fb2bc0bc..f4254442 100644 --- a/classes/validator/validators/Validator_36.php +++ b/classes/validator/validators/Validator36.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_36 extends Validator_06 +class Validator36 extends Validator06 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_37.php b/classes/validator/validators/Validator37.php similarity index 96% rename from classes/validator/validators/Validator_37.php rename to classes/validator/validators/Validator37.php index 4f56aace..b95dab95 100644 --- a/classes/validator/validators/Validator_37.php +++ b/classes/validator/validators/Validator37.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_37 extends Validator_06 +class Validator37 extends Validator06 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_38.php b/classes/validator/validators/Validator38.php similarity index 96% rename from classes/validator/validators/Validator_38.php rename to classes/validator/validators/Validator38.php index d32a1d8f..ecca7957 100644 --- a/classes/validator/validators/Validator_38.php +++ b/classes/validator/validators/Validator38.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_38 extends Validator_06 +class Validator38 extends Validator06 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_39.php b/classes/validator/validators/Validator39.php similarity index 96% rename from classes/validator/validators/Validator_39.php rename to classes/validator/validators/Validator39.php index 4767e4cd..607ca55f 100644 --- a/classes/validator/validators/Validator_39.php +++ b/classes/validator/validators/Validator39.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_39 extends Validator_06 +class Validator39 extends Validator06 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_40.php b/classes/validator/validators/Validator40.php similarity index 96% rename from classes/validator/validators/Validator_40.php rename to classes/validator/validators/Validator40.php index 8ff74f29..94ff50bf 100644 --- a/classes/validator/validators/Validator_40.php +++ b/classes/validator/validators/Validator40.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_40 extends Validator_06 +class Validator40 extends Validator06 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_41.php b/classes/validator/validators/Validator41.php similarity index 96% rename from classes/validator/validators/Validator_41.php rename to classes/validator/validators/Validator41.php index 9175287b..728330e7 100644 --- a/classes/validator/validators/Validator_41.php +++ b/classes/validator/validators/Validator41.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_41 extends Validator_00 +class Validator41 extends Validator00 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_42.php b/classes/validator/validators/Validator42.php similarity index 96% rename from classes/validator/validators/Validator_42.php rename to classes/validator/validators/Validator42.php index 6d9c6699..77047561 100644 --- a/classes/validator/validators/Validator_42.php +++ b/classes/validator/validators/Validator42.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_42 extends Validator_06 +class Validator42 extends Validator06 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_43.php b/classes/validator/validators/Validator43.php similarity index 95% rename from classes/validator/validators/Validator_43.php rename to classes/validator/validators/Validator43.php index ab821bc0..ed7cfea0 100644 --- a/classes/validator/validators/Validator_43.php +++ b/classes/validator/validators/Validator43.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_43 extends Validator_Iteration_Weighted +class Validator43 extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_44.php b/classes/validator/validators/Validator44.php similarity index 96% rename from classes/validator/validators/Validator_44.php rename to classes/validator/validators/Validator44.php index 25fecde7..45894674 100644 --- a/classes/validator/validators/Validator_44.php +++ b/classes/validator/validators/Validator44.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_44 extends Validator_33 +class Validator44 extends Validator33 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_45.php b/classes/validator/validators/Validator45.php similarity index 96% rename from classes/validator/validators/Validator_45.php rename to classes/validator/validators/Validator45.php index aa09b63a..faf778aa 100644 --- a/classes/validator/validators/Validator_45.php +++ b/classes/validator/validators/Validator45.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_45 extends Validator_00 +class Validator45 extends Validator00 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_46.php b/classes/validator/validators/Validator46.php similarity index 96% rename from classes/validator/validators/Validator_46.php rename to classes/validator/validators/Validator46.php index 1a79453e..acf4952b 100644 --- a/classes/validator/validators/Validator_46.php +++ b/classes/validator/validators/Validator46.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_46 extends Validator_06 +class Validator46 extends Validator06 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_47.php b/classes/validator/validators/Validator47.php similarity index 96% rename from classes/validator/validators/Validator_47.php rename to classes/validator/validators/Validator47.php index d5c75212..be7af272 100644 --- a/classes/validator/validators/Validator_47.php +++ b/classes/validator/validators/Validator47.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_47 extends Validator_06 +class Validator47 extends Validator06 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_48.php b/classes/validator/validators/Validator48.php similarity index 96% rename from classes/validator/validators/Validator_48.php rename to classes/validator/validators/Validator48.php index 06c9f92d..668ace03 100644 --- a/classes/validator/validators/Validator_48.php +++ b/classes/validator/validators/Validator48.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_48 extends Validator_06 +class Validator48 extends Validator06 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_49.php b/classes/validator/validators/Validator49.php similarity index 87% rename from classes/validator/validators/Validator_49.php rename to classes/validator/validators/Validator49.php index 65edde07..09845917 100644 --- a/classes/validator/validators/Validator_49.php +++ b/classes/validator/validators/Validator49.php @@ -27,7 +27,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class Validator_49 extends Validator_Chain +class Validator49 extends ValidatorChain { /** @@ -36,7 +36,7 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new Validator_00($bank); - $this->validators[] = new Validator_01($bank); + $this->validators[] = new Validator00($bank); + $this->validators[] = new Validator01($bank); } } diff --git a/classes/validator/validators/Validator_50.php b/classes/validator/validators/Validator50.php similarity index 97% rename from classes/validator/validators/Validator_50.php rename to classes/validator/validators/Validator50.php index ecbfad41..a001592a 100644 --- a/classes/validator/validators/Validator_50.php +++ b/classes/validator/validators/Validator50.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_50 extends Validator_06 +class Validator50 extends Validator06 { public function isValid($account) diff --git a/classes/validator/validators/Validator_51.php b/classes/validator/validators/Validator51.php similarity index 86% rename from classes/validator/validators/Validator_51.php rename to classes/validator/validators/Validator51.php index 52e9d212..276142fb 100644 --- a/classes/validator/validators/Validator_51.php +++ b/classes/validator/validators/Validator51.php @@ -27,7 +27,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class Validator_51 extends Validator_Chain +class Validator51 extends ValidatorChain { /** @@ -41,7 +41,7 @@ class Validator_51 extends Validator_Chain private $exceptionValidators = array(); /** - * @var Validator_33 + * @var Validator33 */ private $validatorD; @@ -49,20 +49,20 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->defaultValidators[0] = new Validator_06($this->bank); + $this->defaultValidators[0] = new Validator06($this->bank); $this->defaultValidators[0]->setWeights(array(2, 3, 4, 5, 6, 7)); $this->defaultValidators[0]->setEnd(3); - $this->defaultValidators[1] = new Validator_33($this->bank); + $this->defaultValidators[1] = new Validator33($this->bank); $this->defaultValidators[1]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators[1]->setEnd(4); - $this->defaultValidators[2] = new Validator_00($this->bank); + $this->defaultValidators[2] = new Validator00($this->bank); $this->defaultValidators[2]->setWeights(array(2, 1)); $this->defaultValidators[2]->setEnd(3); $this->defaultValidators[2]->setDivisor(10); - $this->validatorD = new Validator_33($this->bank); + $this->validatorD = new Validator33($this->bank); $this->defaultValidators[3] = $this->validatorD; $this->defaultValidators[3]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators[3]->setEnd(4); @@ -77,8 +77,8 @@ public function __construct(Bank $bank) public static function getExceptionValidators(Bank $bank) { $exceptionValidators = array(); - $exceptionValidators[] = new Validator_51x($bank); - $exceptionValidators[] = new Validator_51x($bank); + $exceptionValidators[] = new Validator51x($bank); + $exceptionValidators[] = new Validator51x($bank); $exceptionValidators[1]->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 10)); $exceptionValidators[1]->setEnd(0); diff --git a/classes/validator/validators/Validator_51x.php b/classes/validator/validators/Validator51x.php similarity index 96% rename from classes/validator/validators/Validator_51x.php rename to classes/validator/validators/Validator51x.php index 62dd0e81..cec0b8f9 100644 --- a/classes/validator/validators/Validator_51x.php +++ b/classes/validator/validators/Validator51x.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_51x extends Validator_Iteration_Weighted +class Validator51x extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_52.php b/classes/validator/validators/Validator52.php similarity index 92% rename from classes/validator/validators/Validator_52.php rename to classes/validator/validators/Validator52.php index 4be7f010..7bdd5fce 100644 --- a/classes/validator/validators/Validator_52.php +++ b/classes/validator/validators/Validator52.php @@ -21,11 +21,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_52 extends Validator_Iteration_Weighted implements Validator_BankDependent +class Validator52 extends ValidatorIteration_Weighted implements ValidatorBankDependent { /** - * @var Validator_20 + * @var Validator20 */ private $validator20; @@ -43,7 +43,7 @@ public function __construct(Bank $bank) $this->setEnd(0); $this->setChecknumberPosition(5); - $this->validator20 = new Validator_20($bank); + $this->validator20 = new Validator20($bank); } public function isValid($account) diff --git a/classes/validator/validators/Validator_53.php b/classes/validator/validators/Validator53.php similarity index 95% rename from classes/validator/validators/Validator_53.php rename to classes/validator/validators/Validator53.php index 7dc9239a..d8d5356e 100644 --- a/classes/validator/validators/Validator_53.php +++ b/classes/validator/validators/Validator53.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_53 extends Validator_52 +class Validator53 extends Validator52 { protected function normalizeAccount($size) diff --git a/classes/validator/validators/Validator_54.php b/classes/validator/validators/Validator54.php similarity index 95% rename from classes/validator/validators/Validator_54.php rename to classes/validator/validators/Validator54.php index 18753486..f59ea21b 100644 --- a/classes/validator/validators/Validator_54.php +++ b/classes/validator/validators/Validator54.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_54 extends Validator_Iteration_Weighted +class Validator54 extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_55.php b/classes/validator/validators/Validator55.php similarity index 96% rename from classes/validator/validators/Validator_55.php rename to classes/validator/validators/Validator55.php index 036f9547..6e5865df 100644 --- a/classes/validator/validators/Validator_55.php +++ b/classes/validator/validators/Validator55.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_55 extends Validator_06 +class Validator55 extends Validator06 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_56.php b/classes/validator/validators/Validator56.php similarity index 96% rename from classes/validator/validators/Validator_56.php rename to classes/validator/validators/Validator56.php index d744255c..05e4d61e 100644 --- a/classes/validator/validators/Validator_56.php +++ b/classes/validator/validators/Validator56.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_56 extends Validator_Iteration_Weighted +class Validator56 extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_57.php b/classes/validator/validators/Validator57.php similarity index 94% rename from classes/validator/validators/Validator_57.php rename to classes/validator/validators/Validator57.php index 9816e698..28adfec3 100644 --- a/classes/validator/validators/Validator_57.php +++ b/classes/validator/validators/Validator57.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_57 extends Validator +class Validator57 extends Validator { /** @@ -30,7 +30,7 @@ class Validator_57 extends Validator private $validator; /** - * @var Validator_09 + * @var Validator09 */ private $validator09; @@ -41,13 +41,13 @@ class Validator_57 extends Validator /** * @private - * @var Validator_00 + * @var Validator00 */ private $mode1; /** * @private - * @var Validator_00 + * @var Validator00 */ private $mode2; @@ -55,15 +55,15 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->validator09 = new Validator_09($bank); + $this->validator09 = new Validator09($bank); - $this->mode1 = new Validator_00($bank); + $this->mode1 = new Validator00($bank); $this->mode1->setWeights(array(1, 2)); $this->mode1->setStart(0); $this->mode1->setEnd(-2); - $this->mode2 = new Validator_00($bank); + $this->mode2 = new Validator00($bank); $this->mode2->setWeights(array(1, 2, 0, 1, 2, 1, 2, 1, 2, 1)); $this->mode2->setChecknumberPosition(2); $this->mode2->setStart(0); diff --git a/classes/validator/validators/Validator_58.php b/classes/validator/validators/Validator58.php similarity index 96% rename from classes/validator/validators/Validator_58.php rename to classes/validator/validators/Validator58.php index d7badb7c..ad1d5fb2 100644 --- a/classes/validator/validators/Validator_58.php +++ b/classes/validator/validators/Validator58.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_58 extends Validator_02 +class Validator58 extends Validator02 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_59.php b/classes/validator/validators/Validator59.php similarity index 96% rename from classes/validator/validators/Validator_59.php rename to classes/validator/validators/Validator59.php index 5b673532..f4c1803a 100644 --- a/classes/validator/validators/Validator_59.php +++ b/classes/validator/validators/Validator59.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_59 extends Validator_00 +class Validator59 extends Validator00 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_60.php b/classes/validator/validators/Validator60.php similarity index 96% rename from classes/validator/validators/Validator_60.php rename to classes/validator/validators/Validator60.php index 33b35c1d..3e5ff98f 100644 --- a/classes/validator/validators/Validator_60.php +++ b/classes/validator/validators/Validator60.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_60 extends Validator_00 +class Validator60 extends Validator00 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_61.php b/classes/validator/validators/Validator61.php similarity index 96% rename from classes/validator/validators/Validator_61.php rename to classes/validator/validators/Validator61.php index 2aac9a9b..66a53777 100644 --- a/classes/validator/validators/Validator_61.php +++ b/classes/validator/validators/Validator61.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_61 extends Validator_Iteration_Weighted +class Validator61 extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_62.php b/classes/validator/validators/Validator62.php similarity index 96% rename from classes/validator/validators/Validator_62.php rename to classes/validator/validators/Validator62.php index 471c7b56..1ec9df84 100644 --- a/classes/validator/validators/Validator_62.php +++ b/classes/validator/validators/Validator62.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_62 extends Validator_Iteration_Weighted +class Validator62 extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_63.php b/classes/validator/validators/Validator63.php similarity index 96% rename from classes/validator/validators/Validator_63.php rename to classes/validator/validators/Validator63.php index 32f3cc10..39a7bfcf 100644 --- a/classes/validator/validators/Validator_63.php +++ b/classes/validator/validators/Validator63.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_63 extends Validator_Iteration_Weighted +class Validator63 extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_64.php b/classes/validator/validators/Validator64.php similarity index 96% rename from classes/validator/validators/Validator_64.php rename to classes/validator/validators/Validator64.php index bc5ba68f..22616dfc 100644 --- a/classes/validator/validators/Validator_64.php +++ b/classes/validator/validators/Validator64.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_64 extends Validator_06 +class Validator64 extends Validator06 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_65.php b/classes/validator/validators/Validator65.php similarity index 96% rename from classes/validator/validators/Validator_65.php rename to classes/validator/validators/Validator65.php index b9750332..14c10247 100644 --- a/classes/validator/validators/Validator_65.php +++ b/classes/validator/validators/Validator65.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_65 extends Validator_00 +class Validator65 extends Validator00 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_66.php b/classes/validator/validators/Validator66.php similarity index 96% rename from classes/validator/validators/Validator_66.php rename to classes/validator/validators/Validator66.php index 539c8f1d..6de90d2d 100644 --- a/classes/validator/validators/Validator_66.php +++ b/classes/validator/validators/Validator66.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_66 extends Validator_Iteration_Weighted +class Validator66 extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_67.php b/classes/validator/validators/Validator67.php similarity index 96% rename from classes/validator/validators/Validator_67.php rename to classes/validator/validators/Validator67.php index 019cac3c..4c521483 100644 --- a/classes/validator/validators/Validator_67.php +++ b/classes/validator/validators/Validator67.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_67 extends Validator_00 +class Validator67 extends Validator00 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_68.php b/classes/validator/validators/Validator68.php similarity index 88% rename from classes/validator/validators/Validator_68.php rename to classes/validator/validators/Validator68.php index 8086411c..779052b3 100644 --- a/classes/validator/validators/Validator_68.php +++ b/classes/validator/validators/Validator68.php @@ -27,11 +27,11 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class Validator_68 extends Validator_Chain +class Validator68 extends ValidatorChain { /** - * @var Validator_10 + * @var Validator10 */ private $validator10; @@ -39,12 +39,12 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->validator10 = new Validator_00($bank); + $this->validator10 = new Validator00($bank); $this->validator10->setEnd(3); - $this->validators[] = new Validator_00($bank); + $this->validators[] = new Validator00($bank); - $this->validators[] = new Validator_00($bank); + $this->validators[] = new Validator00($bank); $this->validators[1]->setWeights(array(2, 1, 2, 1, 2, 0, 0, 1)); } diff --git a/classes/validator/validators/Validator_69.php b/classes/validator/validators/Validator69.php similarity index 91% rename from classes/validator/validators/Validator_69.php rename to classes/validator/validators/Validator69.php index 8febec7b..778774ae 100644 --- a/classes/validator/validators/Validator_69.php +++ b/classes/validator/validators/Validator69.php @@ -27,17 +27,17 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class Validator_69 extends Validator_Chain +class Validator69 extends ValidatorChain { public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new Validator_28($bank); + $this->validators[] = new Validator28($bank); $this->validators[0]->setWeights(array(2, 3, 4, 5, 6, 7, 8)); - $this->validators[] = new Validator_69b($bank); + $this->validators[] = new Validator69b($bank); } public function isValid($account) diff --git a/classes/validator/validators/Validator_69b.php b/classes/validator/validators/Validator69b.php similarity index 95% rename from classes/validator/validators/Validator_69b.php rename to classes/validator/validators/Validator69b.php index 6b18afd1..9d116363 100644 --- a/classes/validator/validators/Validator_69b.php +++ b/classes/validator/validators/Validator69b.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_69b extends Validator_Iteration_Transformation +class Validator69b extends ValidatorIteration_Transformation { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_70.php b/classes/validator/validators/Validator70.php similarity index 96% rename from classes/validator/validators/Validator_70.php rename to classes/validator/validators/Validator70.php index 01906ea8..b55d4fb7 100644 --- a/classes/validator/validators/Validator_70.php +++ b/classes/validator/validators/Validator70.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_70 extends Validator_06 +class Validator70 extends Validator06 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_71.php b/classes/validator/validators/Validator71.php similarity index 96% rename from classes/validator/validators/Validator_71.php rename to classes/validator/validators/Validator71.php index e1fa3ee0..2b4eb745 100644 --- a/classes/validator/validators/Validator_71.php +++ b/classes/validator/validators/Validator71.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_71 extends Validator_Iteration_Weighted +class Validator71 extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_72.php b/classes/validator/validators/Validator72.php similarity index 96% rename from classes/validator/validators/Validator_72.php rename to classes/validator/validators/Validator72.php index 00987891..144d82b2 100644 --- a/classes/validator/validators/Validator_72.php +++ b/classes/validator/validators/Validator72.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_72 extends Validator_00 +class Validator72 extends Validator00 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_73.php b/classes/validator/validators/Validator73.php similarity index 84% rename from classes/validator/validators/Validator_73.php rename to classes/validator/validators/Validator73.php index 7bc6a261..82a46c49 100644 --- a/classes/validator/validators/Validator_73.php +++ b/classes/validator/validators/Validator73.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_73 extends Validator_Chain +class Validator73 extends ValidatorChain { /** @@ -38,19 +38,19 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->defaultValidators[] = new Validator_00($bank); + $this->defaultValidators[] = new Validator00($bank); $this->defaultValidators[0]->setEnd(3); - $this->defaultValidators[] = new Validator_00($bank); + $this->defaultValidators[] = new Validator00($bank); $this->defaultValidators[1]->setWeights(array(2, 1)); $this->defaultValidators[1]->setEnd(4); - $this->defaultValidators[] = new Validator_00($bank); + $this->defaultValidators[] = new Validator00($bank); $this->defaultValidators[2]->setWeights(array(2, 1)); $this->defaultValidators[2]->setDivisor(7); $this->defaultValidators[2]->setEnd(4); - $this->exceptionValidators = Validator_51::getExceptionValidators($bank); + $this->exceptionValidators = Validator51::getExceptionValidators($bank); } /** diff --git a/classes/validator/validators/Validator_74.php b/classes/validator/validators/Validator74.php similarity index 97% rename from classes/validator/validators/Validator_74.php rename to classes/validator/validators/Validator74.php index b2bbf069..6700f93c 100644 --- a/classes/validator/validators/Validator_74.php +++ b/classes/validator/validators/Validator74.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_74 extends Validator_00 +class Validator74 extends Validator00 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_75.php b/classes/validator/validators/Validator75.php similarity index 97% rename from classes/validator/validators/Validator_75.php rename to classes/validator/validators/Validator75.php index 580df9ac..a659ed8a 100644 --- a/classes/validator/validators/Validator_75.php +++ b/classes/validator/validators/Validator75.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_75 extends Validator_00 +class Validator75 extends Validator00 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_76.php b/classes/validator/validators/Validator76.php similarity index 96% rename from classes/validator/validators/Validator_76.php rename to classes/validator/validators/Validator76.php index f408f741..ade59fc8 100644 --- a/classes/validator/validators/Validator_76.php +++ b/classes/validator/validators/Validator76.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_76 extends Validator_Iteration_Weighted +class Validator76 extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_77.php b/classes/validator/validators/Validator77.php similarity index 87% rename from classes/validator/validators/Validator_77.php rename to classes/validator/validators/Validator77.php index 911b84b1..bf7d5c0f 100644 --- a/classes/validator/validators/Validator_77.php +++ b/classes/validator/validators/Validator77.php @@ -21,17 +21,17 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_77 extends Validator_Chain +class Validator77 extends ValidatorChain { public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new Validator_77a($bank); + $this->validators[] = new Validator77a($bank); $this->validators[0]->setWeights(array(1, 2, 3, 4, 5)); - $this->validators[] = new Validator_77a($bank); + $this->validators[] = new Validator77a($bank); $this->validators[1]->setWeights(array(5, 4, 3, 4, 5)); } } diff --git a/classes/validator/validators/Validator_77a.php b/classes/validator/validators/Validator77a.php similarity index 95% rename from classes/validator/validators/Validator_77a.php rename to classes/validator/validators/Validator77a.php index c1e7796e..5c210db5 100644 --- a/classes/validator/validators/Validator_77a.php +++ b/classes/validator/validators/Validator77a.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_77a extends Validator_Iteration_Weighted +class Validator77a extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_78.php b/classes/validator/validators/Validator78.php similarity index 96% rename from classes/validator/validators/Validator_78.php rename to classes/validator/validators/Validator78.php index 5ab70969..ff5027c7 100644 --- a/classes/validator/validators/Validator_78.php +++ b/classes/validator/validators/Validator78.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_78 extends Validator_00 +class Validator78 extends Validator00 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_79.php b/classes/validator/validators/Validator79.php similarity index 90% rename from classes/validator/validators/Validator_79.php rename to classes/validator/validators/Validator79.php index b2ce8261..e26040d6 100644 --- a/classes/validator/validators/Validator_79.php +++ b/classes/validator/validators/Validator79.php @@ -25,21 +25,21 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class Validator_79 extends Validator +class Validator79 extends Validator { /** - * @var Validator_00 + * @var Validator00 */ private $validator; /** - * @var Validator_00 + * @var Validator00 */ private $mode1; /** - * @var Validator_00 + * @var Validator00 */ private $mode2; @@ -47,8 +47,8 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new Validator_00($bank); - $this->mode2 = new Validator_00($bank); + $this->mode1 = new Validator00($bank); + $this->mode2 = new Validator00($bank); $this->mode2->setStart(-3); $this->mode2->setChecknumberPosition(-2); } diff --git a/classes/validator/validators/Validator_80.php b/classes/validator/validators/Validator80.php similarity index 85% rename from classes/validator/validators/Validator_80.php rename to classes/validator/validators/Validator80.php index f513aeae..e852e934 100644 --- a/classes/validator/validators/Validator_80.php +++ b/classes/validator/validators/Validator80.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_80 extends Validator_Chain +class Validator80 extends ValidatorChain { /** @@ -38,14 +38,14 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->defaultValidators[] = new Validator_00($bank); + $this->defaultValidators[] = new Validator00($bank); $this->defaultValidators[0]->setEnd(4); - $this->defaultValidators[] = new Validator_00($bank); + $this->defaultValidators[] = new Validator00($bank); $this->defaultValidators[1]->setEnd(4); $this->defaultValidators[1]->setDivisor(7); - $this->exceptionValidators = Validator_51::getExceptionValidators($bank); + $this->exceptionValidators = Validator51::getExceptionValidators($bank); } /** diff --git a/classes/validator/validators/Validator_81.php b/classes/validator/validators/Validator81.php similarity index 88% rename from classes/validator/validators/Validator_81.php rename to classes/validator/validators/Validator81.php index 6d1e7644..fd4ae39d 100644 --- a/classes/validator/validators/Validator_81.php +++ b/classes/validator/validators/Validator81.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_81 extends Validator_Chain +class Validator81 extends ValidatorChain { /** @@ -38,10 +38,10 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->defaultValidators[] = new Validator_32($bank); + $this->defaultValidators[] = new Validator32($bank); $this->defaultValidators[0]->setWeights(array(2, 3, 4, 5, 6, 7)); - $this->exceptionValidators = Validator_51::getExceptionValidators($bank); + $this->exceptionValidators = Validator51::getExceptionValidators($bank); } /** diff --git a/classes/validator/validators/Validator_82.php b/classes/validator/validators/Validator82.php similarity index 89% rename from classes/validator/validators/Validator_82.php rename to classes/validator/validators/Validator82.php index ac0d839b..c28ed9fa 100644 --- a/classes/validator/validators/Validator_82.php +++ b/classes/validator/validators/Validator82.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class Validator_82 extends Validator +class Validator82 extends Validator { /** @@ -34,12 +34,12 @@ class Validator_82 extends Validator private $validator; /** - * @var Validator_33 + * @var Validator33 */ private $mode1; /** - * @var Validator_10 + * @var Validator10 */ private $mode2; @@ -47,10 +47,10 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new Validator_33($bank); + $this->mode1 = new Validator33($bank); $this->mode1->setWeights(array(2, 3, 4, 5, 6)); - $this->mode2 = new Validator_10($bank); + $this->mode2 = new Validator10($bank); } protected function validate() diff --git a/classes/validator/validators/Validator_83.php b/classes/validator/validators/Validator83.php similarity index 86% rename from classes/validator/validators/Validator_83.php rename to classes/validator/validators/Validator83.php index f371da34..1fd435c2 100644 --- a/classes/validator/validators/Validator_83.php +++ b/classes/validator/validators/Validator83.php @@ -21,11 +21,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_83 extends Validator_Chain +class Validator83 extends ValidatorChain { /** - * @var Validator_33 + * @var Validator33 */ private $modeC; @@ -43,21 +43,21 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->defaultValidators[] = new Validator_32($bank); + $this->defaultValidators[] = new Validator32($bank); $this->defaultValidators[0]->setWeights(array(2, 3, 4, 5, 6, 7)); $this->defaultValidators[0]->setEnd(3); - $this->defaultValidators[] = new Validator_33($bank); + $this->defaultValidators[] = new Validator33($bank); $this->defaultValidators[1]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators[1]->setEnd(4); - $this->modeC = new Validator_33($bank); + $this->modeC = new Validator33($bank); $this->defaultValidators[] = $this->modeC; $this->defaultValidators[2]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators[2]->setEnd(4); $this->defaultValidators[2]->setDivisor(7); - $this->exceptionValidators[] = new Validator_83x($bank); + $this->exceptionValidators[] = new Validator83x($bank); } /** diff --git a/classes/validator/validators/Validator_83x.php b/classes/validator/validators/Validator83x.php similarity index 96% rename from classes/validator/validators/Validator_83x.php rename to classes/validator/validators/Validator83x.php index 9ad5052f..8108b989 100644 --- a/classes/validator/validators/Validator_83x.php +++ b/classes/validator/validators/Validator83x.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_83x extends Validator_Iteration_Weighted +class Validator83x extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_84.php b/classes/validator/validators/Validator84.php similarity index 84% rename from classes/validator/validators/Validator_84.php rename to classes/validator/validators/Validator84.php index ea357fe8..4824949d 100644 --- a/classes/validator/validators/Validator_84.php +++ b/classes/validator/validators/Validator84.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_84 extends Validator_Chain +class Validator84 extends ValidatorChain { /** @@ -38,19 +38,19 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->defaultValidators[0] = new Validator_33($bank); + $this->defaultValidators[0] = new Validator33($bank); $this->defaultValidators[0]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators[0]->setEnd(4); - $this->defaultValidators[1] = new Validator_84b($bank); + $this->defaultValidators[1] = new Validator84b($bank); // Bundesbank update 2013-06-03 - $this->defaultValidators[2] = new Validator_06($bank); + $this->defaultValidators[2] = new Validator06($bank); $this->defaultValidators[2]->setWeights(array(2, 1)); $this->defaultValidators[2]->setEnd(4); $this->defaultValidators[2]->setDivisor(10); - $this->exceptionValidators = Validator_51::getExceptionValidators($bank); + $this->exceptionValidators = Validator51::getExceptionValidators($bank); } /** diff --git a/classes/validator/validators/Validator_84b.php b/classes/validator/validators/Validator84b.php similarity index 95% rename from classes/validator/validators/Validator_84b.php rename to classes/validator/validators/Validator84b.php index 350f76b4..42f40226 100644 --- a/classes/validator/validators/Validator_84b.php +++ b/classes/validator/validators/Validator84b.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_84b extends Validator_Iteration_Weighted +class Validator84b extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_85.php b/classes/validator/validators/Validator85.php similarity index 87% rename from classes/validator/validators/Validator_85.php rename to classes/validator/validators/Validator85.php index cc6f247e..69b8d44a 100644 --- a/classes/validator/validators/Validator_85.php +++ b/classes/validator/validators/Validator85.php @@ -21,11 +21,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_85 extends Validator_Chain +class Validator85 extends ValidatorChain { /** - * @var Validator_33 + * @var Validator33 */ private $modeC; @@ -43,21 +43,21 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->defaultValidators[] = new Validator_06($bank); + $this->defaultValidators[] = new Validator06($bank); $this->defaultValidators[0]->setWeights(array(2, 3, 4, 5, 6, 7)); $this->defaultValidators[0]->setEnd(3); - $this->defaultValidators[] = new Validator_33($bank); + $this->defaultValidators[] = new Validator33($bank); $this->defaultValidators[1]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators[1]->setEnd(4); - $this->modeC = new Validator_33($bank); + $this->modeC = new Validator33($bank); $this->defaultValidators[] = $this->modeC; $this->defaultValidators[2]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators[2]->setEnd(4); $this->defaultValidators[2]->setDivisor(7); - $this->exceptionValidators[] = new Validator_02($bank); + $this->exceptionValidators[] = new Validator02($bank); $this->exceptionValidators[0]->setWeights(array(2, 3, 4, 5, 6, 7, 8)); $this->exceptionValidators[0]->setEnd(2); } diff --git a/classes/validator/validators/Validator_86.php b/classes/validator/validators/Validator86.php similarity index 86% rename from classes/validator/validators/Validator_86.php rename to classes/validator/validators/Validator86.php index 169ccd9f..082518bb 100644 --- a/classes/validator/validators/Validator_86.php +++ b/classes/validator/validators/Validator86.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_86 extends Validator_Chain +class Validator86 extends ValidatorChain { /** @@ -38,15 +38,15 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->defaultValidators[] = new Validator_00($bank); + $this->defaultValidators[] = new Validator00($bank); $this->defaultValidators[0]->setWeights(array(2, 1)); $this->defaultValidators[0]->setEnd(3); - $this->defaultValidators[] = new Validator_32($bank); + $this->defaultValidators[] = new Validator32($bank); $this->defaultValidators[1]->setWeights(array(2, 3, 4, 5, 6, 7)); $this->defaultValidators[1]->setEnd(3); - $this->exceptionValidators = Validator_51::getExceptionValidators($bank); + $this->exceptionValidators = Validator51::getExceptionValidators($bank); } /** diff --git a/classes/validator/validators/Validator_87.php b/classes/validator/validators/Validator87.php similarity index 82% rename from classes/validator/validators/Validator_87.php rename to classes/validator/validators/Validator87.php index 2d05115c..c3e0fbcc 100644 --- a/classes/validator/validators/Validator_87.php +++ b/classes/validator/validators/Validator87.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_87 extends Validator_Chain +class Validator87 extends ValidatorChain { /** @@ -38,15 +38,15 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->defaultValidators[] = new Validator_87a($bank); + $this->defaultValidators[] = new Validator87a($bank); - $this->defaultValidators[] = new Validator_33($bank); + $this->defaultValidators[] = new Validator33($bank); $this->defaultValidators[1]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators[1]->setEnd(4); - $this->defaultValidators[] = new Validator_87c($bank); + $this->defaultValidators[] = new Validator87c($bank); - $this->exceptionValidators = Validator_51::getExceptionValidators($bank); + $this->exceptionValidators = Validator51::getExceptionValidators($bank); } /** diff --git a/classes/validator/validators/Validator_87a.php b/classes/validator/validators/Validator87a.php similarity index 99% rename from classes/validator/validators/Validator_87a.php rename to classes/validator/validators/Validator87a.php index e112e5af..b34bf8ec 100644 --- a/classes/validator/validators/Validator_87a.php +++ b/classes/validator/validators/Validator87a.php @@ -27,7 +27,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class Validator_87a extends Validator +class Validator87a extends Validator { protected function validate() diff --git a/classes/validator/validators/Validator_87c.php b/classes/validator/validators/Validator87c.php similarity index 95% rename from classes/validator/validators/Validator_87c.php rename to classes/validator/validators/Validator87c.php index 608214dc..c4de2547 100644 --- a/classes/validator/validators/Validator_87c.php +++ b/classes/validator/validators/Validator87c.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_87c extends Validator_Iteration_Weighted +class Validator87c extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_88.php b/classes/validator/validators/Validator88.php similarity index 96% rename from classes/validator/validators/Validator_88.php rename to classes/validator/validators/Validator88.php index f713e7d4..19f4bc33 100644 --- a/classes/validator/validators/Validator_88.php +++ b/classes/validator/validators/Validator88.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_88 extends Validator_06 +class Validator88 extends Validator06 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_89.php b/classes/validator/validators/Validator89.php similarity index 92% rename from classes/validator/validators/Validator_89.php rename to classes/validator/validators/Validator89.php index f9af0f1f..45654c8e 100644 --- a/classes/validator/validators/Validator_89.php +++ b/classes/validator/validators/Validator89.php @@ -21,11 +21,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_89 extends Validator_06 +class Validator89 extends Validator06 { /** - * @var Validator_10 + * @var Validator10 */ private $validator10; @@ -36,7 +36,7 @@ public function __construct(Bank $bank) $this->setWeights(array(2, 3, 4, 5, 6, 7)); $this->setEnd(3); - $this->validator10 = new Validator_10($bank); + $this->validator10 = new Validator10($bank); } protected function iterationStep() diff --git a/classes/validator/validators/Validator_90.php b/classes/validator/validators/Validator90.php similarity index 77% rename from classes/validator/validators/Validator_90.php rename to classes/validator/validators/Validator90.php index 22823452..5ca298c7 100644 --- a/classes/validator/validators/Validator_90.php +++ b/classes/validator/validators/Validator90.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_90 extends Validator_Chain +class Validator90 extends ValidatorChain { /** @@ -39,20 +39,20 @@ public function __construct(Bank $bank) parent::__construct($bank); - $this->defaultValidators["a"] = new Validator_06($bank); + $this->defaultValidators["a"] = new Validator06($bank); $this->defaultValidators["a"]->setWeights(array(2, 3, 4, 5, 6, 7)); $this->defaultValidators["a"]->setEnd(3); - $this->defaultValidators["b"] = new Validator_06($bank); + $this->defaultValidators["b"] = new Validator06($bank); $this->defaultValidators["b"]->setWeights(array(2, 3, 4, 5, 6)); $this->defaultValidators["b"]->setEnd(4); - $this->defaultValidators["c"] = new Validator_90c($bank); - $this->defaultValidators["d"] = new Validator_90d($bank); - $this->defaultValidators["e"] = new Validator_90e($bank); - $this->defaultValidators["g"] = new Validator_90g($bank); + $this->defaultValidators["c"] = new Validator90c($bank); + $this->defaultValidators["d"] = new Validator90d($bank); + $this->defaultValidators["e"] = new Validator90e($bank); + $this->defaultValidators["g"] = new Validator90g($bank); - $this->modeF = new Validator_06($bank); + $this->modeF = new Validator06($bank); $this->modeF->setWeights(array(2, 3, 4, 5, 6, 7, 8)); $this->modeF->setEnd(2); } diff --git a/classes/validator/validators/Validator_90c.php b/classes/validator/validators/Validator90c.php similarity index 96% rename from classes/validator/validators/Validator_90c.php rename to classes/validator/validators/Validator90c.php index c34a0108..22410c88 100644 --- a/classes/validator/validators/Validator_90c.php +++ b/classes/validator/validators/Validator90c.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_90c extends Validator_Iteration_Weighted +class Validator90c extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_90d.php b/classes/validator/validators/Validator90d.php similarity index 96% rename from classes/validator/validators/Validator_90d.php rename to classes/validator/validators/Validator90d.php index f49bde6d..89c23be0 100644 --- a/classes/validator/validators/Validator_90d.php +++ b/classes/validator/validators/Validator90d.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_90d extends Validator_Iteration_Weighted +class Validator90d extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_90e.php b/classes/validator/validators/Validator90e.php similarity index 95% rename from classes/validator/validators/Validator_90e.php rename to classes/validator/validators/Validator90e.php index d8c2f217..86a026c7 100644 --- a/classes/validator/validators/Validator_90e.php +++ b/classes/validator/validators/Validator90e.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_90e extends Validator_Iteration_Weighted +class Validator90e extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_90g.php b/classes/validator/validators/Validator90g.php similarity index 96% rename from classes/validator/validators/Validator_90g.php rename to classes/validator/validators/Validator90g.php index 25094e35..4d52011f 100644 --- a/classes/validator/validators/Validator_90g.php +++ b/classes/validator/validators/Validator90g.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_90g extends Validator_Iteration_Weighted +class Validator90g extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_91.php b/classes/validator/validators/Validator91.php similarity index 93% rename from classes/validator/validators/Validator_91.php rename to classes/validator/validators/Validator91.php index f2f16f19..3c447af9 100644 --- a/classes/validator/validators/Validator_91.php +++ b/classes/validator/validators/Validator91.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_91 extends Validator_Chain +class Validator91 extends ValidatorChain { public function __construct(Bank $bank) @@ -29,7 +29,7 @@ public function __construct(Bank $bank) parent::__construct($bank); for ($i = 0; $i < 4; $i++) { - $this->validators[] = new Validator_06($bank); + $this->validators[] = new Validator06($bank); $this->validators[$i]->setChecknumberPosition(6); $this->validators[$i]->setStart(5); } diff --git a/classes/validator/validators/Validator_92.php b/classes/validator/validators/Validator92.php similarity index 96% rename from classes/validator/validators/Validator_92.php rename to classes/validator/validators/Validator92.php index 8e18c793..b65923ae 100644 --- a/classes/validator/validators/Validator_92.php +++ b/classes/validator/validators/Validator92.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_92 extends Validator_01 +class Validator92 extends Validator01 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_93.php b/classes/validator/validators/Validator93.php similarity index 90% rename from classes/validator/validators/Validator_93.php rename to classes/validator/validators/Validator93.php index 11ede1ff..412d88fb 100644 --- a/classes/validator/validators/Validator_93.php +++ b/classes/validator/validators/Validator93.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_93 extends Validator_Chain +class Validator93 extends ValidatorChain { public function __construct(Bank $bank) @@ -29,11 +29,11 @@ public function __construct(Bank $bank) parent::__construct($bank); - $this->validators[] = new Validator_06($bank); + $this->validators[] = new Validator06($bank); $this->validators[0]->setWeights(array(2, 3, 4, 5, 6)); $this->validators[0]->setEnd(4); - $this->validators[] = new Validator_06($bank); + $this->validators[] = new Validator06($bank); $this->validators[1]->setWeights(array(2, 3, 4, 5, 6)); $this->validators[1]->setEnd(4); $this->validators[1]->setDivisor(7); diff --git a/classes/validator/validators/Validator_94.php b/classes/validator/validators/Validator94.php similarity index 96% rename from classes/validator/validators/Validator_94.php rename to classes/validator/validators/Validator94.php index ac4225d7..edf89a5f 100644 --- a/classes/validator/validators/Validator_94.php +++ b/classes/validator/validators/Validator94.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_94 extends Validator_00 +class Validator94 extends Validator00 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_95.php b/classes/validator/validators/Validator95.php similarity index 97% rename from classes/validator/validators/Validator_95.php rename to classes/validator/validators/Validator95.php index 64b62179..132ea195 100644 --- a/classes/validator/validators/Validator_95.php +++ b/classes/validator/validators/Validator95.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_95 extends Validator_06 +class Validator95 extends Validator06 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_96.php b/classes/validator/validators/Validator96.php similarity index 88% rename from classes/validator/validators/Validator_96.php rename to classes/validator/validators/Validator96.php index 78a9288c..c6ac31a3 100644 --- a/classes/validator/validators/Validator_96.php +++ b/classes/validator/validators/Validator96.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_96 extends Validator_Chain +class Validator96 extends ValidatorChain { public function __construct(Bank $bank) @@ -29,10 +29,10 @@ public function __construct(Bank $bank) parent::__construct($bank); - $this->validators[] = new Validator_19($bank); + $this->validators[] = new Validator19($bank); $this->validators[0]->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 1)); - $this->validators[] = new Validator_00($bank); + $this->validators[] = new Validator00($bank); $this->validators[1]->setWeights(array(2, 1)); } diff --git a/classes/validator/validators/Validator_97.php b/classes/validator/validators/Validator97.php similarity index 97% rename from classes/validator/validators/Validator_97.php rename to classes/validator/validators/Validator97.php index 8de2b821..1b512a2c 100644 --- a/classes/validator/validators/Validator_97.php +++ b/classes/validator/validators/Validator97.php @@ -27,7 +27,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class Validator_97 extends Validator +class Validator97 extends Validator { /** diff --git a/classes/validator/validators/Validator_98.php b/classes/validator/validators/Validator98.php similarity index 87% rename from classes/validator/validators/Validator_98.php rename to classes/validator/validators/Validator98.php index 04df9b71..35bb94b8 100644 --- a/classes/validator/validators/Validator_98.php +++ b/classes/validator/validators/Validator98.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_98 extends Validator_Chain +class Validator98 extends ValidatorChain { public function __construct(Bank $bank) @@ -29,10 +29,10 @@ public function __construct(Bank $bank) parent::__construct($bank); - $this->validators[] = new Validator_01($bank); + $this->validators[] = new Validator01($bank); $this->validators[0]->setWeights(array(3, 1, 7)); $this->validators[0]->setEnd(2); - $this->validators[] = new Validator_32($bank); + $this->validators[] = new Validator32($bank); } } diff --git a/classes/validator/validators/Validator_99.php b/classes/validator/validators/Validator99.php similarity index 96% rename from classes/validator/validators/Validator_99.php rename to classes/validator/validators/Validator99.php index 7302808a..dd287470 100644 --- a/classes/validator/validators/Validator_99.php +++ b/classes/validator/validators/Validator99.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_99 extends Validator_06 +class Validator99 extends Validator06 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_A0.php b/classes/validator/validators/ValidatorA0.php similarity index 96% rename from classes/validator/validators/Validator_A0.php rename to classes/validator/validators/ValidatorA0.php index b1b6f7e5..49f78d39 100644 --- a/classes/validator/validators/Validator_A0.php +++ b/classes/validator/validators/ValidatorA0.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_A0 extends Validator_Iteration_Weighted +class ValidatorA0 extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_A1.php b/classes/validator/validators/ValidatorA1.php similarity index 96% rename from classes/validator/validators/Validator_A1.php rename to classes/validator/validators/ValidatorA1.php index 35de8a94..03e2443e 100644 --- a/classes/validator/validators/Validator_A1.php +++ b/classes/validator/validators/ValidatorA1.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_A1 extends Validator_00 +class ValidatorA1 extends Validator00 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_A2.php b/classes/validator/validators/ValidatorA2.php similarity index 87% rename from classes/validator/validators/Validator_A2.php rename to classes/validator/validators/ValidatorA2.php index 8588a98f..7e27d39c 100644 --- a/classes/validator/validators/Validator_A2.php +++ b/classes/validator/validators/ValidatorA2.php @@ -21,17 +21,17 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_A2 extends Validator_Chain +class ValidatorA2 extends ValidatorChain { public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new Validator_00($bank); + $this->validators[] = new Validator00($bank); $this->validators[0]->setWeights(array(2, 1)); - $this->validators[] = new Validator_04($bank); + $this->validators[] = new Validator04($bank); $this->validators[1]->setWeights(array(2, 3, 4, 5, 6, 7)); } } diff --git a/classes/validator/validators/Validator_A3.php b/classes/validator/validators/ValidatorA3.php similarity index 87% rename from classes/validator/validators/Validator_A3.php rename to classes/validator/validators/ValidatorA3.php index 1fbf11c7..866db5ec 100644 --- a/classes/validator/validators/Validator_A3.php +++ b/classes/validator/validators/ValidatorA3.php @@ -21,17 +21,17 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_A3 extends Validator_Chain +class ValidatorA3 extends ValidatorChain { public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new Validator_00($bank); + $this->validators[] = new Validator00($bank); $this->validators[0]->setWeights(array(2, 1)); - $this->validators[] = new Validator_10($bank); + $this->validators[] = new Validator10($bank); $this->validators[1]->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 10)); } } diff --git a/classes/validator/validators/Validator_A4.php b/classes/validator/validators/ValidatorA4.php similarity index 85% rename from classes/validator/validators/Validator_A4.php rename to classes/validator/validators/ValidatorA4.php index 7ee0a3f9..1eaa58c3 100644 --- a/classes/validator/validators/Validator_A4.php +++ b/classes/validator/validators/ValidatorA4.php @@ -21,24 +21,24 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_A4 extends Validator_Chain +class ValidatorA4 extends ValidatorChain { public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new Validator_06($bank); + $this->validators[] = new Validator06($bank); $this->validators[0]->setWeights(array(2, 3, 4, 5, 6, 7, 0, 0, 0)); $this->validators[0]->setEnd(3); - $this->validators[] = new Validator_A4b($bank); + $this->validators[] = new ValidatorA4b($bank); - $this->validators[] = new Validator_06($bank); + $this->validators[] = new Validator06($bank); $this->validators[2]->setWeights(array(2, 3, 4, 5, 6, 0, 0, 0, 0)); $this->validators[2]->setEnd(4); - $this->validators[] = new Validator_93($bank); + $this->validators[] = new Validator93($bank); } /** diff --git a/classes/validator/validators/Validator_A4b.php b/classes/validator/validators/ValidatorA4b.php similarity index 96% rename from classes/validator/validators/Validator_A4b.php rename to classes/validator/validators/ValidatorA4b.php index ec1dee6b..727c890d 100644 --- a/classes/validator/validators/Validator_A4b.php +++ b/classes/validator/validators/ValidatorA4b.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_A4b extends Validator_Iteration_Weighted +class ValidatorA4b extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_A5.php b/classes/validator/validators/ValidatorA5.php similarity index 89% rename from classes/validator/validators/Validator_A5.php rename to classes/validator/validators/ValidatorA5.php index b13de7d0..7e71356a 100644 --- a/classes/validator/validators/Validator_A5.php +++ b/classes/validator/validators/ValidatorA5.php @@ -21,17 +21,17 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_A5 extends Validator_Chain +class ValidatorA5 extends ValidatorChain { public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new Validator_00($bank); + $this->validators[] = new Validator00($bank); $this->validators[0]->setWeights(array(2, 1)); - $this->validators[] = new Validator_10($bank); + $this->validators[] = new Validator10($bank); $this->validators[1]->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 10)); } diff --git a/classes/validator/validators/Validator_A6.php b/classes/validator/validators/ValidatorA6.php similarity index 89% rename from classes/validator/validators/Validator_A6.php rename to classes/validator/validators/ValidatorA6.php index d07256ac..e2e7b11d 100644 --- a/classes/validator/validators/Validator_A6.php +++ b/classes/validator/validators/ValidatorA6.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class Validator_A6 extends Validator +class ValidatorA6 extends Validator { /** @@ -34,12 +34,12 @@ class Validator_A6 extends Validator protected $validator; /** - * @var Validator_00 + * @var Validator00 */ protected $mode1; /** - * @var Validator_01 + * @var Validator01 */ protected $mode2; @@ -47,10 +47,10 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new Validator_00($bank); + $this->mode1 = new Validator00($bank); $this->mode1->setWeights(array(2, 1)); - $this->mode2 = new Validator_01($bank); + $this->mode2 = new Validator01($bank); $this->mode2->setWeights(array(3, 7, 1)); } diff --git a/classes/validator/validators/Validator_A7.php b/classes/validator/validators/ValidatorA7.php similarity index 86% rename from classes/validator/validators/Validator_A7.php rename to classes/validator/validators/ValidatorA7.php index aad3d9fe..a0d51614 100644 --- a/classes/validator/validators/Validator_A7.php +++ b/classes/validator/validators/ValidatorA7.php @@ -21,16 +21,16 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_A7 extends Validator_Chain +class ValidatorA7 extends ValidatorChain { public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new Validator_00($bank); + $this->validators[] = new Validator00($bank); $this->validators[0]->setWeights(array(2, 1)); - $this->validators[] = new Validator_03($bank); + $this->validators[] = new Validator03($bank); } } diff --git a/classes/validator/validators/Validator_A8.php b/classes/validator/validators/ValidatorA8.php similarity index 87% rename from classes/validator/validators/Validator_A8.php rename to classes/validator/validators/ValidatorA8.php index 724bef84..ad2bb915 100644 --- a/classes/validator/validators/Validator_A8.php +++ b/classes/validator/validators/ValidatorA8.php @@ -27,7 +27,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class Validator_A8 extends Validator_Chain +class ValidatorA8 extends ValidatorChain { /** @@ -44,16 +44,16 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->defaultValidators[] = new Validator_06($bank); + $this->defaultValidators[] = new Validator06($bank); $this->defaultValidators[0]->setEnd(3); $this->defaultValidators[0]->setWeights(array(2, 3, 4, 5, 6, 7)); - $this->defaultValidators[] = new Validator_00($bank); + $this->defaultValidators[] = new Validator00($bank); $this->defaultValidators[1]->setEnd(3); $this->defaultValidators[1]->setWeights(array(2, 1)); - $this->exceptionValidators = Validator_51::getExceptionValidators($bank); + $this->exceptionValidators = Validator51::getExceptionValidators($bank); } /** diff --git a/classes/validator/validators/Validator_A9.php b/classes/validator/validators/ValidatorA9.php similarity index 87% rename from classes/validator/validators/Validator_A9.php rename to classes/validator/validators/ValidatorA9.php index e084b6de..f8a65743 100644 --- a/classes/validator/validators/Validator_A9.php +++ b/classes/validator/validators/ValidatorA9.php @@ -21,17 +21,17 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_A9 extends Validator_Chain +class ValidatorA9 extends ValidatorChain { public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new Validator_01($bank); + $this->validators[] = new Validator01($bank); $this->validators[0]->setWeights(array(3, 7, 1)); - $this->validators[] = new Validator_06($bank); + $this->validators[] = new Validator06($bank); $this->validators[1]->setWeights(array(2, 3, 4, 5, 6, 7)); } } diff --git a/classes/validator/validators/Validator_B0.php b/classes/validator/validators/ValidatorB0.php similarity index 90% rename from classes/validator/validators/Validator_B0.php rename to classes/validator/validators/ValidatorB0.php index 58846bab..13650077 100644 --- a/classes/validator/validators/Validator_B0.php +++ b/classes/validator/validators/ValidatorB0.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class Validator_B0 extends Validator +class ValidatorB0 extends Validator { /** @@ -34,12 +34,12 @@ class Validator_B0 extends Validator protected $validator; /** - * @var Validator_09 + * @var Validator09 */ protected $mode1; /** - * @var Validator_06 + * @var Validator06 */ protected $mode2; @@ -47,9 +47,9 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new Validator_09($bank); + $this->mode1 = new Validator09($bank); - $this->mode2 = new Validator_06($bank); + $this->mode2 = new Validator06($bank); $this->mode2->setWeights(array(2, 3, 4, 5, 6, 7)); } diff --git a/classes/validator/validators/Validator_B1.php b/classes/validator/validators/ValidatorB1.php similarity index 87% rename from classes/validator/validators/Validator_B1.php rename to classes/validator/validators/ValidatorB1.php index 2e991d01..f9d4f053 100644 --- a/classes/validator/validators/Validator_B1.php +++ b/classes/validator/validators/ValidatorB1.php @@ -21,17 +21,17 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_B1 extends Validator_Chain +class ValidatorB1 extends ValidatorChain { public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new Validator_05($bank); + $this->validators[] = new Validator05($bank); $this->validators[0]->setWeights(array(7, 3, 1)); - $this->validators[] = new Validator_01($bank); + $this->validators[] = new Validator01($bank); $this->validators[1]->setWeights(array(3, 7, 1)); } } diff --git a/classes/validator/validators/Validator_B2.php b/classes/validator/validators/ValidatorB2.php similarity index 89% rename from classes/validator/validators/Validator_B2.php rename to classes/validator/validators/ValidatorB2.php index aa06a7e4..3ffa0594 100644 --- a/classes/validator/validators/Validator_B2.php +++ b/classes/validator/validators/ValidatorB2.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class Validator_B2 extends Validator +class ValidatorB2 extends Validator { /** @@ -34,12 +34,12 @@ class Validator_B2 extends Validator protected $validator; /** - * @var Validator_02 + * @var Validator02 */ protected $mode1; /** - * @var Validator_00 + * @var Validator00 */ protected $mode2; @@ -47,10 +47,10 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new Validator_02($bank); + $this->mode1 = new Validator02($bank); $this->mode1->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9)); - $this->mode2 = new Validator_00($bank); + $this->mode2 = new Validator00($bank); $this->mode2->setWeights(array(2, 1)); } diff --git a/classes/validator/validators/Validator_B3.php b/classes/validator/validators/ValidatorB3.php similarity index 90% rename from classes/validator/validators/Validator_B3.php rename to classes/validator/validators/ValidatorB3.php index 33c48006..7e2e11df 100644 --- a/classes/validator/validators/Validator_B3.php +++ b/classes/validator/validators/ValidatorB3.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class Validator_B3 extends Validator +class ValidatorB3 extends Validator { /** @@ -34,12 +34,12 @@ class Validator_B3 extends Validator protected $validator; /** - * @var Validator_32 + * @var Validator32 */ protected $mode1; /** - * @var Validator_06 + * @var Validator06 */ protected $mode2; @@ -47,10 +47,10 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new Validator_32($bank); + $this->mode1 = new Validator32($bank); $this->mode1->setWeights(array(2, 3, 4, 5, 6, 7)); - $this->mode2 = new Validator_06($bank); + $this->mode2 = new Validator06($bank); $this->mode2->setWeights(array(2, 3, 4, 5, 6, 7)); } diff --git a/classes/validator/validators/Validator_B4.php b/classes/validator/validators/ValidatorB4.php similarity index 89% rename from classes/validator/validators/Validator_B4.php rename to classes/validator/validators/ValidatorB4.php index 18c902a9..199ad875 100644 --- a/classes/validator/validators/Validator_B4.php +++ b/classes/validator/validators/ValidatorB4.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class Validator_B4 extends Validator +class ValidatorB4 extends Validator { /** @@ -34,12 +34,12 @@ class Validator_B4 extends Validator protected $validator; /** - * @var Validator_00 + * @var Validator00 */ protected $mode1; /** - * @var Validator_02 + * @var Validator02 */ protected $mode2; @@ -47,10 +47,10 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new Validator_00($bank); + $this->mode1 = new Validator00($bank); $this->mode1->setWeights(array(2, 1)); - $this->mode2 = new Validator_02($bank); + $this->mode2 = new Validator02($bank); $this->mode2->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 10)); } diff --git a/classes/validator/validators/Validator_B5.php b/classes/validator/validators/ValidatorB5.php similarity index 89% rename from classes/validator/validators/Validator_B5.php rename to classes/validator/validators/ValidatorB5.php index a7ad8795..cc6c4e41 100644 --- a/classes/validator/validators/Validator_B5.php +++ b/classes/validator/validators/ValidatorB5.php @@ -21,17 +21,17 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_B5 extends Validator_Chain +class ValidatorB5 extends ValidatorChain { public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new Validator_01($bank); + $this->validators[] = new Validator01($bank); $this->validators[0]->setWeights(array(7, 3, 1)); - $this->validators[] = new Validator_00($bank); + $this->validators[] = new Validator00($bank); $this->validators[1]->setWeights(array(2, 1)); } diff --git a/classes/validator/validators/Validator_B6.php b/classes/validator/validators/ValidatorB6.php similarity index 88% rename from classes/validator/validators/Validator_B6.php rename to classes/validator/validators/ValidatorB6.php index ca4aae52..d9e62952 100644 --- a/classes/validator/validators/Validator_B6.php +++ b/classes/validator/validators/ValidatorB6.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class Validator_B6 extends Validator implements Validator_BankDependent +class ValidatorB6 extends Validator implements ValidatorBankDependent { /** @@ -34,12 +34,12 @@ class Validator_B6 extends Validator implements Validator_BankDependent protected $validator; /** - * @var Validator_20 + * @var Validator20 */ protected $mode1; /** - * @var Validator_53 + * @var Validator53 */ protected $mode2; @@ -47,10 +47,10 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new Validator_20($bank); + $this->mode1 = new Validator20($bank); $this->mode1->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 3)); - $this->mode2 = new Validator_53($bank); + $this->mode2 = new Validator53($bank); $this->mode2->setWeights(array(2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4)); } diff --git a/classes/validator/validators/Validator_B7.php b/classes/validator/validators/ValidatorB7.php similarity index 96% rename from classes/validator/validators/Validator_B7.php rename to classes/validator/validators/ValidatorB7.php index 1a770351..05857463 100644 --- a/classes/validator/validators/Validator_B7.php +++ b/classes/validator/validators/ValidatorB7.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_B7 extends Validator_01 +class ValidatorB7 extends Validator01 { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_B8.php b/classes/validator/validators/ValidatorB8.php similarity index 83% rename from classes/validator/validators/Validator_B8.php rename to classes/validator/validators/ValidatorB8.php index 16e729e0..5ba9ac28 100644 --- a/classes/validator/validators/Validator_B8.php +++ b/classes/validator/validators/ValidatorB8.php @@ -21,11 +21,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_B8 extends Validator_Chain +class ValidatorB8 extends ValidatorChain { /** - * @param Validator_09 Validator + * @param Validator09 Validator */ private $validator9; @@ -33,17 +33,17 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new Validator_20($bank); + $this->validators[] = new Validator20($bank); $this->validators[0]->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 3)); - $this->validators[] = new Validator_29($bank); + $this->validators[] = new Validator29($bank); - $this->validator9 = new Validator_09($bank); + $this->validator9 = new Validator09($bank); $this->validators[] = $this->validator9; } /** - * Limits Validator_09 to the accounts + * Limits Validator09 to the accounts * * @return bool */ diff --git a/classes/validator/validators/Validator_B9.php b/classes/validator/validators/ValidatorB9.php similarity index 90% rename from classes/validator/validators/Validator_B9.php rename to classes/validator/validators/ValidatorB9.php index d8e8c226..b21c4d96 100644 --- a/classes/validator/validators/Validator_B9.php +++ b/classes/validator/validators/ValidatorB9.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class Validator_B9 extends Validator +class ValidatorB9 extends Validator { /** @@ -34,12 +34,12 @@ class Validator_B9 extends Validator protected $validator; /** - * @var Validator_B9a + * @var ValidatorB9a */ protected $mode1; /** - * @var Validator_B9b + * @var ValidatorB9b */ protected $mode2; @@ -47,8 +47,8 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new Validator_B9a($bank); - $this->mode2 = new Validator_B9b($bank); + $this->mode1 = new ValidatorB9a($bank); + $this->mode2 = new ValidatorB9b($bank); } protected function validate() diff --git a/classes/validator/validators/Validator_B9a.php b/classes/validator/validators/ValidatorB9a.php similarity index 96% rename from classes/validator/validators/Validator_B9a.php rename to classes/validator/validators/ValidatorB9a.php index 75e39343..4a80d206 100644 --- a/classes/validator/validators/Validator_B9a.php +++ b/classes/validator/validators/ValidatorB9a.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_B9a extends Validator_Iteration_Weighted +class ValidatorB9a extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_B9b.php b/classes/validator/validators/ValidatorB9b.php similarity index 96% rename from classes/validator/validators/Validator_B9b.php rename to classes/validator/validators/ValidatorB9b.php index 2f007b4a..d634e4cb 100644 --- a/classes/validator/validators/Validator_B9b.php +++ b/classes/validator/validators/ValidatorB9b.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_B9b extends Validator_Iteration_Weighted +class ValidatorB9b extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_C0.php b/classes/validator/validators/ValidatorC0.php similarity index 87% rename from classes/validator/validators/Validator_C0.php rename to classes/validator/validators/ValidatorC0.php index bd2ce8ba..ddfacd7e 100644 --- a/classes/validator/validators/Validator_C0.php +++ b/classes/validator/validators/ValidatorC0.php @@ -21,17 +21,17 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_C0 extends Validator_Chain implements Validator_BankDependent +class ValidatorC0 extends ValidatorChain implements ValidatorBankDependent { public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new Validator_52($bank); + $this->validators[] = new Validator52($bank); $this->validators[0]->setWeights(array(2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4)); - $this->validators[] = new Validator_20($bank); + $this->validators[] = new Validator20($bank); $this->validators[1]->setWeights(array(2, 3, 4, 5, 6, 7, 8, 9, 3)); } diff --git a/classes/validator/validators/Validator_C1.php b/classes/validator/validators/ValidatorC1.php similarity index 89% rename from classes/validator/validators/Validator_C1.php rename to classes/validator/validators/ValidatorC1.php index 51070304..65d1bf25 100644 --- a/classes/validator/validators/Validator_C1.php +++ b/classes/validator/validators/ValidatorC1.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class Validator_C1 extends Validator +class ValidatorC1 extends Validator { /** @@ -34,12 +34,12 @@ class Validator_C1 extends Validator protected $validator; /** - * @var Validator_17 + * @var Validator17 */ protected $mode1; /** - * @var Validator_C1b + * @var ValidatorC1b */ protected $mode2; @@ -47,10 +47,10 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new Validator_17($bank); + $this->mode1 = new Validator17($bank); $this->mode1->setWeights(array(1, 2)); - $this->mode2 = new Validator_C1b($bank); + $this->mode2 = new ValidatorC1b($bank); } protected function validate() diff --git a/classes/validator/validators/Validator_C1b.php b/classes/validator/validators/ValidatorC1b.php similarity index 95% rename from classes/validator/validators/Validator_C1b.php rename to classes/validator/validators/ValidatorC1b.php index 7ff0d210..6b422639 100644 --- a/classes/validator/validators/Validator_C1b.php +++ b/classes/validator/validators/ValidatorC1b.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_C1b extends Validator_Iteration_Weighted +class ValidatorC1b extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_C2.php b/classes/validator/validators/ValidatorC2.php similarity index 87% rename from classes/validator/validators/Validator_C2.php rename to classes/validator/validators/ValidatorC2.php index c0d8c568..b79b50c6 100644 --- a/classes/validator/validators/Validator_C2.php +++ b/classes/validator/validators/ValidatorC2.php @@ -21,17 +21,17 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_C2 extends Validator_Chain +class ValidatorC2 extends ValidatorChain { public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new Validator_22($bank); + $this->validators[] = new Validator22($bank); $this->validators[0]->setWeights(array(3, 1)); - $this->validators[] = new Validator_00($bank); + $this->validators[] = new Validator00($bank); $this->validators[1]->setWeights(array(2, 1)); } } diff --git a/classes/validator/validators/Validator_C3.php b/classes/validator/validators/ValidatorC3.php similarity index 89% rename from classes/validator/validators/Validator_C3.php rename to classes/validator/validators/ValidatorC3.php index d8f9a436..b98066de 100644 --- a/classes/validator/validators/Validator_C3.php +++ b/classes/validator/validators/ValidatorC3.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2007 Markus Malkusch */ -class Validator_C3 extends Validator +class ValidatorC3 extends Validator { /** @@ -34,12 +34,12 @@ class Validator_C3 extends Validator protected $validator; /** - * @var Validator_00 + * @var Validator00 */ protected $mode1; /** - * @var Validator_58 + * @var Validator58 */ protected $mode2; @@ -47,10 +47,10 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new Validator_00($bank); + $this->mode1 = new Validator00($bank); $this->mode1->setWeights(array(2, 1)); - $this->mode2 = new Validator_58($bank); + $this->mode2 = new Validator58($bank); $this->mode2->setWeights(array(2, 3, 4, 5, 6, 0, 0, 0, 0)); } diff --git a/classes/validator/validators/Validator_C4.php b/classes/validator/validators/ValidatorC4.php similarity index 90% rename from classes/validator/validators/Validator_C4.php rename to classes/validator/validators/ValidatorC4.php index 317b8fb5..68f7af70 100644 --- a/classes/validator/validators/Validator_C4.php +++ b/classes/validator/validators/ValidatorC4.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2007 Markus Malkusch */ -class Validator_C4 extends Validator +class ValidatorC4 extends Validator { /** @@ -34,12 +34,12 @@ class Validator_C4 extends Validator protected $validator; /** - * @var Validator_15 + * @var Validator15 */ protected $mode1; /** - * @var Validator_58 + * @var Validator58 */ protected $mode2; @@ -47,10 +47,10 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new Validator_15($bank); + $this->mode1 = new Validator15($bank); $this->mode1->setWeights(array(2, 3, 4, 5)); - $this->mode2 = new Validator_58($bank); + $this->mode2 = new Validator58($bank); $this->mode2->setWeights(array(2, 3, 4, 5, 6, 0, 0, 0, 0)); } diff --git a/classes/validator/validators/Validator_C5.php b/classes/validator/validators/ValidatorC5.php similarity index 88% rename from classes/validator/validators/Validator_C5.php rename to classes/validator/validators/ValidatorC5.php index 65a632c7..73804c19 100644 --- a/classes/validator/validators/Validator_C5.php +++ b/classes/validator/validators/ValidatorC5.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2007 Markus Malkusch */ -class Validator_C5 extends Validator +class ValidatorC5 extends Validator { /** @@ -34,22 +34,22 @@ class Validator_C5 extends Validator protected $validator; /** - * @var Validator_75 + * @var Validator75 */ protected $mode1; /** - * @var Validator_29 + * @var Validator29 */ protected $mode2; /** - * @var Validator_00 + * @var Validator00 */ protected $mode3; /** - * @var Validator_09 + * @var Validator09 */ protected $mode4; @@ -57,10 +57,10 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->mode1 = new Validator_75($bank); - $this->mode2 = new Validator_29($bank); - $this->mode3 = new Validator_00($bank); - $this->mode4 = new Validator_09($bank); + $this->mode1 = new Validator75($bank); + $this->mode2 = new Validator29($bank); + $this->mode3 = new Validator00($bank); + $this->mode4 = new Validator09($bank); } protected function validate() diff --git a/classes/validator/validators/Validator_C6.php b/classes/validator/validators/ValidatorC6.php similarity index 94% rename from classes/validator/validators/Validator_C6.php rename to classes/validator/validators/ValidatorC6.php index 6e2b884e..c006b5ab 100644 --- a/classes/validator/validators/Validator_C6.php +++ b/classes/validator/validators/ValidatorC6.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2007 Markus Malkusch */ -class Validator_C6 extends Validator +class ValidatorC6 extends Validator { /** @@ -50,7 +50,7 @@ class Validator_C6 extends Validator protected $transformedAccount = ''; /** - * @var Validator_00 + * @var Validator00 */ protected $validator; @@ -58,7 +58,7 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->validator = new Validator_00($bank); + $this->validator = new Validator00($bank); } protected function validate() diff --git a/classes/validator/validators/Validator_C7.php b/classes/validator/validators/ValidatorC7.php similarity index 86% rename from classes/validator/validators/Validator_C7.php rename to classes/validator/validators/ValidatorC7.php index 79805399..de9c4d09 100644 --- a/classes/validator/validators/Validator_C7.php +++ b/classes/validator/validators/ValidatorC7.php @@ -21,16 +21,16 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_C7 extends Validator_Chain +class ValidatorC7 extends ValidatorChain { public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new Validator_63($bank); + $this->validators[] = new Validator63($bank); - $this->validators[] = new Validator_06($bank); + $this->validators[] = new Validator06($bank); $this->validators[1]->setWeights(array(2, 3, 4, 5, 6, 7)); } } diff --git a/classes/validator/validators/Validator_C8.php b/classes/validator/validators/ValidatorC8.php similarity index 81% rename from classes/validator/validators/Validator_C8.php rename to classes/validator/validators/ValidatorC8.php index 6739732c..6432e626 100644 --- a/classes/validator/validators/Validator_C8.php +++ b/classes/validator/validators/ValidatorC8.php @@ -21,15 +21,15 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_C8 extends Validator_Chain +class ValidatorC8 extends ValidatorChain { public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new Validator_00($bank); - $this->validators[] = new Validator_04($bank); - $this->validators[] = new Validator_07($bank); + $this->validators[] = new Validator00($bank); + $this->validators[] = new Validator04($bank); + $this->validators[] = new Validator07($bank); } } diff --git a/classes/validator/validators/Validator_C9.php b/classes/validator/validators/ValidatorC9.php similarity index 85% rename from classes/validator/validators/Validator_C9.php rename to classes/validator/validators/ValidatorC9.php index 4ffcacb2..da53f18f 100644 --- a/classes/validator/validators/Validator_C9.php +++ b/classes/validator/validators/ValidatorC9.php @@ -21,14 +21,14 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator_C9 extends Validator_Chain +class ValidatorC9 extends ValidatorChain { public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new Validator_00($bank); - $this->validators[] = new Validator_07($bank); + $this->validators[] = new Validator00($bank); + $this->validators[] = new Validator07($bank); } } diff --git a/classes/validator/validators/Validator_D0.php b/classes/validator/validators/ValidatorD0.php similarity index 90% rename from classes/validator/validators/Validator_D0.php rename to classes/validator/validators/ValidatorD0.php index 5b0f5d54..896f534a 100644 --- a/classes/validator/validators/Validator_D0.php +++ b/classes/validator/validators/ValidatorD0.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2008 Markus Malkusch */ -class Validator_D0 extends Validator +class ValidatorD0 extends Validator { const SWITCH_PREFIX = '57'; @@ -43,8 +43,8 @@ public function __construct(Bank $bank) protected function validate() { $this->validator = substr($this->account, 0, 2) !== self::SWITCH_PREFIX - ? new Validator_20($this->bank) - : new Validator_09($this->bank); + ? new Validator20($this->bank) + : new Validator09($this->bank); } /** diff --git a/classes/validator/validators/Validator_D1.php b/classes/validator/validators/ValidatorD1.php similarity index 95% rename from classes/validator/validators/Validator_D1.php rename to classes/validator/validators/ValidatorD1.php index 363b64e8..b3d0e327 100644 --- a/classes/validator/validators/Validator_D1.php +++ b/classes/validator/validators/ValidatorD1.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class Validator_D1 extends Validator +class ValidatorD1 extends Validator { /** @@ -49,7 +49,7 @@ class Validator_D1 extends Validator protected $transformedAccount = ''; /** - * @var Validator_00 + * @var Validator00 */ protected $validator; @@ -57,7 +57,7 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->validator = new Validator_00($bank); + $this->validator = new Validator00($bank); } protected function validate() diff --git a/classes/validator/validators/Validator_D2.php b/classes/validator/validators/ValidatorD2.php similarity index 84% rename from classes/validator/validators/Validator_D2.php rename to classes/validator/validators/ValidatorD2.php index b40902ea..a5f3fe40 100644 --- a/classes/validator/validators/Validator_D2.php +++ b/classes/validator/validators/ValidatorD2.php @@ -26,7 +26,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class Validator_D2 extends Validator_Chain +class ValidatorD2 extends ValidatorChain { /** @@ -38,8 +38,8 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new Validator_95($bank); - $this->validators[] = new Validator_00($bank); - $this->validators[] = new Validator_68($bank); + $this->validators[] = new Validator95($bank); + $this->validators[] = new Validator00($bank); + $this->validators[] = new Validator68($bank); } } diff --git a/classes/validator/validators/Validator_D3.php b/classes/validator/validators/ValidatorD3.php similarity index 87% rename from classes/validator/validators/Validator_D3.php rename to classes/validator/validators/ValidatorD3.php index 142215f2..a22be07a 100644 --- a/classes/validator/validators/Validator_D3.php +++ b/classes/validator/validators/ValidatorD3.php @@ -26,14 +26,14 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class Validator_D3 extends Validator_Chain +class ValidatorD3 extends ValidatorChain { public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new Validator_00($bank); - $this->validators[] = new Validator_27($bank); + $this->validators[] = new Validator00($bank); + $this->validators[] = new Validator27($bank); } } diff --git a/classes/validator/validators/Validator_D4.php b/classes/validator/validators/ValidatorD4.php similarity index 93% rename from classes/validator/validators/Validator_D4.php rename to classes/validator/validators/ValidatorD4.php index 4b8f246b..20c298f2 100644 --- a/classes/validator/validators/Validator_D4.php +++ b/classes/validator/validators/ValidatorD4.php @@ -27,7 +27,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class Validator_D4 extends Validator +class ValidatorD4 extends Validator { /** @@ -36,7 +36,7 @@ class Validator_D4 extends Validator protected $transformedAccount = ''; /** - * @var Validator_00 + * @var Validator00 */ protected $validator; @@ -46,7 +46,7 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->validator = new Validator_00($bank); + $this->validator = new Validator00($bank); $this->validator->setNormalizedSize(10 + strlen(self::TRANSFORMATION)); } diff --git a/classes/validator/validators/Validator_D5.php b/classes/validator/validators/ValidatorD5.php similarity index 86% rename from classes/validator/validators/Validator_D5.php rename to classes/validator/validators/ValidatorD5.php index ce533b89..c6c54fd6 100644 --- a/classes/validator/validators/Validator_D5.php +++ b/classes/validator/validators/ValidatorD5.php @@ -27,7 +27,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class Validator_D5 extends Validator +class ValidatorD5 extends Validator { /** @@ -36,12 +36,12 @@ class Validator_D5 extends Validator private $validator; /** - * @var Validator_06 + * @var Validator06 */ private $validator1; /** - * @var Validator_Chain + * @var ValidatorChain */ private $validatorChain; @@ -49,21 +49,21 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->validator1 = new Validator_06($bank); + $this->validator1 = new Validator06($bank); $this->validator1->setWeights(array(2, 3, 4, 5, 6, 7, 8, 0, 0)); - $this->validatorChain = new Validator_Chain($bank); + $this->validatorChain = new ValidatorChain($bank); - $validator2 = new Validator_06($bank); + $validator2 = new Validator06($bank); $validator2->setWeights(array(2, 3, 4, 5, 6, 7, 0, 0, 0)); $this->validatorChain->addValidator($validator2); - $validator3 = new Validator_06($bank); + $validator3 = new Validator06($bank); $validator3->setWeights(array(2, 3, 4, 5, 6, 7, 0, 0, 0)); $validator3->setDivisor(7); $this->validatorChain->addValidator($validator3); - $validator4 = new Validator_06($bank); + $validator4 = new Validator06($bank); $validator4->setWeights(array(2, 3, 4, 5, 6, 7, 0, 0, 0)); $validator4->setDivisor(10); $this->validatorChain->addValidator($validator4); diff --git a/classes/validator/validators/Validator_D6.php b/classes/validator/validators/ValidatorD6.php similarity index 83% rename from classes/validator/validators/Validator_D6.php rename to classes/validator/validators/ValidatorD6.php index 3ba8ab28..4d16f0b9 100644 --- a/classes/validator/validators/Validator_D6.php +++ b/classes/validator/validators/ValidatorD6.php @@ -26,15 +26,15 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class Validator_D6 extends Validator_Chain +class ValidatorD6 extends ValidatorChain { public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new Validator_07($bank); - $this->validators[] = new Validator_03($bank); - $this->validators[] = new Validator_00($bank); + $this->validators[] = new Validator07($bank); + $this->validators[] = new Validator03($bank); + $this->validators[] = new Validator00($bank); } } diff --git a/classes/validator/validators/Validator_D7.php b/classes/validator/validators/ValidatorD7.php similarity index 96% rename from classes/validator/validators/Validator_D7.php rename to classes/validator/validators/ValidatorD7.php index d5f80272..2dc8700f 100644 --- a/classes/validator/validators/Validator_D7.php +++ b/classes/validator/validators/ValidatorD7.php @@ -27,7 +27,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2011 Markus Malkusch */ -class Validator_D7 extends Validator_Iteration_Weighted +class ValidatorD7 extends ValidatorIteration_Weighted { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator_D8.php b/classes/validator/validators/ValidatorD8.php similarity index 92% rename from classes/validator/validators/Validator_D8.php rename to classes/validator/validators/ValidatorD8.php index 09d2429c..0d2e4a2f 100644 --- a/classes/validator/validators/Validator_D8.php +++ b/classes/validator/validators/ValidatorD8.php @@ -27,11 +27,11 @@ * @author Markus Malkusch * @copyright Copyright (C) 2011 Markus Malkusch */ -class Validator_D8 extends Validator +class ValidatorD8 extends Validator { /** - * @var Validator_00 + * @var Validator00 */ private $validator; @@ -39,7 +39,7 @@ public function __construct(Bank $bank) { parent::__construct($bank); - $this->validator = new Validator_00($bank); + $this->validator = new Validator00($bank); } protected function validate() diff --git a/classes/validator/validators/Validator_D9.php b/classes/validator/validators/ValidatorD9.php similarity index 83% rename from classes/validator/validators/Validator_D9.php rename to classes/validator/validators/ValidatorD9.php index b03f925b..7648783b 100644 --- a/classes/validator/validators/Validator_D9.php +++ b/classes/validator/validators/ValidatorD9.php @@ -26,15 +26,15 @@ * @author Markus Malkusch * @copyright Copyright (C) 2012 Markus Malkusch */ -class Validator_D9 extends Validator_Chain +class ValidatorD9 extends ValidatorChain { public function __construct(Bank $bank) { parent::__construct($bank); - $this->validators[] = new Validator_00($bank); - $this->validators[] = new Validator_10($bank); - $this->validators[] = new Validator_18($bank); + $this->validators[] = new Validator00($bank); + $this->validators[] = new Validator10($bank); + $this->validators[] = new Validator18($bank); } } diff --git a/classes/validator/validators/Validator_E0.php b/classes/validator/validators/ValidatorE0.php similarity index 96% rename from classes/validator/validators/Validator_E0.php rename to classes/validator/validators/ValidatorE0.php index 869ab669..bd21e41a 100644 --- a/classes/validator/validators/Validator_E0.php +++ b/classes/validator/validators/ValidatorE0.php @@ -23,7 +23,7 @@ * * @author hhilbert 2013-03-12 added */ -class Validator_E0 extends Validator_00 +class ValidatorE0 extends Validator00 { protected function validate() diff --git a/classes/validator/validators/Validator_E1.php b/classes/validator/validators/ValidatorE1.php similarity index 96% rename from classes/validator/validators/Validator_E1.php rename to classes/validator/validators/ValidatorE1.php index de8f4e0f..969f6bb9 100644 --- a/classes/validator/validators/Validator_E1.php +++ b/classes/validator/validators/ValidatorE1.php @@ -25,7 +25,7 @@ * https://github.com/jschaedl/Bav/blob/master/library/Bav/Validator/De/SystemE1.php */ -class Validator_E1 extends Validator_Iteration_Weighted +class ValidatorE1 extends ValidatorIteration_Weighted { private static $subsitutions = array(48, 49, 50, 51, 52, 53, 54, 55, 56, 57); diff --git a/tests/ValidatorTest.php b/tests/ValidatorTest.php index 96afc909..c4aeb4f6 100755 --- a/tests/ValidatorTest.php +++ b/tests/ValidatorTest.php @@ -75,7 +75,7 @@ public function provideBanks() $banks = array(); $files = ClassFile::getClassFiles(__DIR__.'/../classes/validator/validators/'); foreach ($files as $class) { - if (! preg_match('~^Validator_([A-Z0-9]{2})$~', $class->getName(), $matchType)) { + if (! preg_match('~^Validator([A-Z0-9]{2})$~', $class->getName(), $matchType)) { continue; } From 3e3409d4c2f650313ac1bc72b1acce2e1ab7a2b2 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 04:59:26 +0200 Subject: [PATCH 101/303] removed whitespace --- classes/dataBackend/file/FileDataBackendContainer.php | 2 +- classes/dataBackend/pdo/PDODataBackendContainer.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/dataBackend/file/FileDataBackendContainer.php b/classes/dataBackend/file/FileDataBackendContainer.php index 801c4a16..e1048ea4 100644 --- a/classes/dataBackend/file/FileDataBackendContainer.php +++ b/classes/dataBackend/file/FileDataBackendContainer.php @@ -8,7 +8,7 @@ * @author Markus Malkusch * @license GPL * @see DataBackend - */ + */ class FileDataBackendContainer extends DataBackendContainer { diff --git a/classes/dataBackend/pdo/PDODataBackendContainer.php b/classes/dataBackend/pdo/PDODataBackendContainer.php index 76b0e1f3..4818d067 100644 --- a/classes/dataBackend/pdo/PDODataBackendContainer.php +++ b/classes/dataBackend/pdo/PDODataBackendContainer.php @@ -8,7 +8,7 @@ * @author Markus Malkusch * @license GPL * @see DataBackend - */ + */ class PDODataBackendContainer extends DataBackendContainer { From 3fe993b252f62658175017956224e185cc0a9111 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 05:49:03 +0200 Subject: [PATCH 102/303] added API facade BAV --- autoloader/index/0.php | 1 + classes/BAV.php | 132 ++++++++++++++++++++++++++++++++++ classes/bank/Bank.php | 2 +- docs/changelog.txt | 3 + tests/BAVFacadeTest.php | 156 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 293 insertions(+), 1 deletion(-) create mode 100644 classes/BAV.php create mode 100644 tests/BAVFacadeTest.php diff --git a/autoloader/index/0.php b/autoloader/index/0.php index 11ee9fcb..0122e754 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -15,6 +15,7 @@ */ return array( + 'malkusch\bav\bav' => '../classes/BAV.php', 'malkusch\bav\bank' => '../classes/bank/Bank.php', 'malkusch\bav\agency' => '../classes/bank/Agency.php', 'malkusch\bav\encoding' => '../classes/encoding/Encoding.php', diff --git a/classes/BAV.php b/classes/BAV.php new file mode 100644 index 00000000..1ccc99ca --- /dev/null +++ b/classes/BAV.php @@ -0,0 +1,132 @@ + + * @license GPL + */ +class BAV +{ + + /** + * @var Configuration + */ + private $configuration; + + /** + * @var DataBackend + */ + private $backend; + + /** + * Inject the configuration. + * + * If the $configuration is null the configuration from + * ConfigurationRegistry::getConfiguration() will be used. + * + * @see ConfigurationRegistry + */ + public function __construct(Configuration $configuration = null) + { + if (is_null($configuration)) { + $configuration = ConfigurationRegistry::getConfiguration(); + + } + $this->configuration = $configuration; + + $this->backend = $configuration->getDataBackendContainer()->getDataBackend(); + } + + /** + * Returns the data backend + * + * @return DataBackend + */ + public function getDataBackend() + { + return $this->backend; + } + + /** + * Returns true if both the bank exists and the account is valid. + * + * @throws DataBackendException for some reason the validator might not be implemented + * @param string $bankID + * @param string $account + * @see bankExists() + * @see getBank() + * @see Bank::isValid() + * @return bool + */ + public function isValidBankAccount($bankID, $account) + { + try { + $bank = $this->getBank($bankID); + return $bank->isValid($account); + + } catch (DataBackendException_BankNotFound $e) { + return false; + + } + } + + /** + * Returns true if a bank exists + * + * @throws DataBackendException + * @param string $bankID + * @return bool + * @see DataBackend::bankExists() + */ + public function bankExists($bankID) + { + return $this->backend->bankExists($bankID); + } + + /** + * Every bank has one main agency. + * + * This agency is not included in getAgencies(). + * + * @throws DataBackendException + * @throws DataBackendException_BankNotFound + * @see Bank::getMainAgency() + * @see getAgencies() + * @return Agency + */ + public function getMainAgency($bankID) + { + return $this->getBank($bankID)->getMainAgency(); + } + + /** + * A bank may have more agencies. + * + * @throws DataBackendException + * @throws DataBackendException_BankNotFound + * @return Agency[] + */ + public function getAgencies($bankID) + { + return $this->getBank($bankID)->getAgencies(); + } + + /** + * With this method you get the Bank objects for certain IDs. Note + * that a call to this method with an identical id will return the same + * objects. + * + * @throws DataBackendException_BankNotFound + * @throws DataBackendException + * @param string $bankID + * @return Bank + * @see DataBackend::bankExists() + */ + public function getBank($bankID) + { + return $this->backend->getBank($bankID); + } +} diff --git a/classes/bank/Bank.php b/classes/bank/Bank.php index fa908137..0235adc7 100644 --- a/classes/bank/Bank.php +++ b/classes/bank/Bank.php @@ -116,7 +116,7 @@ public function getMainAgency() * A bank may have more agencies. * * @throws DataBackendException - * @return array + * @return Agency[] */ public function getAgencies() { diff --git a/docs/changelog.txt b/docs/changelog.txt index 2e972708..1e7130da 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -12,6 +12,9 @@ Version 1.0.0 - not yet released - removed DataBackend::_getAgencies() and DataBackend::_getMainAgency() + - added the API facade BAV (don't confuse with the removed class BAV). + + Version 0.28 - May 26, 2014 --------------------------- - added Composer support diff --git a/tests/BAVFacadeTest.php b/tests/BAVFacadeTest.php new file mode 100644 index 00000000..a0a59566 --- /dev/null +++ b/tests/BAVFacadeTest.php @@ -0,0 +1,156 @@ + + * @see BAV + */ +class BAVFacadeTest extends \PHPUnit_Framework_TestCase +{ + + /** + * Tests BAV::getBank(); + * + * @see BAV::getBank(); + */ + public function testGetBank() + { + $bav = new BAV(); + $bank = $bav->getBank("73362500"); + $this->assertNotNull($bank); + } + + /** + * Tests BAV::getBank(); + * + * @expectedException malkusch\bav\DataBackendException_BankNotFound + * @see BAV::getBank(); + */ + public function testFailGetBank() + { + $bav = new BAV(); + $bav->getBank("12345678"); + } + + /** + * Tests BAV::getAgencies(); + * + * @expectedException malkusch\bav\DataBackendException_BankNotFound + * @see BAV::getAgencies(); + */ + public function testFailGetAgencies() + { + $bav = new BAV(); + $bav->getAgencies("12345678"); + } + + /** + * Test cases for testGetAgencies() + * + * @return array + * @see testGetAgencies() + */ + public function provideTestGetAgencies() + { + return array( + array("73362500", 0), + array("10070000", 2), + array("10020890", 5), + ); + } + + /** + * Tests BAV::getAgencies(); + * + * @dataProvider provideTestGetAgencies + * @see BAV::getAgencies(); + */ + public function testGetAgencies($bankID, $count) + { + $bav = new BAV(); + $agencies = $bav->getAgencies($bankID); + $this->assertEquals($count, count($agencies)); + } + + /** + * Tests BAV::getMainAgency(); + * + * @see BAV::getMainAgency(); + */ + public function testGetMainAgency() + { + $bav = new BAV(); + $agency = $bav->getMainAgency("73362500"); + $this->assertNotNull($agency); + } + + /** + * Tests BAV::getMainAgency(); + * + * @expectedException malkusch\bav\DataBackendException_BankNotFound + * @see BAV::getMainAgency(); + */ + public function testFailGetMainAgency() + { + $bav = new BAV(); + $bav->getMainAgency("12345678"); + } + + /** + * Test cases for testBankExists() + * + * @see testBankExists() + * @return array + */ + public function provideTestbankExists() + { + return array( + array("73362500", true), + array("12345678", false), + ); + } + + /** + * Tests BAV::bankExists(); + * + * @dataProvider provideTestbankExists + * @see BAV::bankExists(); + */ + public function testBankExists($bankID, $expected) + { + $bav = new BAV(); + $this->assertEquals($expected, $bav->bankExists($bankID)); + } + + /** + * Test cases for testIsValidBankAccount() + * + * @see testIsValidBankAccount() + * @return array + */ + public function provideTestIsValidBankAccount() + { + return array( + array("73362500", "0110030005", false), + array("73362500", "0010030005", true), + ); + } + + /** + * Tests BAV::isValidBankAccount(); + * + * @dataProvider provideTestIsValidBankAccount + * @see BAV::isValidBankAccount(); + */ + public function testIsValidBankAccount($bankID, $account, $expected) + { + $bav = new BAV(); + $this->assertEquals($expected, $bav->isValidBankAccount($bankID, $account)); + } +} From f481180d1ad5af0182affb366751c21765581564 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 05:53:22 +0200 Subject: [PATCH 103/303] added type to returned arrays --- classes/dataBackend/DataBackend.php | 4 ++-- classes/dataBackend/file/DataBackend_File.php | 4 ++-- classes/dataBackend/pdo/DataBackend_PDO.php | 6 +++--- classes/validator/validators/Validator51.php | 2 +- tests/CrossProjectTest.php | 3 --- 5 files changed, 8 insertions(+), 11 deletions(-) diff --git a/classes/dataBackend/DataBackend.php b/classes/dataBackend/DataBackend.php index d8ba0151..5ab6c157 100644 --- a/classes/dataBackend/DataBackend.php +++ b/classes/dataBackend/DataBackend.php @@ -110,7 +110,7 @@ public function bankExists($bankID) * to garantee that there will never exist two identical objects. * * @throws DataBackendException - * @return array + * @return Bank[] */ abstract public function getAllBanks(); @@ -148,7 +148,7 @@ abstract public function getMainAgency(Bank $bank); * @todo remove _getAgencies() and make getAgenciesForBank() abstract. * @throws DataBackendException * @see Bank::getAgencies() - * @return array + * @return Agency[] * @internal YOU SHOULD NOT CALL THIS METHOD! Use Bank->getMainAgency() */ abstract public function getAgenciesForBank(Bank $bank); diff --git a/classes/dataBackend/file/DataBackend_File.php b/classes/dataBackend/file/DataBackend_File.php index 58e3d91a..af55e3fa 100644 --- a/classes/dataBackend/file/DataBackend_File.php +++ b/classes/dataBackend/file/DataBackend_File.php @@ -279,7 +279,7 @@ private function safeRename($source, $destination) /** * @throws DataBackendException_IO * @throws DataBackendException - * @return array + * @return Bank[] * @see DataBackend::getAllBanks() */ public function getAllBanks() @@ -422,7 +422,7 @@ public function getMainAgency(Bank $bank) * @see DataBackend::getAgenciesForBank() * @throws DataBackendException_IO * @throws DataBackendException - * @return array + * @return Agency[] */ public function getAgenciesForBank(Bank $bank) { diff --git a/classes/dataBackend/pdo/DataBackend_PDO.php b/classes/dataBackend/pdo/DataBackend_PDO.php index a657f857..52c03708 100644 --- a/classes/dataBackend/pdo/DataBackend_PDO.php +++ b/classes/dataBackend/pdo/DataBackend_PDO.php @@ -98,7 +98,7 @@ public function getPrefix() * @throws DataBackendException_IO_MissingAttributes * @throws DataBackendException_IO * @throws DataBackendException - * @return array + * @return Agency[] */ public function getAgencies($sql) { @@ -364,7 +364,7 @@ public function uninstall() /** * @see DataBackend::getAllBanks() * @throws DataBackendException - * @return array + * @return Bank[] */ public function getAllBanks() { @@ -515,7 +515,7 @@ public function getMainAgency(Bank $bank) /** * @throws DataBackendException - * @return array + * @return Agency[] * @see DataBackend::getAgenciesForBank() */ public function getAgenciesForBank(Bank $bank) diff --git a/classes/validator/validators/Validator51.php b/classes/validator/validators/Validator51.php index 276142fb..c2f79e74 100644 --- a/classes/validator/validators/Validator51.php +++ b/classes/validator/validators/Validator51.php @@ -72,7 +72,7 @@ public function __construct(Bank $bank) } /** - * @return array + * @return Validator[] */ public static function getExceptionValidators(Bank $bank) { diff --git a/tests/CrossProjectTest.php b/tests/CrossProjectTest.php index 1d12417c..85ba8e06 100755 --- a/tests/CrossProjectTest.php +++ b/tests/CrossProjectTest.php @@ -49,9 +49,6 @@ class CrossProjectTest extends \PHPUnit_Framework_TestCase */ private $testAPIs = array(); - /** - * @return Array - */ protected function setUp() { $ktoblzcheckPath = __DIR__ . "/../tmp/ktoblzcheck/ktoblzcheck-1.21/src"; From ee30f1ff2e9d40a3a210d61b5d488495659e6317 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 06:33:36 +0200 Subject: [PATCH 104/303] renamed all classes which where not conform to PSR2 --- autoloader/index/0.php | 42 ++++----- autoloader/index/1.php | 19 ++-- bin/verifyImport.php | 4 +- classes/BAV.php | 8 +- classes/bank/Agency.php | 8 +- classes/bank/Bank.php | 4 +- ... => UndefinedAttributeAgencyException.php} | 2 +- .../configuration/DefaultConfiguration.php | 2 +- classes/dataBackend/DataBackend.php | 8 +- ...NotFound.php => BankNotFoundException.php} | 2 +- ...aBackendException_IO_MissingAttributes.php | 31 ------- ...tion_IO.php => DataBackendIOException.php} | 2 +- ...ssingAttributesDataBackendIOException.php} | 2 +- ...inAgency.php => NoMainAgencyException.php} | 2 +- ...taBackend_File.php => FileDataBackend.php} | 86 +++++++++---------- .../file/FileDataBackendContainer.php | 6 +- .../file/fileParser/FileParser.php | 58 ++++++------- .../file/fileParser/FileParserContext.php | 8 +- ...Exception_IO.php => FileParserIOException} | 2 +- ...s.php => FileParserNotExistsException.php} | 2 +- ...xception_ParseError.php => ParseException} | 2 +- .../UndefinedFileParserContextException.php | 31 +++++++ ...DataBackend_PDO.php => PDODataBackend.php} | 62 ++++++------- .../pdo/PDODataBackendContainer.php | 6 +- classes/encoding/Encoding.php | 20 ++--- ...coding_ISO8859.php => ISO8859Encoding.php} | 2 +- .../{Encoding_Iconv.php => IconvEncoding.php} | 4 +- .../{Encoding_MB.php => MBEncoding.php} | 4 +- ...d.php => UnsupportedEncodingException.php} | 2 +- ...p => TransformationIterationValidator.php} | 2 +- classes/validator/Validator.php | 28 +++--- ...ted.php => WeightedIterationValidator.php} | 2 +- ...on_ESER.php => ValidatorESERException.php} | 2 +- ...ts.php => ValidatorNotExistsException.php} | 2 +- ....php => ValidatorOutOfBoundsException.php} | 2 +- classes/validator/validators/Validator00.php | 2 +- classes/validator/validators/Validator01.php | 2 +- classes/validator/validators/Validator02.php | 2 +- classes/validator/validators/Validator06.php | 2 +- classes/validator/validators/Validator17.php | 2 +- classes/validator/validators/Validator22.php | 2 +- classes/validator/validators/Validator24.php | 2 +- classes/validator/validators/Validator25.php | 2 +- classes/validator/validators/Validator27.php | 2 +- classes/validator/validators/Validator29.php | 2 +- classes/validator/validators/Validator31.php | 2 +- classes/validator/validators/Validator35.php | 2 +- classes/validator/validators/Validator43.php | 2 +- classes/validator/validators/Validator51x.php | 2 +- classes/validator/validators/Validator52.php | 4 +- classes/validator/validators/Validator54.php | 2 +- classes/validator/validators/Validator56.php | 2 +- classes/validator/validators/Validator61.php | 2 +- classes/validator/validators/Validator62.php | 2 +- classes/validator/validators/Validator63.php | 2 +- classes/validator/validators/Validator66.php | 2 +- classes/validator/validators/Validator69b.php | 2 +- classes/validator/validators/Validator71.php | 2 +- classes/validator/validators/Validator76.php | 2 +- classes/validator/validators/Validator77a.php | 2 +- classes/validator/validators/Validator83x.php | 2 +- classes/validator/validators/Validator84b.php | 2 +- classes/validator/validators/Validator87c.php | 2 +- classes/validator/validators/Validator90c.php | 2 +- classes/validator/validators/Validator90d.php | 2 +- classes/validator/validators/Validator90e.php | 2 +- classes/validator/validators/Validator90g.php | 2 +- classes/validator/validators/Validator93.php | 2 +- classes/validator/validators/ValidatorA0.php | 2 +- classes/validator/validators/ValidatorA4b.php | 2 +- classes/validator/validators/ValidatorB9a.php | 2 +- classes/validator/validators/ValidatorB9b.php | 2 +- classes/validator/validators/ValidatorC1b.php | 2 +- classes/validator/validators/ValidatorD7.php | 2 +- classes/validator/validators/ValidatorE1.php | 2 +- classes/verify/VerifyImport.php | 18 ++-- ...Exception_IO.php => VerifyIOException.php} | 2 +- docs/changelog.txt | 2 + tests/AgencyQueryTest.php | 8 +- tests/BAVFacadeTest.php | 6 +- tests/BackendContainerTest.php | 4 +- tests/BackendTest.php | 12 +-- tests/CrossProjectTest.php | 12 +-- tests/UpdatePlanTest.php | 14 +-- tests/ValidatorTest.php | 22 ++--- tests/VerifyImportTest.php | 8 +- tests/checkAgainstTestAPIs.php | 15 ++-- tests/classes/class/ClassFile.php | 18 ++-- ...eption_IO.php => ClassFileIOException.php} | 2 +- ...ingClass.php => MissingClassException.php} | 2 +- .../{TestAPI_BAV.php => BAVTestAPI.php} | 4 +- ...I_Kontocheck.php => KontocheckTestAPI.php} | 14 +-- ...Ktoblzcheck.php => KtoblzcheckTestAPI.php} | 12 +-- tests/classes/testAPI/TestAPI.php | 4 +- ...esult_Error.php => TestAPIErrorResult.php} | 2 +- ...d.php => BankNotFoundTestAPIException.php} | 2 +- ...php => NotInitializedTestAPIException.php} | 2 +- ...ion.php => ValidationTestAPIException.php} | 2 +- 98 files changed, 371 insertions(+), 367 deletions(-) rename classes/bank/exception/{AgencyException_UndefinedAttribute.php => UndefinedAttributeAgencyException.php} (95%) rename classes/dataBackend/exception/{DataBackendException_BankNotFound.php => BankNotFoundException.php} (94%) delete mode 100644 classes/dataBackend/exception/DataBackendException_IO_MissingAttributes.php rename classes/dataBackend/exception/{DataBackendException_IO.php => DataBackendIOException.php} (94%) rename classes/dataBackend/{file/fileParser/exception/FileParserContextException_Undefined.php => exception/MissingAttributesDataBackendIOException.php} (92%) rename classes/dataBackend/exception/{DataBackendException_NoMainAgency.php => NoMainAgencyException.php} (94%) rename classes/dataBackend/file/{DataBackend_File.php => FileDataBackend.php} (85%) rename classes/dataBackend/file/fileParser/exception/{FileParserException_IO.php => FileParserIOException} (94%) rename classes/dataBackend/file/fileParser/exception/{FileParserException_FileNotExists.php => FileParserNotExistsException.php} (95%) rename classes/dataBackend/file/fileParser/exception/{FileParserException_ParseError.php => ParseException} (93%) create mode 100644 classes/dataBackend/file/fileParser/exception/UndefinedFileParserContextException.php rename classes/dataBackend/pdo/{DataBackend_PDO.php => PDODataBackend.php} (90%) rename classes/encoding/{Encoding_ISO8859.php => ISO8859Encoding.php} (98%) rename classes/encoding/{Encoding_Iconv.php => IconvEncoding.php} (96%) rename classes/encoding/{Encoding_MB.php => MBEncoding.php} (96%) rename classes/encoding/exception/{EncodingException_Unsupported.php => UnsupportedEncodingException.php} (95%) rename classes/validator/{ValidatorIteration_Transformation.php => TransformationIterationValidator.php} (96%) rename classes/validator/{ValidatorIteration_Weighted.php => WeightedIterationValidator.php} (95%) rename classes/validator/exception/{ValidatorException_ESER.php => ValidatorESERException.php} (94%) rename classes/validator/exception/{ValidatorException_NotExists.php => ValidatorNotExistsException.php} (95%) rename classes/validator/exception/{ValidatorException_OutOfBounds.php => ValidatorOutOfBoundsException.php} (93%) rename classes/verify/exception/{VerifyException_IO.php => VerifyIOException.php} (95%) rename tests/classes/class/exception/{ClassFileException_IO.php => ClassFileIOException.php} (94%) rename tests/classes/class/exception/{ClassFileException_MissingClass.php => MissingClassException.php} (96%) rename tests/classes/testAPI/{TestAPI_BAV.php => BAVTestAPI.php} (94%) rename tests/classes/testAPI/{TestAPI_Kontocheck.php => KontocheckTestAPI.php} (82%) rename tests/classes/testAPI/{TestAPI_Ktoblzcheck.php => KtoblzcheckTestAPI.php} (83%) rename tests/classes/testAPI/{TestAPIResult_Error.php => TestAPIErrorResult.php} (96%) rename tests/classes/testAPI/exception/{TestAPIException_Validation_BankNotFound.php => BankNotFoundTestAPIException.php} (92%) rename tests/classes/testAPI/exception/{TestAPIException_Validation_NotInitialized.php => NotInitializedTestAPIException.php} (91%) rename tests/classes/testAPI/exception/{TestAPIException_Validation.php => ValidationTestAPIException.php} (94%) diff --git a/autoloader/index/0.php b/autoloader/index/0.php index 0122e754..24219e01 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -22,8 +22,8 @@ 'malkusch\bav\validator' => '../classes/validator/Validator.php', 'malkusch\bav\fileparser' => '../classes/dataBackend/file/fileParser/FileParser.php', 'malkusch\bav\updateplan' => '../classes/dataBackend/update/UpdatePlan.php', + 'malkusch\bav\mbencoding' => '../classes/encoding/MBEncoding.php', 'malkusch\bav\databackend' => '../classes/dataBackend/DataBackend.php', - 'malkusch\bav\encoding_mb' => '../classes/encoding/Encoding_MB.php', 'malkusch\bav\validator00' => '../classes/validator/validators/Validator00.php', 'malkusch\bav\validator01' => '../classes/validator/validators/Validator01.php', 'malkusch\bav\validator02' => '../classes/validator/validators/Validator02.php', @@ -184,42 +184,42 @@ 'malkusch\bav\verifyimport' => '../classes/verify/VerifyImport.php', 'malkusch\bav\configuration' => '../classes/configuration/Configuration.php', 'malkusch\bav\logupdateplan' => '../classes/dataBackend/update/LogUpdatePlan.php', - 'malkusch\bav\encoding_iconv' => '../classes/encoding/Encoding_Iconv.php', + 'malkusch\bav\iconvencoding' => '../classes/encoding/IconvEncoding.php', + 'malkusch\bav\pdodatabackend' => '../classes/dataBackend/pdo/PDODataBackend.php', 'malkusch\bav\validatorchain' => '../classes/validator/ValidatorChain.php', 'malkusch\bav\agencyexception' => '../classes/bank/exception/AgencyException.php', - 'malkusch\bav\databackend_pdo' => '../classes/dataBackend/pdo/DataBackend_PDO.php', + 'malkusch\bav\filedatabackend' => '../classes/dataBackend/file/FileDataBackend.php', + 'malkusch\bav\iso8859encoding' => '../classes/encoding/ISO8859Encoding.php', 'malkusch\bav\verifyexception' => '../classes/verify/exception/VerifyException.php', - 'malkusch\bav\databackend_file' => '../classes/dataBackend/file/DataBackend_File.php', - 'malkusch\bav\encoding_iso8859' => '../classes/encoding/Encoding_ISO8859.php', 'malkusch\bav\fileparsercontext' => '../classes/dataBackend/file/fileParser/FileParserContext.php', 'malkusch\bav\encodingexception' => '../classes/encoding/exception/EncodingException.php', + 'malkusch\bav\verifyioexception' => '../classes/verify/exception/VerifyIOException.php', 'malkusch\bav\validatoriteration' => '../classes/validator/ValidatorIteration.php', 'malkusch\bav\validatorexception' => '../classes/validator/exception/ValidatorException.php', - 'malkusch\bav\verifyexception_io' => '../classes/verify/exception/VerifyException_IO.php', 'malkusch\bav\fileparserexception' => '../classes/dataBackend/file/fileParser/exception/FileParserException.php', 'malkusch\bav\automaticupdateplan' => '../classes/dataBackend/update/AutomaticUpdatePlan.php', 'malkusch\bav\defaultconfiguration' => '../classes/configuration/DefaultConfiguration.php', 'malkusch\bav\databackendcontainer' => '../classes/dataBackend/DataBackendContainer.php', 'malkusch\bav\databackendexception' => '../classes/dataBackend/exception/DataBackendException.php', 'malkusch\bav\configurationregistry' => '../classes/configuration/ConfigurationRegistry.php', + 'malkusch\bav\banknotfoundexception' => '../classes/dataBackend/exception/BankNotFoundException.php', + 'malkusch\bav\nomainagencyexception' => '../classes/dataBackend/exception/NoMainAgencyException.php', 'malkusch\bav\configurationexception' => '../classes/configuration/ConfigurationException.php', - 'malkusch\bav\fileparserexception_io' => '../classes/dataBackend/file/fileParser/exception/FileParserException_IO.php', + 'malkusch\bav\databackendioexception' => '../classes/dataBackend/exception/DataBackendIOException.php', 'malkusch\bav\validatorbankdependent' => '../classes/validator/ValidatorBankDependent.php', - 'malkusch\bav\databackendexception_io' => '../classes/dataBackend/exception/DataBackendException_IO.php', + 'malkusch\bav\validatoreserexception' => '../classes/validator/exception/ValidatorESERException.php', 'malkusch\bav\pdodatabackendcontainer' => '../classes/dataBackend/pdo/PDODataBackendContainer.php', - 'malkusch\bav\validatorexception_eser' => '../classes/validator/exception/ValidatorException_ESER.php', 'malkusch\bav\filedatabackendcontainer' => '../classes/dataBackend/file/FileDataBackendContainer.php', 'malkusch\bav\fileparsercontextexception' => '../classes/dataBackend/file/fileParser/exception/FileParserContextException.php', - 'malkusch\bav\validatoriteration_weighted' => '../classes/validator/ValidatorIteration_Weighted.php', - 'malkusch\bav\validatorexception_notexists' => '../classes/validator/exception/ValidatorException_NotExists.php', - 'malkusch\bav\encodingexception_unsupported' => '../classes/encoding/exception/EncodingException_Unsupported.php', - 'malkusch\bav\fileparserexception_parseerror' => '../classes/dataBackend/file/fileParser/exception/FileParserException_ParseError.php', - 'malkusch\bav\validatorexception_outofbounds' => '../classes/validator/exception/ValidatorException_OutOfBounds.php', - 'malkusch\bav\databackendexception_banknotfound' => '../classes/dataBackend/exception/DataBackendException_BankNotFound.php', - 'malkusch\bav\databackendexception_nomainagency' => '../classes/dataBackend/exception/DataBackendException_NoMainAgency.php', - 'malkusch\bav\fileparserexception_filenotexists' => '../classes/dataBackend/file/fileParser/exception/FileParserException_FileNotExists.php', - 'malkusch\bav\validatoriteration_transformation' => '../classes/validator/ValidatorIteration_Transformation.php', - 'malkusch\bav\agencyexception_undefinedattribute' => '../classes/bank/exception/AgencyException_UndefinedAttribute.php', - 'malkusch\bav\fileparsercontextexception_undefined' => '../classes/dataBackend/file/fileParser/exception/FileParserContextException_Undefined.php', - 'malkusch\bav\databackendexception_io_missingattributes' => '../classes/dataBackend/exception/DataBackendException_IO_MissingAttributes.php', + 'malkusch\bav\weightediterationvalidator' => '../classes/validator/WeightedIterationValidator.php', + 'malkusch\bav\validatornotexistsexception' => '../classes/validator/exception/ValidatorNotExistsException.php', + 'malkusch\bav\fileparsernotexistsexception' => '../classes/dataBackend/file/fileParser/exception/FileParserNotExistsException.php', + 'malkusch\bav\unsupportedencodingexception' => '../classes/encoding/exception/UnsupportedEncodingException.php', + 'malkusch\bav\validatoroutofboundsexception' => '../classes/validator/exception/ValidatorOutOfBoundsException.php', + 'malkusch\bav\transformationiterationvalidator' => '../classes/validator/TransformationIterationValidator.php', + 'malkusch\bav\undefinedattributeagencyexception' => '../classes/bank/exception/UndefinedAttributeAgencyException.php', + 'malkusch\bav\undefinedfileparsercontextexception' => '../classes/dataBackend/file/fileParser/exception/UndefinedFileParserContextException.php', + 'malkusch\bav\missingattributesdatabackendioexception' => '../classes/dataBackend/exception/MissingAttributesDataBackendIOException.php', + 'malkusch\bav\parseexception' => '../classes/dataBackend/file/fileParser/exception/ParseException', + 'malkusch\bav\fileparserioexception' => '../classes/dataBackend/file/fileParser/exception/FileParserIOException', ); diff --git a/autoloader/index/1.php b/autoloader/index/1.php index d6399f66..e0e1779f 100644 --- a/autoloader/index/1.php +++ b/autoloader/index/1.php @@ -19,8 +19,9 @@ 'malkusch\bav\timemock' => '../tests/classes/TimeMock.php', 'malkusch\bav\testsuite' => '../tests/TestSuite.php', 'malkusch\bav\classfile' => '../tests/classes/class/ClassFile.php', + 'malkusch\bav\bavtestapi' => '../tests/classes/testAPI/BAVTestAPI.php', 'malkusch\bav\backendtest' => '../tests/BackendTest.php', - 'malkusch\bav\testapi_bav' => '../tests/classes/testAPI/TestAPI_BAV.php', + 'malkusch\bav\bavfacadetest' => '../tests/BAVFacadeTest.php', 'malkusch\bav\validatortest' => '../tests/ValidatorTest.php', 'malkusch\bav\testapiresult' => '../tests/classes/testAPI/TestAPIResult.php', 'malkusch\bav\updateplantest' => '../tests/UpdatePlanTest.php', @@ -28,16 +29,16 @@ 'malkusch\bav\crossprojecttest' => '../tests/CrossProjectTest.php', 'malkusch\bav\verifyimporttest' => '../tests/VerifyImportTest.php', 'malkusch\bav\testapiexception' => '../tests/classes/testAPI/exception/TestAPIException.php', + 'malkusch\bav\kontochecktestapi' => '../tests/classes/testAPI/KontocheckTestAPI.php', 'malkusch\bav\dataconstrainttest' => '../tests/DataConstraintTest.php', 'malkusch\bav\classfileexception' => '../tests/classes/class/exception/ClassFileException.php', - 'malkusch\bav\testapi_kontocheck' => '../tests/classes/testAPI/TestAPI_Kontocheck.php', - 'malkusch\bav\testapiresult_error' => '../tests/classes/testAPI/TestAPIResult_Error.php', - 'malkusch\bav\testapi_ktoblzcheck' => '../tests/classes/testAPI/TestAPI_Ktoblzcheck.php', + 'malkusch\bav\ktoblzchecktestapi' => '../tests/classes/testAPI/KtoblzcheckTestAPI.php', + 'malkusch\bav\testapierrorresult' => '../tests/classes/testAPI/TestAPIErrorResult.php', 'malkusch\bav\backendcontainertest' => '../tests/BackendContainerTest.php', 'malkusch\bav\checkagainsttestapis' => '../tests/checkAgainstTestAPIs.php', - 'malkusch\bav\classfileexception_io' => '../tests/classes/class/exception/ClassFileException_IO.php', - 'malkusch\bav\testapiexception_validation' => '../tests/classes/testAPI/exception/TestAPIException_Validation.php', - 'malkusch\bav\classfileexception_missingclass' => '../tests/classes/class/exception/ClassFileException_MissingClass.php', - 'malkusch\bav\testapiexception_validation_banknotfound' => '../tests/classes/testAPI/exception/TestAPIException_Validation_BankNotFound.php', - 'malkusch\bav\testapiexception_validation_notinitialized' => '../tests/classes/testAPI/exception/TestAPIException_Validation_NotInitialized.php', + 'malkusch\bav\classfileioexception' => '../tests/classes/class/exception/ClassFileIOException.php', + 'malkusch\bav\missingclassexception' => '../tests/classes/class/exception/MissingClassException.php', + 'malkusch\bav\validationtestapiexception' => '../tests/classes/testAPI/exception/ValidationTestAPIException.php', + 'malkusch\bav\banknotfoundtestapiexception' => '../tests/classes/testAPI/exception/BankNotFoundTestAPIException.php', + 'malkusch\bav\notinitializedtestapiexception' => '../tests/classes/testAPI/exception/NotInitializedTestAPIException.php', ); diff --git a/bin/verifyImport.php b/bin/verifyImport.php index df48258d..e61d69bd 100755 --- a/bin/verifyImport.php +++ b/bin/verifyImport.php @@ -38,11 +38,11 @@ /** - * This works only if you have called DataBackend_File->install(). That + * This works only if you have called FileDataBackend->install(). That * means there must exist a ../data/banklist.txt. If this does not apply to * you, you have to change these lines. */ -$databack = new DataBackend_File(); +$databack = new FileDataBackend(); $importer = new VerifyImport($databack); diff --git a/classes/BAV.php b/classes/BAV.php index 1ccc99ca..080cf095 100644 --- a/classes/BAV.php +++ b/classes/BAV.php @@ -67,7 +67,7 @@ public function isValidBankAccount($bankID, $account) $bank = $this->getBank($bankID); return $bank->isValid($account); - } catch (DataBackendException_BankNotFound $e) { + } catch (BankNotFoundException $e) { return false; } @@ -92,7 +92,7 @@ public function bankExists($bankID) * This agency is not included in getAgencies(). * * @throws DataBackendException - * @throws DataBackendException_BankNotFound + * @throws BankNotFoundException * @see Bank::getMainAgency() * @see getAgencies() * @return Agency @@ -106,7 +106,7 @@ public function getMainAgency($bankID) * A bank may have more agencies. * * @throws DataBackendException - * @throws DataBackendException_BankNotFound + * @throws BankNotFoundException * @return Agency[] */ public function getAgencies($bankID) @@ -119,7 +119,7 @@ public function getAgencies($bankID) * that a call to this method with an identical id will return the same * objects. * - * @throws DataBackendException_BankNotFound + * @throws BankNotFoundException * @throws DataBackendException * @param string $bankID * @return Bank diff --git a/classes/bank/Agency.php b/classes/bank/Agency.php index 9ae94327..8055aab3 100644 --- a/classes/bank/Agency.php +++ b/classes/bank/Agency.php @@ -170,26 +170,26 @@ public function hasBIC() } /** - * @throws AgencyException_UndefinedAttribute + * @throws UndefinedAttributeAgencyException * @return string */ public function getPAN() { if (! $this->hasPAN()) { - throw new AgencyException_UndefinedAttribute($this, 'pan'); + throw new UndefinedAttributeAgencyException($this, 'pan'); } return $this->pan; } /** - * @throws AgencyException_UndefinedAttribute + * @throws UndefinedAttributeAgencyException * @return string */ public function getBIC() { if (! $this->hasBIC()) { - throw new AgencyException_UndefinedAttribute($this, 'bic'); + throw new UndefinedAttributeAgencyException($this, 'bic'); } return $this->bic; diff --git a/classes/bank/Bank.php b/classes/bank/Bank.php index 0235adc7..c9cc5139 100644 --- a/classes/bank/Bank.php +++ b/classes/bank/Bank.php @@ -130,7 +130,7 @@ public function getAgencies() /** * Use this method to check your bank account. * - * @throws ValidatorException_NotExists for some reason the validator might not be implemented + * @throws ValidatorNotExistsException for some reason the validator might not be implemented * @param string $account * @return bool */ @@ -140,7 +140,7 @@ public function isValid($account) } /** - * @throws ValidatorException_NotExists + * @throws ValidatorNotExistsException * @return Validator */ public function getValidator() diff --git a/classes/bank/exception/AgencyException_UndefinedAttribute.php b/classes/bank/exception/UndefinedAttributeAgencyException.php similarity index 95% rename from classes/bank/exception/AgencyException_UndefinedAttribute.php rename to classes/bank/exception/UndefinedAttributeAgencyException.php index 09c0d1a5..2a95e5a7 100644 --- a/classes/bank/exception/AgencyException_UndefinedAttribute.php +++ b/classes/bank/exception/UndefinedAttributeAgencyException.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class AgencyException_UndefinedAttribute extends AgencyException +class UndefinedAttributeAgencyException extends AgencyException { /** diff --git a/classes/configuration/DefaultConfiguration.php b/classes/configuration/DefaultConfiguration.php index 67085b78..c10cface 100644 --- a/classes/configuration/DefaultConfiguration.php +++ b/classes/configuration/DefaultConfiguration.php @@ -29,7 +29,7 @@ public function __construct() try { $encoding = Encoding::getInstance("UTF-8"); - } catch (EncodingException_Unsupported $e) { + } catch (UnsupportedEncodingException $e) { trigger_error("UTF-8 is not supported; bav is falling back to ISO-8859-15", E_WARNING); $encoding = Encoding::getInstance("ISO-8859-15"); diff --git a/classes/dataBackend/DataBackend.php b/classes/dataBackend/DataBackend.php index 5ab6c157..ba342b57 100644 --- a/classes/dataBackend/DataBackend.php +++ b/classes/dataBackend/DataBackend.php @@ -71,7 +71,7 @@ abstract public function getLastUpdate(); * that a call to this method with an identical id will return the same * objects. * - * @throws DataBackendException_BankNotFound + * @throws BankNotFoundException * @throws DataBackendException * @param string * @return Bank @@ -98,7 +98,7 @@ public function bankExists($bankID) $this->getBank($bankID); return true; - } catch (DataBackendException_BankNotFound $e) { + } catch (BankNotFoundException $e) { return false; } @@ -117,11 +117,11 @@ abstract public function getAllBanks(); /** * This method will be called by getBank() if getBank() thinks it is necessary to * create a new object. You have to return the new object and have not to take care - * about $instances. getBank() cares about $instances. Throw a DataBackendException_BankNotFound + * about $instances. getBank() cares about $instances. Throw a BankNotFoundException * if the bank does not exist. * * @throws DataBackendException - * @throws DataBackendException_BankNotFound if the bank does not exist + * @throws BankNotFoundException if the bank does not exist * @param string * @return Bank */ diff --git a/classes/dataBackend/exception/DataBackendException_BankNotFound.php b/classes/dataBackend/exception/BankNotFoundException.php similarity index 94% rename from classes/dataBackend/exception/DataBackendException_BankNotFound.php rename to classes/dataBackend/exception/BankNotFoundException.php index 6fcddda1..de33d93c 100644 --- a/classes/dataBackend/exception/DataBackendException_BankNotFound.php +++ b/classes/dataBackend/exception/BankNotFoundException.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class DataBackendException_BankNotFound extends DataBackendException +class BankNotFoundException extends DataBackendException { /** diff --git a/classes/dataBackend/exception/DataBackendException_IO_MissingAttributes.php b/classes/dataBackend/exception/DataBackendException_IO_MissingAttributes.php deleted file mode 100644 index 2fa10e0d..00000000 --- a/classes/dataBackend/exception/DataBackendException_IO_MissingAttributes.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * - * @package classes - * @subpackage dataBackend - * @author Markus Malkusch - * @copyright Copyright (C) 2006 Markus Malkusch - */ -class DataBackendException_IO_MissingAttributes extends DataBackendException_IO -{ - -} diff --git a/classes/dataBackend/exception/DataBackendException_IO.php b/classes/dataBackend/exception/DataBackendIOException.php similarity index 94% rename from classes/dataBackend/exception/DataBackendException_IO.php rename to classes/dataBackend/exception/DataBackendIOException.php index 5f802c0d..23359444 100644 --- a/classes/dataBackend/exception/DataBackendException_IO.php +++ b/classes/dataBackend/exception/DataBackendIOException.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class DataBackendException_IO extends DataBackendException +class DataBackendIOException extends DataBackendException { } diff --git a/classes/dataBackend/file/fileParser/exception/FileParserContextException_Undefined.php b/classes/dataBackend/exception/MissingAttributesDataBackendIOException.php similarity index 92% rename from classes/dataBackend/file/fileParser/exception/FileParserContextException_Undefined.php rename to classes/dataBackend/exception/MissingAttributesDataBackendIOException.php index 425ec9db..cf3345d8 100644 --- a/classes/dataBackend/file/fileParser/exception/FileParserContextException_Undefined.php +++ b/classes/dataBackend/exception/MissingAttributesDataBackendIOException.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class FileParserContextException_Undefined extends FileParserContextException +class MissingAttributesDataBackendIOException extends DataBackendIOException { } diff --git a/classes/dataBackend/exception/DataBackendException_NoMainAgency.php b/classes/dataBackend/exception/NoMainAgencyException.php similarity index 94% rename from classes/dataBackend/exception/DataBackendException_NoMainAgency.php rename to classes/dataBackend/exception/NoMainAgencyException.php index 053fab0d..64cd89da 100644 --- a/classes/dataBackend/exception/DataBackendException_NoMainAgency.php +++ b/classes/dataBackend/exception/NoMainAgencyException.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2010 Markus Malkusch */ -class DataBackendException_NoMainAgency extends DataBackendException +class NoMainAgencyException extends DataBackendException { /** diff --git a/classes/dataBackend/file/DataBackend_File.php b/classes/dataBackend/file/FileDataBackend.php similarity index 85% rename from classes/dataBackend/file/DataBackend_File.php rename to classes/dataBackend/file/FileDataBackend.php index af55e3fa..2fc8a454 100644 --- a/classes/dataBackend/file/DataBackend_File.php +++ b/classes/dataBackend/file/FileDataBackend.php @@ -10,7 +10,7 @@ * @author Markus Malkusch * @license GPL */ -class DataBackend_File extends DataBackend +class FileDataBackend extends DataBackend { const DOWNLOAD_URI = "http://www.bundesbank.de/Redaktion/DE/Standardartikel/Aufgaben/Unbarer_Zahlungsverkehr/bankleitzahlen_download.html"; @@ -52,14 +52,14 @@ public function getFile() * Be aware that this needs some amount of memory. * * @param String $file - * @throws DataBackendException_IO + * @throws DataBackendIOException */ private function sortFile($file) { //read the unordered bank file $lines = file($file); if (! is_array($lines) || empty($lines)) { - throw new DataBackendException_IO("Could not read lines in '$file'."); + throw new DataBackendIOException("Could not read lines in '$file'."); } @@ -76,7 +76,7 @@ private function sortFile($file) $temp = tempnam(self::getTempdir(), ""); $tempH = fopen($temp, 'w'); if (! ($temp && $tempH)) { - throw new DataBackendException_IO("Could not open a temporary file."); + throw new DataBackendIOException("Could not open a temporary file."); } foreach (array_keys($index) as $line) { @@ -84,7 +84,7 @@ private function sortFile($file) $writtenBytes = fputs($tempH, $data); if ($writtenBytes != strlen($data)) { - throw new DataBackendException_IO("Could not write sorted data: '$data' into $temp."); + throw new DataBackendIOException("Could not write sorted data: '$data' into $temp."); } @@ -95,19 +95,19 @@ private function sortFile($file) /** * @see DataBackend::uninstall() - * @throws DataBackendException_IO + * @throws DataBackendIOException */ public function uninstall() { if (! unlink($this->parser->getFile())) { - throw new DataBackendException_IO(); + throw new DataBackendIOException(); } } /** * @see DataBackend::install() - * @throws DataBackendException_IO + * @throws DataBackendIOException */ public function install() { @@ -119,20 +119,20 @@ public function install() * TODO: test this with a proxy * * @see DataBackend::update() - * @throws DataBackendException_IO + * @throws DataBackendIOException */ public function update() { $ch = curl_init(self::DOWNLOAD_URI); if (! is_resource($ch)) { - throw new DataBackendException_IO(); + throw new DataBackendIOException(); } curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $content = curl_exec($ch); $curl_info = curl_getinfo($ch); if ($curl_info['http_code'] >= 400) { - throw new DataBackendException_IO( + throw new DataBackendIOException( sprintf( "Failed to download '%s'. HTTP Code: %d", self::DOWNLOAD_URI, @@ -141,7 +141,7 @@ public function update() ); } if (! $content) { - throw new DataBackendException_IO( + throw new DataBackendIOException( "Failed to download '" . self::DOWNLOAD_URI . "'." ); @@ -168,7 +168,7 @@ public function update() $temp = tempnam(self::getTempdir(), ""); $tempH = fopen($temp, 'w'); if (! ($temp && $tempH)) { - throw new DataBackendException_IO(); + throw new DataBackendIOException(); } $path = $isZIP ? $zipMatches[1] : $txtMatches[1]; @@ -198,7 +198,7 @@ public function update() if (! curl_exec($ch)) { fclose($tempH); unlink($temp); - throw new DataBackendException_IO(curl_error($ch), curl_errno($ch)); + throw new DataBackendIOException(curl_error($ch), curl_errno($ch)); } fclose($tempH); @@ -208,13 +208,13 @@ public function update() $file = tempnam(self::getTempdir(), ""); if (! $file) { unlink($temp); - throw new DataBackendException_IO(); + throw new DataBackendIOException(); } system('unzip -qqp '.$temp.' > '.$file, $error); if (! unlink($temp) || $error !== 0) { unlink($file); - throw new DataBackendException_IO(); + throw new DataBackendIOException(); } @@ -240,7 +240,7 @@ public function update() * * @param String $source path of the source * @param String $destination path of the destination - * @throws DataBackendException_IO + * @throws DataBackendIOException */ private function safeRename($source, $destination) { @@ -255,7 +255,7 @@ private function safeRename($source, $destination) $isCopied = copy($source, $tempFileOnSameFS); if (! $isCopied) { - throw new DataBackendException_IO( + throw new DataBackendIOException( "failed to copy $source to $tempFileOnSameFS." ); @@ -269,7 +269,7 @@ private function safeRename($source, $destination) $isRenamed = rename($tempFileOnSameFS, $destination); if (! $isRenamed) { - throw new DataBackendException_IO( + throw new DataBackendIOException( "failed to rename $tempFileOnSameFS to $destination." ); @@ -277,7 +277,7 @@ private function safeRename($source, $destination) } /** - * @throws DataBackendException_IO + * @throws DataBackendIOException * @throws DataBackendException * @return Bank[] * @see DataBackend::getAllBanks() @@ -297,8 +297,8 @@ public function getAllBanks() } return array_values($this->instances); - } catch (FileParserException_IO $e) { - throw new DataBackendException_IO(); + } catch (FileParserIOException $e) { + throw new DataBackendIOException(); } catch (FileParserException $e) { throw new DataBackendException(); @@ -307,8 +307,8 @@ public function getAllBanks() } /** - * @throws DataBackendException_IO - * @throws DataBackendException_BankNotFound + * @throws DataBackendIOException + * @throws BankNotFoundException * @param String $bankID * @see DataBackend::getNewBank() * @return Bank @@ -334,15 +334,15 @@ public function getNewBank($bankID) } } catch (FileParserException $e) { - throw new DataBackendException_IO(); + throw new DataBackendIOException(); } } /** - * @throws DataBackendException_BankNotFound - * @throws FileParserException_ParseError - * @throws FileParserException_IO + * @throws BankNotFoundException + * @throws ParseException + * @throws FileParserIOException * @param int $bankID * @param int $offset the line number to start * @param int $length the line count @@ -351,7 +351,7 @@ public function getNewBank($bankID) private function findBank($bankID, $offset, $end) { if ($end - $offset < 0) { - throw new DataBackendException_BankNotFound($bankID); + throw new BankNotFoundException($bankID); } $line = $offset + (int)(($end - $offset) / 2); @@ -364,7 +364,7 @@ private function findBank($bankID, $offset, $end) try { return $this->findBank($bankID, $offset, $line - 1); - } catch (DataBackendException_BankNotFound $e) { + } catch (BankNotFoundException $e) { return $this->findBank($bankID, $line + 1, $end); } @@ -389,7 +389,7 @@ private function findBank($bankID, $offset, $end) /** * @see DataBackend::getMainAgency() * @throws DataBackendException - * @throws DataBackendException_NoMainAgency + * @throws NoMainAgencyException * @return Agency */ public function getMainAgency(Bank $bank) @@ -404,15 +404,15 @@ public function getMainAgency(Bank $bank) } } // Maybe there are banks without a main agency - throw new DataBackendException_NoMainAgency($bank); + throw new NoMainAgencyException($bank); - } catch (FileParserContextException_Undefined $e) { + } catch (UndefinedFileParserContextException $e) { throw new LogicException("Start and end should be defined."); - } catch (FileParserException_IO $e) { - throw new DataBackendException_IO("Parser Exception at bank {$bank->getBankID()}"); + } catch (FileParserIOException $e) { + throw new DataBackendIOException("Parser Exception at bank {$bank->getBankID()}"); - } catch (FileParserException_ParseError $e) { + } catch (ParseException $e) { throw new DataBackendException(get_class($e) . ": " . $e->getMessage()); } @@ -420,7 +420,7 @@ public function getMainAgency(Bank $bank) /** * @see DataBackend::getAgenciesForBank() - * @throws DataBackendException_IO + * @throws DataBackendIOException * @throws DataBackendException * @return Agency[] */ @@ -438,13 +438,13 @@ public function getAgenciesForBank(Bank $bank) } return $agencies; - } catch (FileParserContextException_Undefined $e) { + } catch (UndefinedFileParserContextException $e) { throw new LogicException("Start and end should be defined."); - } catch (FileParserException_IO $e) { - throw new DataBackendException_IO(); + } catch (FileParserIOException $e) { + throw new DataBackendIOException(); - } catch (FileParserException_ParseError $e) { + } catch (ParseException $e) { throw new DataBackendException(); } @@ -490,7 +490,7 @@ private function defineContextInterval($bankID) } /** - * @throws DataBackendException_IO + * @throws DataBackendIOException * @return String a writable directory for temporary files */ public static function getTempdir() @@ -519,7 +519,7 @@ function_exists('sys_get_temp_dir') ? sys_get_temp_dir() : false, } - throw new DataBackendException_IO(); + throw new DataBackendIOException(); } /** diff --git a/classes/dataBackend/file/FileDataBackendContainer.php b/classes/dataBackend/file/FileDataBackendContainer.php index e1048ea4..e3e33aee 100644 --- a/classes/dataBackend/file/FileDataBackendContainer.php +++ b/classes/dataBackend/file/FileDataBackendContainer.php @@ -3,7 +3,7 @@ namespace malkusch\bav; /** - * Container for DataBackend_File objects. + * Container for FileDataBackend objects. * * @author Markus Malkusch * @license GPL @@ -31,10 +31,10 @@ public function __construct($file = null) * Returns the unconfigured backend which is only created by calling the * constructor. * - * @return DataBackend_File + * @return FileDataBackend */ protected function makeDataBackend() { - return new DataBackend_File($this->file); + return new FileDataBackend($this->file); } } diff --git a/classes/dataBackend/file/fileParser/FileParser.php b/classes/dataBackend/file/fileParser/FileParser.php index ef88a6ed..6a6a3f31 100644 --- a/classes/dataBackend/file/fileParser/FileParser.php +++ b/classes/dataBackend/file/fileParser/FileParser.php @@ -3,7 +3,7 @@ namespace malkusch\bav; /** - * This class is responsable for I/O and formating which helps the DataBackend_File. + * This class is responsable for I/O and formating which helps the FileDataBackend. * * * Copyright (C) 2006 Markus Malkusch @@ -97,8 +97,8 @@ public function __construct($file = null) } /** - * @throws FileParserException_IO - * @throws FileParserException_FileNotExists + * @throws FileParserIOException + * @throws FileParserNotExistsException */ private function init() { @@ -109,10 +109,10 @@ private function init() $this->fp = @fopen($this->file, 'r'); if (! is_resource($this->fp)) { if (! file_exists($this->file)) { - throw new FileParserException_FileNotExists($this->file); + throw new FileParserNotExistsException($this->file); } else { - throw new FileParserException_IO(); + throw new FileParserIOException(); } @@ -121,7 +121,7 @@ private function init() $dummyLine = fgets($this->fp, 1024); if (! $dummyLine) { - throw new FileParserException_IO(); + throw new FileParserIOException(); } $this->lineLength = strlen($dummyLine); @@ -129,7 +129,7 @@ private function init() clearstatcache(); // filesize() seems to be 0 sometimes $filesize = filesize($this->file); if (! $filesize) { - throw new FileParserException_IO( + throw new FileParserIOException( "Could not read filesize for '$this->file'." ); @@ -138,8 +138,8 @@ private function init() } /** - * @throws FileParserException_IO - * @throws FileParserException_FileNotExists + * @throws FileParserIOException + * @throws FileParserNotExistsException * @return int */ public function getLines() @@ -149,34 +149,34 @@ public function getLines() } /** - * @throws FileParserException_IO - * @throws FileParserException_FileNotExists + * @throws FileParserIOException + * @throws FileParserNotExistsException */ public function rewind() { if (fseek($this->getFileHandle(), 0) === -1) { - throw new FileParserException_IO(); + throw new FileParserIOException(); } } /** - * @throws FileParserException_IO - * @throws FileParserException_FileNotExists + * @throws FileParserIOException + * @throws FileParserNotExistsException * @param int $line * @param int $offset */ public function seekLine($line, $offset = 0) { if (fseek($this->getFileHandle(), $line * $this->lineLength + $offset) === -1) { - throw new FileParserException_IO(); + throw new FileParserIOException(); } } /** - * @throws FileParserException_IO - * @throws FileParserException_FileNotExists + * @throws FileParserIOException + * @throws FileParserNotExistsException * @param int $line * @return string */ @@ -187,8 +187,8 @@ public function readLine($line) } /** - * @throws FileParserException_IO - * @throws FileParserException_FileNotExists + * @throws FileParserIOException + * @throws FileParserNotExistsException * @param int $line * @return string */ @@ -199,8 +199,8 @@ public function getBankID($line) } /** - * @throws FileParserException_FileNotExists - * @throws FileParserException_IO + * @throws FileParserNotExistsException + * @throws FileParserIOException * @return resource */ public function getFileHandle() @@ -210,8 +210,8 @@ public function getFileHandle() } /** - * @throws FileParserException_FileNotExists - * @throws FileParserException_IO + * @throws FileParserNotExistsException + * @throws FileParserIOException * @return int */ public function getLineLength() @@ -231,14 +231,14 @@ public function __destruct() } /** - * @throws FileParserException_ParseError + * @throws ParseException * @param string $line * @return Bank */ public function getBank(DataBackend $dataBackend, $line) { if ($this->encoding->strlen($line) < self::TYPE_OFFSET + self::TYPE_LENGTH) { - throw new FileParserException_ParseError("Invalid line length in Line $line."); + throw new ParseException("Invalid line length in Line $line."); } $type = $this->encoding->substr($line, self::TYPE_OFFSET, self::TYPE_LENGTH); @@ -247,14 +247,14 @@ public function getBank(DataBackend $dataBackend, $line) } /** - * @throws FileParserException_ParseError + * @throws ParseException * @param string $line * @return Agency */ public function getAgency(Bank $bank, $line) { if ($this->encoding->strlen($line) < self::ID_OFFSET + self::ID_LENGTH) { - throw new FileParserException_ParseError("Invalid line length."); + throw new ParseException("Invalid line length."); } $id = trim($this->encoding->substr($line, self::ID_OFFSET, self::ID_LENGTH)); @@ -268,14 +268,14 @@ public function getAgency(Bank $bank, $line) } /** - * @throws FileParserException_ParseError + * @throws ParseException * @param string $line * @return bool */ public function isMainAgency($line) { if ($this->encoding->strlen($line) < self::TYPE_OFFSET + self::TYPE_LENGTH) { - throw new FileParserException_ParseError("Invalid line length."); + throw new ParseException("Invalid line length."); } return $this->encoding->substr($line, self::ISMAIN_OFFSET, 1) === '1'; diff --git a/classes/dataBackend/file/fileParser/FileParserContext.php b/classes/dataBackend/file/fileParser/FileParserContext.php index 67e5fe0b..744e7bb5 100644 --- a/classes/dataBackend/file/fileParser/FileParserContext.php +++ b/classes/dataBackend/file/fileParser/FileParserContext.php @@ -65,13 +65,13 @@ public function getLine() } /** - * @throws FileParserContextException_Undefined + * @throws UndefinedFileParserContextException * @return int */ public function getStart() { if (is_null($this->start)) { - throw new FileParserContextException_Undefined(); + throw new UndefinedFileParserContextException(); } return $this->start; @@ -86,13 +86,13 @@ public function isStartDefined() } /** - * @throws FileParserContextException_Undefined + * @throws UndefinedFileParserContextException * @return int */ public function getEnd() { if (is_null($this->end)) { - throw new FileParserContextException_Undefined(); + throw new UndefinedFileParserContextException(); } return $this->end; diff --git a/classes/dataBackend/file/fileParser/exception/FileParserException_IO.php b/classes/dataBackend/file/fileParser/exception/FileParserIOException similarity index 94% rename from classes/dataBackend/file/fileParser/exception/FileParserException_IO.php rename to classes/dataBackend/file/fileParser/exception/FileParserIOException index c0fc23b5..0e5c15b5 100644 --- a/classes/dataBackend/file/fileParser/exception/FileParserException_IO.php +++ b/classes/dataBackend/file/fileParser/exception/FileParserIOException @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class FileParserException_IO extends FileParserException +class FileParserIOException extends FileParserException { } diff --git a/classes/dataBackend/file/fileParser/exception/FileParserException_FileNotExists.php b/classes/dataBackend/file/fileParser/exception/FileParserNotExistsException.php similarity index 95% rename from classes/dataBackend/file/fileParser/exception/FileParserException_FileNotExists.php rename to classes/dataBackend/file/fileParser/exception/FileParserNotExistsException.php index e798b6de..331f9ea0 100644 --- a/classes/dataBackend/file/fileParser/exception/FileParserException_FileNotExists.php +++ b/classes/dataBackend/file/fileParser/exception/FileParserNotExistsException.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class FileParserException_FileNotExists extends FileParserException +class FileParserNotExistsException extends FileParserException { /** diff --git a/classes/dataBackend/file/fileParser/exception/FileParserException_ParseError.php b/classes/dataBackend/file/fileParser/exception/ParseException similarity index 93% rename from classes/dataBackend/file/fileParser/exception/FileParserException_ParseError.php rename to classes/dataBackend/file/fileParser/exception/ParseException index d83ef968..81743a87 100644 --- a/classes/dataBackend/file/fileParser/exception/FileParserException_ParseError.php +++ b/classes/dataBackend/file/fileParser/exception/ParseException @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class FileParserException_ParseError extends FileParserException +class ParseException extends FileParserException { } diff --git a/classes/dataBackend/file/fileParser/exception/UndefinedFileParserContextException.php b/classes/dataBackend/file/fileParser/exception/UndefinedFileParserContextException.php new file mode 100644 index 00000000..df07c961 --- /dev/null +++ b/classes/dataBackend/file/fileParser/exception/UndefinedFileParserContextException.php @@ -0,0 +1,31 @@ + + * + * 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * + * @package classes + * @subpackage dataBackend + * @author Markus Malkusch + * @copyright Copyright (C) 2006 Markus Malkusch + */ +class UndefinedFileParserContextException extends FileParserContextException +{ + +} diff --git a/classes/dataBackend/pdo/DataBackend_PDO.php b/classes/dataBackend/pdo/PDODataBackend.php similarity index 90% rename from classes/dataBackend/pdo/DataBackend_PDO.php rename to classes/dataBackend/pdo/PDODataBackend.php index 52c03708..6737852c 100644 --- a/classes/dataBackend/pdo/DataBackend_PDO.php +++ b/classes/dataBackend/pdo/PDODataBackend.php @@ -9,7 +9,7 @@ * @author Markus Malkusch * @license GPL */ -class DataBackend_PDO extends DataBackend +class PDODataBackend extends DataBackend { /** @@ -95,8 +95,8 @@ public function getPrefix() * If you don't, BAV needs to do one additional query for each object. * * @param string $sql - * @throws DataBackendException_IO_MissingAttributes - * @throws DataBackendException_IO + * @throws MissingAttributesDataBackendIOException + * @throws DataBackendIOException * @throws DataBackendException * @return Agency[] */ @@ -109,14 +109,14 @@ public function getAgencies($sql) foreach ($this->pdo->query($sql) as $result) { if (! $this->isValidAgencyResult($result)) { if (! array_key_exists('id', $result)) { - throw new DataBackendException_IO_MissingAttributes(); + throw new MissingAttributesDataBackendIOException(); } $this->selectAgency->execute(array(':agency' => $result['id'])); $result = $this->selectAgency->fetch(\PDO::FETCH_ASSOC); $this->selectAgency->closeCursor(); if ($result === false) { - throw new DataBackendException_IO(); + throw new DataBackendIOException(); } } @@ -125,7 +125,7 @@ public function getAgencies($sql) $bankResult = $this->selectAgencysBank->fetch(\PDO::FETCH_ASSOC); $this->selectAgencysBank->closeCursor(); if ($bankResult === false) { - throw new DataBackendException_IO(); + throw new DataBackendIOException(); } $result['bank'] = $bankResult['bank']; @@ -137,9 +137,9 @@ public function getAgencies($sql) return $agencies; } catch (\PDOException $e) { - throw new DataBackendException_IO(); + throw new DataBackendIOException(); - } catch (DataBackendException_BankNotFound $e) { + } catch (BankNotFoundException $e) { throw new LogicException($e); } @@ -194,7 +194,7 @@ public function update() { $useTA = false; try { - $fileBackend = new DataBackend_File(tempnam(DataBackend_File::getTempdir(), 'bav')); + $fileBackend = new FileDataBackend(tempnam(FileDataBackend::getTempdir(), 'bav')); $fileBackend->install(); $insertBank = $this->pdo->prepare( @@ -240,7 +240,7 @@ public function update() )); } - } catch (DataBackendException_NoMainAgency $e) { + } catch (NoMainAgencyException $e) { trigger_error( "Skipping bank {$e->getBank()->getBankID()} without any main agency." ); @@ -274,7 +274,7 @@ public function update() throw $e; } catch (\PDOException $e2) { - throw new DataBackendException_IO( + throw new DataBackendIOException( get_class($e) . ": {$e->getMessage()}\nadditionally: {$e2->getMessage()}" ); @@ -285,7 +285,7 @@ public function update() /** * @see DataBackend::install() - * @throws DataBackendException_IO + * @throws DataBackendIOException */ public function install() { @@ -339,14 +339,14 @@ public function install() $this->update(); } catch (\PDOException $e) { - throw new DataBackendException_IO($e->getMessage()); + throw new DataBackendIOException($e->getMessage()); } } /** * @see DataBackend::uninstall() - * @throws DataBackendException_IO + * @throws DataBackendIOException */ public function uninstall() { @@ -356,7 +356,7 @@ public function uninstall() $this->pdo->exec("DROP TABLE {$this->prefix}meta"); } catch (\PDOException $e) { - throw new DataBackendException_IO(); + throw new DataBackendIOException(); } } @@ -381,9 +381,9 @@ public function getAllBanks() return array_values($this->instances); } catch (\PDOException $e) { - throw new DataBackendException_IO(); + throw new DataBackendIOException(); - } catch (DataBackendException_IO_MissingAttributes $e) { + } catch (MissingAttributesDataBackendIOException $e) { $this->selectBank->closeCursor(); throw new LogicException($e); @@ -392,7 +392,7 @@ public function getAllBanks() /** * @throws DataBackendException - * @throws DataBackendException_BankNotFound + * @throws BankNotFoundException * @param string $bankID * @return Bank * @see DataBackend::getNewBank() @@ -405,7 +405,7 @@ protected function getNewBank($bankID) $result = $this->selectBank->fetch(\PDO::FETCH_ASSOC); if ($result === false) { $this->selectBank->closeCursor(); - throw new DataBackendException_BankNotFound($bankID); + throw new BankNotFoundException($bankID); } $this->selectBank->closeCursor(); @@ -413,9 +413,9 @@ protected function getNewBank($bankID) } catch (\PDOException $e) { $this->selectBank->closeCursor(); - throw new DataBackendException_IO(); + throw new DataBackendIOException(); - } catch (DataBackendException_IO_MissingAttributes $e) { + } catch (MissingAttributesDataBackendIOException $e) { $this->selectBank->closeCursor(); throw new LogicException($e); @@ -447,12 +447,12 @@ private function isValidAgencyResult(Array $result) /** * @return Bank - * @throws DataBackendException_IO_MissingAttributes + * @throws MissingAttributesDataBackendIOException */ private function getBankObject(Array $fetchedResult) { if (! $this->isValidBankResult($fetchedResult)) { - throw new DataBackendException_IO_MissingAttributes(); + throw new MissingAttributesDataBackendIOException(); } return new Bank($this, $fetchedResult['id'], $fetchedResult['validator']); @@ -460,12 +460,12 @@ private function getBankObject(Array $fetchedResult) /** * @return Agency - * @throws DataBackendException_IO_MissingAttributes + * @throws MissingAttributesDataBackendIOException */ private function getAgencyObject(Bank $bank, Array $fetchedResult) { if (! $this->isValidAgencyResult($fetchedResult)) { - throw new DataBackendException_IO_MissingAttributes(); + throw new MissingAttributesDataBackendIOException(); } if (! array_key_exists($fetchedResult['id'], $this->agencies)) { @@ -504,9 +504,9 @@ public function getMainAgency(Bank $bank) } catch (\PDOException $e) { $this->selectMainAgency->closeCursor(); - throw new DataBackendException_IO(); + throw new DataBackendIOException(); - } catch (DataBackendException_IO_MissingAttributes $e) { + } catch (MissingAttributesDataBackendIOException $e) { $this->selectMainAgency->closeCursor(); throw new LogicException($e); @@ -535,9 +535,9 @@ public function getAgenciesForBank(Bank $bank) } catch (\PDOException $e) { $this->selectAgencies->closeCursor(); - throw new DataBackendException_IO(); + throw new DataBackendIOException(); - } catch (DataBackendException_IO_MissingAttributes $e) { + } catch (MissingAttributesDataBackendIOException $e) { $this->selectAgencies->closeCursor(); throw new LogicException($e); @@ -567,7 +567,7 @@ public function getLastUpdate() } catch (\PDOException $e) { $this->selectMeta->closeCursor(); - throw new DataBackendException_IO($e->getMessage(), $e->getCode(), $e); + throw new DataBackendIOException($e->getMessage(), $e->getCode(), $e); } } @@ -593,7 +593,7 @@ public function isInstalled() } catch (\PDOException $e) { $this->selectInstalled->closeCursor(); - throw new DataBackendException_IO($e->getMessage(), $e->getCode(), $e); + throw new DataBackendIOException($e->getMessage(), $e->getCode(), $e); } } diff --git a/classes/dataBackend/pdo/PDODataBackendContainer.php b/classes/dataBackend/pdo/PDODataBackendContainer.php index 4818d067..28f8f610 100644 --- a/classes/dataBackend/pdo/PDODataBackendContainer.php +++ b/classes/dataBackend/pdo/PDODataBackendContainer.php @@ -3,7 +3,7 @@ namespace malkusch\bav; /** - * Container for DataBackend_PDO objects. + * Container for PDODataBackend objects. * * @author Markus Malkusch * @license GPL @@ -37,10 +37,10 @@ public function __construct(\PDO $pdo, $prefix = 'bav_') * Returns the unconfigured backend which is only created by calling the * constructor. * - * @return DataBackend_PDO + * @return PDODataBackend */ protected function makeDataBackend() { - return new DataBackend_PDO($this->pdo, $this->prefix); + return new PDODataBackend($this->pdo, $this->prefix); } } diff --git a/classes/encoding/Encoding.php b/classes/encoding/Encoding.php index 9d47e863..64f59439 100644 --- a/classes/encoding/Encoding.php +++ b/classes/encoding/Encoding.php @@ -37,13 +37,13 @@ abstract class Encoding protected $enc = 'UTF-8'; /** - * @throws EncodingException_Unsupported + * @throws UnsupportedEncodingException * @param String $encoding */ public function __construct($encoding = 'UTF-8') { if (! $this->isSupported($encoding)) { - throw new EncodingException_Unsupported($encoding); + throw new UnsupportedEncodingException($encoding); } $this->enc = $encoding; @@ -80,23 +80,23 @@ public static function isSupported($encoding) } /** - * @throws EncodingException_Unsupported + * @throws UnsupportedEncodingException * @param String $encoding * @return Encoding */ public static function getInstance($encoding) { - if (Encoding_Iconv::isSupported($encoding)) { - return new Encoding_Iconv($encoding); + if (IconvEncoding::isSupported($encoding)) { + return new IconvEncoding($encoding); - } elseif (Encoding_MB::isSupported($encoding)) { - return new Encoding_MB($encoding); + } elseif (MBEncoding::isSupported($encoding)) { + return new MBEncoding($encoding); - } elseif (Encoding_ISO8859::isSupported($encoding)) { - return new Encoding_ISO8859($encoding); + } elseif (ISO8859Encoding::isSupported($encoding)) { + return new ISO8859Encoding($encoding); } else { - throw new EncodingException_Unsupported($encoding); + throw new UnsupportedEncodingException($encoding); } } diff --git a/classes/encoding/Encoding_ISO8859.php b/classes/encoding/ISO8859Encoding.php similarity index 98% rename from classes/encoding/Encoding_ISO8859.php rename to classes/encoding/ISO8859Encoding.php index e2bbc279..a0597b25 100644 --- a/classes/encoding/Encoding_ISO8859.php +++ b/classes/encoding/ISO8859Encoding.php @@ -28,7 +28,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class Encoding_ISO8859 extends Encoding +class ISO8859Encoding extends Encoding { /** diff --git a/classes/encoding/Encoding_Iconv.php b/classes/encoding/IconvEncoding.php similarity index 96% rename from classes/encoding/Encoding_Iconv.php rename to classes/encoding/IconvEncoding.php index 5fda0bc0..120c98ba 100644 --- a/classes/encoding/Encoding_Iconv.php +++ b/classes/encoding/IconvEncoding.php @@ -29,7 +29,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class Encoding_Iconv extends Encoding +class IconvEncoding extends Encoding { /** @@ -41,7 +41,7 @@ public static function isSupported($encoding) } /** - * @throws EncodingException_Unsupported + * @throws UnsupportedEncodingException * @param String $encoding */ public function __construct($encoding = 'UTF-8') diff --git a/classes/encoding/Encoding_MB.php b/classes/encoding/MBEncoding.php similarity index 96% rename from classes/encoding/Encoding_MB.php rename to classes/encoding/MBEncoding.php index bcb2dbb0..1e9cad32 100644 --- a/classes/encoding/Encoding_MB.php +++ b/classes/encoding/MBEncoding.php @@ -29,7 +29,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class Encoding_MB extends Encoding +class MBEncoding extends Encoding { /** @@ -42,7 +42,7 @@ public static function isSupported($encoding) } /** - * @throws EncodingException_Unsupported + * @throws UnsupportedEncodingException * @param String $encoding */ public function __construct($encoding = 'UTF-8') diff --git a/classes/encoding/exception/EncodingException_Unsupported.php b/classes/encoding/exception/UnsupportedEncodingException.php similarity index 95% rename from classes/encoding/exception/EncodingException_Unsupported.php rename to classes/encoding/exception/UnsupportedEncodingException.php index 09ca58ad..b94a6fb5 100644 --- a/classes/encoding/exception/EncodingException_Unsupported.php +++ b/classes/encoding/exception/UnsupportedEncodingException.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class EncodingException_Unsupported extends EncodingException +class UnsupportedEncodingException extends EncodingException { /** diff --git a/classes/validator/ValidatorIteration_Transformation.php b/classes/validator/TransformationIterationValidator.php similarity index 96% rename from classes/validator/ValidatorIteration_Transformation.php rename to classes/validator/TransformationIterationValidator.php index 42a5a56b..47b0f3e3 100644 --- a/classes/validator/ValidatorIteration_Transformation.php +++ b/classes/validator/TransformationIterationValidator.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class ValidatorIteration_Transformation extends ValidatorIteration +abstract class TransformationIterationValidator extends ValidatorIteration { /** diff --git a/classes/validator/Validator.php b/classes/validator/Validator.php index 52a7239b..b651bb27 100644 --- a/classes/validator/Validator.php +++ b/classes/validator/Validator.php @@ -65,7 +65,7 @@ public function __construct(Bank $bank) } /** - * @throws ValidatorException_NotExists + * @throws ValidatorNotExistsException * @return Validator */ public static function getInstance(Bank $bank) @@ -74,7 +74,7 @@ public static function getInstance(Bank $bank) $class = "Validator$type"; $file = __DIR__."/validators/$class.php"; if (! file_exists($file)) { - throw new ValidatorException_NotExists($bank); + throw new ValidatorNotExistsException($bank); } require_once $file; @@ -93,7 +93,7 @@ public function isValid($account) $this->validate(); return ltrim($account, "0") != "" && $this->getResult(); - } catch (ValidatorException_OutOfBounds $e) { + } catch (ValidatorOutOfBoundsException $e) { return false; } @@ -141,12 +141,12 @@ protected function getChecknumber() * * @param int $pos * @return int - * @throws ValidatorException_OutOfBounds + * @throws ValidatorOutOfBoundsException */ protected function getNormalizedPosition($pos) { if ($pos >= strlen($this->account) || $pos < -strlen($this->account)) { - throw new ValidatorException_OutOfBounds("Cannot access offset $pos in String $this->account"); + throw new ValidatorOutOfBoundsException("Cannot access offset $pos in String $this->account"); } @@ -176,21 +176,21 @@ protected function crossSum($int) } /** - * @throws ValidatorException_OutOfBounds + * @throws ValidatorOutOfBoundsException * @param int $int */ protected function normalizeAccount($size) { $account = (string) $this->account; if (strlen($account) > $size) { - throw new ValidatorException_OutOfBounds("Can't normalize $account to size $size."); + throw new ValidatorOutOfBoundsException("Can't normalize $account to size $size."); } $this->account = str_repeat('0', $size - strlen($account)) . $account; } /** - * @throws ValidatorException_ESER + * @throws ValidatorESERException * @return string */ protected function getESER8() @@ -198,12 +198,12 @@ protected function getESER8() $account = ltrim($this->account, '0'); if (strlen($account) != 8) { - throw new ValidatorException_ESER(); + throw new ValidatorESERException(); } $bankID = $this->bank->getBankID(); if ($bankID{3} != 5) { - throw new ValidatorException_ESER(); + throw new ValidatorESERException(); } $blzPart = ltrim(substr($bankID, 4), '0'); @@ -211,7 +211,7 @@ protected function getESER8() $this->eserChecknumberOffset = -(4 - strlen($blzPart)); if (empty($blzPart)) { - throw new ValidatorException_ESER(); + throw new ValidatorESERException(); } $accountPart = ltrim(substr($account, 2), '0'); @@ -221,7 +221,7 @@ protected function getESER8() } /** - * @throws ValidatorException_ESER + * @throws ValidatorESERException * @return string */ protected function getESER9() @@ -231,11 +231,11 @@ protected function getESER9() if (strlen($account) != 9) { - throw new ValidatorException_ESER(); + throw new ValidatorESERException(); } if ($bankID{3} != 5) { - throw new ValidatorException_ESER(); + throw new ValidatorESERException(); } diff --git a/classes/validator/ValidatorIteration_Weighted.php b/classes/validator/WeightedIterationValidator.php similarity index 95% rename from classes/validator/ValidatorIteration_Weighted.php rename to classes/validator/WeightedIterationValidator.php index c825540a..8b7b5fc0 100644 --- a/classes/validator/ValidatorIteration_Weighted.php +++ b/classes/validator/WeightedIterationValidator.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -abstract class ValidatorIteration_Weighted extends ValidatorIteration +abstract class WeightedIterationValidator extends ValidatorIteration { /** diff --git a/classes/validator/exception/ValidatorException_ESER.php b/classes/validator/exception/ValidatorESERException.php similarity index 94% rename from classes/validator/exception/ValidatorException_ESER.php rename to classes/validator/exception/ValidatorESERException.php index b56777e3..45a253ca 100644 --- a/classes/validator/exception/ValidatorException_ESER.php +++ b/classes/validator/exception/ValidatorESERException.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class ValidatorException_ESER extends ValidatorException +class ValidatorESERException extends ValidatorException { } diff --git a/classes/validator/exception/ValidatorException_NotExists.php b/classes/validator/exception/ValidatorNotExistsException.php similarity index 95% rename from classes/validator/exception/ValidatorException_NotExists.php rename to classes/validator/exception/ValidatorNotExistsException.php index a531a13d..21c5e791 100644 --- a/classes/validator/exception/ValidatorException_NotExists.php +++ b/classes/validator/exception/ValidatorNotExistsException.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class ValidatorException_NotExists extends ValidatorException +class ValidatorNotExistsException extends ValidatorException { /** diff --git a/classes/validator/exception/ValidatorException_OutOfBounds.php b/classes/validator/exception/ValidatorOutOfBoundsException.php similarity index 93% rename from classes/validator/exception/ValidatorException_OutOfBounds.php rename to classes/validator/exception/ValidatorOutOfBoundsException.php index 24567c2d..ef3f4467 100644 --- a/classes/validator/exception/ValidatorException_OutOfBounds.php +++ b/classes/validator/exception/ValidatorOutOfBoundsException.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class ValidatorException_OutOfBounds extends ValidatorException +class ValidatorOutOfBoundsException extends ValidatorException { } diff --git a/classes/validator/validators/Validator00.php b/classes/validator/validators/Validator00.php index f316a32e..2771578a 100644 --- a/classes/validator/validators/Validator00.php +++ b/classes/validator/validators/Validator00.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator00 extends ValidatorIteration_Weighted +class Validator00 extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator01.php b/classes/validator/validators/Validator01.php index 2914d3cf..50b7104d 100644 --- a/classes/validator/validators/Validator01.php +++ b/classes/validator/validators/Validator01.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator01 extends ValidatorIteration_Weighted +class Validator01 extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator02.php b/classes/validator/validators/Validator02.php index 9d7ee486..bdf0a0ba 100644 --- a/classes/validator/validators/Validator02.php +++ b/classes/validator/validators/Validator02.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator02 extends ValidatorIteration_Weighted +class Validator02 extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator06.php b/classes/validator/validators/Validator06.php index 88430b7f..64d50715 100644 --- a/classes/validator/validators/Validator06.php +++ b/classes/validator/validators/Validator06.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator06 extends ValidatorIteration_Weighted +class Validator06 extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator17.php b/classes/validator/validators/Validator17.php index 2827b4f7..6a8e4578 100644 --- a/classes/validator/validators/Validator17.php +++ b/classes/validator/validators/Validator17.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator17 extends ValidatorIteration_Weighted +class Validator17 extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator22.php b/classes/validator/validators/Validator22.php index dc9c75d0..d5ecfac2 100644 --- a/classes/validator/validators/Validator22.php +++ b/classes/validator/validators/Validator22.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator22 extends ValidatorIteration_Weighted +class Validator22 extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator24.php b/classes/validator/validators/Validator24.php index d83d1c75..6923dc97 100644 --- a/classes/validator/validators/Validator24.php +++ b/classes/validator/validators/Validator24.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator24 extends ValidatorIteration_Weighted +class Validator24 extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator25.php b/classes/validator/validators/Validator25.php index 7d02e9ce..579c9153 100644 --- a/classes/validator/validators/Validator25.php +++ b/classes/validator/validators/Validator25.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator25 extends ValidatorIteration_Weighted +class Validator25 extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator27.php b/classes/validator/validators/Validator27.php index 24511ed5..d5d80acd 100644 --- a/classes/validator/validators/Validator27.php +++ b/classes/validator/validators/Validator27.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator27 extends ValidatorIteration_Transformation +class Validator27 extends TransformationIterationValidator { /** diff --git a/classes/validator/validators/Validator29.php b/classes/validator/validators/Validator29.php index 5de7162e..79a29d1b 100644 --- a/classes/validator/validators/Validator29.php +++ b/classes/validator/validators/Validator29.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator29 extends ValidatorIteration_Transformation +class Validator29 extends TransformationIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator31.php b/classes/validator/validators/Validator31.php index 135d2728..35dc83d6 100644 --- a/classes/validator/validators/Validator31.php +++ b/classes/validator/validators/Validator31.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator31 extends ValidatorIteration_Weighted +class Validator31 extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator35.php b/classes/validator/validators/Validator35.php index 54e4106c..261dd3ea 100644 --- a/classes/validator/validators/Validator35.php +++ b/classes/validator/validators/Validator35.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator35 extends ValidatorIteration_Weighted +class Validator35 extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator43.php b/classes/validator/validators/Validator43.php index ed7cfea0..071b8372 100644 --- a/classes/validator/validators/Validator43.php +++ b/classes/validator/validators/Validator43.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator43 extends ValidatorIteration_Weighted +class Validator43 extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator51x.php b/classes/validator/validators/Validator51x.php index cec0b8f9..f7204b26 100644 --- a/classes/validator/validators/Validator51x.php +++ b/classes/validator/validators/Validator51x.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator51x extends ValidatorIteration_Weighted +class Validator51x extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator52.php b/classes/validator/validators/Validator52.php index 7bdd5fce..346ed29b 100644 --- a/classes/validator/validators/Validator52.php +++ b/classes/validator/validators/Validator52.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator52 extends ValidatorIteration_Weighted implements ValidatorBankDependent +class Validator52 extends WeightedIterationValidator implements ValidatorBankDependent { /** @@ -53,7 +53,7 @@ public function isValid($account) ? $this->validator20->isValid($account) : parent::isValid($account); - } catch (ValidatorException_ESER $e) { + } catch (ValidatorESERException $e) { return false; } diff --git a/classes/validator/validators/Validator54.php b/classes/validator/validators/Validator54.php index f59ea21b..a0edcc25 100644 --- a/classes/validator/validators/Validator54.php +++ b/classes/validator/validators/Validator54.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator54 extends ValidatorIteration_Weighted +class Validator54 extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator56.php b/classes/validator/validators/Validator56.php index 05e4d61e..a6a1a99f 100644 --- a/classes/validator/validators/Validator56.php +++ b/classes/validator/validators/Validator56.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator56 extends ValidatorIteration_Weighted +class Validator56 extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator61.php b/classes/validator/validators/Validator61.php index 66a53777..ffe562c7 100644 --- a/classes/validator/validators/Validator61.php +++ b/classes/validator/validators/Validator61.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator61 extends ValidatorIteration_Weighted +class Validator61 extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator62.php b/classes/validator/validators/Validator62.php index 1ec9df84..1af87776 100644 --- a/classes/validator/validators/Validator62.php +++ b/classes/validator/validators/Validator62.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator62 extends ValidatorIteration_Weighted +class Validator62 extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator63.php b/classes/validator/validators/Validator63.php index 39a7bfcf..2900ef57 100644 --- a/classes/validator/validators/Validator63.php +++ b/classes/validator/validators/Validator63.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator63 extends ValidatorIteration_Weighted +class Validator63 extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator66.php b/classes/validator/validators/Validator66.php index 6de90d2d..742d27f8 100644 --- a/classes/validator/validators/Validator66.php +++ b/classes/validator/validators/Validator66.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator66 extends ValidatorIteration_Weighted +class Validator66 extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator69b.php b/classes/validator/validators/Validator69b.php index 9d116363..f96d20be 100644 --- a/classes/validator/validators/Validator69b.php +++ b/classes/validator/validators/Validator69b.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator69b extends ValidatorIteration_Transformation +class Validator69b extends TransformationIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator71.php b/classes/validator/validators/Validator71.php index 2b4eb745..d24a15ba 100644 --- a/classes/validator/validators/Validator71.php +++ b/classes/validator/validators/Validator71.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator71 extends ValidatorIteration_Weighted +class Validator71 extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator76.php b/classes/validator/validators/Validator76.php index ade59fc8..6f84846b 100644 --- a/classes/validator/validators/Validator76.php +++ b/classes/validator/validators/Validator76.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator76 extends ValidatorIteration_Weighted +class Validator76 extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator77a.php b/classes/validator/validators/Validator77a.php index 5c210db5..1c6ece05 100644 --- a/classes/validator/validators/Validator77a.php +++ b/classes/validator/validators/Validator77a.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator77a extends ValidatorIteration_Weighted +class Validator77a extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator83x.php b/classes/validator/validators/Validator83x.php index 8108b989..cab83d97 100644 --- a/classes/validator/validators/Validator83x.php +++ b/classes/validator/validators/Validator83x.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator83x extends ValidatorIteration_Weighted +class Validator83x extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator84b.php b/classes/validator/validators/Validator84b.php index 42f40226..f83b3afa 100644 --- a/classes/validator/validators/Validator84b.php +++ b/classes/validator/validators/Validator84b.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator84b extends ValidatorIteration_Weighted +class Validator84b extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator87c.php b/classes/validator/validators/Validator87c.php index c4de2547..7c85bf00 100644 --- a/classes/validator/validators/Validator87c.php +++ b/classes/validator/validators/Validator87c.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator87c extends ValidatorIteration_Weighted +class Validator87c extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator90c.php b/classes/validator/validators/Validator90c.php index 22410c88..c39acbe4 100644 --- a/classes/validator/validators/Validator90c.php +++ b/classes/validator/validators/Validator90c.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator90c extends ValidatorIteration_Weighted +class Validator90c extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator90d.php b/classes/validator/validators/Validator90d.php index 89c23be0..3d6227ab 100644 --- a/classes/validator/validators/Validator90d.php +++ b/classes/validator/validators/Validator90d.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator90d extends ValidatorIteration_Weighted +class Validator90d extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator90e.php b/classes/validator/validators/Validator90e.php index 86a026c7..43e0b6d7 100644 --- a/classes/validator/validators/Validator90e.php +++ b/classes/validator/validators/Validator90e.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator90e extends ValidatorIteration_Weighted +class Validator90e extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator90g.php b/classes/validator/validators/Validator90g.php index 4d52011f..c4e3cad8 100644 --- a/classes/validator/validators/Validator90g.php +++ b/classes/validator/validators/Validator90g.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class Validator90g extends ValidatorIteration_Weighted +class Validator90g extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/Validator93.php b/classes/validator/validators/Validator93.php index 412d88fb..21fc719b 100644 --- a/classes/validator/validators/Validator93.php +++ b/classes/validator/validators/Validator93.php @@ -40,7 +40,7 @@ public function __construct(Bank $bank) } /** - * @throws ValidatorException_OutOfBounds + * @throws ValidatorOutOfBoundsException * @param int $int */ protected function normalizeAccount($size) diff --git a/classes/validator/validators/ValidatorA0.php b/classes/validator/validators/ValidatorA0.php index 49f78d39..2e118f0a 100644 --- a/classes/validator/validators/ValidatorA0.php +++ b/classes/validator/validators/ValidatorA0.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class ValidatorA0 extends ValidatorIteration_Weighted +class ValidatorA0 extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/ValidatorA4b.php b/classes/validator/validators/ValidatorA4b.php index 727c890d..a96cc620 100644 --- a/classes/validator/validators/ValidatorA4b.php +++ b/classes/validator/validators/ValidatorA4b.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class ValidatorA4b extends ValidatorIteration_Weighted +class ValidatorA4b extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/ValidatorB9a.php b/classes/validator/validators/ValidatorB9a.php index 4a80d206..433fed3d 100644 --- a/classes/validator/validators/ValidatorB9a.php +++ b/classes/validator/validators/ValidatorB9a.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class ValidatorB9a extends ValidatorIteration_Weighted +class ValidatorB9a extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/ValidatorB9b.php b/classes/validator/validators/ValidatorB9b.php index d634e4cb..ae81cc70 100644 --- a/classes/validator/validators/ValidatorB9b.php +++ b/classes/validator/validators/ValidatorB9b.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class ValidatorB9b extends ValidatorIteration_Weighted +class ValidatorB9b extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/ValidatorC1b.php b/classes/validator/validators/ValidatorC1b.php index 6b422639..5a99a9d8 100644 --- a/classes/validator/validators/ValidatorC1b.php +++ b/classes/validator/validators/ValidatorC1b.php @@ -21,7 +21,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class ValidatorC1b extends ValidatorIteration_Weighted +class ValidatorC1b extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/ValidatorD7.php b/classes/validator/validators/ValidatorD7.php index 2dc8700f..84e705aa 100644 --- a/classes/validator/validators/ValidatorD7.php +++ b/classes/validator/validators/ValidatorD7.php @@ -27,7 +27,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2011 Markus Malkusch */ -class ValidatorD7 extends ValidatorIteration_Weighted +class ValidatorD7 extends WeightedIterationValidator { public function __construct(Bank $bank) diff --git a/classes/validator/validators/ValidatorE1.php b/classes/validator/validators/ValidatorE1.php index 969f6bb9..5c582fd3 100644 --- a/classes/validator/validators/ValidatorE1.php +++ b/classes/validator/validators/ValidatorE1.php @@ -25,7 +25,7 @@ * https://github.com/jschaedl/Bav/blob/master/library/Bav/Validator/De/SystemE1.php */ -class ValidatorE1 extends ValidatorIteration_Weighted +class ValidatorE1 extends WeightedIterationValidator { private static $subsitutions = array(48, 49, 50, 51, 52, 53, 54, 55, 56, 57); diff --git a/classes/verify/VerifyImport.php b/classes/verify/VerifyImport.php index c326fdf7..f27674a1 100644 --- a/classes/verify/VerifyImport.php +++ b/classes/verify/VerifyImport.php @@ -117,7 +117,7 @@ private function mergeVerifyArray($verifyArray, & $targetArray) * @param string $bankID * @param string $accountID * @param bool $isValid if $accountID should be valid or not. Defaults to TRUE for valid. - * @throws DataBackendException_BankNotFound + * @throws BankNotFoundException * @throws DataBackendException */ public function import($bankID, $accountID, $isValid = true) @@ -150,14 +150,14 @@ private function normalize($id) /** * @param string $filePath The file where the arrays are saved (default's to ../../data/verify.ini) - * @throws VerifyException_IO + * @throws VerifyIOException */ public function save($file = null) { $file = $this->getFile($file); $fp = fopen($file, 'w'); if (! is_resource($fp)) { - throw new VerifyException_IO("Could not open $file."); + throw new VerifyIOException("Could not open $file."); } try { @@ -165,7 +165,7 @@ public function save($file = null) $this->saveArray($fp, $this->validNumbers, 'valid'); fclose($fp); - } catch (VerifyException_IO $e) { + } catch (VerifyIOException $e) { fclose($fp); throw $e; @@ -176,12 +176,12 @@ public function save($file = null) * @param Resource $fp Filepointer * @param Array $array Array with bank IDs * @param String $name Name of the section - * @throws VerifyException_IO + * @throws VerifyIOException */ private function saveArray($fp, Array $array, $name) { if (! fwrite($fp, "\n\n".'['.$name.']')) { - throw new VerifyException_IO(); + throw new VerifyIOException(); } ksort($array); @@ -192,12 +192,12 @@ private function saveArray($fp, Array $array, $name) } if (! fwrite($fp, "\n".' '.$type.' = ')) { - throw new VerifyException_IO(); + throw new VerifyIOException(); } $line = implode(', ', array_unique($numbers)); if (fwrite($fp, $line, strlen($line)) !== strlen($line)) { - throw new VerifyException_IO(); + throw new VerifyIOException(); } @@ -207,7 +207,7 @@ private function saveArray($fp, Array $array, $name) /** * @param String $bankID * @return String - * @throws DataBackendException_BankNotFound + * @throws BankNotFoundException * @throws DataBackendException */ private function bankIDToType($bankID) diff --git a/classes/verify/exception/VerifyException_IO.php b/classes/verify/exception/VerifyIOException.php similarity index 95% rename from classes/verify/exception/VerifyException_IO.php rename to classes/verify/exception/VerifyIOException.php index 7621dd19..b7ef50ba 100644 --- a/classes/verify/exception/VerifyException_IO.php +++ b/classes/verify/exception/VerifyIOException.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class VerifyException_IO extends VerifyException +class VerifyIOException extends VerifyException { } diff --git a/docs/changelog.txt b/docs/changelog.txt index 1e7130da..d47a3834 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -14,6 +14,8 @@ Version 1.0.0 - not yet released - added the API facade BAV (don't confuse with the removed class BAV). + - renamed all classes which where not conform to PSR2 + Version 0.28 - May 26, 2014 --------------------------- diff --git a/tests/AgencyQueryTest.php b/tests/AgencyQueryTest.php index 7c4bc73c..82f7f05a 100755 --- a/tests/AgencyQueryTest.php +++ b/tests/AgencyQueryTest.php @@ -5,7 +5,7 @@ require_once __DIR__ . "/../autoloader/autoloader.php"; /** - * check DataBackend_PDO->getAgencies($sql) + * check PDODataBackend->getAgencies($sql) * * Copyright (C) 2009 Markus Malkusch * @@ -31,7 +31,7 @@ class AgencyQueryTest extends \PHPUnit_Framework_TestCase { /** - * @var DataBackend_PDO + * @var PDODataBackend */ private $backend; @@ -39,7 +39,7 @@ class AgencyQueryTest extends \PHPUnit_Framework_TestCase */ protected function setUp() { - $this->backend = new DataBackend_PDO(new \PDO('mysql:host=localhost;dbname=test', 'test')); + $this->backend = new PDODataBackend(new \PDO('mysql:host=localhost;dbname=test', 'test')); } public function testOnlyID() @@ -67,7 +67,7 @@ public function testNoBank() } /** - * @expectedException malkusch\bav\DataBackendException_IO_MissingAttributes + * @expectedException malkusch\bav\MissingAttributesDataBackendIOException */ public function testNoID() { diff --git a/tests/BAVFacadeTest.php b/tests/BAVFacadeTest.php index a0a59566..f48951be 100644 --- a/tests/BAVFacadeTest.php +++ b/tests/BAVFacadeTest.php @@ -29,7 +29,7 @@ public function testGetBank() /** * Tests BAV::getBank(); * - * @expectedException malkusch\bav\DataBackendException_BankNotFound + * @expectedException malkusch\bav\BankNotFoundException * @see BAV::getBank(); */ public function testFailGetBank() @@ -41,7 +41,7 @@ public function testFailGetBank() /** * Tests BAV::getAgencies(); * - * @expectedException malkusch\bav\DataBackendException_BankNotFound + * @expectedException malkusch\bav\BankNotFoundException * @see BAV::getAgencies(); */ public function testFailGetAgencies() @@ -93,7 +93,7 @@ public function testGetMainAgency() /** * Tests BAV::getMainAgency(); * - * @expectedException malkusch\bav\DataBackendException_BankNotFound + * @expectedException malkusch\bav\BankNotFoundException * @see BAV::getMainAgency(); */ public function testFailGetMainAgency() diff --git a/tests/BackendContainerTest.php b/tests/BackendContainerTest.php index 390dd674..5e2a14f9 100644 --- a/tests/BackendContainerTest.php +++ b/tests/BackendContainerTest.php @@ -19,7 +19,7 @@ class BackendContainerTest extends \PHPUnit_Framework_TestCase public function testAutomaticInstallation() { ConfigurationRegistry::getConfiguration()->setUpdatePlan(null); - $container = new FileDataBackendContainer(tempnam(DataBackend_File::getTempdir(), 'bavtest')); + $container = new FileDataBackendContainer(tempnam(FileDataBackend::getTempdir(), 'bavtest')); $this->assertTrue(ConfigurationRegistry::getConfiguration()->isAutomaticInstallation()); @@ -38,7 +38,7 @@ public function testAutomaticUpdate() $updatePlan->setNotice(false); ConfigurationRegistry::getConfiguration()->setUpdatePlan($updatePlan); - $container = new FileDataBackendContainer(tempnam(DataBackend_File::getTempdir(), 'bavtest')); + $container = new FileDataBackendContainer(tempnam(FileDataBackend::getTempdir(), 'bavtest')); $backend = $container->getDataBackend(); touch($backend->getFile(), strtotime("-1 year")); diff --git a/tests/BackendTest.php b/tests/BackendTest.php index beb17ef8..64942456 100755 --- a/tests/BackendTest.php +++ b/tests/BackendTest.php @@ -15,7 +15,7 @@ class BackendTest extends \PHPUnit_Framework_TestCase { /** - * @var DataBackend_File + * @var FileDataBackend */ private static $referenceBackend; @@ -24,7 +24,7 @@ class BackendTest extends \PHPUnit_Framework_TestCase */ public static function classConstructor() { - self::$referenceBackend = new DataBackend_File(); + self::$referenceBackend = new FileDataBackend(); } /** @@ -32,10 +32,10 @@ public static function classConstructor() */ public function provideBackends() { - $pdoBackend = new DataBackend_PDO(new \PDO('mysql:host=localhost;dbname=test', 'test')); + $pdoBackend = new PDODataBackend(new \PDO('mysql:host=localhost;dbname=test', 'test')); $this->setupBackend($pdoBackend); - $fileBackend = new DataBackend_File(); + $fileBackend = new FileDataBackend(); $this->setupBackend($fileBackend); return array( @@ -57,10 +57,10 @@ private function setupBackend(DataBackend $backend) */ public function provideInstallationBackends() { - $pdoBackend = new DataBackend_PDO(new \PDO('mysql:host=localhost;dbname=test', 'test'), 'bavtest_'); + $pdoBackend = new PDODataBackend(new \PDO('mysql:host=localhost;dbname=test', 'test'), 'bavtest_'); $this->setupInstallationBackends($pdoBackend); - $fileBackend = new DataBackend_File(tempnam(DataBackend_File::getTempdir(), 'bavtest')); + $fileBackend = new FileDataBackend(tempnam(FileDataBackend::getTempdir(), 'bavtest')); $this->setupInstallationBackends($fileBackend); return array( diff --git a/tests/CrossProjectTest.php b/tests/CrossProjectTest.php index 85ba8e06..5ac1faa7 100755 --- a/tests/CrossProjectTest.php +++ b/tests/CrossProjectTest.php @@ -54,9 +54,9 @@ protected function setUp() $ktoblzcheckPath = __DIR__ . "/../tmp/ktoblzcheck/ktoblzcheck-1.21/src"; $this->testAPIs = array( - new TestAPI_BAV(), - new TestAPI_Kontocheck('/etc/blz.lut2', 2), - new TestAPI_Ktoblzcheck( + new BAVTestAPI(), + new KontocheckTestAPI('/etc/blz.lut2', 2), + new KtoblzcheckTestAPI( "$ktoblzcheckPath/bankdata/bankdata.txt", "$ktoblzcheckPath/bin/ktoblzcheck" ) @@ -69,7 +69,7 @@ protected function setUp() public function provideBanks() { $banks = array(); - $backend = new DataBackend_PDO(new \PDO('mysql:host=localhost;dbname=test', 'test')); + $backend = new PDODataBackend(new \PDO('mysql:host=localhost;dbname=test', 'test')); foreach ($backend->getAllBanks() as $bank) { $banks[] = array($bank); @@ -100,7 +100,7 @@ public function testCrossProjects(Bank $bank) } } - } catch (TestAPIException_Validation_BankNotFound $e) { + } catch (BankNotFoundTestAPIException $e) { return; } catch (Exception $e) { @@ -152,7 +152,7 @@ private function getErrorMessage(Bank $bank, $account, Array $results) foreach ($results as $result) { $message .= "{$result->getTestAPI()->getName()}: " . str_pad($resultTranslation[$result->getResult()], 8); - if ($result instanceof TestAPIResult_Error) { + if ($result instanceof TestAPIErrorResult) { $message .= " {$result->getMessage()}"; } diff --git a/tests/UpdatePlanTest.php b/tests/UpdatePlanTest.php index 7f328fe0..1a565aa8 100644 --- a/tests/UpdatePlanTest.php +++ b/tests/UpdatePlanTest.php @@ -47,9 +47,9 @@ public function provideTestIsOutdated() */ public function testIsOutdated($mtime, $time, $expectedIsOutdated) { - $file = tempnam(DataBackend_File::getTempdir(), 'bavtest'); + $file = tempnam(FileDataBackend::getTempdir(), 'bavtest'); touch($file, strtotime($mtime)); - $backend = new DataBackend_File($file); + $backend = new FileDataBackend($file); TimeMock::setTime(strtotime($time)); @@ -65,7 +65,7 @@ public function testIsOutdated($mtime, $time, $expectedIsOutdated) public function testLogUpdatePlan() { $updatePlan = new LogUpdatePlan(); - $updatePlan->perform(new DataBackend_File()); + $updatePlan->perform(new FileDataBackend()); } /** @@ -74,9 +74,9 @@ public function testLogUpdatePlan() */ public function testAutomaticUpdatePlanNotice() { - $file = tempnam(DataBackend_File::getTempdir(), 'bavtest'); + $file = tempnam(FileDataBackend::getTempdir(), 'bavtest'); $updatePlan = new AutomaticUpdatePlan(); - $updatePlan->perform(new DataBackend_File($file)); + $updatePlan->perform(new FileDataBackend($file)); } /** @@ -85,9 +85,9 @@ public function testAutomaticUpdatePlanNotice() */ public function testAutomaticUpdatePlan() { - $file = tempnam(DataBackend_File::getTempdir(), 'bavtest'); + $file = tempnam(FileDataBackend::getTempdir(), 'bavtest'); touch($file, strtotime("-1 year")); - $backend = new DataBackend_File($file); + $backend = new FileDataBackend($file); $updatePlan = new AutomaticUpdatePlan(); $this->assertTrue($updatePlan->isOutdated($backend)); diff --git a/tests/ValidatorTest.php b/tests/ValidatorTest.php index c4aeb4f6..c1468bae 100755 --- a/tests/ValidatorTest.php +++ b/tests/ValidatorTest.php @@ -46,8 +46,8 @@ class ValidatorTest extends \PHPUnit_Framework_TestCase private static $knownBanks = array(); /** - * @throws FileParserException_IO - * @throws FileParserException_FileNotExists + * @throws FileParserIOException + * @throws FileParserNotExistsException */ protected function setUp() { @@ -55,8 +55,8 @@ protected function setUp() return; } - #self::$dataBackend = new DataBackend_PDO(new \PDO('mysql:host=localhost;dbname=test', 'test')); - self::$dataBackend = new DataBackend_File(); + #self::$dataBackend = new PDODataBackend(new \PDO('mysql:host=localhost;dbname=test', 'test')); + self::$dataBackend = new FileDataBackend(); foreach (self::$dataBackend->getAllBanks() as $bank) { @@ -112,8 +112,8 @@ public function provideAccountsAndBanksInAllLengths() * and fills {@link $implementedBanks}. * * @param String $validatorType - * @throws ClassFileException_IO - * @throws ClassFileException_MissingClass + * @throws ClassFileIOException + * @throws MissingClassException * @dataProvider provideBanks */ public function testFindParseErrors(Bank $bank) @@ -131,8 +131,8 @@ public function testFindParseErrors(Bank $bank) * 0 - 0000000000 should always be invalid * * @param String $validatorType - * @throws ClassFileException_IO - * @throws ClassFileException_MissingClass + * @throws ClassFileIOException + * @throws MissingClassException * @dataProvider provideBanks */ public function testNullIsInvalid(Bank $bank) @@ -151,8 +151,8 @@ public function testNullIsInvalid(Bank $bank) * Short accounts should not raise exception. * * @param int $account - * @throws ClassFileException_IO - * @throws ClassFileException_MissingClass + * @throws ClassFileIOException + * @throws MissingClassException * @dataProvider provideAccountsAndBanksInAllLengths */ public function testAccountLength(Bank $bank, $account) @@ -209,7 +209,7 @@ public function testAccount($typeOrBankID, Array $accountIDs, $expectedValidatio try { $bank = self::$dataBackend->getBank($typeOrBankID); - } catch (DataBackendException_BankNotFound $e) { + } catch (BankNotFoundException $e) { switch ($e->getBankID()) { case '13051052': diff --git a/tests/VerifyImportTest.php b/tests/VerifyImportTest.php index 4aaabcd1..5a66f676 100755 --- a/tests/VerifyImportTest.php +++ b/tests/VerifyImportTest.php @@ -43,13 +43,13 @@ class VerifyImportTest extends \PHPUnit_Framework_TestCase private $verifyArray = array(); /** - * @var DataBackend_File + * @var FileDataBackend */ private $databack; protected function setUp() { - $this->databack = new DataBackend_File(); + $this->databack = new FileDataBackend(); $this->verifyArray = parse_ini_file(__DIR__.'/../data/verify.ini', true); $this->assertInternalType( @@ -86,7 +86,7 @@ public function testSequentialImport() } - } catch (DataBackendException_BankNotFound $e) { + } catch (BankNotFoundException $e) { $notSupported[] = $type; } @@ -141,7 +141,7 @@ private function assertImporter(VerifyImport $importer, Array $notSupported = ar private function getBank($validationType) { if (! isset($this->validationMap[$validationType])) { - throw new DataBackendException_BankNotFound($validationType); + throw new BankNotFoundException($validationType); } return $this->validationMap[$validationType]; diff --git a/tests/checkAgainstTestAPIs.php b/tests/checkAgainstTestAPIs.php index b5661922..b227d733 100755 --- a/tests/checkAgainstTestAPIs.php +++ b/tests/checkAgainstTestAPIs.php @@ -2,6 +2,7 @@ testAPIs[] = new TestAPI_BAV(); - $this->testAPIs[] = new TestAPI_Kontocheck('/etc/blz.lut', 2); - $this->testAPIs[] = new TestAPI_Ktoblzcheck( + $this->testAPIs[] = new BAVTestAPI(); + $this->testAPIs[] = new KontocheckTestAPI('/etc/blz.lut', 2); + $this->testAPIs[] = new KtoblzcheckTestAPI( "$ktoblzcheckPath/bankdata/bankdata.txt", "$ktoblzcheckPath/bin/ktoblzcheck" ); - #$backend = new DataBackend_File(); - $backend = new DataBackend_PDO(new \PDO('mysql:host=localhost;dbname=test', 'test')); + #$backend = new FileDataBackend(); + $backend = new PDODataBackend(new \PDO('mysql:host=localhost;dbname=test', 'test')); if (! empty($GLOBALS['argv'][1])) { @@ -142,7 +143,7 @@ public function __construct() $this->testedValidators[$bank->getValidationType()] = true; - } catch (TestAPIException_Validation_BankNotFound $e) { + } catch (BankNotFoundTestAPIException $e) { continue; } @@ -178,7 +179,7 @@ private function testAccount(Bank $bank, $account) foreach ($results as $result) { echo "{$result->getTestAPI()->getName()}: ", str_pad($resultTranslation[$result->getResult()], 8); - if ($result instanceof TestAPIResult_Error) { + if ($result instanceof TestAPIErrorResult) { echo " {$result->getMessage()}"; } diff --git a/tests/classes/class/ClassFile.php b/tests/classes/class/ClassFile.php index 9f869ee5..966c2f9d 100644 --- a/tests/classes/class/ClassFile.php +++ b/tests/classes/class/ClassFile.php @@ -62,7 +62,7 @@ class ClassFile * The constructor loads the class definition and parses it to initialize * {@link $parent} and {@link $neededClasses}. * - * @throws ClassFileException_MissingClass + * @throws MissingClassException * @param string $path */ private function __construct($path) @@ -83,7 +83,7 @@ private function __construct($path) preg_match_all(':extends +([a-zA-Z0-9_]+):', $this->getClassDefinition(), $matches); foreach ($matches[1] as $match) { if (! isset($this->neededClasses[$match])) { - throw new ClassFileException_MissingClass($this->name, $match); + throw new MissingClassException($this->name, $match); } $this->parent = $this->neededClasses[$match]; @@ -99,14 +99,14 @@ private function __construct($path) preg_match_all('/([a-zA-Z0-9_]+)::/', $this->getClassDefinition(), $matchesStatic); foreach (array_merge($matchesNew[1], $matchesStatic[1]) as $match) { if (! isset($this->neededClasses[$match])) { - throw new ClassFileException_MissingClass($this->name, $match); + throw new MissingClassException($this->name, $match); } } } /** - * @throws ClassFileException_MissingClass + * @throws MissingClassException * @param string $path * @return ClassFile */ @@ -120,8 +120,8 @@ public static function getClassFile($path) } /** - * @throws ClassFileException_IO - * @throws ClassFileException_MissingClass + * @throws ClassFileIOException + * @throws MissingClassException * @param string $dir * @return array ClassFile objects */ @@ -130,7 +130,7 @@ public static function getClassFiles($dir) $classFiles = array(); $dh = opendir($dir); if (! $dh) { - throw new ClassFileException_IO(); + throw new ClassFileIOException(); } while (($file = readdir($dh)) !== false) { @@ -164,7 +164,7 @@ public function getInstance() } /** - * @throws ClassFileException_IO + * @throws ClassFileIOException * @return string */ public function getClassDefinition() @@ -173,7 +173,7 @@ public function getClassDefinition() $this->classDefinition = ''; $fp = fopen($this->path, 'r'); if (! $fp) { - throw new ClassFileException_IO(); + throw new ClassFileIOException(); } $this->classDefinition = fread($fp, filesize($this->path)); diff --git a/tests/classes/class/exception/ClassFileException_IO.php b/tests/classes/class/exception/ClassFileIOException.php similarity index 94% rename from tests/classes/class/exception/ClassFileException_IO.php rename to tests/classes/class/exception/ClassFileIOException.php index 4996bf44..cfd29481 100644 --- a/tests/classes/class/exception/ClassFileException_IO.php +++ b/tests/classes/class/exception/ClassFileIOException.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class ClassFileException_IO extends ClassFileException +class ClassFileIOException extends ClassFileException { diff --git a/tests/classes/class/exception/ClassFileException_MissingClass.php b/tests/classes/class/exception/MissingClassException.php similarity index 96% rename from tests/classes/class/exception/ClassFileException_MissingClass.php rename to tests/classes/class/exception/MissingClassException.php index ee4eba34..a338a4f1 100644 --- a/tests/classes/class/exception/ClassFileException_MissingClass.php +++ b/tests/classes/class/exception/MissingClassException.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2006 Markus Malkusch */ -class ClassFileException_MissingClass extends ClassFileException +class MissingClassException extends ClassFileException { /** diff --git a/tests/classes/testAPI/TestAPI_BAV.php b/tests/classes/testAPI/BAVTestAPI.php similarity index 94% rename from tests/classes/testAPI/TestAPI_BAV.php rename to tests/classes/testAPI/BAVTestAPI.php index 3d1613d3..42091ac5 100644 --- a/tests/classes/testAPI/TestAPI_BAV.php +++ b/tests/classes/testAPI/BAVTestAPI.php @@ -26,7 +26,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class TestAPI_BAV extends TestAPI +class BAVTestAPI extends TestAPI { public function __construct() @@ -40,7 +40,7 @@ public function __construct() * @param int $bankCode * @param int $account * @return bool - * @throws TestAPIException_Validation_BankNotFound + * @throws BankNotFoundTestAPIException */ protected function isValid(Bank $bank, $account) { diff --git a/tests/classes/testAPI/TestAPI_Kontocheck.php b/tests/classes/testAPI/KontocheckTestAPI.php similarity index 82% rename from tests/classes/testAPI/TestAPI_Kontocheck.php rename to tests/classes/testAPI/KontocheckTestAPI.php index c5769497..becfc870 100644 --- a/tests/classes/testAPI/TestAPI_Kontocheck.php +++ b/tests/classes/testAPI/KontocheckTestAPI.php @@ -26,7 +26,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class TestAPI_Kontocheck extends TestAPI +class KontocheckTestAPI extends TestAPI { const NOT_INITIALIZED = -40; @@ -56,9 +56,9 @@ public function __construct($lutFile, $lutVersion) * @param int $bank * @param int $account * @return bool - * @throws TestAPIException_Validation - * @throws TestAPIException_Validation_NotInitialized - * @throws TestAPIException_Validation_BankNotFound + * @throws ValidationTestAPIException + * @throws NotInitializedTestAPIException + * @throws BankNotFoundTestAPIException */ protected function isValid(Bank $bank, $account) { @@ -67,10 +67,10 @@ protected function isValid(Bank $bank, $account) switch ($isValid) { case self::NOT_INITIALIZED: - throw new TestAPIException_Validation_NotInitialized("LUT not initialized"); + throw new NotInitializedTestAPIException("LUT not initialized"); case self::BANK_NOT_FOUND: - throw new TestAPIException_Validation_BankNotFound($bank->getBankID()); + throw new BankNotFoundTestAPIException($bank->getBankID()); case self::INVALID_NULL: case self::INVALID_KTO: @@ -79,7 +79,7 @@ protected function isValid(Bank $bank, $account) default: if ($isValid < 0) { - throw new TestAPIException_Validation("unknown code $isValid"); + throw new ValidationTestAPIException("unknown code $isValid"); } return true; diff --git a/tests/classes/testAPI/TestAPI_Ktoblzcheck.php b/tests/classes/testAPI/KtoblzcheckTestAPI.php similarity index 83% rename from tests/classes/testAPI/TestAPI_Ktoblzcheck.php rename to tests/classes/testAPI/KtoblzcheckTestAPI.php index 834302c1..f7fc1b6a 100644 --- a/tests/classes/testAPI/TestAPI_Ktoblzcheck.php +++ b/tests/classes/testAPI/KtoblzcheckTestAPI.php @@ -26,7 +26,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class TestAPI_Ktoblzcheck extends TestAPI +class KtoblzcheckTestAPI extends TestAPI { const BINARY = "ktoblzcheck"; @@ -62,9 +62,9 @@ public function __construct($bankdata, $binary = null) /** * @param int $account * @return bool - * @throws TestAPIException_Validation - * @throws TestAPIException_Validation_NotInitialized - * @throws TestAPIException_Validation_BankNotFound + * @throws ValidationTestAPIException + * @throws NotInitializedTestAPIException + * @throws BankNotFoundTestAPIException */ protected function isValid(Bank $bank, $account) { @@ -83,10 +83,10 @@ protected function isValid(Bank $bank, $account) return false; case self::BANK_NOT_FOUND: - throw new TestAPIException_Validation_BankNotFound("Bank not found: {$bank->getBankID()}"); + throw new BankNotFoundTestAPIException("Bank not found: {$bank->getBankID()}"); default: - throw new TestAPIException_Validation("unknown code $result: " . implode("\n", $out)); + throw new ValidationTestAPIException("unknown code $result: " . implode("\n", $out)); } } diff --git a/tests/classes/testAPI/TestAPI.php b/tests/classes/testAPI/TestAPI.php index 7a61ed2b..67b1e214 100644 --- a/tests/classes/testAPI/TestAPI.php +++ b/tests/classes/testAPI/TestAPI.php @@ -38,7 +38,7 @@ abstract class TestAPI /** * @param int $account * @return bool - * @throws TestAPIException_Validation + * @throws ValidationTestAPIException */ abstract protected function isValid(Bank $bank, $account); @@ -68,7 +68,7 @@ public function getResult(Bank $bank, $account) return new TestAPIResult($this, $result); } catch (Exception $e) { - return new TestAPIResult_Error( + return new TestAPIErrorResult( $this, TestAPIResult::ERROR, $e->getMessage() diff --git a/tests/classes/testAPI/TestAPIResult_Error.php b/tests/classes/testAPI/TestAPIErrorResult.php similarity index 96% rename from tests/classes/testAPI/TestAPIResult_Error.php rename to tests/classes/testAPI/TestAPIErrorResult.php index 8df1b931..571fe8de 100644 --- a/tests/classes/testAPI/TestAPIResult_Error.php +++ b/tests/classes/testAPI/TestAPIErrorResult.php @@ -24,7 +24,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class TestAPIResult_Error extends TestAPIResult +class TestAPIErrorResult extends TestAPIResult { /** diff --git a/tests/classes/testAPI/exception/TestAPIException_Validation_BankNotFound.php b/tests/classes/testAPI/exception/BankNotFoundTestAPIException.php similarity index 92% rename from tests/classes/testAPI/exception/TestAPIException_Validation_BankNotFound.php rename to tests/classes/testAPI/exception/BankNotFoundTestAPIException.php index 6e0678d0..0c4757ed 100644 --- a/tests/classes/testAPI/exception/TestAPIException_Validation_BankNotFound.php +++ b/tests/classes/testAPI/exception/BankNotFoundTestAPIException.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class TestAPIException_Validation_BankNotFound extends TestAPIException_Validation +class BankNotFoundTestAPIException extends ValidationTestAPIException { } diff --git a/tests/classes/testAPI/exception/TestAPIException_Validation_NotInitialized.php b/tests/classes/testAPI/exception/NotInitializedTestAPIException.php similarity index 91% rename from tests/classes/testAPI/exception/TestAPIException_Validation_NotInitialized.php rename to tests/classes/testAPI/exception/NotInitializedTestAPIException.php index efc3492a..ed0c4f0a 100644 --- a/tests/classes/testAPI/exception/TestAPIException_Validation_NotInitialized.php +++ b/tests/classes/testAPI/exception/NotInitializedTestAPIException.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class TestAPIException_Validation_NotInitialized extends TestAPIException_Validation +class NotInitializedTestAPIException extends ValidationTestAPIException { } diff --git a/tests/classes/testAPI/exception/TestAPIException_Validation.php b/tests/classes/testAPI/exception/ValidationTestAPIException.php similarity index 94% rename from tests/classes/testAPI/exception/TestAPIException_Validation.php rename to tests/classes/testAPI/exception/ValidationTestAPIException.php index 594abea2..a272fe3d 100644 --- a/tests/classes/testAPI/exception/TestAPIException_Validation.php +++ b/tests/classes/testAPI/exception/ValidationTestAPIException.php @@ -25,7 +25,7 @@ * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch */ -class TestAPIException_Validation extends TestAPIException +class ValidationTestAPIException extends TestAPIException { } From a078b923355a03b83861965fef0639f66aef5386 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 06:56:11 +0200 Subject: [PATCH 105/303] example uses the new API --- docs/example.php | 140 ++++++++++++----------------------------------- 1 file changed, 35 insertions(+), 105 deletions(-) diff --git a/docs/example.php b/docs/example.php index 0e2df4c9..557d9006 100755 --- a/docs/example.php +++ b/docs/example.php @@ -3,151 +3,84 @@ /** * This script shows examples how to use BAV * - * Copyright (C) 2006 Markus Malkusch - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * @package example * @filesource * @author Markus Malkusch - * @copyright Copyright (C) 2006 Markus Malkusch - * @see BAV_DataBackend - * @see BAV_Bank - * @see BAV_Agency - */ - -/** - * Namespace comes slowly. In a future release you'll find all classes - * in the namespace malkusch\bav. + * @see BAV */ -use malkusch\bav\ConfigurationRegistry; /** * We need to require the autoloader */ require_once __DIR__ . "/../autoloader/autoloader.php"; - -/** - * Inject the configured BAV_DataBackend. Default is BAV_DataBackend_File - */ -$databack = ConfigurationRegistry::getConfiguration()->getDatabackend(); - - -/** - * If you didn't call bin/bav-install.php you can install the backend programmatically. - * This should only be called once for installation. For future use you should - * skip this step. - */ -try { - $databack->install(); - -} catch (BAV_DataBackendException $error) { - die("Installation failed: {$error->getMessage()}\n"); - -} - -/** - * If you want to update your installed data structure to a new Bundesbank file - * you have to call update() or use the script bin/bav-update.php: - * - * $databack->update(); - * - * Now this is not necessary, as install() calls implicitly update(). - */ - +use malkusch\bav\BAV; /** * Let's have some fun with the bank 10000000 */ try { - $bank = $databack->getBank(10000000); + // API Facade with default configuration + $bav = new BAV(); - /** - * Hmm, what name does this bank have? - */ - echo "{$bank->getMainAgency()->getName()} {$bank->getMainAgency()->getCity()}\n"; + // Does the bank exist? + echo "Bank 10000000 ", + $bav->bankExists("10000000") ? "exists" : "doesn't exist", "\n"; + + // Does the account exist? + echo "Account 12345 is ", + $bav->isValidBankAccount("10000000", "12345") ? "valid" : "invalid", "\n"; - /** - * Are there any more agencies? - */ - print_r($bank->getAgencies()); + // Print name of the bank + $agency = $bav->getMainAgency("10000000"); + echo "{$agency->getName()} {$agency->getCity()}\n"; /** - * And now we want to see if the account 12345 is valid: - */ - echo "Account 12345 is ", $bank->isValid(12345) ? "valid" : "invalid", "\n"; - -} catch (BAV_DataBackendException_BankNotFound $error) { - /** - * Now you would know that the bank 10000000 does not exist. - * BAV_DataBackend->bankExists(10000000) would also tell that: + * Are there any more agencies? */ - if (! $databack->bankExists($error->getBankID())) { // of course that's the same as if(true) - die("Bank {$error->getBankID()} does not exist."); + print_r($bav->getAgencies("10000000")); - } - -} catch (BAV_DataBackendException $error) { +} catch (BAVException $error) { die("Some error happened in the data backend."); } - /** - * As this is a clean example we won't leave anything back so we uninstall the - * datastructure. For your real life application you won't call uninstall() as - * you want to keep your data structure. - */ -try { - $databack->uninstall(); - -} catch (BAV_DataBackendException $error) { - die("Uninstallation failed"); - -} - - -/** - * Now have a look at the special features of BAV_DataBackend_PDO. Note that + * Now have a look at the special features of PDODataBackend. Note that * the script will exit now if the PDO object could not be created. You should * edit the PDO object to create a valid DBS connection. */ -try { - $databackPDO = new BAV_DataBackend_PDO(new PDO('mysql:host=localhost;dbname=test', 'test')); - $databackPDO->install(); +use malkusch\bav\PDODataBackendContainer; +try { + /* + * Create the PDO container. If you intend to do so you should + * create the file bav/configuration.php and return a Configuration which + * uses PDODataBackendContainer. + * + * @see ConfigurationRegistry + */ + $backendContainer = new PDODataBackendContainer( + new \PDO('mysql:host=localhost;dbname=test', 'test') + ); + $backend = $backendContainer->getDataBackend(); /** * We can use an arbitrary SQL statement to search for some agencies. This statement * needs at least to return the ids of the agencies. */ - $agencies = $databackPDO->getAgencies("SELECT id FROM {$databackPDO->getPrefix()}agency LIMIT 10"); + $agencies = $backend->getAgencies("SELECT id FROM {$backend->getPrefix()}agency LIMIT 10"); foreach ($agencies as $agency) { echo "Found agency {$agency->getPostcode()} of bank {$agency->getBank()->getBankID()}\n"; } - /** * You perform better if you provide all attributes of the agency table. Let's * try it and search all banks in munich. */ - $agencies = $databackPDO->getAgencies( - "SELECT * FROM {$databackPDO->getPrefix()}agency + $agencies = $backend->getAgencies( + "SELECT * FROM {$backend->getPrefix()}agency WHERE city='München' GROUP BY bank" ); @@ -156,10 +89,7 @@ } - - $databackPDO->uninstall(); - -} catch (BAV_DataBackendException $error) { +} catch (BAVException $error) { die($error->getTraceAsString()); } \ No newline at end of file From 18bf5bfeb0dcfdc2e3e0009fedfb920aa683845d Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 07:02:42 +0200 Subject: [PATCH 106/303] note about installation --- docs/example.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/example.php b/docs/example.php index 557d9006..60d11b17 100755 --- a/docs/example.php +++ b/docs/example.php @@ -1,7 +1,10 @@ #!/bin/env php From dbe1275b7fb3bb6e6811f60f45589b3551a65afc Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 07:31:44 +0200 Subject: [PATCH 107/303] added new bundesbank fields to the parser --- .../file/fileParser/FileParser.php | 33 +++++++++++++------ 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/classes/dataBackend/file/fileParser/FileParser.php b/classes/dataBackend/file/fileParser/FileParser.php index 6a6a3f31..c040a6f0 100644 --- a/classes/dataBackend/file/fileParser/FileParser.php +++ b/classes/dataBackend/file/fileParser/FileParser.php @@ -32,26 +32,39 @@ class FileParser { const FILE_ENCODING = 'ISO-8859-15'; - const BANKID_OFFSET = 0; + const BANKID_OFFSET = 0; // field 1 const BANKID_LENGTH = 8; - const ISMAIN_OFFSET = 8; + const ISMAIN_OFFSET = 8; // field 2 const ISMAIN_LENGTH = 1; - const NAME_OFFSET = 9; + const NAME_OFFSET = 9; // field 3 const NAME_LENGTH = 58; - const POSTCODE_OFFSET = 67; + const POSTCODE_OFFSET = 67; // field 4 const POSTCODE_LENGTH = 5; - const CITY_OFFSET = 72; + const CITY_OFFSET = 72; // field 5 const CITY_LENGTH = 35; - const SHORTTERM_OFFSET = 107; + const SHORTTERM_OFFSET = 107; // field 6 const SHORTTERM_LENGTH = 27; - const PAN_OFFSET = 134; + const PAN_OFFSET = 134; // field 7 const PAN_LENGTH = 5; - const BIC_OFFSET = 139; + const BIC_OFFSET = 139; // field 8 const BIC_LENGTH = 11; - const TYPE_OFFSET = 150; + const TYPE_OFFSET = 150; // field 9 const TYPE_LENGTH = 2; - const ID_OFFSET = 152; + const ID_OFFSET = 152; // field 10 const ID_LENGTH = 6; + const STATE_OFFSET = 158; // field 11 + const STATE_LENGTH = 1; + const DELETE_OFFSET = 159; // field 12 + const DELETE_LENGTH = 1; + const SUCCESSOR_OFFSET = 160; // field 13 + const SUCCESSOR_LENGTH = 8; + + /** + * This field is only accessible from a new version of the file. + * The new version is only accessible from the Bundesbank ExtraNet. + */ + const IBAN_RULE_OFFSET = 168; // field 14 + const IBAN_RULE_LENGTH = 8; /** * @var resource From b01a3f6b36e43e4e1647ae33de4c841807214573 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 07:46:40 +0200 Subject: [PATCH 108/303] added script bin/bav-uninstall.php --- bin/bav-uninstall.php | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100755 bin/bav-uninstall.php diff --git a/bin/bav-uninstall.php b/bin/bav-uninstall.php new file mode 100755 index 00000000..c8e9b9e6 --- /dev/null +++ b/bin/bav-uninstall.php @@ -0,0 +1,27 @@ +#!/bin/env php + + * @license GPL + * @see DataBackend + */ + +namespace malkusch\bav; + +require_once __DIR__ . "/../autoloader/autoloader.php"; + +try { + $configuration = ConfigurationRegistry::getConfiguration(); + $configuration->setAutomaticInstallation(false); + $configuration->setUpdatePlan(null); + + $databack = $configuration->getDatabackendContainer()->getDataBackend(); + $databack->uninstall(); + echo "Bundesbank file removed.\n"; + +} catch (DataBackendException $error) { + die("Deinstallation failed: {$error->getMessage()}\n"); + +} \ No newline at end of file From 95e7f0ec87252f3fc0836710ad9029d1753b7b13 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 07:49:15 +0200 Subject: [PATCH 109/303] removed executable bit --- tests/AgencyQueryTest.php | 0 tests/BackendTest.php | 0 tests/CrossProjectTest.php | 0 tests/DataConstraintTest.php | 0 tests/ValidatorTest.php | 0 tests/VerifyImportTest.php | 0 6 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 tests/AgencyQueryTest.php mode change 100755 => 100644 tests/BackendTest.php mode change 100755 => 100644 tests/CrossProjectTest.php mode change 100755 => 100644 tests/DataConstraintTest.php mode change 100755 => 100644 tests/ValidatorTest.php mode change 100755 => 100644 tests/VerifyImportTest.php diff --git a/tests/AgencyQueryTest.php b/tests/AgencyQueryTest.php old mode 100755 new mode 100644 diff --git a/tests/BackendTest.php b/tests/BackendTest.php old mode 100755 new mode 100644 diff --git a/tests/CrossProjectTest.php b/tests/CrossProjectTest.php old mode 100755 new mode 100644 diff --git a/tests/DataConstraintTest.php b/tests/DataConstraintTest.php old mode 100755 new mode 100644 diff --git a/tests/ValidatorTest.php b/tests/ValidatorTest.php old mode 100755 new mode 100644 diff --git a/tests/VerifyImportTest.php b/tests/VerifyImportTest.php old mode 100755 new mode 100644 From 18fbf0159d4cd1ad55c2e2b0195e30a507c05d2f Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 07:50:12 +0200 Subject: [PATCH 110/303] removed TestSuite --- tests/TestSuite.php | 51 --------------------------------------------- 1 file changed, 51 deletions(-) delete mode 100644 tests/TestSuite.php diff --git a/tests/TestSuite.php b/tests/TestSuite.php deleted file mode 100644 index ef2367bf..00000000 --- a/tests/TestSuite.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * @package test - * @author Markus Malkusch - * @copyright Copyright (C) 2009 Markus Malkusch - */ - -require_once __DIR__ . '/AgencyQueryTest.php'; -require_once __DIR__ . '/BackendTest.php'; -require_once __DIR__ . '/DataConstraintTest.php'; -require_once __DIR__ . '/ValidatorTest.php'; -require_once __DIR__ . '/VerifyImportTest.php'; - -class TestSuite extends \PHPUnit_Framework_TestSuite -{ - - /** - * @return TestSuite - */ - public static function suite() - { - $suite = new self(); - - $suite->addTestSuite('AgencyQueryTest'); - $suite->addTestSuite('DataConstraintTest'); - $suite->addTestSuite('ValidatorTest'); - $suite->addTestSuite('VerifyImportTest'); - $suite->addTestSuite('BackendTest'); - - return $suite; - } -} From 5a31aa3834607001ce87ccca98845d2fb73b3481 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 09:11:31 +0200 Subject: [PATCH 111/303] fixed CrossProjectTest --- autoloader/index/1.php | 2 +- tests/CrossProjectTest.php | 45 ++++++++---- tests/checkAgainstTestAPIs.php | 9 +-- tests/classes/testAPI/BAVTestAPI.php | 10 +++ tests/classes/testAPI/KontocheckTestAPI.php | 58 ++++++++++------ tests/classes/testAPI/KtoblzcheckTestAPI.php | 64 ++++++++++-------- tests/classes/testAPI/TestAPI.php | 25 +++++++ .../exception/TestAPIUnavailableException.php | 14 ++++ tests/data/blz.lut2 | Bin 0 -> 304249 bytes 9 files changed, 156 insertions(+), 71 deletions(-) create mode 100644 tests/classes/testAPI/exception/TestAPIUnavailableException.php create mode 100644 tests/data/blz.lut2 diff --git a/autoloader/index/1.php b/autoloader/index/1.php index e0e1779f..edc108f8 100644 --- a/autoloader/index/1.php +++ b/autoloader/index/1.php @@ -17,7 +17,6 @@ return array( 'malkusch\bav\testapi' => '../tests/classes/testAPI/TestAPI.php', 'malkusch\bav\timemock' => '../tests/classes/TimeMock.php', - 'malkusch\bav\testsuite' => '../tests/TestSuite.php', 'malkusch\bav\classfile' => '../tests/classes/class/ClassFile.php', 'malkusch\bav\bavtestapi' => '../tests/classes/testAPI/BAVTestAPI.php', 'malkusch\bav\backendtest' => '../tests/BackendTest.php', @@ -39,6 +38,7 @@ 'malkusch\bav\classfileioexception' => '../tests/classes/class/exception/ClassFileIOException.php', 'malkusch\bav\missingclassexception' => '../tests/classes/class/exception/MissingClassException.php', 'malkusch\bav\validationtestapiexception' => '../tests/classes/testAPI/exception/ValidationTestAPIException.php', + 'malkusch\bav\testapiunavailableexception' => '../tests/classes/testAPI/exception/TestAPIUnavailableException.php', 'malkusch\bav\banknotfoundtestapiexception' => '../tests/classes/testAPI/exception/BankNotFoundTestAPIException.php', 'malkusch\bav\notinitializedtestapiexception' => '../tests/classes/testAPI/exception/NotInitializedTestAPIException.php', ); diff --git a/tests/CrossProjectTest.php b/tests/CrossProjectTest.php index 5ac1faa7..8ed283e0 100644 --- a/tests/CrossProjectTest.php +++ b/tests/CrossProjectTest.php @@ -24,6 +24,7 @@ * @package test * @author Markus Malkusch * @copyright Copyright (C) 2009 Markus Malkusch + * @large */ class CrossProjectTest extends \PHPUnit_Framework_TestCase { @@ -45,26 +46,33 @@ class CrossProjectTest extends \PHPUnit_Framework_TestCase private $failedBankDependentValidators = array(); /** - * @var Array + * @var TestAPI[] */ - private $testAPIs = array(); + private static $testAPIs = array(); - protected function setUp() + public static function setUpBeforeClass() { - $ktoblzcheckPath = __DIR__ . "/../tmp/ktoblzcheck/ktoblzcheck-1.21/src"; - - $this->testAPIs = array( - new BAVTestAPI(), - new KontocheckTestAPI('/etc/blz.lut2', 2), - new KtoblzcheckTestAPI( - "$ktoblzcheckPath/bankdata/bankdata.txt", - "$ktoblzcheckPath/bin/ktoblzcheck" - ) - ); + self::$testAPIs = array(new BAVTestAPI()); + + try { + self::$testAPIs[] = new KontocheckTestAPI(); + + } catch (TestAPIUnavailableException $e) { + trigger_error("KontocheckTestAPI unavailable", E_USER_WARNING); + + } + + try { + self::$testAPIs[] = new KtoblzcheckTestAPI(); + + } catch (TestAPIUnavailableException $e) { + trigger_error("KtoblzcheckTestAPI unavailable", E_USER_WARNING); + + } } /** - * @return Array + * @return Bank[][] */ public function provideBanks() { @@ -74,6 +82,9 @@ public function provideBanks() $banks[] = array($bank); } + + // $banks = array_slice($banks, 0, 60); + return $banks; } @@ -118,7 +129,11 @@ private function assertSameResult(Bank $bank, $account) { $results = array(); $resultValues = array(); - foreach ($this->testAPIs as $key => $testAPI) { + foreach (self::$testAPIs as $key => $testAPI) { + if ($testAPI->ignoreTestCase($bank, $account)) { + continue; + + } $result = $testAPI->getResult($bank, $account); $results[] = $result; $resultValues[] = $result->getResult(); diff --git a/tests/checkAgainstTestAPIs.php b/tests/checkAgainstTestAPIs.php index b227d733..03bc3184 100755 --- a/tests/checkAgainstTestAPIs.php +++ b/tests/checkAgainstTestAPIs.php @@ -66,14 +66,9 @@ class CheckAgainstTestAPIs public function __construct() { - $ktoblzcheckPath = __DIR__ . "/../tmp/ktoblzcheck/ktoblzcheck-1.21/src"; - $this->testAPIs[] = new BAVTestAPI(); - $this->testAPIs[] = new KontocheckTestAPI('/etc/blz.lut', 2); - $this->testAPIs[] = new KtoblzcheckTestAPI( - "$ktoblzcheckPath/bankdata/bankdata.txt", - "$ktoblzcheckPath/bin/ktoblzcheck" - ); + $this->testAPIs[] = new KontocheckTestAPI(); + $this->testAPIs[] = new KtoblzcheckTestAPI(); #$backend = new FileDataBackend(); diff --git a/tests/classes/testAPI/BAVTestAPI.php b/tests/classes/testAPI/BAVTestAPI.php index 42091ac5..5bf4d558 100644 --- a/tests/classes/testAPI/BAVTestAPI.php +++ b/tests/classes/testAPI/BAVTestAPI.php @@ -36,6 +36,16 @@ public function __construct() $this->setName("bav"); } + /** + * Returns true if the API is available. + * + * @return bool + */ + protected function isAvailable() + { + return true; + } + /** * @param int $bankCode * @param int $account diff --git a/tests/classes/testAPI/KontocheckTestAPI.php b/tests/classes/testAPI/KontocheckTestAPI.php index becfc870..ab480fe6 100644 --- a/tests/classes/testAPI/KontocheckTestAPI.php +++ b/tests/classes/testAPI/KontocheckTestAPI.php @@ -5,26 +5,9 @@ /** * The API for Michael Plugge's kontocheck. * - * Copyright (C) 2009 Markus Malkusch - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * @package classes - * @subpackage verify + * @license GPL * @author Markus Malkusch - * @copyright Copyright (C) 2009 Markus Malkusch + * @link http://sourceforge.net/projects/kontocheck/ */ class KontocheckTestAPI extends TestAPI { @@ -39,19 +22,54 @@ class KontocheckTestAPI extends TestAPI * @param String $lutFile * @param int $lutVersion * @throws TestAPIException + * @throws TestAPIUnavailableException */ - public function __construct($lutFile, $lutVersion) + public function __construct($lutFile = null, $lutVersion = null) { parent::__construct(); $this->setName("kc"); + if (is_null($lutFile)) { + $lutFile = __DIR__ . "/../../data/blz.lut2"; + + } + + if (is_null($lutVersion)) { + $lutVersion = 2; + + } + if (! lut_init($lutFile, $lutVersion)) { throw new TestAPIException("Could not initialize LUT."); } } + /** + * Return true for known false positives. + * + * @return true + */ + public function ignoreTestCase(Bank $bank, $account) + { + if ($bank->getValidator() instanceof Validator09) { + return true; + + } + return parent::ignoreTestCase($bank, $account); + } + + /** + * Returns true if the API is available. + * + * @return bool + */ + protected function isAvailable() + { + return function_exists("lut_init"); + } + /** * @param int $bank * @param int $account diff --git a/tests/classes/testAPI/KtoblzcheckTestAPI.php b/tests/classes/testAPI/KtoblzcheckTestAPI.php index f7fc1b6a..7fe4af16 100644 --- a/tests/classes/testAPI/KtoblzcheckTestAPI.php +++ b/tests/classes/testAPI/KtoblzcheckTestAPI.php @@ -5,26 +5,9 @@ /** * The API for ktoblzcheck * - * Copyright (C) 2009 Markus Malkusch - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * @package classes - * @subpackage verify * @author Markus Malkusch - * @copyright Copyright (C) 2009 Markus Malkusch + * @license GPL + * @link http://sourceforge.net/projects/ktoblzcheck/ */ class KtoblzcheckTestAPI extends TestAPI { @@ -49,14 +32,41 @@ class KtoblzcheckTestAPI extends TestAPI * @param String $binary * @throws TestAPIException */ - public function __construct($bankdata, $binary = null) + public function __construct($bankdata = null, $binary = null) { - parent::__construct(); + if (! is_null($bankdata)) { + $this->bankdata = realpath($bankdata); + } + $this->binary = is_null($binary) ? self::BINARY : realpath($binary); + + parent::__construct(); $this->setName("ktoblzcheck"); + } - $this->bankdata = realpath($bankdata); - $this->binary = is_null($binary) ? self::BINARY : realpath($binary); + /** + * Return true for known false positives. + * + * @return true + */ + public function ignoreTestCase(Bank $bank, $account) + { + if ($account == 0) { + return true; + + } + return parent::ignoreTestCase($bank, $account); + } + + /** + * Returns true if the API is available. + * + * @return bool + */ + protected function isAvailable() + { + exec("$this->binary --version", $out, $result); + return $result === 0; } /** @@ -68,11 +78,9 @@ public function __construct($bankdata, $binary = null) */ protected function isValid(Bank $bank, $account) { - exec( - "$this->binary --file=$this->bankdata {$bank->getBankID()} $account", - $out, - $result - ); + $fileParam = empty($this->bankdata) ? '' : "--file=$this->bankdata"; + $cmd = "$this->binary $fileParam '{$bank->getBankID()}' '$account'"; + exec($cmd, $out, $result); switch ($result) { diff --git a/tests/classes/testAPI/TestAPI.php b/tests/classes/testAPI/TestAPI.php index 67b1e214..83a028c1 100644 --- a/tests/classes/testAPI/TestAPI.php +++ b/tests/classes/testAPI/TestAPI.php @@ -41,10 +41,35 @@ abstract class TestAPI * @throws ValidationTestAPIException */ abstract protected function isValid(Bank $bank, $account); + + /** + * Returns true if the API is available. + * + * @return bool + */ + abstract protected function isAvailable(); + + /** + * Return true for known false positives. + * + * @return true + */ + public function ignoreTestCase(Bank $bank, $account) + { + return false; + } + /** + * @throws TestAPIUnavailableException + */ public function __construct() { $this->setName(get_class($this)); + + if (! $this->isAvailable()) { + throw new TestAPIUnavailableException(); + + } } /** diff --git a/tests/classes/testAPI/exception/TestAPIUnavailableException.php b/tests/classes/testAPI/exception/TestAPIUnavailableException.php new file mode 100644 index 00000000..a7627a0d --- /dev/null +++ b/tests/classes/testAPI/exception/TestAPIUnavailableException.php @@ -0,0 +1,14 @@ + + * @license GPL + */ +class TestAPIUnavailableException extends TestAPIException +{ + +} diff --git a/tests/data/blz.lut2 b/tests/data/blz.lut2 new file mode 100644 index 0000000000000000000000000000000000000000..d5382ffe4544c6f7ca0f08cfeac3de6f40a13ce8 GIT binary patch literal 304249 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�Lm|0J{fpe}FL$psPjo1z&B;*=M-;3}2q% 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
+
+
+
+ +

Navigation und Service

+ + +
+

Deutsche Bundesbank (zur Startseite)

+ +
+ + +
+ +
+
+ +
+
+
+

+Download - Bankleitzahlen +

+

Löschung von Bankleitzahlen

+

Zur Feststellung von Bankleitzahllöschungen können die unten stehenden Listen "BLZ-Löschungen zum (Gültigkeitstermin)" verwendet werden, in denen alle Bankleitzahllöschungen - gegebenenfalls mit Angabe der entsprechenden Nachfolge-Bankleitzahl - zu diesem sowie dem vorhergehenden Aktualisierungstermin verzeichnet wurden.

+

Diese Informationen können auch direkt der Bankleitzahlendatei entnommen werden (Feld 11 „Änderungskennzeichen“ = „D“ in Verbindung mit Feld 2 „Merkmal, ob bankleitzahlführender Zahlungsdienstleister („1“) oder nicht („2“)“ = „1“, bzw. Feld 13 „Hinweis auf Nachfolge-Bankleitzahl“).

+

Hinweis: Eine Bankleitzahl wird nur dann gelöscht, wenn der mit dem „Änderungskennzeichen“ = „D“ gekennzeichnete Datensatz im Feld 2 mit „1“ belegt ist. Die Löschung eines Datensatzes mit dem Merkmal „2“ im Feld 2 bedeutet nicht die Löschung der Bankleitzahl selbst, sondern nur die Löschung dieses Datensatzes.

+

Informationen über die beabsichtigte Löschung von Bankleitzahlen können den Feldern 12 „Hinweis auf beabsichtigte Bankleitzahllöschung“ sowie ggf. Feld 13 „Hinweis auf Nachfolge-Bankleitzahl“ entnommen werden.

+

Download der Bankleitzahlendateien

+

Im Folgenden finden Sie die Bankleitzahlen-Dateien zum Download im ASCII-Format als PC-Text, PC-Excel und Lotus Notes. Die Dateien sind jeweils in den zwei letzten Versionen verfügbar. Die aktuellen Dateien werden zum 9. Juni 2014 gültig (und dürfen vorher im Zahlungsverkehr nicht verwendet werden). Die Bereitstellung der Dateien für die nächste Aktualisierung per 8. September 2014 wird voraussichtlich im August 2014 erfolgen.

+

Über die Bereitstellung neuer Bankleitzahlendateien sowie weiterer Informationen zu Bankleitzahlen, die für die reibungslose Abwicklung des Zahlungsverkehrs von großer Bedeutung sind, informieren wir Sie über unseren Newsletter. Sofern Sie Interesse haben, bitten wir Sie, sich zu registrieren.

+
+
+

Bankleitzahlen-Löschungen

+
+ +
+
+
+

Bankleitzahlendateien ungepackt

+
+

gültig vom 09.06.2014 bis 07.09.2014

+ +
+
+
+

Bankleitzahlendateien gepackt

+ +
+
+

Bankleitzahlendateien ungepackt

+
+

gültig vom 03.03.2014 bis 08.06.2014

+ +
+
+
+

Bankleitzahlendateien gepackt

+ +
+
+ +
+
+
+
+
+

Zusatzinformationen

+
+ +
+
+ + + +
+ +
+
+
+
+
+
+ + + +
+ +
+
+
+
+
+
+ + + +
+ +
+
+
+
+
+

Hinweis 

+
+

Der verbindliche Bankleitzahlen-Änderungsdienst erfolgt für Zahlungsdienstleister durch einen gesicherten Download aus dem ExtraNet der Deutschen Bundesbank. Ergänzend stellt die Deutsche Bundesbank die Bankleitzahlendatei unverbindlich ins Internet ein. Bitte beachten Sie bei der Verwendung der Bankleitzahlendatei die Hinweise im Disclaimer.

+
+
+
+

+Newsletter abonnieren +  +

+
+

+ + + +

+

Erhalten Sie regelmäßig Informationen zu Bankleitzahlen und Prüfziffer-Berechnungsmethoden für Kontonummern, TARGET2 oder allgemein zu Zahlungsverkehr und Wertpapierabwicklung.

+Weiter +
+
+
+
+
+
+
 
+
+ +
+
+
+
+
+
+
+
+ +
+ +
+ + + + + + \ No newline at end of file From 591130290b5adbdef6bdc5fe2a1c30c7bddb83cd Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Mon, 2 Jun 2014 01:29:45 +0200 Subject: [PATCH 164/303] PSR2 style --- classes/dataBackend/file/download/uripicker/URIPicker.php | 1 - tests/URIPickerTest.php | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/classes/dataBackend/file/download/uripicker/URIPicker.php b/classes/dataBackend/file/download/uripicker/URIPicker.php index 5a81ad56..8b87c2e6 100644 --- a/classes/dataBackend/file/download/uripicker/URIPicker.php +++ b/classes/dataBackend/file/download/uripicker/URIPicker.php @@ -25,5 +25,4 @@ public function isAvailable(); * @return string */ public function pickURI($html); - } diff --git a/tests/URIPickerTest.php b/tests/URIPickerTest.php index da7eac2c..1620841c 100644 --- a/tests/URIPickerTest.php +++ b/tests/URIPickerTest.php @@ -86,4 +86,4 @@ public function testIsAvailable(URIPicker $picker) { $this->assertTrue($picker->isAvailable()); } -} +} From 9d3a1e3e082f3652f51fc2563780993796cdd1ef Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Mon, 2 Jun 2014 01:32:50 +0200 Subject: [PATCH 165/303] PSR2 style --- tests/URIPickerTest.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/URIPickerTest.php b/tests/URIPickerTest.php index 1620841c..4da65621 100644 --- a/tests/URIPickerTest.php +++ b/tests/URIPickerTest.php @@ -60,7 +60,9 @@ public function testPickURI(URIPicker $picker) $uri = $picker->pickURI($html); $this->assertEquals( + // @codingStandardsIgnoreStart "/Redaktion/DE/Downloads/Aufgaben/Unbarer_Zahlungsverkehr/Bankleitzahlen/2014_09_07/blz_2014_06_09_txt.txt?__blob=publicationFile", + // @codingStandardsIgnoreEnd $uri ); } From 00571dba24fe5206ae1094969adf4968afdad920 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Mon, 2 Jun 2014 01:46:27 +0200 Subject: [PATCH 166/303] added BAV::update() --- README-1.0.0.md | 6 ++++-- bin/bav-update.php | 5 ++--- classes/BAV.php | 15 +++++++++++++++ 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/README-1.0.0.md b/README-1.0.0.md index f7d8ffa0..8cc682f2 100644 --- a/README-1.0.0.md +++ b/README-1.0.0.md @@ -67,8 +67,10 @@ Call `bin/bav-update.php`. ## Programmatically ```php -$container = ConfigurationRegistry::getConfiguration()->getDataBackendContainer(); -$container->getDatabackend()->update(); +namespace malkusch\bav; + +$bav = new BAV(); +$bav->update(); ``` ## Automatic diff --git a/bin/bav-update.php b/bin/bav-update.php index 5fdfea82..0b54ecf2 100755 --- a/bin/bav-update.php +++ b/bin/bav-update.php @@ -14,9 +14,8 @@ try { ConfigurationRegistry::getConfiguration()->setUpdatePlan(null); - $databack = ConfigurationRegistry::getConfiguration()->getDatabackendContainer()->getDataBackend(); - - $databack->update(); + $bav = new BAV(); + $bav->update(); echo "Bundesbank file downloaded.\n"; } catch (DataBackendException $error) { diff --git a/classes/BAV.php b/classes/BAV.php index 080cf095..469cae0d 100644 --- a/classes/BAV.php +++ b/classes/BAV.php @@ -50,6 +50,21 @@ public function getDataBackend() return $this->backend; } + /** + * Updates bav with a new bundesbank file. + * + * You might consider enabling automatic update with setting + * AutomaticUpdatePlan as configuration. + * + * @see AutomaticUpdatePlan + * @see Configuration::setUpdatePlan() + * @throws DataBackendException + */ + public function update() + { + $this->getDataBackend()->update(); + } + /** * Returns true if both the bank exists and the account is valid. * From 1bc38dc86e7a676114573aa9f9bebb41978bfac8 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Mon, 2 Jun 2014 13:39:57 +0200 Subject: [PATCH 167/303] added todo list --- docs/changelog.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/changelog.txt b/docs/changelog.txt index 100a5004..bd939af5 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -20,6 +20,16 @@ Version 1.0.0 - not yet released - Moved FileDatabackend::getTempDir() into new FileUtil + -[TODO] move the curl operations out of FileDataBackend. Use HTTP pipelining (curl_multi). + + -[TODO] check API verbs (bankExists() might be better as isValidBank()). + + -[TODO] document public API in README.md + + -[TODO] add IBAN rule support + + -[TODO] evaluate IBAN validation support + Version 0.28 - May 26, 2014 --------------------------- From f0c53972d9d4582a6505f72aeea5efc0bddc453d Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Mon, 2 Jun 2014 13:57:29 +0200 Subject: [PATCH 168/303] renamed bankExists() into isValidBank() --- README-1.0.0.md | 2 +- classes/BAV.php | 10 +++++----- classes/dataBackend/DataBackend.php | 17 ++++++++++++++++- docs/changelog.txt | 2 +- docs/example.php | 2 +- tests/BAVFacadeTest.php | 14 +++++++------- 6 files changed, 31 insertions(+), 16 deletions(-) diff --git a/README-1.0.0.md b/README-1.0.0.md index 8cc682f2..2f4afc05 100644 --- a/README-1.0.0.md +++ b/README-1.0.0.md @@ -98,7 +98,7 @@ $account = "1234567890" // check for a bank var_dump( - $bav->bankExists($bankID) + $bav->isValidBank($bankID) ); // check for a bank account diff --git a/classes/BAV.php b/classes/BAV.php index 469cae0d..f8a43f0c 100644 --- a/classes/BAV.php +++ b/classes/BAV.php @@ -71,7 +71,7 @@ public function update() * @throws DataBackendException for some reason the validator might not be implemented * @param string $bankID * @param string $account - * @see bankExists() + * @see isValidBank() * @see getBank() * @see Bank::isValid() * @return bool @@ -94,11 +94,11 @@ public function isValidBankAccount($bankID, $account) * @throws DataBackendException * @param string $bankID * @return bool - * @see DataBackend::bankExists() + * @see DataBackend::isValidBank() */ - public function bankExists($bankID) + public function isValidBank($bankID) { - return $this->backend->bankExists($bankID); + return $this->backend->isValidBank($bankID); } /** @@ -138,7 +138,7 @@ public function getAgencies($bankID) * @throws DataBackendException * @param string $bankID * @return Bank - * @see DataBackend::bankExists() + * @see DataBackend::isValidBank() */ public function getBank($bankID) { diff --git a/classes/dataBackend/DataBackend.php b/classes/dataBackend/DataBackend.php index 83cc628c..78fa677d 100644 --- a/classes/dataBackend/DataBackend.php +++ b/classes/dataBackend/DataBackend.php @@ -86,13 +86,28 @@ public function getBank($bankID) } /** - * Perhaps you just want to know if a bank exists. + * Return true if a bank exists. * * @throws DataBackendException * @param String $bankID + * @deprecated 1.0.0 + * @see isValidBank() * @return bool */ public function bankExists($bankID) + { + trigger_error("bankExists() is deprecated, use isValidBank().", E_USER_DEPRECATED); + return $this->isValidBank($bankID); + } + + /** + * Return true if a bank exists. + * + * @throws DataBackendException + * @param String $bankID + * @return bool + */ + public function isValidBank($bankID) { try { $this->getBank($bankID); diff --git a/docs/changelog.txt b/docs/changelog.txt index bd939af5..15243757 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -22,7 +22,7 @@ Version 1.0.0 - not yet released -[TODO] move the curl operations out of FileDataBackend. Use HTTP pipelining (curl_multi). - -[TODO] check API verbs (bankExists() might be better as isValidBank()). + - Renamed bankExists() into isValidBank() -[TODO] document public API in README.md diff --git a/docs/example.php b/docs/example.php index 60d11b17..b6ccc2bf 100755 --- a/docs/example.php +++ b/docs/example.php @@ -27,7 +27,7 @@ // Does the bank exist? echo "Bank 10000000 ", - $bav->bankExists("10000000") ? "exists" : "doesn't exist", "\n"; + $bav->isValidBank("10000000") ? "exists" : "doesn't exist", "\n"; // Does the account exist? echo "Account 12345 is ", diff --git a/tests/BAVFacadeTest.php b/tests/BAVFacadeTest.php index f48951be..3bef5e9c 100644 --- a/tests/BAVFacadeTest.php +++ b/tests/BAVFacadeTest.php @@ -103,12 +103,12 @@ public function testFailGetMainAgency() } /** - * Test cases for testBankExists() + * Test cases for testIsValidBank() * * @see testBankExists() * @return array */ - public function provideTestbankExists() + public function provideTestIsValidBank() { return array( array("73362500", true), @@ -117,15 +117,15 @@ public function provideTestbankExists() } /** - * Tests BAV::bankExists(); + * Tests BAV::isValidBank(); * - * @dataProvider provideTestbankExists - * @see BAV::bankExists(); + * @dataProvider provideTestIsValidBank + * @see BAV::isValidBank(); */ - public function testBankExists($bankID, $expected) + public function testIsValidBank($bankID, $expected) { $bav = new BAV(); - $this->assertEquals($expected, $bav->bankExists($bankID)); + $this->assertEquals($expected, $bav->isValidBank($bankID)); } /** From 829111861dcbb04ef4c4996362485066f9263d00 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Mon, 2 Jun 2014 16:25:16 +0200 Subject: [PATCH 169/303] moved curl download into Downloader --- autoloader/index/0.php | 2 + classes/dataBackend/file/FileDataBackend.php | 47 +------- .../dataBackend/file/download/Downloader.php | 103 +++++++++++++++++ .../exception/DownloaderException.php | 15 +++ docs/changelog.txt | 2 - tests/DownloaderTest.php | 106 ++++++++++++++++++ 6 files changed, 231 insertions(+), 44 deletions(-) create mode 100644 classes/dataBackend/file/download/Downloader.php create mode 100644 classes/dataBackend/file/download/exception/DownloaderException.php create mode 100644 tests/DownloaderTest.php diff --git a/autoloader/index/0.php b/autoloader/index/0.php index 049c5c1a..ef09eef1 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -23,6 +23,7 @@ 'malkusch\bav\fileutil' => '../classes/util/FileUtil.php', 'malkusch\bav\uripicker' => '../classes/dataBackend/file/download/uripicker/URIPicker.php', 'malkusch\bav\validator' => '../classes/validator/Validator.php', + 'malkusch\bav\downloader' => '../classes/dataBackend/file/download/Downloader.php', 'malkusch\bav\fileparser' => '../classes/dataBackend/file/fileParser/FileParser.php', 'malkusch\bav\updateplan' => '../classes/dataBackend/update/UpdatePlan.php', 'malkusch\bav\mbencoding' => '../classes/encoding/MBEncoding.php', @@ -204,6 +205,7 @@ 'malkusch\bav\uripickerexception' => '../classes/dataBackend/file/download/uripicker/exception/URIPickerException.php', 'malkusch\bav\validatoriteration' => '../classes/validator/ValidatorIteration.php', 'malkusch\bav\validatorexception' => '../classes/validator/exception/ValidatorException.php', + 'malkusch\bav\downloaderexception' => '../classes/dataBackend/file/download/exception/DownloaderException.php', 'malkusch\bav\fileparserexception' => '../classes/dataBackend/file/fileParser/exception/FileParserException.php', 'malkusch\bav\automaticupdateplan' => '../classes/dataBackend/update/AutomaticUpdatePlan.php', 'malkusch\bav\defaultconfiguration' => '../classes/configuration/DefaultConfiguration.php', diff --git a/classes/dataBackend/file/FileDataBackend.php b/classes/dataBackend/file/FileDataBackend.php index 9282cf9d..e4a602ac 100644 --- a/classes/dataBackend/file/FileDataBackend.php +++ b/classes/dataBackend/file/FileDataBackend.php @@ -125,47 +125,20 @@ public function install() /** * This method works only if your PHP is compiled with cURL. - * TODO: test this with a proxy * * @see DataBackend::update() * @throws DataBackendIOException * @throws FileException + * @throws DownloaderException */ public function update() { - $ch = curl_init(self::DOWNLOAD_URI); - if (! is_resource($ch)) { - throw new DataBackendIOException(); - - } - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - $content = curl_exec($ch); - $curl_info = curl_getinfo($ch); - if ($curl_info['http_code'] >= 400) { - throw new DataBackendIOException( - sprintf( - "Failed to download '%s'. HTTP Code: %d", - self::DOWNLOAD_URI, - $curl_info['http_code'] - ) - ); - } - if (! $content) { - throw new DataBackendIOException( - "Failed to download '" . self::DOWNLOAD_URI . "'." - ); - - } + $downloader = new Downloader(); + $content = $downloader->downloadContent(self::DOWNLOAD_URI); $uriPicker = new FallbackURIPicker(); $path = $uriPicker->pickURI($content); - $temp = tempnam($this->fileUtil->getTempDirectory(), ""); - $tempH = fopen($temp, 'w'); - if (! ($temp && $tempH)) { - throw new DataBackendIOException(); - - } if (strlen($path) > 0 && $path{0} != "/") { $path = sprintf("/%s/%s", dirname(self::DOWNLOAD_URI), $path); @@ -187,18 +160,8 @@ public function update() $urlParts = parse_url(self::DOWNLOAD_URI); $url = sprintf("%s://%s%s", $urlParts["scheme"], $urlParts["host"], $path); - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_FILE, $tempH); - if (! curl_exec($ch)) { - fclose($tempH); - unlink($temp); - throw new DataBackendIOException(curl_error($ch), curl_errno($ch)); - - } - fclose($tempH); - curl_close($ch); - - $file = $temp; + // download file + $file = $downloader->downloadFile($url); // Validate file format. $validator = new FileValidator(); diff --git a/classes/dataBackend/file/download/Downloader.php b/classes/dataBackend/file/download/Downloader.php new file mode 100644 index 00000000..a72e3210 --- /dev/null +++ b/classes/dataBackend/file/download/Downloader.php @@ -0,0 +1,103 @@ + + * @license GPL + */ +class Downloader +{ + + /** + * @var resource + */ + private $handle; + + /** + * Initializes the downloader. + * + * @throws DownloaderException + */ + public function __construct() + { + $this->handle = curl_init(); + if (! is_resource($this->handle)) { + throw new DownloaderException("Failed initializing curl"); + + } + curl_setopt($this->handle, CURLOPT_RETURNTRANSFER, true); + } + + /** + * Execute the curl call. + * + * @throws DownloaderException + * @return mixed + */ + private function download($uri) + { + curl_setopt($this->handle, CURLOPT_URL, $uri); + $result = curl_exec($this->handle); + + $curl_info = curl_getinfo($this->handle); + if ($curl_info['http_code'] >= 400) { + throw new DownloaderException( + sprintf( + "Failed to download '%s'. HTTP Code: %d", + $uri, + $curl_info['http_code'] + ) + ); + } + return $result; + } + + /** + * Downloads the content of an URI + * + * @param string $uri URI + * @return string Content of the page + * @throws DownloaderException + */ + public function downloadContent($uri) + { + curl_setopt($this->handle, CURLOPT_RETURNTRANSFER, true); + + $content = $this->download($uri); + if (! $content) { + throw new DataBackendIOException("Failed to download '$uri'."); + + } + return $content; + } + + /** + * Downloads a file. + * + * @param string $uri URI + * @return string local path to downloaded file. + * @throws DownloaderException + */ + public function downloadFile($uri) + { + $fileUtil = new FileUtil(); + $file = tempnam($fileUtil->getTempDirectory(), "bavdownload"); + $fp = fopen($file, 'w'); + if (! ($file && $fp)) { + throw new DownloaderException("Failed opening a temporary file"); + + } + curl_setopt($this->handle, CURLOPT_FILE, $fp); + + if (! $this->download($uri)) { + fclose($fp); + unlink($file); + throw new DownloaderException(curl_error($this->handle), curl_errno($this->handle)); + + } + return $file; + } +} diff --git a/classes/dataBackend/file/download/exception/DownloaderException.php b/classes/dataBackend/file/download/exception/DownloaderException.php new file mode 100644 index 00000000..c2f2b76f --- /dev/null +++ b/classes/dataBackend/file/download/exception/DownloaderException.php @@ -0,0 +1,15 @@ + + * @see Downloader + * @license GPL + */ +class DownloaderException extends DataBackendException +{ + +} diff --git a/docs/changelog.txt b/docs/changelog.txt index 15243757..d48830a7 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -20,8 +20,6 @@ Version 1.0.0 - not yet released - Moved FileDatabackend::getTempDir() into new FileUtil - -[TODO] move the curl operations out of FileDataBackend. Use HTTP pipelining (curl_multi). - - Renamed bankExists() into isValidBank() -[TODO] document public API in README.md diff --git a/tests/DownloaderTest.php b/tests/DownloaderTest.php new file mode 100644 index 00000000..30d880b7 --- /dev/null +++ b/tests/DownloaderTest.php @@ -0,0 +1,106 @@ + + */ +class DownloaderTest extends \PHPUnit_Framework_TestCase +{ + + /** + * Returns URIs and the expected md5 sum of their contents. + * + * @return String[][] + */ + public function provideTestURIs() + { + return array( + array("http://www.gnu.org/licenses/gpl-2.0.txt", "b234ee4d69f5fce4486a80fdaf4a4263") + ); + } + + /** + * Tests downloadContent(); + * + * @param string $uri URI + * @param string $md5 expected MD5 sum + * @dataProvider provideTestURIs + * @see Downloader::downloadContent() + */ + public function testDownloadContent($uri, $md5) + { + $downloader = new Downloader(); + $content = $downloader->downloadContent($uri); + $this->assertEquals($md5, md5($content)); + } + + /** + * Tests downloadFile(); + * + * @param string $uri URI + * @param string $md5 expected MD5 sum + * @dataProvider provideTestURIs + * @see Downloader::downloadFile() + */ + public function testDownloadFile($uri, $md5) + { + $downloader = new Downloader(); + $file = $downloader->downloadFile($uri); + $this->assertEquals($md5, md5_file($file)); + unlink($file); + } + + /** + * Tests a sequence of downloadContent() and downloadFile(). + * + * @param string $uri URI + * @param string $md5 expected MD5 sum + * @dataProvider provideTestURIs + * @see Downloader::downloadFile() + * @see Downloader::downloadContent() + */ + public function testDownloadSequence($uri, $md5) + { + $downloader = new Downloader(); + + $content = $downloader->downloadContent($uri); + $this->assertEquals($md5, md5($content)); + + $file = $downloader->downloadFile($uri); + $this->assertEquals($md5, md5_file($file)); + unlink($file); + + $content = $downloader->downloadContent($uri); + $this->assertEquals($md5, md5($content)); + } + + /** + * Tests failing downloadContent(); + * + * @expectedException malkusch\bav\DownloaderException + * @see Downloader::downloadContent() + */ + public function testFailDownloadContent() + { + $downloader = new Downloader(); + $downloader->downloadContent("http://example.org/XXX"); + } + + /** + * Tests failing downloadFile(); + * + * @expectedException malkusch\bav\DownloaderException + * @see Downloader::downloadFile() + */ + public function testFailDownloadFile() + { + $downloader = new Downloader(); + $file = $downloader->downloadFile("http://example.org/XXX"); + } +} From 8dc8f1df0aa08c009b99133b78fe317ae74028c0 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Mon, 2 Jun 2014 21:49:27 +0200 Subject: [PATCH 170/303] documented api methods --- README-1.0.0.md | 31 +++++++++++++++++++++++++++++-- classes/BAV.php | 2 ++ docs/changelog.txt | 2 -- 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/README-1.0.0.md b/README-1.0.0.md index 2f4afc05..3fceb328 100644 --- a/README-1.0.0.md +++ b/README-1.0.0.md @@ -88,7 +88,34 @@ return $configuration; # Usage -You can use BAV with the api facade `BAV`: +You can use BAV with the api facade `BAV`. + +* `BAV::isValidBank($bankID)`: Returns true for existing bank ids. + +* `BAV::isValidBankAccount($bankID, $account)`: Returns true for existing accounts of an existing +bank. + +* `BAV::getMainAgency()`: Returns the main agency of a bank. + +* `BAV::getAgencies()`: Returns further agencies. The main agency is not included in this list. +This list can be empty. + +An Agency object has the fields: + +* `Agency::getBIC()` + +* `Agency::getPostcode()` + +* `Agency::getCity()` + +* `Agency::getName()` + +* `Agency::getShortTerm()` + +* `Agency::getPAN()` + +## Example + ```php namespace malkusch\bav; @@ -106,7 +133,7 @@ var_dump( $bav->isValidBankAccount($bankID, $account) ); -// print the name of the bank +// Get informations about a bank $agency = $bav->getMainAgency($bankID); echo "{$agency->getName()} {$agency->getCity()}\n"; ``` diff --git a/classes/BAV.php b/classes/BAV.php index f8a43f0c..9b5f8bd8 100644 --- a/classes/BAV.php +++ b/classes/BAV.php @@ -119,6 +119,8 @@ public function getMainAgency($bankID) /** * A bank may have more agencies. + * + * The main agency is not included in this list. * * @throws DataBackendException * @throws BankNotFoundException diff --git a/docs/changelog.txt b/docs/changelog.txt index d48830a7..08c38b80 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -22,8 +22,6 @@ Version 1.0.0 - not yet released - Renamed bankExists() into isValidBank() - -[TODO] document public API in README.md - -[TODO] add IBAN rule support -[TODO] evaluate IBAN validation support From 0fc8b9045d38cca6b8893d0d746eaa30f258a28b Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 3 Jun 2014 14:16:00 +0200 Subject: [PATCH 171/303] added BIC --- autoloader/index/0.php | 1 + classes/BAV.php | 22 +++++ classes/dataBackend/DataBackend.php | 20 +++++ classes/dataBackend/file/FileDataBackend.php | 23 ++++++ classes/dataBackend/pdo/PDODataBackend.php | 85 +++++++++++++++++++- classes/util/BICUtil.php | 24 ++++++ docs/changelog.txt | 2 + tests/BAVFacadeTest.php | 62 ++++++++++++++ tests/BICUtilTest.php | 40 +++++++++ tests/BackendTest.php | 70 ++++++++++++++++ 10 files changed, 345 insertions(+), 4 deletions(-) create mode 100644 classes/util/BICUtil.php create mode 100644 tests/BICUtilTest.php diff --git a/autoloader/index/0.php b/autoloader/index/0.php index ef09eef1..c171d82d 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -19,6 +19,7 @@ 'malkusch\bav\bank' => '../classes/bank/Bank.php', 'malkusch\bav\lock' => '../classes/util/Lock.php', 'malkusch\bav\agency' => '../classes/bank/Agency.php', + 'malkusch\bav\bicutil' => '../classes/util/BICUtil.php', 'malkusch\bav\encoding' => '../classes/encoding/Encoding.php', 'malkusch\bav\fileutil' => '../classes/util/FileUtil.php', 'malkusch\bav\uripicker' => '../classes/dataBackend/file/download/uripicker/URIPicker.php', diff --git a/classes/BAV.php b/classes/BAV.php index 9b5f8bd8..5687b83f 100644 --- a/classes/BAV.php +++ b/classes/BAV.php @@ -146,4 +146,26 @@ public function getBank($bankID) { return $this->backend->getBank($bankID); } + + /** + * Returns bank agencies for a given BIC. + * + * @param string $bic BIC + * @return Agency[] + */ + public function getBICAgencies($bic) + { + return $this->backend->getBICAgencies(BICUtil::normalize($bic)); + } + + /** + * Returns if a bic is valid. + * + * @param string $bic BIC + * @return bool + */ + public function isValidBIC($bic) + { + return $this->backend->isValidBIC(BICUtil::normalize($bic)); + } } diff --git a/classes/dataBackend/DataBackend.php b/classes/dataBackend/DataBackend.php index 78fa677d..784bfc1d 100644 --- a/classes/dataBackend/DataBackend.php +++ b/classes/dataBackend/DataBackend.php @@ -165,4 +165,24 @@ abstract public function getMainAgency(Bank $bank); * @internal YOU SHOULD NOT CALL THIS METHOD! Use Bank->getMainAgency() */ abstract public function getAgenciesForBank(Bank $bank); + + /** + * Returns bank agencies for a given BIC. + * + * @param string $bic BIC + * @return Agency[] + */ + abstract public function getBICAgencies($bic); + + /** + * Returns if a bic is valid. + * + * @param string $bic BIC + * @return bool + */ + public function isValidBIC($bic) + { + $agencies = $this->getBICAgencies($bic); + return ! empty($agencies); + } } diff --git a/classes/dataBackend/file/FileDataBackend.php b/classes/dataBackend/file/FileDataBackend.php index e4a602ac..1994e552 100644 --- a/classes/dataBackend/file/FileDataBackend.php +++ b/classes/dataBackend/file/FileDataBackend.php @@ -420,4 +420,27 @@ public function isInstalled() return file_exists($this->parser->getFile()) && filesize($this->parser->getFile()) > 0; } + + /** + * Returns bank agencies for a given BIC. + * + * @todo This method is inefficient. Add index based implementation. + * @param string $bic BIC + * @return Agency[] + */ + public function getBICAgencies($bic) + { + $agencies = array(); + foreach ($this->getAllBanks() as $bank) { + $bankAgencies = $bank->getAgencies(); + $bankAgencies[] = $bank->getMainAgency(); + foreach ($bankAgencies as $agency) { + if ($agency->hasBIC() && $agency->getBIC() == $bic) { + $agencies[] = $agency; + + } + } + } + return $agencies; + } } diff --git a/classes/dataBackend/pdo/PDODataBackend.php b/classes/dataBackend/pdo/PDODataBackend.php index 3441bbe2..cfcc160d 100644 --- a/classes/dataBackend/pdo/PDODataBackend.php +++ b/classes/dataBackend/pdo/PDODataBackend.php @@ -52,6 +52,16 @@ class PDODataBackend extends DataBackend */ private $selectInstalled; + /** + * @var \PDOStatement + */ + private $selectBICAgencies; + + /** + * @var \PDOStatement + */ + private $selectValidBIC; + /** * @var \PDO */ @@ -184,6 +194,13 @@ private function prepareStatements() (SELECT * FROM information_schema.tables WHERE table_name='{$this->prefix}meta') ) THEN 1 ELSE 0 END" ); + $this->selectBICAgencies = $this->pdo->prepare( + "SELECT bank, $agencyAttributes FROM {$this->prefix}agency a + WHERE bic = :bic" + ); + $this->selectValidBIC = $this->pdo->prepare( + "SELECT bic FROM {$this->prefix}agency WHERE bic = :bic GROUP BY (bic)" + ); } /** @@ -322,6 +339,15 @@ public function install() FOREIGN KEY (bank) REFERENCES {$this->prefix}bank(id) )$createOptions" ); + + try { + $this->pdo->exec("CREATE INDEX bic ON {$this->prefix}agency (bic)"); + + } catch (\PDOException $e) { + trigger_error("Failed to create index for bic: {$e->getMessage()}", E_USER_WARNING); + + } + $this->pdo->exec( "CREATE TABLE {$this->prefix}meta( name char(32) NOT NULL primary key, @@ -329,9 +355,7 @@ public function install() )$createOptions" ); $insertMetaStmt = $this->pdo->prepare( - "INSERT INTO {$this->prefix}meta - SET name = :name, - value = :value" + "INSERT INTO {$this->prefix}meta (name, value) VALUES (:name, :value)" ); $insertMetaStmt->execute(array( ":name" => self::META_MODIFICATION, @@ -340,7 +364,7 @@ public function install() $this->update(); } catch (\PDOException $e) { - throw new DataBackendIOException($e->getMessage()); + throw new DataBackendIOException($e->getMessage(), 0, $e); } } @@ -598,4 +622,57 @@ public function isInstalled() } } + + /** + * Returns if a bic is valid. + * + * @param string $bic BIC + * @return bool + */ + public function isValidBIC($bic) + { + try { + $this->prepareStatements(); + $this->selectValidBIC->execute(array(":bic" => $bic)); + + $rows = $this->selectValidBIC->fetchAll(); + $this->selectValidBIC->closeCursor(); + return ! empty($rows); + + } catch (\PDOException $e) { + $this->selectValidBIC->closeCursor(); + throw new DataBackendIOException($e->getMessage(), 0, $e); + + } + } + + /** + * Returns bank agencies for a given BIC. + * + * @param string $bic BIC + * @return Agency[] + */ + public function getBICAgencies($bic) + { + try { + $this->prepareStatements(); + $agencies = array(); + $this->selectBICAgencies->execute(array(":bic" => $bic)); + foreach ($this->selectBICAgencies->fetchAll() as $result) { + $agencies[] = $this->getAgencyObject($this->getBank($result['bank']), $result); + + } + $this->selectBICAgencies->closeCursor(); + return $agencies; + + } catch (\PDOException $e) { + $this->selectBICAgencies->closeCursor(); + throw new DataBackendIOException($e->getMessage(), 0, $e); + + } catch (MissingAttributesDataBackendIOException $e) { + $this->selectBICAgencies->closeCursor(); + throw new LogicException($e); + + } + } } diff --git a/classes/util/BICUtil.php b/classes/util/BICUtil.php new file mode 100644 index 00000000..05a3582c --- /dev/null +++ b/classes/util/BICUtil.php @@ -0,0 +1,24 @@ + + * @license GPL + */ +class BICUtil +{ + + /** + * Extends an 8 character BIC to an 11 character BIC. + * + * @param string $bic BIC + * @return string + */ + public static function normalize($bic) + { + return (strlen($bic) == 8) ? "{$bic}XXX" : $bic; + } +} diff --git a/docs/changelog.txt b/docs/changelog.txt index 08c38b80..81b71740 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -21,6 +21,8 @@ Version 1.0.0 - not yet released - Moved FileDatabackend::getTempDir() into new FileUtil - Renamed bankExists() into isValidBank() + + - added BIC support: BAV::isValidBIC($bic), BAV::getBICAgencies($bic) -[TODO] add IBAN rule support diff --git a/tests/BAVFacadeTest.php b/tests/BAVFacadeTest.php index 3bef5e9c..320f0d78 100644 --- a/tests/BAVFacadeTest.php +++ b/tests/BAVFacadeTest.php @@ -153,4 +153,66 @@ public function testIsValidBankAccount($bankID, $account, $expected) $bav = new BAV(); $this->assertEquals($expected, $bav->isValidBankAccount($bankID, $account)); } + + /** + * Test cases for testIsValidBIC() + * + * @see testIsValidBIC() + * @return array + */ + public function provideTestIsValidBIC() + { + return array( + array("VZVDDED1XXX", true), + array("VZVDDED1", true), + array("VZVDDED1~~~", false), + ); + } + + /** + * Tests BAV::isValidBankAccount(); + * + * @dataProvider provideTestIsValidBIC + * @see BAV::isValidBIC(); + */ + public function testIsValidBIC($bic, $expected) + { + $bav = new BAV(); + $this->assertEquals($expected, $bav->isValidBIC($bic)); + } + + /** + * Test cases for testGetBICAgencies() + * + * @see testGetBICAgencies() + * @return array + */ + public function provideTestGetBICAgencies() + { + return array( + array("VZVDDED1XXX", array("52944")), + array("VZVDDED1", array("52944")), + array("VZVDDED1~~~", array()), + ); + } + + /** + * Tests BAV::getBICAgencies(); + * + * @dataProvider provideTestGetBICAgencies + * @see BAV::getBICAgencies(); + */ + public function testGetBICAgencies($bic, $expected) + { + $bav = new BAV(); + $agencies = $bav->getBICAgencies($bic); + $getID = function (Agency $agency) { + return $agency->getID(); + }; + $agenciesIds = array_map($getID, $agencies); + + sort($expected); + sort($agenciesIds); + $this->assertEquals($expected, $agenciesIds); + } } diff --git a/tests/BICUtilTest.php b/tests/BICUtilTest.php new file mode 100644 index 00000000..1fdbead3 --- /dev/null +++ b/tests/BICUtilTest.php @@ -0,0 +1,40 @@ + + */ +class BICUtilTest extends \PHPUnit_Framework_TestCase +{ + + /** + * Test cases for testNormalize + * + * @see testNormalize() + */ + public function provideTestNormalize() + { + return array( + array("VZVDDED1", "VZVDDED1XXX"), + array("VZVDDED1ABC", "VZVDDED1ABC"), + ); + } + + /** + * Tests BICUtil:normalize() + * + * @see BICUtil::normalize() + * @dataProvider provideTestNormalize() + */ + public function testNormalize($bic, $expected) + { + $this->assertEquals($expected, BICUtil::normalize($bic)); + } +} diff --git a/tests/BackendTest.php b/tests/BackendTest.php index 3a3ee35a..968fd815 100644 --- a/tests/BackendTest.php +++ b/tests/BackendTest.php @@ -249,6 +249,76 @@ private function assertEqualAgency(Agency $a, Agency $b) } } + + /** + * Test cases for testIsValidBIC() + * + * @see testIsValidBIC() + * @return array + */ + public function provideTestIsValidBIC() + { + $cases = array(); + foreach ($this->provideBackends() as $backendArray) { + $backend = $backendArray[0]; + $cases[] = array($backend, true, "VZVDDED1XXX"); + $cases[] = array($backend, true, "VZVDDED1001"); + $cases[] = array($backend, false, "VZVDDED1001X"); + $cases[] = array($backend, false, ""); + $cases[] = array($backend, false, "VZVDDED1~~~"); + + } + return $cases; + } + + /** + * Tests DataBackend::isValidBIC(); + * + * @dataProvider provideTestIsValidBIC + * @see DataBackend::isValidBIC(); + */ + public function testIsValidBIC(DataBackend $backend, $expected, $bic) + { + $this->assertEquals($expected, $backend->isValidBIC($bic)); + } + + /** + * Test cases for testGetBICAgencies() + * + * @see testGetBICAgencies() + */ + public function provideTestGetBICAgencies() + { + $cases = array(); + foreach ($this->provideBackends() as $backendArray) { + $backend = $backendArray[0]; + $cases[] = array($backend, "XXX", array()); + $cases[] = array($backend, "VZVDDED1XXX", array("52944")); + $cases[] = array($backend, "VZVDDED1XXX", array("52944")); + $cases[] = array($backend, "DELBDE33XXX", array("8536", "13567", "33248", "51683")); + + } + return $cases; + } + + /** + * Tests DataBackend::getBICAgencies() + * + * @dataProvider provideTestGetBICAgencies + * @see DataBackend::getBICAgencies(); + */ + public function testGetBICAgencies(DataBackend $backend, $bic, $expectedAgencyIds) + { + $agencies = $backend->getBICAgencies($bic); + $getID = function (Agency $agency) { + return $agency->getID(); + }; + $agenciesIds = array_map($getID, $agencies); + + sort($expectedAgencyIds); + sort($agenciesIds); + $this->assertEquals($expectedAgencyIds, $agenciesIds); + } } BackendTest::classConstructor(); From aa1368c56fc70dbf6804bf686a6ff17e44330558 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 3 Jun 2014 17:24:49 +0200 Subject: [PATCH 172/303] typo --- classes/dataBackend/pdo/PDODataBackend.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/dataBackend/pdo/PDODataBackend.php b/classes/dataBackend/pdo/PDODataBackend.php index cfcc160d..725cfe37 100644 --- a/classes/dataBackend/pdo/PDODataBackend.php +++ b/classes/dataBackend/pdo/PDODataBackend.php @@ -211,7 +211,7 @@ public function update() { $useTA = false; try { - $fileUtil = new fileUtil(); + $fileUtil = new FileUtil(); $fileBackend = new FileDataBackend(tempnam($fileUtil->getTempDirectory(), 'bav')); $fileBackend->install(); From 6e264df68bb4419df709b048c12cbf78b5e0d3f2 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 6 Jun 2014 19:54:49 +0200 Subject: [PATCH 173/303] changed data/verify.ini to tests/data/accounts.json --- data/verify.ini | 230 -- docs/changelog.txt | 4 + tests/ValidatorTest.php | 115 +- tests/data/accounts.json | 4703 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 4737 insertions(+), 315 deletions(-) delete mode 100644 data/verify.ini create mode 100644 tests/data/accounts.json diff --git a/data/verify.ini b/data/verify.ini deleted file mode 100644 index 1436a130..00000000 --- a/data/verify.ini +++ /dev/null @@ -1,230 +0,0 @@ -; This file is used by checkValidators.php. -; -; Here are explicitly valid or invalid accounts for validation types -; listet. ValidatorTest.php will recognize if a validator behaves not -; as this file expect him to. -; -; Copyright (C) 2010 Markus Malkusch -; -; 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 2 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, write to the Free Software -; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -[invalid] - 0 = 51181008, 71214205, 6414241, 179751314, 1600166307, 1600176485, 1600201934 - 5 = 1151043211 - 57 = 5302707782, 6412121212, 1813499124, 2206735010 - A1 = 0110030005, 0010030998, 0000030005 - A2 = 1234567890, 0123456789 - A3 = 6543217890, 0543216789 - A4 = 0000399443, 0000553313, 6099702031 - A5 = 9941510002, 9961230020, 0000251438, 000798345 - A6 = 860000817, 810033652, 305888, 200071280 - A7 = 209010893 - A8 = 7436666, 7436677, 3199500502, 3503391, 1340966, 99345678, 9934567, 99100110, 199100040 - A9 = 86724, 292497, 30767208 - B0 = 8137423260, 600000606, 51234309, 1000000405, 1035791539, 8035791532, 535791830, 51234901 - B1 = 0123456789, 2345678901, 5678901234 - B2 = 0020012399, 0080012347, 0080012370, 0932100027, 3310123454, 8000990057, 8011000126, 9000481800, 9980480111 - B3 = 2799899, 1000000111, 9635100101, 9730300100 - B4 = 9941510002, 9961230020, 251438, 7948345, 159590 - B5 = 0159004165, 0023456787, 0056789018, 3045000333, 7414398260, 8347251693, 2345678901, 5678901234, 9000293707 - B6 = 9111000000, 0269456780 - B7 = 0001057886, 0003815570, 0005620516, 0740912243, 0893524479 - B8 = 0132572975, 9000412340, 9310305011 - B9 = 88034023, 43025432, 86521362, 61256523, 54352684, 2356412, 5435886, 9435414 - C1 = 5432112341, 5543223458, 5654334565, 5765445672, 5876556780, 0446786240, 0478046340, 0701625730, 0701625440, 0882095130 - C2 = 0328705282, 9024675131 - C3 = 17002, 123451, 122448, 9000734028, 9000733227, 9000731120 - C4 = 0000000017, 0000292933, 0000094459, 9000726558, 9001733457, 9000732000 - C5 = 0000302589, 0000507336, 0302555000, 0302589000, 1000061457, 1000061498, 4864446015, 4865038012, 5000001028, 5000001075, 6450008150, 6542812818, 9000110012, 9000300310, 3081000783, 3081308871 - C6 = 0525111212, 0091423614, 1082311275, 1000118821, 2004306518, 2016001206, 3462816371, 3622548632, 4232300158, 4000456126, 5002684526, 5564123850, 6295473774, 6640806317, 7000062022, 7006003027, 8348300002, 8654216984, 9000641509, 9000260986 - C7 = 1234517892, 987614325 - C8 = 1234567890, 9012345678 - C9 = 3456789012, 1234567890, 9012345678 - D0 = 6100272885, 6100273377, 6100274012 - D1 = 0000260986, 1062813622, 2256412314, 3012084101, 4006003027, 5814500990, 6128462594, 7000062035, 8003306026, 9000641509 - D2 = 6414241, 179751314 - D3 = 6025017009, 6028267003, 6019835001 - D4 = 0359432843, 1000062023, 2204271250, 3051681017, 4000123456, 5212744564, 6286420010, 7859103459, 8003306026, 9916524534 - D5 = 3299632008, 1999204293, 0399242139, 8623420004, 0001123458, 0000100084, 0000100085 - D6 = 33394, 595795, 16400501, 3615071237, 6039267013, 6039316014, 7004017653, 9002720007, 9017483524 - D7 = 0501006102, 0231307867, 0301005331, 0330034104, 0420001302, 0135638809, 0202005939, 0601006977 - D8 = 0009999999, 0100000000, 3012084101, 1062813622, 0000260986 - D9 = 6543217890, 0543216789, 1100789043, 1100914032 - E0 = 1234769013, 2710014, 9741015011 - E1 = 0150013107, 0200035101, 0081313890, 4268550840, 0987402008 - 51 = 0099345678, 0099100110, 0199100040 - 57 = 5302707782, 6412121212, 1813499124, 2206735010 - 68 = 6414241, 179751314 - 73 = 0099345678, 0099100110, 0199100040, 121212, 987654321 - 74 = 1011, 26265, 18002118, 6160000024 - 80 = 0099345678, 0099100110, 0199100040 - 81 = 0099345678, 0099100110, 0199100040 - 84 = 0099345678, 0099100110, 0199100040, 240965, 350980, 461053 - 86 = 0099345678, 0099100110, 0199100040 - 87 = 0099345678, 0099100110, 0199100040 - 90 = 0001924592, 0000901568, 0000820487, 0000726393, 0000924591, 0003865964, 0099100007 - 91 = 8840011000, 8840010000, 8840014000, 8840025000, 8840026000, 8840057000, 8840062000 - 95 = 4455667784, 1234567897, 51181008, 71214205 6414241, 179751314 - - ; B6 - 80053762 = 467310018, 9111000000 - ; B6 - 80053772 = 477310018 - ; ?? (C0) - 13051172 = 82335729, 29837521 - ; C0 - 86055462 = 0132572975, 3038752371 - -[valid] - 0 = 1600169591, 1600189151, 1800084079, 4455667784, 1234567897, 9290701, 539290858, 1501824, 1501832, 877415, 6945661, 1081034751, 1036751418, 100165075, 107147530, 111165775, 128293081, 130027014, 117069658, 1327489009, 3007405610, 188002877, 17202219, 1395490087, 6408454, 135430734, 741074, 673665, 161080007, 45572336, 7502982, 105097729, 27341080, 1382515706, 101909075, 157052416, 1205473901, 100631993, 1026313013, 20005492, 1029189261, 300036944, 166009415, 59104307, 424010, 578971, 165012022, 134447309, 1519701, 432245, 12509717, 805655, 150496917, 1022817678, 6443436, 117076737, 20131850, 43399641, 101058832, 154026751, 334664, 1011138870, 133378299, 364497, 9830951, 106726680, 72893175, 4077210, 240768507, 134013366, 155743149, 8173544, 190967, 11153392, 136253648, 551226, 2005074204, 238881, 93034403, 421321, 65615502, 7574700, 71353098, 71863419, 103042503, 109125005, 7416662, 150582500, 100624733, 1235500830, 32102774, 50084193, 106021744, 174076349, 3504255, 100049832, 100907245, 60518321, 10678670, 101902070, 135032365, 79233755, 210524385, 1032100693, 2002829808, 681403, 2737674, 139071120, 1059762755, 90332, 109153049, 5143987, 140651928, 8026098, 44161677, 190020172, 10699650, 9324997, 0032112906, 301032348, 6651137, 3307576, 124398561, 101956167, 50105865, 0114106727, 1152775092, 165013020, 118128354, 651190, 1305494021, 33104456, 109064444, 805424, 5526439, 3900404, 17346701, 1009853704, 332965, 5288683, 1278501653, 2002621601, 966895, 301039749, 59681296, 14283394, 679910, 1200292595, 240086439, 71111801, 10756690, 133349472, 8846230, 100630052, 138715594, 47233432, 620690, 7068125, 1048750440, 2003202302, 301015319, 602995, 1397462332, 0043774819, 148009764, 60406329, 101133478, 251348, 100083641, 3627064, 1166413243, 31112121, 1100018124, 107805491, 110319969, 769521, 3287141, 966689, 3007622420, 8105488, 1999515, 6100556, 138438767, 3148350, 100025709, 1281444693, 3001134703, 6100549, 425157, 43504760, 29323086, 46515441, 2001032610, 131035560, 1160878, 200223659, 145013876, 1512029735, 50045749, 1010794129, 835058, 7260284, 3187853, 121313316, 25006891, 688424, 1336459050, 107557555, 220143903, 7325137, 1050004, 89234884, 646901, 134111244, 100756055, 100043959, 1233573516, 315051540, 1238500886, 12722245, 69300945, 37585908, 613349, 60813839, 7845803, 1112213374, 4281374, 240091231, 91563197, 483404, 3119138, 8244014, 1058771302, 63144281, 145887048, 1046374, 23106420, 70078951, 411827, 22595649, 199695, 1795798, 7760861, 59110940, 117076794, 0590214789, 301000550, 719054, 1505002889, 100744382, 5680939, 542043, 38313607, 2211944, 50127091, 141332767, 10280170, 46535555, 6723563, 485755896, 135211613, 12405304, 903147817, 47235197, 711200, 683219, 783332, 620422014, 1484538846, 8099962, 161708011, 0128104320, 901219618, 21021167, 300012812, 1019763612, 591842, 33033820, 407437, 47254115, 140639220, 1034784551, 105535934, 124030131, 219018660, 5678198, 1282504925, 1100112646, 793885, 117070870, 6851984, 733113, 5057393, 0105100812, 14520118, 1000687127, 0134225697, 8724643, 127077311, 52753506, 120751268, 1352483315, 100654888, 151274362, 74233511, 5691225, 215885336, 50007723, 1043777, 2003895303, 302109954, 65495921, 2138030, 13136874, 464602, 134202654, 1397469733, 0134241199, 666677, 113414601, 1004989305, 8896847, 36228831, 209876606, 0029150471, 5030481, 2539021, 105302491, 47844964, 22053920, 5241948, 1238454696, 75952, 2193860, 2240505, 3823010, 9271842, 10661916, 637348, 1386494882, 603274, 1043762655, 30279251, 1813500, 59177535, 47457825, 2007961, 115348112, 10108124, 1011312814, 171709504, 1022790016, 4418851, 1127125, 43861434, 5779814, 7722036, 1670868, 5435623, 8749541, 1216016004, 100220854, 1052923693, 129627832, 30604664, 742338, 80143530, 1012137129, 103500534, 82733197, 760434043, 1049782558, 2167484, 51169357, 133309252, 637439, 82561721, 121234538, 1224456879, 11145596, 87134813, 80150436, 630541, 616029, 6752992, 10643161, 9435140, 22044010, 103104121, 0030658983, 333286, 13139811, 1005097983, 100197144, 2192193, 1623259734, 285643, 5959531, 102685120, 330205154, 86114667, 1247329, 5236021, 33003856, 8735987, 105507297, 19609361, 409839, 353813, 107532020, 67412486, 109435990, 7728819, 101249837, 5112065, 113476915, 117213348, 300220720, 100759158, 889733, 1636232, 904748, 15017775, 1042869956, 0160016010, 430494930, 624148, 226304616, 5526371, 1251466643, 7471469, 155072036, 2251460, 5123682, 1224506178, 360289, 1111773402, 2060127, 33299876, 334007754, 640409, 4243283, 0001173780, 170720114, 22231062, 106760457, 5018312, 3292190, 430563122, 1512033299, 1011223797, 488544, 641779, 5120605, 12570602, 0000324350, 30594576, 105014237, 228750634, 100078484, 4224473, 22731145, 174027284, 16013666, 20506986, 2277275, 120015474, 1385491970, 247841, 369231, 639005, 8620148, 104241401, 31500598, 102105145, 741769, 5116207, 130285679, 550218937, 130304306, 2542850, 269919254, 1263607, 20242418, 5333141, 36223766, 43528348, 140305061, 38564621, 135409001, 101586543, 150544906, 1100636867, 1100242328, 1006626079, 276002722, 0109101980, 919274, 614578, 431148, 0134574292, 240310698, 104140280, 149447773, 112046610, 0620217885, 1081807057, 1352498966, 50023936, 149007130, 100243765, 103235982, 642744, 4446779, 100143585, 10777712, 104981147, 103454252, 1827682, 124111667, 43225283, 249653411, 115057580, 1810662, 487306, 1046754220, 74593732, 40125494, 1234493284, 1000213676, 3485083, 107090649, 1000371292, 1398504371, 92013820, 107119992, 23650781, 8723546, 178183893, 5219662, 101060390, 1301514, 48479869, 134581826, 1512813, 57542169, 0017185273, 100696251, 161004635, 1059789840, 112180450, 380614420, 2933125, 134251644, 3743465, 11415270, 100720374, 104350111, 1000444446, 291148161, 44323871, 724302, 7261290, 22443337, 1044953659, 1139793036, 1502129, 102305265, 124643107, 1165315, 44389385, 111163325, 25634858, 16026320, 111048682, 7130065, 27643063, 1247461542, 170104616, 1550025017, 309000867, 137316246, 43753318, 8060873, 101543379, 78253176, 12265658, 52108610, 57273633, 20535969, 68568039, 760975, 9233081, 11283702, 5515812, 50139831, 854406, 100195544, 454413, 1268512900, 430780536, 667022, 100094382, 18507426, 630434, 201076676, 10337046, 105214316, 133923086, 22053730, 7541337, 129208716, 1206317, 5108402, 130009285, 100483031, 620997, 143147536, 14033138, 1060012414, 6145643, 647339, 47017868, 9370511, 110322468, 1242470613, 8395212, 565697, 41921, 10859296, 832196, 109677245, 735423, 663799, 1216519767, 7249444, 157003591, 1015827148, 4497921, 20154985, 31453186, 240994699, 10575124, 28107464, 0064608540, 194018479, 122202369, 791095, 122802390, 13017132, 47224027, 16026528, 1051782363, 512657, 573691, 1717222, 353001274, 314024670, 2890929, 20511770, 561563, 500178470, 55119754, 357913, 145114831, 47174248, 100683424, 747998, 45103504, 4129490, 0008192007, 105541767, 1266470861, 7140858, 134147693, 1423813, 41532045, 1009183276, 2159846, 33449, 240431403, 380843912, 335009247, 158501, 140021197, 380833608, 90140039, 162037733, 100610344, 10291177, 111199279, 9204967, 5993951, 43906320, 1870179, 1129790, 1015819939, 913707, 1386474413, 290056506, 35118850, 103393955, 106232762, 710301, 100091511, 1043741816, 4520052, 3621182, 080167497, 2698595, 198024267, 1560101782, 50297449, 11132743, 1133822898, 120026695, 130331184, 5610126, 2052587, 299099, 2095602, 1300066899, 283895, 15727, 244729505, 48006993, 1012840706, 2007458, 380414870, 6254189, 1077781761, 943928, 741496, 1554658, 1750529941, 307043653, 60601861, 370068256, 5304118, 102142148, 129416723, 124101932, 769364, 5658687, 5341557, 1247450537, 110104874, 52955119, 1087779706, 215006131, 5973722, 129929485, 23427602, 3160538, 102070778, 47523170, 8552580, 4178570, 110030590, 675801, 570611681, 363945, 2206068, 901124792, 100218197, 0164033557, 18201780, 204478143, 18568683 - 1 = 805134315, 560047950, 993007, 10203567, 3234938, 110450911, 930060543, 28105413, 118014957, 113069, 658830, 1928693, 969419, 5023109, 781879, 3757707, 48298599, 48298434, 5547159, 79024598, 1410565, 9766864, 718079, 1323456, 7820035928, 9792780, 6818100, 3697283, 10092747, 3854930, 8701497, 8167770, 131429, 8152266, 210931, 1794717, 407665, 745420, 2069733, 7817001288, 2434375, 10003468, 1728972, 9155138, 7850004503, 34115796, 21153833, 400154680, 5035135, 3920936, 7808006261, 15069225, 48519319, 715058, 7257519, 2204505, 11431431, 800097402, 48069182, 3734775, 3128264, 2746654, 2166997, 717544, 48288925, 1068106, 8321619, 6309035, 1895984, 8097479, 15129983, 675909, 7307005, 2854759, 5535408, 120193, 20407456, 11549608, 400257769, 36110926, 440696483, 2038654, 2701651, 3441855, 2288318, 687052, 757968, 613765, 1713750, 520020663, 7700396, 2669377, 440005517, 650005558, 7894005393, 1409095, 11375047, 2602097, 6448460, 6402925, 2118299, 314181, 203261, 7855006269, 11105372, 11534974, 0019191924, 5253285, 10006630, 785710, 2202703, 3092716, 0049510771, 3360046, 1452183, 970323226, 227003, 7676334, 6026662, 8207764, 10118607, 3829130, 5302710, 3739732, 11011583, 2015639, 872180, 2157731, 8517083, 8575805, 8220806, 5773349, 5289424, 5833588, 110073075, 43107290, 6271527, 11610616, 111042854, 6404538, 7870026509, 7487014533, 79225878, 798305, 746395, 11506713, 11179274, 680034142, 2660792, 757614, 6247111, 2144201, 725938, 5334764, 7895008588, 0012003624, 20459772, 368883, 2645432, 3240379, 7932085, 10331453, 111039922, 7502635, 2168476, 8388920, 10600933, 1943465, 5249457, 2711098, 10902246, 2155984, 158048, 26084 - 2 = 837547, 1207253, 228036623, 281042020, 206110073 - 3 = 11091519, 10556853, 1324235, 10583749, 10627894, 18512188, 21045481, 10310431, 10311421, 10309905, 21265980, 16081482, 21019866, 171066238, 29516145, 201061140, 10635582, 3524411, 10061406, 10180769, 0011578088, 10530419, 10295401, 91204231, 88900850, 0001552183, 16075071 - 4 = 132102120, 101123944, 121089335, 285024684, 26038154, 189055382, 509017468, 100074389, 1004626229, 452424, 129030054, 258133560, 170109716, 112054960, 118058925, 106215383, 112020500, 135011479, 483110731, 138040461, 0132055440, 120039954, 352194565, 120069004, 461095011, 100272431, 183001213 - 5 = 1243105910, 1143002210, 1190015933, 707332, 1119059815, 1334003727, 1252001199, 1151024604, 715450, 1143020991, 1000158676, 1204112751, 1133076023, 1000155103, 1203108096, 74451368, 1325042959, 1191050683, 1205017813, 1395136604, 20602488, 1122020909, 1000232770 - 6 = 94012341, 5073321010, 397806, 22073001, 464958657, 10038219, 60006059, 7504535015, 18050714, 102123921, 21525308, 2838010, 1011056489, 33103409, 3320502, 26129400, 22550608, 4401416736, 3806419000, 102094816, 6011306, 21287008, 2434709, 800693012, 1000141077, 6889719000, 6306209, 30093801, 71466019, 3684954, 5500226015, 110596600, 9082107, 1110016782, 139098609, 10391741, 5582407, 3608074014, 7101991002, 140933007, 472028030, 1010017900, 4273366011, 76138125, 4366018, 33439377, 31143306, 6715561008, 1070019317, 600449010, 108053429, 162099949, 5263530, 912049876, 4369939, 70004755, 102115783, 4194446, 65448017, 167522807, 4805013007, 126229402, 4217071904, 455643694, 63961906, 1104002621, 5910849001, 1505051013, 150204402, 1005719018, 0076940576, 1151022525, 4833333, 132491909, 14179704, 502350013, 1202318025, 20009578, 870501, 101981908, 77373608, 1658565, 932062453, 868108, 11731317, 2501392017, 604534011, 4398408, 129115408, 5395704, 1445308, 4030490202, 0822132146, 4286502, 212123153, 8705406007, 3901322006, 3574512, 7016101006, 1306812, 75034202, 22184202, 78411910, 2206102, 37082805, 1404594016, 1007510019, 704151012, 763608, 1004455017, 300257488, 3027527018, 2300528018, 70959003, 33276591, 402626020, 1557750, 7800903003, 6205208, 54785208, 5847010, 0151014615, 454761, 38005642, 1017551007, 2700165011, 6194605, 148015120, 1401197016, 3084786003, 12128800, 5948188009, 23605600, 1012057918, 113087005, 7022656001, 1017984000, 4563492, 3611790200, 3301012011, 316025803, 5110904, 400978344, 4031242300, 15253401, 2420600, 5071411003, 195502, 74157920, 2103064018, 0136091204, 12036701, 032017711, 1160016996, 2406608, 4190203, 753084, 142081059, 1440553024, 3190874000, 7168541001, 60789401, 3500818017, 3151468, 352029106, 5203248018, 315508, 107794018, 1000401621, 501905, 2200194015, 481742, 18090171, 7029259008, 11312012, 58451304, 4007409, 100677580, 107743103, 37098302, 1305964014, 201677009, 106269807, 704903, 122009440, 10987, 7042509005, 1070908, 60010501, 1002002694, 42912808, 9602494036, 3380009, 1604360010, 10041007, 38121405, 38105, 21221805, 4543378, 5417939000, 707104, 6014607, 2657406, 6406300, 60561702, 34222665, 7018052002, 442087725, 302284016, 22208802, 2087715, 8214910200, 151327, 124058384, 33250266, 7087604009, 3081702, 2009420, 17600010, 700894010, 102029305, 1011058627, 202102301, 106036080, 11142907, 0332061151, 20095601, 79118508, 1000076917, 120313100, 64132407, 5220009 - 7 = 114082618, 100529704, 100521509 - 9 = 1542321, 851194900, 363935500, 3012082935, 2825252001, 348754, 076187, 0601803230, 1501525610, 5344401, 1716002, 0827910430, 13263033, 289388600, 534684, 532061, 1500807210, 0365090255, 0224032555, 0010487098, 0603545730 - A0 = 521003287, 54500, 3287, 18761, 28290 - A1 = 0010030005, 0010030997, 1010030054 - A2 = 3456789019, 5678901231, 6789012348, 3456789012, 461954, 215108716, 170017107, 100059583, 111017588, 118010529 - A3 = 1234567897, 0123456782, 9876543210, 1234567890, 0123456789, 134164664, 14490706, 22943145, 139011761, 107341166, 30181232, 12835781, 1142995800, 119284073, 1155783002, 22721142, 103338646, 106300569, 15895793, 16474511, 2110641665, 111354734, 12106810, 18952178, 29804108 - A4 = 0004711173, 0007093330, 0004711172, 0007093335, 1199503010, 8499421235, 0000862342, 8997710000, 0664040000, 0000905844, 5030101099, 0001123458, 1299503117 - A5 = 9941510001, 9961230019, 9380027210, 9932290910, 0000251437, 0007948344, 0000159590, 0000051640, 750176844 - A6 = 800048548, 0855000014, 17, 55300030, 150178033, 600003555, 900291823 - A7 = 19010008, 19010438, 19010660, 19010876, 209010892 - A8 = 7436661, 7436670, 1359100, 3199500501, 7436660, 7436678, 3388344, 2812584, 6906028, 8911428, 5177022, 7015798, 3066045, 5645956, 3173283, 3560279, 3464075, 3122972, 3503398, 1340967, 199100002, 199100004, 2599100003, 3199204090 - A9 = 5043608, 86725, 504360, 822035, 32577083, 5114348, 87700 - B0 = 1197423162, 1197423460, 1000000606, 1000000406, 1035791538, 1126939724 - B1 = 1434253150, 2746315471, 7414398260, 8347251693 - B2 = 0020012357, 0080012345, 0926801910, 1002345674, 8000990054, 9000481805, 21086079, 23006358, 21284318 - B3 = 1000000060, 140, 19, 1002798417, 8409915001, 9635000101, 9730200100 - B4 = 9941510001, 9961230019, 9380027210, 9932290910, 251437, 7948344, 51640 - B5 = 0123456782, 0130098767, 1045000252, 0159006955, 2000123451, 1151043216, 9000939033 - B6 = 9110000000, 0269876545 - B7 = 0700001529, 0730000019, 0001001008, 0001057887, 0001007222, 0810011825, 0800107653, 0005922372 - B8 = 0734192657, 6932875274, 3145863029, 2938692523, 5432198760, 9070873333 - B9 = 87920187, 41203755, 81069577, 61287958, 58467232, 7125633, 1253657, 4353631 - C1 = 0446786040, 0478046940, 0701625830, 0701625840, 0882095630, 5432112349, 5543223456, 5654334563, 5765445670, 5876556788 - C2 = 2394871426, 4218461950, 7352569148, 5127485166, 8738142564 - C3 = 9294182, 4431276, 19919, 9000420530, 9000010006, 9000577650 - C4 = 0000000019, 0000292932, 0000094455, 9000420530, 9000010006, 9000577650 - C5 = 0000301168, 0000302554, 0300020050, 0300566000, 1000061378, 1000061412, 4450164064, 4863476104, 5000000028, 5000000391, 6450008149, 6800001016, 9000100012, 9000210017, 3060188103, 3070402023 - C6 = 0000065516, 0203178249, 1031405209, 1082012201, 2003455189, 2004001016, 3110150986, 3068459207, 5035105948, 5286102149, 4012660028, 4100235626, 6028426119, 6861001755, 7008199027, 7002000023, 7000202027, 8526080015, 8711072264, 9000430223, 9000781153 - C7 = 3500022, 38150900, 600103660, 39101181, 94012341, 5073321010 - C8 = 3456789019, 5678901231, 3456789012, 0022007130, 0123456789, 0552071285 - C9 = 3456789019, 5678901231, 0123456789 - D0 = 6100272324, 6100273479, 5700000000, 5710000000, 5799999999 - D1 = 0082012203, 1452683581, 2129642505, 3002000027, 4230001407, 5000065514, 6001526215, 7126502149, 9000430223 - D2 = 51181008, 71214205, 4455667784, 1234567897, 189912137, 235308215 - D3 = 1600169591, 1600189151, 1800084079, 6019937007, 6021354007, 6030642006 - D4 = 1112048219, 2024601814, 3000005012, 4143406984, 5926485111, 6286304975, 7900256617, 8102228628, 9002364588 - D5 = 0000100062, 0000100088, 0004711172, 0007093335, 0004711173, 0007093330, 0000127787, 5999718138, 1799222116, 0099632004 - D6 = 3409, 585327, 1650513, 3601671056, 4402001046, 6100268241, 7001000681, 9000111105, 9001291005 - D7 = 0500018205, 0230103715, 0301000434, 0330035104, 0420001202, 0134637709, 0201005939, 0602006999 - D8 = 0010000000, 0010000001, 0099999998, 0099999999, 1403414848, 6800000439, 6899999954 - D9 = 1234567897, 0123456782, 9876543210, 1234567890, 0123456789, 1100132044, 1100669030 - E0 = 1234568013, 1534568010, 2610015, 8741013011 - E1 = 0100041104, 0100054106, 0200025107 - 10 = 12345008, 87654008, 31251005, 86504002, 3157008, 34247009, 0672453002, 82319006, 405221, 370509005, 2190869, 65383206, 31741002, 4927397, 25168177, 624107000, 41683005, 8783004, 2740001, 302329005, 0013702017, 146468007, 141508108, 274018004, 61007404, 46199004, 0013711008, 4064224, 59083000, 255658001, 28396006, 452586003, 209611006, 1066889, 132623005, 71089004, 7219008, 172570000, 382813006, 81424000, 58583009, 653792000, 71934006, 29342007, 434894001, 139350004, 74509004, 110145003, 69748004, 77823001, 62248502, 65421000, 431361002, 7305001, 0011313005, 114126003, 63919001, 62320009, 13692003, 66933005, 100919200, 1249754, 268100, 67427006, 50018906, 77126009, 58032002, 85355003, 141401001, 15977005, 32710011, 30177383, 14088002, 104064005, 72769009, 115634002, 34409009, 183699009, 2055007, 21564000, 0709427000, 93107501, 36757004, 4322740006, 265281008, 88279707, 344455009, 341294004, 62162004 - 11 = 769010, 5661730, 3059227, 7761619, 7547927 - 13 = 2220267, 8107260, 1159656, 3301736, 180449101, 6824817, 2519056600, 1311521, 2675906200, 6815211, 887051100, 2476822200, 2928208, 1495035, 0008107260, 2803120, 8020083, 61895598, 5020946, 8018129, 7103260, 4440400, 8962060, 2737450, 6739064, 3319423, 420499600, 2923239800, 3992781, 7253032, 0247387, 1058056, 640575700, 3150679, 2781243, 1182468, 2456073600, 3004058, 2722320, 2872984, 2014660, 7455223, 6333868, 8913790, 2199099, 2602258, 6101851, 5272943, 8255754, 871638301, 6189559, 2586066300, 5262282, 1055292, 1039767, 7682065, 8844011, 1002054, 7013998, 2758889000, 1201375, 5715966, 8674285, 4301313, 4528493, 1194398, 5637707, 363743600, 800317000, 291176600, 458348000, 5712369, 0225524, 6412365, 8983447, 2035269000, 8327694, 2628892200, 2609531900, 1934264, 2915288, 6402671, 2052828100, 2053809, 183613900, 8279374, 5885082, 5502448, 2120061, 6557557, 6284244, 2501728000, 360460001, 1503861, 654143700, 1258318, 300574100, 3409083, 2762219, 1005628, 2205524, 1268275, 2007763, 2510678600, 4261285, 7307630, 3610011, 4500435, 8491714, 3657020, 7396302, 2226579, 414410102, 169622800, 1049568, 7917495, 142400100, 6183636, 2107597, 1615384, 1501055, 2332294, 8656654, 1413574 - 14 = 0105451078, 0301360175, 0005534550, 0102385015, 0002212269, 0005405858 - 17 = 0446786040 - 19 = 0240334000, 0200520016 - 20 = 2105426096, 1770007225, 1640002142, 1600040434, 2623445373, 120044099, 4017076870, 1112141061, 4611022329, 1384012946, 1560027149, 4616000854, 4504025855, 930220650, 970106041, 2020173223, 4074027998, 1800081215, 1801587961, 4050029788, 480891508, 1210424386, 1000288044, 1370017720, 1210444506, 1440102879, 4111124548, 479381, 4011104871, 4000078416, 1455022361, 4134472240, 1450118832, 4134486896, 4010033245, 1642902205, 4709008839, 2334006796, 320321924, 574805036, 1800887937, 4521024268, 4000120463, 1320002834, 4000009449, 1800277241, 1320244773, 1220039973, 1420186740, 4120172525, 114013560, 4516061002, 4020393996, 4550132634, 4509009300, 1231080236, 0104029366, 2159902, 730014240, 230253873, 780125037, 1220128160, 1801244940, 54514800, 1369725, 4521015633, 4110254243, 1240147500, 4532004433, 1525023892, 1700189260, 2194929749, 1440116306, 4210070896, 1440255519, 1000162962, 4134457470, 104029633, 4040119059, 4150092520, 1899325, 1180020266, 1010201480, 4120581727, 1450066506, 2322323, 1770003149, 1490182744, 1800858686, 4517017260, 1205186871, 1220132523, 1120106911, 1654694769, 4000514887, 4001159169, 1320019990, 1220251492, 2060200442, 640272290, 240293274, 2623714, 1704007417, 4110265164, 2303032698, 4000665222, 1000110709, 4043081630, 1795109285, 240370147, 1878755486, 940165139, 1564041421, 1801802145, 4573023866, 1040114438, 1160163274, 4000780242, 4611018860, 4002288760, 44412827, 8055335, 4538017561, 1231085270, 1802124094, 2334024638, 1320084253, 2030269606, 2804376802, 1800813658, 1210254677, 310192048, 2639092, 810392216, 310284317, 54547881, 4505017864, 1360159289, 1420025844, 2194924089, 320335895, 1520054455, 1714079690, 4134477781, 240317220, 181026384, 2325640, 2301484389, 4329021167, 54518890, 4506021067, 1273426, 4211162638, 4074018794, 170154270, 1420005622, 4081029577, 824305, 4134478788, 4814031187, 4810013486, 1154257, 4740039686, 1130170400, 4046047734, 2101438910, 1010131024, 4116181949, 4110268384, 1410142732, 4000014523, 0544531612, 1100016011, 610113003, 1705150698, 4000873780, 4505059532, 4124535177, 820158089, 990356221, 1400032837, 4636004502 - 21 = 1003000905 - 24 = 138301, 1306118605, 3307118608, 9307118603, 872698209, 294453309, 400435609, 429603103, 395379808, 250957205, 523324465, 312990467, 382158757, 163663707, 893849100, 420549466, 541037309, 0674808207, 0924938309, 376977706, 769190208, 317000302, 397829304, 391181603, 477489500, 822181103, 37508101, 128062504, 656888800, 594760436, 335891752, 223608502, 707906603, 289996202, 689825603, 853913605, 380945509, 817070108, 221590752, 19930102, 20722857, 393451100, 97325461, 172260109, 428720804, 396143755, 222634101, 658759801, 924004808, 370155702, 149072705, 159847662, 679178803, 619757433, 661216804, 506077201, 862839201, 875801858, 948020200, 994574203, 615312806, 609110807, 636860205, 245559463, 354485809, 172733703, 478534602, 75355664, 225190902, 615669100, 0259545855, 351588305, 621493462, 489812106, 476474805, 58033469, 549391804, 857366204, 243892469, 935340904, 643090307, 871362908, 211454501, 883517467, 358419756, 682845800, 87347466, 630364305, 549458463, 0054539709, 371201755, 161217609, 104314104, 373120600, 15784605, 612677805, 245570906, 189685304, 535455805, 881293200, 512418804, 620882307, 12012805, 826645800, 407944107, 972353801, 623310806, 2654808, 619987466, 0484872103, 642856201, 6654802, 962622805, 919329609, 938127804, 341082808, 942404205, 207866608, 891832433, 567307467, 995556208, 696038306, 808330206, 687280608, 836159809, 961883807, 367494465, 147889708, 266106306, 858630208, 868388461, 857088677, 0303960501, 574440461, 641340801, 252751203, 470512207, 536429309, 0008312466, 932805200, 773147304, 507396309 - 25 = 521382181, 201189283, 215160754, 260322814 - 26 = 0520309001, 1111118111, 0005501024 - 27 = 2847169488, 105478820, 24022022, 6438071, 7234313, 2417855, 2529915, 1998640, 3436169, 2288363, 8348336, 1026251, 311068, 6506448, 1168228, 2949741 - 28 = 19999000, 9130000201, 14180100, 90051600, 86817500, 81972700, 207806600, 16062800, 1003320300, 14701000, 4202778000, 128460600, 109083600, 3000134000, 25712500, 13962900, 281545100, 802350600, 1025100, 31672500, 94383500, 356055400, 500076900, 706799200, 2613786000, 704899800, 417539500, 146438800, 11172400, 134365300, 4804373700, 1300379800, 185539500, 712864900, 4804141600, 32767000, 422851000, 965291400, 108927700, 120234000, 12161400, 30037300, 1701922200, 1500945900, 1301472200 - 29 = 3145863029 - 31 = 0263160165, 1000000524, 1000000583 - 32 = 747564, 9141405, 1709107983, 0122116979, 0121114867, 9030101192, 9245500460, 157260, 413640, 4389670, 2738252, 6190, 17191, 2480794, 2466570, 3573060, 2213060, 2002124, 6818501, 457442, 7380119, 5822181, 4629124, 2142562, 3009807, 4027000, 200070947, 5412200, 72621, 4557298, 536938, 128821, 1113402, 27944, 2551918, 4256484, 405868, 1408518, 4793706, 5028256, 4028554, 232254, 4575288, 6020879, 8637725, 5870488, 5944724, 7909497, 40215, 26930, 5951917, 4046463, 3024547, 12610, 39772, 44644, 4610202, 4328663, 2034069, 72699, 100133361, 2721155, 5534348, 82872, 4517385, 43583, 24384, 611050, 8286035, 4840151, 3945138, 2872269, 1870181 - 33 = 48658, 84956, 76058, 388874, 414603, 243604 - 34 = 9913000700, 9914001000, 5021301200, 5226472900, 2267965900, 5155223500, 69111201, 109522400, 23269600, 4100063000, 10395800, 2197900, 8556900, 5547400, 24680119, 3604813700, 25998701, 1719500, 8703609900, 8805374700, 4019966700, 87344200, 1402578600, 91230900, 17733200, 61681700, 4484700, 1102503503, 657944700, 300457600, 110375700, 912976700, 704449500, 2205169300, 1303805900, 67255200, 4556700, 6102129400, 6003572300, 8740184200, 62232801, 462687900, 51010701, 44289600, 831599801, 428759800, 108128700, 6159335600, 751781100, 151497800, 2385868300, 5801714701, 255603700, 211211000, 3302596800, 7666200, 17223211 - 35 = 108443, 101599, 107451, 102921, 102349, 101709 - 36 = 113178, 146666 - 37 = 624315, 632500 - 38 = 191919, 1100660, 915024, 1938842, 2376159, 302519, 1128073, 1307258, 1009082, 1609627 - 39 = 200205, 10019400 - 40 = 1258345, 3231963, 6215820003 - 41 = 4013410024, 4016660195, 0166805317, 4019310079, 4019340829, 4019151002 - 42 = 59498, 59510 - 43 = 6135244, 9516893476, 2033552 - 44 = 889006, 2618040504 - 45 = 3545343232, 4013410024, 0994681254, 0000012340, 1000199999, 0100114240 - 46 = 0235468612, 0837890901, 1041447600 - 47 = 1018000, 1003554450 - 48 = 93703660, 2959730 - 49 = 4152679, 4928024, 1826128, 1121799, 190388439, 3374520, 1444160, 2195865, 3278482 - 50 = 4000005001, 4444442001, 6144837000, 5850797000, 6142451000 - 51 = 0001156071, 0001156136, 0000156078, 0001234567, 0000156071, 3199500501, 0199100002, 0099100010, 2599100002, 0199100004, 2599100003, 3199204090, 592242, 164670, 270350, 458966, 340968, 201178, 1009588, 101356073, 2056778 - 54 = 4964137395, 4900010987 - 56 = 0290545005, 9718304037 - 57 = 7500021766, 9400001734, 7800028282, 8100244186, 7777778800, 5001050352, 5045090090, 1909700805, 0105781645, 0203861428, 1209752022, 1509701720, 0610784275, 0803732716, 2410781111, 0802713267, 2208483021, 1702772364, 1004731551, 2802752203, 1702770213, 2910751345, 3101752218, 0408720610, 2901554056, 2811722469, 3007762732, 1801810233, 3003711345, 0405542767, 1506801596, 1609751400, 1407781403, 0208762720, 0112762973, 0804841115, 1805761311, 1204762751, 2603784092, 1412720611, 2210811386, 2204762175, 1706812524, 0508750313, 1907791678, 1906721722, 2908752583, 0210772314, 1110742116, 1201760575, 1711764016, 2204840420, 0905712134, 2911792113, 2205812216, 1105812120, 2901784132, 3251080371, 3891234567, 9322111030, 2804540670, 7400060823 - 58 = 1800293377, 180881120, 9200654108, 1015222224, 3703169668, 1000870595 - 59 = 115075806, 110105152 - 61 = 2063099200, 0260760481, 0260760282, 7806114000, 1146720600 - 62 = 5029076701 - 63 = 123456600, 0001234566, 1331537, 4938494, 167908, 7721244, 5518816, 503458, 830307, 2714202, 0200196, 268515400, 1756006, 0781831, 1079318, 7850134, 4079059, 3505708, 549157600, 5461587, 0231720, 971982400, 875344, 0322982, 6710750, 1038538, 3722410, 0912642, 8736779, 1094846, 5609581, 4301842, 0257063, 1488493, 6018774, 0433243, 3201076, 5441407, 7669807, 1720176, 5726963, 9974601, 0226555, 2421618, 5425483, 3742186, 9777228, 2081693, 348160300, 1543271, 3513132, 284753100, 5080510, 4687786, 3020757, 2114650, 0100230, 7602394, 5000849, 1267970, 3035292, 1214535, 1095843, 0173948, 040766800, 5861901, 2243178, 0341222, 2021764, 4441622, 3779238, 2043255, 7004690, 0516369, 5014600, 0630541, 6373492, 4517736, 0195123, 0477927, 4106712, 3237625, 5052360, 1195718, 4397790, 492134200, 8911299, 0272476, 654272400, 3076072, 3946829, 0282194, 9838244, 2750578, 4000808, 382011501, 8606568, 0400572, 2000263, 7046014, 0806786, 0473876, 3991031, 2385631, 1416288, 1561067, 2224533, 1741115, 8003998, 1857523, 1743855, 0260653, 6399653, 6409015, 7133101, 4816542, 075023200, 6911648, 6310692, 953647500, 446031700, 0150870, 4381604, 4474573, 9185737, 5019336, 0382390, 1305457, 2504660, 1564897, 0149955, 0853093, 2440071, 8832701, 2015741, 5415484, 0522268, 4904413, 1335355, 2222883, 0323535, 8041378, 2768208, 105405500, 020725800, 0145862, 3024387, 2343788, 033075301, 0409060, 4001152, 6465744, 5386792, 032341001, 200882900, 4792560, 2352573, 5434709, 2435600, 5137534, 1810621, 4679429, 1453216, 199577800, 2108033, 3980224, 8015208, 0308015, 0222380, 0303016, 5019211, 9540774, 8038523, 0411421, 183688100, 2137552, 0506758, 2242717, 400635900, 2512929, 989686100, 1028273, 0858688, 1216266, 7839293, 5104070, 7580012, 173605700, 0100206, 1335587, 0122135, 030367701, 7414402, 1214527, 5379367, 2130953, 8500555, 1587401, 0496273, 3172269, 7012297, 8816498, 8898389, 518427000, 684461700, 1053198, 5183710, 4255410, 3390010, 0119008, 3466521, 0602656, 4623245, 2038222, 0356758, 3015773, 781787700, 2523793, 0715417, 339102600, 8765711, 6606024, 6101331, 3945037, 376629200, 0521666, 6648802, 419723200, 0250936, 0312439, 3029766, 0709568, 520717000, 4111068, 3900388, 1238765, 0162065, 5916226, 4389698, 1941723, 8415432, 5051719, 1993898, 629314600, 5085204, 0245811, 7931926, 0210666, 1919588, 2303253, 1268044, 4009684, 0415372, 2813095, 0187823, 0432575, 5402177, 7367204, 3510849, 0156265, 0123927, 0131185, 0916445, 297518300, 0823419, 0246579, 8317349, 212612600, 2116127, 3900628, 1231315, 9167172, 126598200, 1239797, 1716026, 0430629, 0115055, 6082515, 025168600, 127129500, 6648349, 1130194, 6687628, 8446908, 0323410, 4212205, 1212877, 3206083, 3838000, 5605993, 0966663, 0208405, 3916293, 0223537, 1076710, 1301407, 445628100, 6472518, 0401943, 0401273, 0520486, 5146360, 6418735, 0444638, 015414600, 6967103, 4608105, 6967715, 1977206, 8002966, 3380243, 3912441, 2885325, 3228889, 4757076, 6072599, 7241896, 0001869791, 8174344, 4914123, 4472700, 6342208, 7591902, 7124746, 606530400, 2051357, 12305900, 271161200, 364094300, 140763400, 0750752, 1801661, 6018022, 4383501, 3631231, 5040928, 4999918, 0330183, 3214384, 0900019, 200019800, 010645000, 3985082, 4905857, 6301469, 3127594, 4662078, 1134345, 1134675, 0252247, 1225911, 0324376, 3588928, 0342451, 2515641, 0541698, 4303913, 1750017, 1841907, 2776011, 0138271, 5214564, 0366633, 0134312, 4750212, 3614401, 4017067, 0232140, 3743978, 2817369, 6609689, 0325191, 1011071, 8563553, 700305600, 4512505, 5710678, 2777076, 0177840, 9530908, 0403493, 8988149, 1991017, 651866600, 516460300, 6428684, 0979864, 0611798, 740613500, 3947322, 1992015, 7758808, 9636499, 5364823, 0511535, 5064159, 1164359, 0169631, 166180000, 6002349, 0212092, 0304345, 3807401, 1722834, 2439594, 012280400, 6229231, 3260759, 2506210, 1013887, 3220050, 141742700, 9616046, 3580487, 0291864, 501471700, 2717932, 4254181, 5729553, 0188037 - 64 = 1206473010, 5016511020, 7129309000 - 65 = 1234567400, 1234567590 - 66 = 0983393104, 1934567890, 100150502, 100154508, 101154508, 100154516, 101154516 - 68 = 51181008, 71214205, 8889654328, 987654324, 987654328, 2056760, 8606147, 19807727, 63206300, 71240804, 2011740, 412718, 6210801, 5030817, 76545806, 8406316, 53101527, 7322472, 7922792, 5477724, 6743173 - 69 = 9721134869, 1234567900, 1234567006, 0192735300, 4633049600, 6820735200, 3429127000, 9993327600, 2676152100 - 70 = 6790160566 - 71 = 7101234007 - 73 = 3503398, 3503391, 3503392, 7899100003, 0003503398, 0199100002, 0099100010, 2599100002, 0199100004, 2599100003, 3199204090, 3157179, 4356770, 1340966, 1340967, 1340968 - 74 = 1016, 26260, 242243, 242248, 18002113, 1821200043, 239314, 239319, 16139552, 2166429, 2180800, 23162183, 2191583, 25342700, 21156690, 19188812, 2212686, 11183027, 21164306, 12150645, 24158198, 29250677, 3126166 - 76 = 0012345600, 0000123456, 0006543200, 9012345600, 7876543100, 105873300, 0568021900, 276322900, 0229277400, 683597100, 192650000, 829419700, 0508685100, 0636079800, 0711523400, 0626028700, 0189463800, 8414580, 4545908400, 0172758800, 0848425900, 0170935500, 0113304400, 4301338800, 0607777800, 0591994000, 0120566300, 0890570800, 0587902400, 0582180000, 0961376600, 0465112100, 0671404300, 564428800, 0479894600, 0360341600, 0443942900, 0362792500, 0210575500, 0125787000, 0355884800, 4274556200, 0382556500, 262121600, 475407400, 0283431500, 0104328600, 257924800, 0330385800, 827270000, 4039882200, 0550006000, 0580959900, 05809599, 0622059900, 4366681500, 132511500, 0100800600, 0934153500, 0543222400, 0527717600, 0910652200, 752765200, 0497179600, 0521968100, 0572497100, 600201800, 720670700, 0196647900, 6123004, 0601755100, 0887238700, 591024900, 0770541400, 0923303900, 0304816000, 755343200, 4170214200, 0376111300, 0412751100, 0300691800, 0474515200, 0702319400, 06915620, 0770751400, 0377432600, 0601346600, 0834822400, 500126200, 4366759500, 0112634900, 0661830300, 0586390900, 0450002700, 4013888500, 0208896400, 0307135200, 0601782400, 631049700, 758549400, 818739300, 0198032400, 0540112400, 0128125200, 0463287400, 0615188700, 0722974400, 0242439300, 703070800, 0921624800, 0595377700, 0442018400, 0128706000, 0402954900, 4096323900, 0104860000, 0738194300, 4041862600, 0932650900, 120240600, 0550423500, 0803082000, 0601711300, 0192100900, 0231661400, 4093425200, 0275041700, 0423584800, 0584789800, 0949667100, 0452113400, 380269300, 0755268300, 0217797300, 0705479800, 0644103800, 0719079700, 300634700, 0121637500, 979219300, 616217400, 6531994 - 77 = 0000054321, 0000047671, 10338, 13844, 69258 - 78 = 7581499, 9999999981, 2268316, 5083688, 5561311, 8707069, 2431302, 2516888, 4334181, 2418697, 6573331, 8920555, 2443018, 4629739, 8717050 - 79 = 3230012688, 9011200140, 5440001898, 6330001063, 7000149349, 8000003577, 1550167850 - 80 = 340968, 340966, 3199500501, 0199100002, 0099100010, 2599100002, 0199100004, 2599100003, 3199204090 - 81 = 0646440, 1359100, 3199500501, 0199100002, 0099100010, 2599100002, 0199100004, 2599100003, 3199204090, 7296770, 7491751, 100587427, 7033249, 7117663, 7023650, 526800, 467405, 2636310, 3524450, 1114000, 7168802, 1105027, 2369010, 300900, 544825, 2656370, 7568231, 7622090, 960306, 7612192 - 82 = 123897, 3199500501 - 83 = 0001156071, 0001156136, 0000156078, 0000156071, 0099100002 - 84 = 100005, 393814, 950360, 3199500501, 0199100002, 0099100010, 2599100002, 0199100004, 2599100003, 3199204090, 634484, 371394, 506869, 703176, 197284, 240699, 350982, 461059, 240692, 350985, 461052, 240961, 350984, 461054 - 85 = 0001156071, 0001156136, 0000156078, 0000156071, 3199100002, 316764, 0326816 - 86 = 123897, 340968, 1001171, 1009588, 3199500501, 340960, 0199100002, 0099100010, 2599100002, 0199100004, 2599100003, 3199204090, 1136845, 946150, 972323, 833371, 1293406 - 87 = 406, 51768, 10701590, 10720185, 100005, 393814, 950360, 3199500501, 0199100002, 0099100010, 2599100002, 0199100004, 2599100003, 3199204090, 2266057, 223175, 3186646, 1311349, 34715, 542655, 3011810, 1298310, 973356, 3467504 - 88 = 2525259, 1000500, 90013000, 92525253, 99913003, 16284, 100263036, 89060, 227897, 582840, 78239, 303674, 3302989, 2628910, 7174918, 1694219, 929913, 4840968, 222348, 5729114, 923222, 3227103, 1057162, 126314, 50741, 818526, 1112, 27146, 320897, 5916941, 7178441, 66877, 1807323, 3221016, 72222, 4207289, 9710213, 40100, 6124593, 707899, 32700, 5195039, 152846, 727610, 483192, 100007960, 3501523, 2680696, 1064827, 3241599, 3603377, 2704900, 1825526, 1069080, 363910, 7425511, 317098, 179426, 319988, 1431188, 1202090, 704890, 614491, 11410, 67067, 119890, 37834, 1073796, 1807536, 36765, 2807220, 215490, 2569906, 1920103, 1190571, 2508508 - 89 = 1098506, 32028008, 218433000, 507072006, 254024009 - 90 = 982507293, 0001156136, 0000156132, 0000156071, 0001156132, 0000156073, 0000156077, 0099100002, 3921000, 259413, 0006073093, 737577, 4569164, 3140482, 2451050, 415176, 2426013, 0001975641, 0001988654, 0001863530, 0001784451, 0000654321, 0000824491, 0000677747, 0000840507, 0000996663, 0000666034, 0004923250, 0003865960 - 91 = 2974117000, 5281770000, 8840012000, 8840019000, 8840050000, 8840055000, 8840087000, 8840045000, 8840080000, 9952812000 - 92 = 4129654921, 4139507456, 4079604146, 4239680359, 4349555862, 4069613759, 4069634518, 4239653647, 4149555848, 4359725290, 4149578179 - 93 = 6714790000, 0000671479, 1277830000, 0000127783, 1277910000, 0000127791, 3067540000, 0000306754 - 94 = 6782533003 - 95 = 0068007003, 0847321750, 6450060494, 6454000003, 657550590, 3180376878, 5800607576, 6340241892, 6130421618, 48256538, 6410681216, 5300100, 658311255, 4320265385, 38794531, 46599730, 33739966, 659110580, 2594811, 34239185, 45333655, 44212463, 654502633, 43917056, 189912137, 235308215, 0910000000, 0989999999 - 96 = 0000254100, 9421000009, 0000000208, 0101115152, 0301204301, 1251705004, 388816198, 1201255242, 345807936, 1200996087, 1200571353, 1251063924, 1251325481, 394225724, 1251763837, 1251088153, 315811340, 1200161570, 313808651, 1251112070, 1251673102, 319812057, 378000624, 1251027898, 329807382, 371824206, 1201674709, 1251495190, 1251258300, 1251199940, 0318093154, 1251272795, 1251424030, 115018954, 1201413450, 1251178780, 1251721832, 0385014384, 161022942 - 97 = 24010019 - 98 = 9619439213, 9619509976, 9619319999, 3009800016, 5989800173, 6719430018 - 99 = 0068007003, 0847321750, 6720348169, 9424474, 2456737, 0005559707, 7746504, 8003157, 311303740, 326605174, 2509822, 47313937, 3123707, 4950117929, 303800468, 2686821, 8788871, 3523004, 6750164135, 6710948, 6790147721, 1490152756, 1290255151, 2610153499, 3426610, 6258468, 1464558, 7071159, 2689901, 326800139, 6660243192, 5180163834, 1598783, 4481488, 85302353, 9081178, 6947719, 5480158891, 2409097, 6810215281, 6260239897, 1458264 - ; 52 - 13051052 = 49750996, 46310653, 42200908 - 13051172 = 43001500, 48726458 - 81053132 = 41084332 - ; 53 - 16052072 = 382432256 - 85055142 = 345033997 - ; C0 - 81053272 = 42279904, 49279640, 0082335729, 0734192657, 6932875274, 48074470 - ; (B6) - 80053782 = 487310018 - ; (B6) - 80053762 = 9110000000 diff --git a/docs/changelog.txt b/docs/changelog.txt index 81b71740..650bda2e 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -23,11 +23,15 @@ Version 1.0.0 - not yet released - Renamed bankExists() into isValidBank() - added BIC support: BAV::isValidBIC($bic), BAV::getBICAgencies($bic) + + -[TODO] Add international support for BIC validation. -[TODO] add IBAN rule support -[TODO] evaluate IBAN validation support + - changed format of verifiy.ini into JSON + Version 0.28 - May 26, 2014 --------------------------- diff --git a/tests/ValidatorTest.php b/tests/ValidatorTest.php index 3ed3be39..73dd2104 100644 --- a/tests/ValidatorTest.php +++ b/tests/ValidatorTest.php @@ -7,25 +7,8 @@ /** * check all validators in order to find errors * - * Copyright (C) 2009 Markus Malkusch - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * @package test * @author Markus Malkusch - * @copyright Copyright (C) 2009 Markus Malkusch + * @license GPL */ class ValidatorTest extends \PHPUnit_Framework_TestCase { @@ -167,88 +150,50 @@ public function testAccountLength(Bank $bank, $account) */ public function provideTestAccounts() { - $verifyArray = parse_ini_file(__DIR__.'/../data/verify.ini', true); - if (! $verifyArray) { - throw new RuntimeException("couldn't parse verify.ini."); + $verifyArray = json_decode(file_get_contents(__DIR__ . '/data/accounts.json')); + if (! is_array($verifyArray)) { + throw new \RuntimeException("couldn't parse accounts.json."); } - return array_merge( - $this->getTestAccounts($verifyArray['valid'], true), - $this->getTestAccounts($verifyArray['invalid'], false) + array_walk( + $verifyArray, + function (&$item) { + $item = array($item); + } ); - } - - /** - * @return Array - */ - private function getTestAccounts(Array $testAccounts, $expectedValidation) - { - $accounts = array(); - foreach ($testAccounts as $typeOrBankID => $tests) { - $accounts[] = array( - $typeOrBankID, - preg_split(':\D+:', $tests), - $expectedValidation - ); - - } - return $accounts; + return $verifyArray; } /** * @dataProvider provideTestAccounts */ - public function testAccount($typeOrBankID, Array $accountIDs, $expectedValidation) + public function testAccount(\stdClass $testCase) { - if (strlen($typeOrBankID) <= 2) { - $typeOrBankID = (strlen($typeOrBankID) < 2 ? '0' : '').$typeOrBankID; - $this->assertArrayHasKey($typeOrBankID, self::$implementedBanks); - $bank = self::$implementedBanks[$typeOrBankID]; - - $this->assertEquals($typeOrBankID, $bank->getValidationType()); + if (! empty($testCase->blz)) { + $bank = new Bank(self::$dataBackend, $testCase->blz, $testCase->validator); } else { - try { - $bank = self::$dataBackend->getBank($typeOrBankID); - - } catch (BankNotFoundException $e) { - switch ($e->getBankID()) { - - case '13051052': - case '13051172': - case '81053132': - $bank = new Bank(self::$dataBackend, $e->getBankID(), '52'); - break; - - case '16052072': - case '85055142': - $bank = new Bank(self::$dataBackend, $e->getBankID(), '53'); - break; - - case '80053762': - case '80053772': - case '80053782': - $bank = new Bank(self::$dataBackend, $e->getBankID(), 'B6'); - break; - - case '81053272': - case '86055462': - $bank = new Bank(self::$dataBackend, $e->getBankID(), 'C0'); - break; - - default: - throw $e; - - } - } + $this->assertArrayHasKey($testCase->validator, self::$implementedBanks); + $bank = self::$implementedBanks[$testCase->validator]; + + $this->assertEquals($testCase->validator, $bank->getValidationType()); + } - foreach ($accountIDs as $accountID) { + $checkAccounts = function ($account, $key, $isValid) use ($bank) { $this->assertEquals( - $expectedValidation, - $bank->isValid($accountID), - "$accountID validates wrongly." + $isValid, + $bank->isValid($account), + "$account validates wrongly." ); + }; + + if (isset($testCase->valid)) { + array_walk($testCase->valid, $checkAccounts, true); + + } + if (isset($testCase->invalid)) { + array_walk($testCase->invalid, $checkAccounts, false); } } diff --git a/tests/data/accounts.json b/tests/data/accounts.json new file mode 100644 index 00000000..12720f56 --- /dev/null +++ b/tests/data/accounts.json @@ -0,0 +1,4703 @@ +[ + { + "validator": "00", + "valid": [ + "15727", + "33449", + "41921", + "75952", + "90332", + "158501", + "190967", + "199695", + "238881", + "247841", + "251348", + "283895", + "285643", + "299099", + "0000324350", + "332965", + "333286", + "334664", + "353813", + "357913", + "360289", + "363945", + "364497", + "369231", + "407437", + "409839", + "411827", + "421321", + "424010", + "425157", + "431148", + "432245", + "454413", + "464602", + "483404", + "487306", + "488544", + "512657", + "542043", + "551226", + "561563", + "565697", + "573691", + "578971", + "591842", + "602995", + "603274", + "613349", + "614578", + "616029", + "620690", + "620997", + "624148", + "630434", + "630541", + "637348", + "637439", + "639005", + "640409", + "641779", + "642744", + "646901", + "647339", + "651190", + "663799", + "666677", + "667022", + "673665", + "675801", + "679910", + "681403", + "683219", + "688424", + "710301", + "711200", + "719054", + "724302", + "733113", + "735423", + "741074", + "741496", + "741769", + "742338", + "747998", + "760975", + "769364", + "769521", + "783332", + "791095", + "793885", + "805424", + "805655", + "832196", + "835058", + "854406", + "877415", + "889733", + "904748", + "913707", + "919274", + "943928", + "966689", + "966895", + "1043777", + "1046374", + "1050004", + "1127125", + "1129790", + "1160878", + "1165315", + "0001173780", + "1206317", + "1247329", + "1263607", + "1301514", + "1423813", + "1501824", + "1501832", + "1502129", + "1512813", + "1519701", + "1554658", + "1636232", + "1670868", + "1717222", + "1795798", + "1810662", + "1813500", + "1827682", + "1870179", + "1999515", + "2007458", + "2007961", + "2052587", + "2060127", + "2095602", + "2138030", + "2159846", + "2167484", + "2192193", + "2193860", + "2206068", + "2211944", + "2240505", + "2251460", + "2277275", + "2539021", + "2542850", + "2698595", + "2737674", + "2890929", + "2933125", + "3119138", + "3148350", + "3160538", + "3187853", + "3287141", + "3292190", + "3307576", + "3485083", + "3504255", + "3621182", + "3627064", + "3743465", + "3823010", + "3900404", + "4077210", + "4129490", + "4178570", + "4224473", + "4243283", + "4281374", + "4418851", + "4446779", + "4497921", + "4520052", + "5018312", + "5030481", + "5057393", + "5108402", + "5112065", + "5116207", + "5120605", + "5123682", + "5143987", + "5219662", + "5236021", + "5241948", + "5288683", + "5304118", + "5333141", + "5341557", + "5435623", + "5515812", + "5526371", + "5526439", + "5610126", + "5658687", + "5678198", + "5680939", + "5691225", + "5779814", + "5959531", + "5973722", + "5993951", + "6100549", + "6100556", + "6145643", + "6254189", + "6408454", + "6443436", + "6651137", + "6723563", + "6752992", + "6851984", + "6945661", + "7068125", + "7130065", + "7140858", + "7249444", + "7260284", + "7261290", + "7325137", + "7416662", + "7471469", + "7502982", + "7541337", + "7574700", + "7722036", + "7728819", + "7760861", + "7845803", + "8026098", + "8060873", + "8099962", + "8105488", + "8173544", + "0008192007", + "8244014", + "8395212", + "8552580", + "8620148", + "8723546", + "8724643", + "8735987", + "8749541", + "8846230", + "8896847", + "9204967", + "9233081", + "9271842", + "9290701", + "9324997", + "9370511", + "9435140", + "9830951", + "10108124", + "10280170", + "10291177", + "10337046", + "10575124", + "10643161", + "10661916", + "10678670", + "10699650", + "10756690", + "10777712", + "10859296", + "11132743", + "11145596", + "11153392", + "11283702", + "11415270", + "12265658", + "12405304", + "12509717", + "12570602", + "12722245", + "13017132", + "13136874", + "13139811", + "14033138", + "14283394", + "14520118", + "15017775", + "16013666", + "16026320", + "16026528", + "0017185273", + "17202219", + "17346701", + "18201780", + "18507426", + "18568683", + "19609361", + "20005492", + "20131850", + "20154985", + "20242418", + "20506986", + "20511770", + "20535969", + "21021167", + "22044010", + "22053730", + "22053920", + "22231062", + "22443337", + "22595649", + "22731145", + "23106420", + "23427602", + "23650781", + "25006891", + "25634858", + "27341080", + "27643063", + "28107464", + "0029150471", + "29323086", + "30279251", + "30594576", + "30604664", + "0030658983", + "31112121", + "31453186", + "31500598", + "32102774", + "0032112906", + "33003856", + "33033820", + "33104456", + "33299876", + "35118850", + "36223766", + "36228831", + "37585908", + "38313607", + "38564621", + "40125494", + "41532045", + "43225283", + "43399641", + "43504760", + "43528348", + "43753318", + "0043774819", + "43861434", + "43906320", + "44161677", + "44323871", + "44389385", + "45103504", + "45572336", + "46515441", + "46535555", + "47017868", + "47174248", + "47224027", + "47233432", + "47235197", + "47254115", + "47457825", + "47523170", + "47844964", + "48006993", + "48479869", + "50007723", + "50023936", + "50045749", + "50084193", + "50105865", + "50127091", + "50139831", + "50297449", + "51169357", + "52108610", + "52753506", + "52955119", + "55119754", + "57273633", + "57542169", + "59104307", + "59110940", + "59177535", + "59681296", + "60406329", + "60518321", + "60601861", + "60813839", + "63144281", + "0064608540", + "65495921", + "65615502", + "67412486", + "68568039", + "69300945", + "70078951", + "71111801", + "71353098", + "71863419", + "72893175", + "74233511", + "74593732", + "78253176", + "79233755", + "80143530", + "80150436", + "080167497", + "82561721", + "82733197", + "86114667", + "87134813", + "89234884", + "90140039", + "91563197", + "92013820", + "93034403", + "100025709", + "100043959", + "100049832", + "100078484", + "100083641", + "100091511", + "100094382", + "100143585", + "100165075", + "100195544", + "100197144", + "100218197", + "100220854", + "100243765", + "100483031", + "100610344", + "100624733", + "100630052", + "100631993", + "100654888", + "100683424", + "100696251", + "100720374", + "100744382", + "100756055", + "100759158", + "100907245", + "101058832", + "101060390", + "101133478", + "101249837", + "101543379", + "101586543", + "101902070", + "101909075", + "101956167", + "102070778", + "102105145", + "102142148", + "102305265", + "102685120", + "103042503", + "103104121", + "103235982", + "103393955", + "103454252", + "103500534", + "104140280", + "104241401", + "104350111", + "104981147", + "105014237", + "105097729", + "0105100812", + "105214316", + "105302491", + "105507297", + "105535934", + "105541767", + "106021744", + "106232762", + "106726680", + "106760457", + "107090649", + "107119992", + "107147530", + "107532020", + "107557555", + "107805491", + "109064444", + "0109101980", + "109125005", + "109153049", + "109435990", + "109677245", + "110030590", + "110104874", + "110319969", + "110322468", + "111048682", + "111163325", + "111165775", + "111199279", + "112046610", + "112180450", + "113414601", + "113476915", + "0114106727", + "115057580", + "115348112", + "117069658", + "117070870", + "117076737", + "117076794", + "117213348", + "118128354", + "120015474", + "120026695", + "120751268", + "121234538", + "121313316", + "122202369", + "122802390", + "124030131", + "124101932", + "124111667", + "124398561", + "124643107", + "127077311", + "0128104320", + "128293081", + "129208716", + "129416723", + "129627832", + "129929485", + "130009285", + "130027014", + "130285679", + "130304306", + "130331184", + "131035560", + "133309252", + "133349472", + "133378299", + "133923086", + "134013366", + "134111244", + "134147693", + "134202654", + "0134225697", + "0134241199", + "134251644", + "134447309", + "0134574292", + "134581826", + "135032365", + "135211613", + "135409001", + "135430734", + "136253648", + "137316246", + "138438767", + "138715594", + "139071120", + "140021197", + "140305061", + "140639220", + "140651928", + "141332767", + "143147536", + "145013876", + "145114831", + "145887048", + "148009764", + "149007130", + "149447773", + "150496917", + "150544906", + "150582500", + "151274362", + "154026751", + "155072036", + "155743149", + "157003591", + "157052416", + "0160016010", + "161004635", + "161080007", + "161708011", + "162037733", + "0164033557", + "165012022", + "165013020", + "166009415", + "170104616", + "170720114", + "171709504", + "174027284", + "174076349", + "178183893", + "188002877", + "190020172", + "194018479", + "198024267", + "200223659", + "201076676", + "204478143", + "209876606", + "210524385", + "215006131", + "215885336", + "219018660", + "220143903", + "226304616", + "228750634", + "240086439", + "240091231", + "240310698", + "240431403", + "240768507", + "240994699", + "244729505", + "249653411", + "269919254", + "276002722", + "290056506", + "291148161", + "300012812", + "300036944", + "300220720", + "301000550", + "301015319", + "301032348", + "301039749", + "302109954", + "307043653", + "309000867", + "314024670", + "315051540", + "330205154", + "334007754", + "335009247", + "353001274", + "370068256", + "380414870", + "380614420", + "380833608", + "380843912", + "430494930", + "430563122", + "430780536", + "485755896", + "500178470", + "539290858", + "550218937", + "570611681", + "0590214789", + "0620217885", + "620422014", + "760434043", + "901124792", + "901219618", + "903147817", + "1000213676", + "1000371292", + "1000444446", + "1000687127", + "1004989305", + "1005097983", + "1006626079", + "1009183276", + "1009853704", + "1010794129", + "1011138870", + "1011223797", + "1011312814", + "1012137129", + "1012840706", + "1015819939", + "1015827148", + "1019763612", + "1022790016", + "1022817678", + "1026313013", + "1029189261", + "1032100693", + "1034784551", + "1036751418", + "1042869956", + "1043741816", + "1043762655", + "1044953659", + "1046754220", + "1048750440", + "1049782558", + "1051782363", + "1052923693", + "1058771302", + "1059762755", + "1059789840", + "1060012414", + "1077781761", + "1081034751", + "1081807057", + "1087779706", + "1100018124", + "1100112646", + "1100242328", + "1100636867", + "1111773402", + "1112213374", + "1133822898", + "1139793036", + "1152775092", + "1166413243", + "1200292595", + "1205473901", + "1216016004", + "1216519767", + "1224456879", + "1224506178", + "1233573516", + "1234493284", + "1234567897", + "1235500830", + "1238454696", + "1238500886", + "1242470613", + "1247450537", + "1247461542", + "1251466643", + "1266470861", + "1268512900", + "1278501653", + "1281444693", + "1282504925", + "1300066899", + "1305494021", + "1327489009", + "1336459050", + "1352483315", + "1352498966", + "1382515706", + "1385491970", + "1386474413", + "1386494882", + "1395490087", + "1397462332", + "1397469733", + "1398504371", + "1484538846", + "1505002889", + "1512029735", + "1512033299", + "1550025017", + "1560101782", + "1600169591", + "1600189151", + "1623259734", + "1750529941", + "1800084079", + "2001032610", + "2002621601", + "2002829808", + "2003202302", + "2003895303", + "2005074204", + "3001134703", + "3007405610", + "3007622420", + "4455667784" + ], + "invalid": [ + "6414241", + "51181008", + "71214205", + "179751314", + "1600166307", + "1600176485", + "1600201934" + ] + }, + { + "validator": "01", + "valid": [ + "26084", + "113069", + "120193", + "131429", + "158048", + "203261", + "210931", + "227003", + "314181", + "368883", + "407665", + "613765", + "658830", + "675909", + "687052", + "715058", + "717544", + "718079", + "725938", + "745420", + "746395", + "757614", + "757968", + "781879", + "785710", + "798305", + "872180", + "969419", + "993007", + "1068106", + "1323456", + "1409095", + "1410565", + "1452183", + "1713750", + "1728972", + "1794717", + "1895984", + "1928693", + "1943465", + "2015639", + "2038654", + "2069733", + "2118299", + "2144201", + "2155984", + "2157731", + "2166997", + "2168476", + "2202703", + "2204505", + "2288318", + "2434375", + "2602097", + "2645432", + "2660792", + "2669377", + "2701651", + "2711098", + "2746654", + "2854759", + "3092716", + "3128264", + "3234938", + "3240379", + "3360046", + "3441855", + "3697283", + "3734775", + "3739732", + "3757707", + "3829130", + "3854930", + "3920936", + "5023109", + "5035135", + "5249457", + "5253285", + "5289424", + "5302710", + "5334764", + "5535408", + "5547159", + "5773349", + "5833588", + "6026662", + "6247111", + "6271527", + "6309035", + "6402925", + "6404538", + "6448460", + "6818100", + "7257519", + "7307005", + "7502635", + "7676334", + "7700396", + "7932085", + "8097479", + "8152266", + "8167770", + "8207764", + "8220806", + "8321619", + "8388920", + "8517083", + "8575805", + "8701497", + "9155138", + "9766864", + "9792780", + "10003468", + "10006630", + "10092747", + "10118607", + "10203567", + "10331453", + "10600933", + "10902246", + "11011583", + "11105372", + "11179274", + "11375047", + "11431431", + "11506713", + "11534974", + "11549608", + "11610616", + "0012003624", + "15069225", + "15129983", + "0019191924", + "20407456", + "20459772", + "21153833", + "28105413", + "34115796", + "36110926", + "43107290", + "48069182", + "48288925", + "48298434", + "48298599", + "48519319", + "0049510771", + "79024598", + "79225878", + "110073075", + "110450911", + "111039922", + "111042854", + "118014957", + "400154680", + "400257769", + "440005517", + "440696483", + "520020663", + "560047950", + "650005558", + "680034142", + "800097402", + "805134315", + "930060543", + "970323226", + "7487014533", + "7808006261", + "7817001288", + "7820035928", + "7850004503", + "7855006269", + "7870026509", + "7894005393", + "7895008588" + ] + }, + { + "validator": "02", + "valid": [ + "837547", + "1207253", + "206110073", + "228036623", + "281042020" + ] + }, + { + "validator": "03", + "valid": [ + "1324235", + "0001552183", + "3524411", + "10061406", + "10180769", + "10295401", + "10309905", + "10310431", + "10311421", + "10530419", + "10556853", + "10583749", + "10627894", + "10635582", + "11091519", + "0011578088", + "16075071", + "16081482", + "18512188", + "21019866", + "21045481", + "21265980", + "29516145", + "88900850", + "91204231", + "171066238", + "201061140" + ] + }, + { + "validator": "04", + "valid": [ + "452424", + "26038154", + "100074389", + "100272431", + "101123944", + "106215383", + "112020500", + "112054960", + "118058925", + "120039954", + "120069004", + "121089335", + "129030054", + "0132055440", + "132102120", + "135011479", + "138040461", + "170109716", + "183001213", + "189055382", + "258133560", + "285024684", + "352194565", + "461095011", + "483110731", + "509017468", + "1004626229" + ] + }, + { + "validator": "05", + "valid": [ + "707332", + "715450", + "20602488", + "74451368", + "1000155103", + "1000158676", + "1000232770", + "1119059815", + "1122020909", + "1133076023", + "1143002210", + "1143020991", + "1151024604", + "1190015933", + "1191050683", + "1203108096", + "1204112751", + "1205017813", + "1243105910", + "1252001199", + "1325042959", + "1334003727", + "1395136604" + ], + "invalid": [ + "1151043211" + ] + }, + { + "validator": "06", + "valid": [ + "10987", + "38105", + "151327", + "195502", + "315508", + "397806", + "454761", + "481742", + "501905", + "704903", + "707104", + "753084", + "763608", + "868108", + "870501", + "1070908", + "1306812", + "1445308", + "1557750", + "1658565", + "2009420", + "2087715", + "2206102", + "2406608", + "2420600", + "2434709", + "2657406", + "2838010", + "3081702", + "3151468", + "3320502", + "3380009", + "3574512", + "3684954", + "4007409", + "4190203", + "4194446", + "4286502", + "4366018", + "4369939", + "4398408", + "4543378", + "4563492", + "4833333", + "5110904", + "5220009", + "5263530", + "5395704", + "5582407", + "5847010", + "6011306", + "6014607", + "6194605", + "6205208", + "6306209", + "6406300", + "9082107", + "10038219", + "10041007", + "10391741", + "11142907", + "11312012", + "11731317", + "12036701", + "12128800", + "14179704", + "15253401", + "17600010", + "18050714", + "18090171", + "20009578", + "20095601", + "21221805", + "21287008", + "21525308", + "22073001", + "22184202", + "22208802", + "22550608", + "23605600", + "26129400", + "30093801", + "31143306", + "032017711", + "33103409", + "33250266", + "33276591", + "33439377", + "34222665", + "37082805", + "37098302", + "38005642", + "38121405", + "42912808", + "54785208", + "58451304", + "60006059", + "60010501", + "60561702", + "60789401", + "63961906", + "64132407", + "65448017", + "70004755", + "70959003", + "71466019", + "74157920", + "75034202", + "76138125", + "0076940576", + "77373608", + "78411910", + "79118508", + "94012341", + "100677580", + "101981908", + "102029305", + "102094816", + "102115783", + "102123921", + "106036080", + "106269807", + "107743103", + "107794018", + "108053429", + "110596600", + "113087005", + "120313100", + "122009440", + "124058384", + "126229402", + "129115408", + "132491909", + "0136091204", + "139098609", + "140933007", + "142081059", + "148015120", + "150204402", + "0151014615", + "162099949", + "167522807", + "201677009", + "202102301", + "212123153", + "300257488", + "302284016", + "316025803", + "0332061151", + "352029106", + "400978344", + "402626020", + "442087725", + "455643694", + "464958657", + "472028030", + "502350013", + "600449010", + "604534011", + "700894010", + "704151012", + "800693012", + "0822132146", + "912049876", + "932062453", + "1000076917", + "1000141077", + "1000401621", + "1002002694", + "1004455017", + "1005719018", + "1007510019", + "1010017900", + "1011056489", + "1011058627", + "1012057918", + "1017551007", + "1017984000", + "1070019317", + "1104002621", + "1110016782", + "1151022525", + "1160016996", + "1202318025", + "1305964014", + "1401197016", + "1404594016", + "1440553024", + "1505051013", + "1604360010", + "2103064018", + "2200194015", + "2300528018", + "2501392017", + "2700165011", + "3027527018", + "3084786003", + "3190874000", + "3301012011", + "3500818017", + "3608074014", + "3611790200", + "3806419000", + "3901322006", + "4030490202", + "4031242300", + "4217071904", + "4273366011", + "4401416736", + "4805013007", + "5071411003", + "5073321010", + "5203248018", + "5417939000", + "5500226015", + "5910849001", + "5948188009", + "6715561008", + "6889719000", + "7016101006", + "7018052002", + "7022656001", + "7029259008", + "7042509005", + "7087604009", + "7101991002", + "7168541001", + "7504535015", + "7800903003", + "8214910200", + "8705406007", + "9602494036" + ] + }, + { + "validator": "07", + "valid": [ + "100521509", + "100529704", + "114082618" + ] + }, + { + "validator": "09", + "valid": [ + "076187", + "348754", + "532061", + "534684", + "1542321", + "1716002", + "5344401", + "0010487098", + "13263033", + "0224032555", + "289388600", + "363935500", + "0365090255", + "0601803230", + "0603545730", + "0827910430", + "851194900", + "1500807210", + "1501525610", + "2825252001", + "3012082935" + ] + }, + { + "validator": "A0", + "valid": [ + "3287", + "18761", + "28290", + "54500", + "521003287" + ] + }, + { + "validator": "A1", + "valid": [ + "0010030005", + "0010030997", + "1010030054" + ], + "invalid": [ + "0000030005", + "0010030998", + "0110030005" + ] + }, + { + "validator": "A2", + "valid": [ + "461954", + "100059583", + "111017588", + "118010529", + "170017107", + "215108716", + "3456789012", + "3456789019", + "5678901231", + "6789012348" + ], + "invalid": [ + "0123456789", + "1234567890" + ] + }, + { + "validator": "A3", + "valid": [ + "12106810", + "12835781", + "14490706", + "15895793", + "16474511", + "18952178", + "22721142", + "22943145", + "29804108", + "30181232", + "103338646", + "106300569", + "107341166", + "111354734", + "119284073", + "0123456782", + "0123456789", + "134164664", + "139011761", + "1142995800", + "1155783002", + "1234567890", + "1234567897", + "2110641665", + "9876543210" + ], + "invalid": [ + "0543216789", + "6543217890" + ] + }, + { + "validator": "A4", + "valid": [ + "0000862342", + "0000905844", + "0001123458", + "0004711172", + "0004711173", + "0007093330", + "0007093335", + "0664040000", + "1199503010", + "1299503117", + "5030101099", + "8499421235", + "8997710000" + ], + "invalid": [ + "0000399443", + "0000553313", + "6099702031" + ] + }, + { + "validator": "A5", + "valid": [ + "0000051640", + "0000159590", + "0000251437", + "0007948344", + "750176844", + "9380027210", + "9932290910", + "9941510001", + "9961230019" + ], + "invalid": [ + "0000251438", + "000798345", + "9941510002", + "9961230020" + ] + }, + { + "validator": "A6", + "valid": [ + "17", + "55300030", + "150178033", + "600003555", + "800048548", + "0855000014", + "900291823" + ], + "invalid": [ + "305888", + "200071280", + "810033652", + "860000817" + ] + }, + { + "validator": "A7", + "valid": [ + "19010008", + "19010438", + "19010660", + "19010876", + "209010892" + ], + "invalid": [ + "209010893" + ] + }, + { + "validator": "A8", + "valid": [ + "1340967", + "1359100", + "2812584", + "3066045", + "3122972", + "3173283", + "3388344", + "3464075", + "3503398", + "3560279", + "5177022", + "5645956", + "6906028", + "7015798", + "7436660", + "7436661", + "7436670", + "7436678", + "8911428", + "199100002", + "199100004", + "2599100003", + "3199204090", + "3199500501" + ], + "invalid": [ + "1340966", + "3503391", + "7436666", + "7436677", + "9934567", + "99100110", + "99345678", + "199100040", + "3199500502" + ] + }, + { + "validator": "A9", + "valid": [ + "86725", + "87700", + "504360", + "822035", + "5043608", + "5114348", + "32577083" + ], + "invalid": [ + "86724", + "292497", + "30767208" + ] + }, + { + "validator": "B0", + "valid": [ + "1000000406", + "1000000606", + "1035791538", + "1126939724", + "1197423162", + "1197423460" + ], + "invalid": [ + "51234309", + "51234901", + "535791830", + "600000606", + "1000000405", + "1035791539", + "8035791532", + "8137423260" + ] + }, + { + "validator": "B1", + "valid": [ + "1434253150", + "2746315471", + "7414398260", + "8347251693" + ], + "invalid": [ + "0123456789", + "2345678901", + "5678901234" + ] + }, + { + "validator": "B2", + "valid": [ + "0020012357", + "21086079", + "21284318", + "23006358", + "0080012345", + "0926801910", + "1002345674", + "8000990054", + "9000481805" + ], + "invalid": [ + "0020012399", + "0080012347", + "0080012370", + "0932100027", + "3310123454", + "8000990057", + "8011000126", + "9000481800", + "9980480111" + ] + }, + { + "validator": "B3", + "valid": [ + "19", + "140", + "1000000060", + "1002798417", + "8409915001", + "9635000101", + "9730200100" + ], + "invalid": [ + "2799899", + "1000000111", + "9635100101", + "9730300100" + ] + }, + { + "validator": "B4", + "valid": [ + "51640", + "251437", + "7948344", + "9380027210", + "9932290910", + "9941510001", + "9961230019" + ], + "invalid": [ + "159590", + "251438", + "7948345", + "9941510002", + "9961230020" + ] + }, + { + "validator": "B5", + "valid": [ + "0123456782", + "0130098767", + "0159006955", + "1045000252", + "1151043216", + "2000123451", + "9000939033" + ], + "invalid": [ + "0023456787", + "0056789018", + "0159004165", + "2345678901", + "3045000333", + "5678901234", + "7414398260", + "8347251693", + "9000293707" + ] + }, + { + "validator": "B6", + "valid": [ + "0269876545", + "9110000000" + ], + "invalid": [ + "0269456780", + "9111000000" + ] + }, + { + "validator": "B7", + "valid": [ + "0001001008", + "0001007222", + "0001057887", + "0005922372", + "0700001529", + "0730000019", + "0800107653", + "0810011825" + ], + "invalid": [ + "0001057886", + "0003815570", + "0005620516", + "0740912243", + "0893524479" + ] + }, + { + "validator": "B8", + "valid": [ + "0734192657", + "2938692523", + "3145863029", + "5432198760", + "6932875274", + "9070873333" + ], + "invalid": [ + "0132572975", + "9000412340", + "9310305011" + ] + }, + { + "validator": "B9", + "valid": [ + "1253657", + "4353631", + "7125633", + "41203755", + "58467232", + "61287958", + "81069577", + "87920187" + ], + "invalid": [ + "2356412", + "5435886", + "9435414", + "43025432", + "54352684", + "61256523", + "86521362", + "88034023" + ] + }, + { + "validator": "C1", + "valid": [ + "0446786040", + "0478046940", + "0701625830", + "0701625840", + "0882095630", + "5432112349", + "5543223456", + "5654334563", + "5765445670", + "5876556788" + ], + "invalid": [ + "0446786240", + "0478046340", + "0701625440", + "0701625730", + "0882095130", + "5432112341", + "5543223458", + "5654334565", + "5765445672", + "5876556780" + ] + }, + { + "validator": "C2", + "valid": [ + "2394871426", + "4218461950", + "5127485166", + "7352569148", + "8738142564" + ], + "invalid": [ + "0328705282", + "9024675131" + ] + }, + { + "validator": "C3", + "valid": [ + "19919", + "4431276", + "9294182", + "9000010006", + "9000420530", + "9000577650" + ], + "invalid": [ + "17002", + "122448", + "123451", + "9000731120", + "9000733227", + "9000734028" + ] + }, + { + "validator": "C4", + "valid": [ + "0000000019", + "0000094455", + "0000292932", + "9000010006", + "9000420530", + "9000577650" + ], + "invalid": [ + "0000000017", + "0000094459", + "0000292933", + "9000726558", + "9000732000", + "9001733457" + ] + }, + { + "validator": "C5", + "valid": [ + "0000301168", + "0000302554", + "0300020050", + "0300566000", + "1000061378", + "1000061412", + "3060188103", + "3070402023", + "4450164064", + "4863476104", + "5000000028", + "5000000391", + "6450008149", + "6800001016", + "9000100012", + "9000210017" + ], + "invalid": [ + "0000302589", + "0000507336", + "0302555000", + "0302589000", + "1000061457", + "1000061498", + "3081000783", + "3081308871", + "4864446015", + "4865038012", + "5000001028", + "5000001075", + "6450008150", + "6542812818", + "9000110012", + "9000300310" + ] + }, + { + "validator": "C6", + "valid": [ + "0000065516", + "0203178249", + "1031405209", + "1082012201", + "2003455189", + "2004001016", + "3068459207", + "3110150986", + "4012660028", + "4100235626", + "5035105948", + "5286102149", + "6028426119", + "6861001755", + "7000202027", + "7002000023", + "7008199027", + "8526080015", + "8711072264", + "9000430223", + "9000781153" + ], + "invalid": [ + "0091423614", + "0525111212", + "1000118821", + "1082311275", + "2004306518", + "2016001206", + "3462816371", + "3622548632", + "4000456126", + "4232300158", + "5002684526", + "5564123850", + "6295473774", + "6640806317", + "7000062022", + "7006003027", + "8348300002", + "8654216984", + "9000260986", + "9000641509" + ] + }, + { + "validator": "C7", + "valid": [ + "3500022", + "38150900", + "39101181", + "94012341", + "600103660", + "5073321010" + ], + "invalid": [ + "987614325", + "1234517892" + ] + }, + { + "validator": "C8", + "valid": [ + "0022007130", + "0123456789", + "0552071285", + "3456789012", + "3456789019", + "5678901231" + ], + "invalid": [ + "1234567890", + "9012345678" + ] + }, + { + "validator": "C9", + "valid": [ + "0123456789", + "3456789019", + "5678901231" + ], + "invalid": [ + "1234567890", + "3456789012", + "9012345678" + ] + }, + { + "validator": "D0", + "valid": [ + "5700000000", + "5710000000", + "5799999999", + "6100272324", + "6100273479" + ], + "invalid": [ + "6100272885", + "6100273377", + "6100274012" + ] + }, + { + "validator": "D1", + "valid": [ + "0082012203", + "1452683581", + "2129642505", + "3002000027", + "4230001407", + "5000065514", + "6001526215", + "7126502149", + "9000430223" + ], + "invalid": [ + "0000260986", + "1062813622", + "2256412314", + "3012084101", + "4006003027", + "5814500990", + "6128462594", + "7000062035", + "8003306026", + "9000641509" + ] + }, + { + "validator": "D2", + "valid": [ + "51181008", + "71214205", + "189912137", + "235308215", + "1234567897", + "4455667784" + ], + "invalid": [ + "6414241", + "179751314" + ] + }, + { + "validator": "D3", + "valid": [ + "1600169591", + "1600189151", + "1800084079", + "6019937007", + "6021354007", + "6030642006" + ], + "invalid": [ + "6019835001", + "6025017009", + "6028267003" + ] + }, + { + "validator": "D4", + "valid": [ + "1112048219", + "2024601814", + "3000005012", + "4143406984", + "5926485111", + "6286304975", + "7900256617", + "8102228628", + "9002364588" + ], + "invalid": [ + "0359432843", + "1000062023", + "2204271250", + "3051681017", + "4000123456", + "5212744564", + "6286420010", + "7859103459", + "8003306026", + "9916524534" + ] + }, + { + "validator": "D5", + "valid": [ + "0000100062", + "0000100088", + "0000127787", + "0004711172", + "0004711173", + "0007093330", + "0007093335", + "0099632004", + "1799222116", + "5999718138" + ], + "invalid": [ + "0000100084", + "0000100085", + "0001123458", + "0399242139", + "1999204293", + "3299632008", + "8623420004" + ] + }, + { + "validator": "D6", + "valid": [ + "3409", + "585327", + "1650513", + "3601671056", + "4402001046", + "6100268241", + "7001000681", + "9000111105", + "9001291005" + ], + "invalid": [ + "33394", + "595795", + "16400501", + "3615071237", + "6039267013", + "6039316014", + "7004017653", + "9002720007", + "9017483524" + ] + }, + { + "validator": "D7", + "valid": [ + "0134637709", + "0201005939", + "0230103715", + "0301000434", + "0330035104", + "0420001202", + "0500018205", + "0602006999" + ], + "invalid": [ + "0135638809", + "0202005939", + "0231307867", + "0301005331", + "0330034104", + "0420001302", + "0501006102", + "0601006977" + ] + }, + { + "validator": "D8", + "valid": [ + "0010000000", + "0010000001", + "0099999998", + "0099999999", + "1403414848", + "6800000439", + "6899999954" + ], + "invalid": [ + "0000260986", + "0009999999", + "0100000000", + "1062813622", + "3012084101" + ] + }, + { + "validator": "D9", + "valid": [ + "0123456782", + "0123456789", + "1100132044", + "1100669030", + "1234567890", + "1234567897", + "9876543210" + ], + "invalid": [ + "0543216789", + "1100789043", + "1100914032", + "6543217890" + ] + }, + { + "validator": "E0", + "valid": [ + "2610015", + "1234568013", + "1534568010", + "8741013011" + ], + "invalid": [ + "2710014", + "1234769013", + "9741015011" + ] + }, + { + "validator": "E1", + "valid": [ + "0100041104", + "0100054106", + "0200025107" + ], + "invalid": [ + "0081313890", + "0150013107", + "0200035101", + "0987402008", + "4268550840" + ] + }, + { + "validator": "10", + "valid": [ + "268100", + "405221", + "1066889", + "1249754", + "2055007", + "2190869", + "2740001", + "3157008", + "4064224", + "4927397", + "7219008", + "7305001", + "8783004", + "0011313005", + "12345008", + "13692003", + "0013702017", + "0013711008", + "14088002", + "15977005", + "21564000", + "25168177", + "28396006", + "29342007", + "30177383", + "31251005", + "31741002", + "32710011", + "34247009", + "34409009", + "36757004", + "41683005", + "46199004", + "50018906", + "58032002", + "58583009", + "59083000", + "61007404", + "62162004", + "62248502", + "62320009", + "63919001", + "65383206", + "65421000", + "66933005", + "67427006", + "69748004", + "71089004", + "71934006", + "72769009", + "74509004", + "77126009", + "77823001", + "81424000", + "82319006", + "85355003", + "86504002", + "87654008", + "88279707", + "93107501", + "100919200", + "104064005", + "110145003", + "114126003", + "115634002", + "132623005", + "139350004", + "141401001", + "141508108", + "146468007", + "172570000", + "183699009", + "209611006", + "255658001", + "265281008", + "274018004", + "302329005", + "341294004", + "344455009", + "370509005", + "382813006", + "431361002", + "434894001", + "452586003", + "624107000", + "653792000", + "0672453002", + "0709427000", + "4322740006" + ] + }, + { + "validator": "11", + "valid": [ + "769010", + "3059227", + "5661730", + "7547927", + "7761619" + ] + }, + { + "validator": "13", + "valid": [ + "0225524", + "0247387", + "1002054", + "1005628", + "1039767", + "1049568", + "1055292", + "1058056", + "1159656", + "1182468", + "1194398", + "1201375", + "1258318", + "1268275", + "1311521", + "1413574", + "1495035", + "1501055", + "1503861", + "1615384", + "1934264", + "2007763", + "2014660", + "2053809", + "2107597", + "2120061", + "2199099", + "2205524", + "2220267", + "2226579", + "2332294", + "2602258", + "2722320", + "2737450", + "2762219", + "2781243", + "2803120", + "2872984", + "2915288", + "2928208", + "3004058", + "3150679", + "3301736", + "3319423", + "3409083", + "3610011", + "3657020", + "3992781", + "4261285", + "4301313", + "4440400", + "4500435", + "4528493", + "5020946", + "5262282", + "5272943", + "5502448", + "5637707", + "5712369", + "5715966", + "5885082", + "6101851", + "6183636", + "6189559", + "6284244", + "6333868", + "6402671", + "6412365", + "6557557", + "6739064", + "6815211", + "6824817", + "7013998", + "7103260", + "7253032", + "7307630", + "7396302", + "7455223", + "7682065", + "7917495", + "8018129", + "8020083", + "0008107260", + "8107260", + "8255754", + "8279374", + "8327694", + "8491714", + "8656654", + "8674285", + "8844011", + "8913790", + "8962060", + "8983447", + "61895598", + "142400100", + "169622800", + "180449101", + "183613900", + "291176600", + "300574100", + "360460001", + "363743600", + "414410102", + "420499600", + "458348000", + "640575700", + "654143700", + "800317000", + "871638301", + "887051100", + "2035269000", + "2052828100", + "2456073600", + "2476822200", + "2501728000", + "2510678600", + "2519056600", + "2586066300", + "2609531900", + "2628892200", + "2675906200", + "2758889000", + "2923239800" + ] + }, + { + "validator": "14", + "valid": [ + "0002212269", + "0005405858", + "0005534550", + "0102385015", + "0105451078", + "0301360175" + ] + }, + { + "validator": "17", + "valid": [ + "0446786040" + ] + }, + { + "validator": "19", + "valid": [ + "0200520016", + "0240334000" + ] + }, + { + "validator": "20", + "valid": [ + "479381", + "824305", + "1154257", + "1273426", + "1369725", + "1899325", + "2159902", + "2322323", + "2325640", + "2623714", + "2639092", + "8055335", + "44412827", + "54514800", + "54518890", + "54547881", + "0104029366", + "104029633", + "114013560", + "120044099", + "170154270", + "181026384", + "230253873", + "240293274", + "240317220", + "240370147", + "310192048", + "310284317", + "320321924", + "320335895", + "480891508", + "0544531612", + "574805036", + "610113003", + "640272290", + "730014240", + "780125037", + "810392216", + "820158089", + "930220650", + "940165139", + "970106041", + "990356221", + "1000110709", + "1000162962", + "1000288044", + "1010131024", + "1010201480", + "1040114438", + "1100016011", + "1112141061", + "1120106911", + "1130170400", + "1160163274", + "1180020266", + "1205186871", + "1210254677", + "1210424386", + "1210444506", + "1220039973", + "1220128160", + "1220132523", + "1220251492", + "1231080236", + "1231085270", + "1240147500", + "1320002834", + "1320019990", + "1320084253", + "1320244773", + "1360159289", + "1370017720", + "1384012946", + "1400032837", + "1410142732", + "1420005622", + "1420025844", + "1420186740", + "1440102879", + "1440116306", + "1440255519", + "1450066506", + "1450118832", + "1455022361", + "1490182744", + "1520054455", + "1525023892", + "1560027149", + "1564041421", + "1600040434", + "1640002142", + "1642902205", + "1654694769", + "1700189260", + "1704007417", + "1705150698", + "1714079690", + "1770003149", + "1770007225", + "1795109285", + "1800081215", + "1800277241", + "1800813658", + "1800858686", + "1800887937", + "1801244940", + "1801587961", + "1801802145", + "1802124094", + "1878755486", + "2020173223", + "2030269606", + "2060200442", + "2101438910", + "2105426096", + "2194924089", + "2194929749", + "2301484389", + "2303032698", + "2334006796", + "2334024638", + "2623445373", + "2804376802", + "4000009449", + "4000014523", + "4000078416", + "4000120463", + "4000514887", + "4000665222", + "4000780242", + "4000873780", + "4001159169", + "4002288760", + "4010033245", + "4011104871", + "4017076870", + "4020393996", + "4040119059", + "4043081630", + "4046047734", + "4050029788", + "4074018794", + "4074027998", + "4081029577", + "4110254243", + "4110265164", + "4110268384", + "4111124548", + "4116181949", + "4120172525", + "4120581727", + "4124535177", + "4134457470", + "4134472240", + "4134477781", + "4134478788", + "4134486896", + "4150092520", + "4210070896", + "4211162638", + "4329021167", + "4504025855", + "4505017864", + "4505059532", + "4506021067", + "4509009300", + "4516061002", + "4517017260", + "4521015633", + "4521024268", + "4532004433", + "4538017561", + "4550132634", + "4573023866", + "4611018860", + "4611022329", + "4616000854", + "4636004502", + "4709008839", + "4740039686", + "4810013486", + "4814031187" + ] + }, + { + "validator": "21", + "valid": [ + "1003000905" + ] + }, + { + "validator": "24", + "valid": [ + "138301", + "2654808", + "6654802", + "0008312466", + "12012805", + "15784605", + "19930102", + "20722857", + "37508101", + "0054539709", + "58033469", + "75355664", + "87347466", + "97325461", + "104314104", + "128062504", + "147889708", + "149072705", + "159847662", + "161217609", + "163663707", + "172260109", + "172733703", + "189685304", + "207866608", + "211454501", + "221590752", + "222634101", + "223608502", + "225190902", + "243892469", + "245559463", + "245570906", + "250957205", + "252751203", + "0259545855", + "266106306", + "289996202", + "294453309", + "0303960501", + "312990467", + "317000302", + "335891752", + "341082808", + "351588305", + "354485809", + "358419756", + "367494465", + "370155702", + "371201755", + "373120600", + "376977706", + "380945509", + "382158757", + "391181603", + "393451100", + "395379808", + "396143755", + "397829304", + "400435609", + "407944107", + "420549466", + "428720804", + "429603103", + "470512207", + "476474805", + "477489500", + "478534602", + "0484872103", + "489812106", + "506077201", + "507396309", + "512418804", + "523324465", + "535455805", + "536429309", + "541037309", + "549391804", + "549458463", + "567307467", + "574440461", + "594760436", + "609110807", + "612677805", + "615312806", + "615669100", + "619757433", + "619987466", + "620882307", + "621493462", + "623310806", + "630364305", + "636860205", + "641340801", + "642856201", + "643090307", + "656888800", + "658759801", + "661216804", + "0674808207", + "679178803", + "682845800", + "687280608", + "689825603", + "696038306", + "707906603", + "769190208", + "773147304", + "808330206", + "817070108", + "822181103", + "826645800", + "836159809", + "853913605", + "857088677", + "857366204", + "858630208", + "862839201", + "868388461", + "871362908", + "872698209", + "875801858", + "881293200", + "883517467", + "891832433", + "893849100", + "919329609", + "924004808", + "0924938309", + "932805200", + "935340904", + "938127804", + "942404205", + "948020200", + "961883807", + "962622805", + "972353801", + "994574203", + "995556208", + "1306118605", + "3307118608", + "9307118603" + ] + }, + { + "validator": "25", + "valid": [ + "201189283", + "215160754", + "260322814", + "521382181" + ] + }, + { + "validator": "26", + "valid": [ + "0005501024", + "0520309001", + "1111118111" + ] + }, + { + "validator": "27", + "valid": [ + "311068", + "1026251", + "1168228", + "1998640", + "2288363", + "2417855", + "2529915", + "2949741", + "3436169", + "6438071", + "6506448", + "7234313", + "8348336", + "24022022", + "105478820", + "2847169488" + ] + }, + { + "validator": "28", + "valid": [ + "1025100", + "11172400", + "12161400", + "13962900", + "14180100", + "14701000", + "16062800", + "19999000", + "25712500", + "30037300", + "31672500", + "32767000", + "81972700", + "86817500", + "90051600", + "94383500", + "108927700", + "109083600", + "120234000", + "128460600", + "134365300", + "146438800", + "185539500", + "207806600", + "281545100", + "356055400", + "417539500", + "422851000", + "500076900", + "704899800", + "706799200", + "712864900", + "802350600", + "965291400", + "1003320300", + "1300379800", + "1301472200", + "1500945900", + "1701922200", + "2613786000", + "3000134000", + "4202778000", + "4804141600", + "4804373700", + "9130000201" + ] + }, + { + "validator": "29", + "valid": [ + "3145863029" + ] + }, + { + "validator": "31", + "valid": [ + "0263160165", + "1000000524", + "1000000583" + ] + }, + { + "validator": "32", + "valid": [ + "6190", + "12610", + "17191", + "24384", + "26930", + "27944", + "39772", + "40215", + "43583", + "44644", + "72621", + "72699", + "82872", + "128821", + "157260", + "232254", + "405868", + "413640", + "457442", + "536938", + "611050", + "747564", + "1113402", + "1408518", + "1870181", + "2002124", + "2034069", + "2142562", + "2213060", + "2466570", + "2480794", + "2551918", + "2721155", + "2738252", + "2872269", + "3009807", + "3024547", + "3573060", + "3945138", + "4027000", + "4028554", + "4046463", + "4256484", + "4328663", + "4389670", + "4517385", + "4557298", + "4575288", + "4610202", + "4629124", + "4793706", + "4840151", + "5028256", + "5412200", + "5534348", + "5822181", + "5870488", + "5944724", + "5951917", + "6020879", + "6818501", + "7380119", + "7909497", + "8286035", + "8637725", + "9141405", + "100133361", + "0121114867", + "0122116979", + "200070947", + "1709107983", + "9030101192", + "9245500460" + ] + }, + { + "validator": "33", + "valid": [ + "48658", + "76058", + "84956", + "243604", + "388874", + "414603" + ] + }, + { + "validator": "34", + "valid": [ + "1719500", + "2197900", + "4484700", + "4556700", + "5547400", + "7666200", + "8556900", + "10395800", + "17223211", + "17733200", + "23269600", + "24680119", + "25998701", + "44289600", + "51010701", + "61681700", + "62232801", + "67255200", + "69111201", + "87344200", + "91230900", + "108128700", + "109522400", + "110375700", + "151497800", + "211211000", + "255603700", + "300457600", + "428759800", + "462687900", + "657944700", + "704449500", + "751781100", + "831599801", + "912976700", + "1102503503", + "1303805900", + "1402578600", + "2205169300", + "2267965900", + "2385868300", + "3302596800", + "3604813700", + "4019966700", + "4100063000", + "5021301200", + "5155223500", + "5226472900", + "5801714701", + "6003572300", + "6102129400", + "6159335600", + "8703609900", + "8740184200", + "8805374700", + "9913000700", + "9914001000" + ] + }, + { + "validator": "35", + "valid": [ + "101599", + "101709", + "102349", + "102921", + "107451", + "108443" + ] + }, + { + "validator": "36", + "valid": [ + "113178", + "146666" + ] + }, + { + "validator": "37", + "valid": [ + "624315", + "632500" + ] + }, + { + "validator": "38", + "valid": [ + "191919", + "302519", + "915024", + "1009082", + "1100660", + "1128073", + "1307258", + "1609627", + "1938842", + "2376159" + ] + }, + { + "validator": "39", + "valid": [ + "200205", + "10019400" + ] + }, + { + "validator": "40", + "valid": [ + "1258345", + "3231963", + "6215820003" + ] + }, + { + "validator": "41", + "valid": [ + "0166805317", + "4013410024", + "4016660195", + "4019151002", + "4019310079", + "4019340829" + ] + }, + { + "validator": "42", + "valid": [ + "59498", + "59510" + ] + }, + { + "validator": "43", + "valid": [ + "2033552", + "6135244", + "9516893476" + ] + }, + { + "validator": "44", + "valid": [ + "889006", + "2618040504" + ] + }, + { + "validator": "45", + "valid": [ + "0000012340", + "0100114240", + "0994681254", + "1000199999", + "3545343232", + "4013410024" + ] + }, + { + "validator": "46", + "valid": [ + "0235468612", + "0837890901", + "1041447600" + ] + }, + { + "validator": "47", + "valid": [ + "1018000", + "1003554450" + ] + }, + { + "validator": "48", + "valid": [ + "2959730", + "93703660" + ] + }, + { + "validator": "49", + "valid": [ + "1121799", + "1444160", + "1826128", + "2195865", + "3278482", + "3374520", + "4152679", + "4928024", + "190388439" + ] + }, + { + "validator": "50", + "valid": [ + "4000005001", + "4444442001", + "5850797000", + "6142451000", + "6144837000" + ] + }, + { + "validator": "51", + "valid": [ + "0000156071", + "0000156078", + "164670", + "201178", + "270350", + "340968", + "458966", + "592242", + "1009588", + "0001156071", + "0001156136", + "0001234567", + "2056778", + "0099100010", + "101356073", + "0199100002", + "0199100004", + "2599100002", + "2599100003", + "3199204090", + "3199500501" + ], + "invalid": [ + "0099100110", + "0099345678", + "0199100040" + ] + }, + { + "validator": "54", + "valid": [ + "4900010987", + "4964137395" + ] + }, + { + "validator": "56", + "valid": [ + "0290545005", + "9718304037" + ] + }, + { + "validator": "57", + "valid": [ + "0105781645", + "0112762973", + "0203861428", + "0208762720", + "0210772314", + "0405542767", + "0408720610", + "0508750313", + "0610784275", + "0802713267", + "0803732716", + "0804841115", + "0905712134", + "1004731551", + "1105812120", + "1110742116", + "1201760575", + "1204762751", + "1209752022", + "1407781403", + "1412720611", + "1506801596", + "1509701720", + "1609751400", + "1702770213", + "1702772364", + "1706812524", + "1711764016", + "1801810233", + "1805761311", + "1906721722", + "1907791678", + "1909700805", + "2204762175", + "2204840420", + "2205812216", + "2208483021", + "2210811386", + "2410781111", + "2603784092", + "2802752203", + "2804540670", + "2811722469", + "2901554056", + "2901784132", + "2908752583", + "2910751345", + "2911792113", + "3003711345", + "3007762732", + "3101752218", + "3251080371", + "3891234567", + "5001050352", + "5045090090", + "7400060823", + "7500021766", + "7777778800", + "7800028282", + "8100244186", + "9322111030", + "9400001734" + ], + "invalid": [ + "1813499124", + "2206735010", + "5302707782", + "6412121212" + ] + }, + { + "validator": "58", + "valid": [ + "180881120", + "1000870595", + "1015222224", + "1800293377", + "3703169668", + "9200654108" + ] + }, + { + "validator": "59", + "valid": [ + "110105152", + "115075806" + ] + }, + { + "validator": "61", + "valid": [ + "0260760282", + "0260760481", + "1146720600", + "2063099200", + "7806114000" + ] + }, + { + "validator": "62", + "valid": [ + "5029076701" + ] + }, + { + "validator": "63", + "valid": [ + "0100206", + "0100230", + "0115055", + "0119008", + "0122135", + "0123927", + "0131185", + "0134312", + "0138271", + "0145862", + "0149955", + "0150870", + "0156265", + "0162065", + "167908", + "0169631", + "0173948", + "0177840", + "0187823", + "0188037", + "0195123", + "0200196", + "0208405", + "0210666", + "0212092", + "0222380", + "0223537", + "0226555", + "0231720", + "0232140", + "0245811", + "0246579", + "0250936", + "0252247", + "0257063", + "0260653", + "0272476", + "0282194", + "0291864", + "0303016", + "0304345", + "0308015", + "0312439", + "0322982", + "0323410", + "0323535", + "0324376", + "0325191", + "0330183", + "0341222", + "0342451", + "0356758", + "0366633", + "0382390", + "0400572", + "0401273", + "0401943", + "0403493", + "0409060", + "0411421", + "0415372", + "0430629", + "0432575", + "0433243", + "0444638", + "0473876", + "0477927", + "0496273", + "503458", + "0506758", + "0511535", + "0516369", + "0520486", + "0521666", + "0522268", + "0541698", + "0602656", + "0611798", + "0630541", + "0709568", + "0715417", + "0750752", + "0781831", + "0806786", + "0823419", + "830307", + "0853093", + "0858688", + "875344", + "0900019", + "0912642", + "0916445", + "0966663", + "0979864", + "1011071", + "1013887", + "1028273", + "1038538", + "1053198", + "1076710", + "1079318", + "1094846", + "1095843", + "1130194", + "1134345", + "1134675", + "1164359", + "1195718", + "1212877", + "1214527", + "1214535", + "1216266", + "1225911", + "1231315", + "0001234566", + "1238765", + "1239797", + "1267970", + "1268044", + "1301407", + "1305457", + "1331537", + "1335355", + "1335587", + "1416288", + "1453216", + "1488493", + "1543271", + "1561067", + "1564897", + "1587401", + "1716026", + "1720176", + "1722834", + "1741115", + "1743855", + "1750017", + "1756006", + "1801661", + "1810621", + "1841907", + "1857523", + "0001869791", + "1919588", + "1941723", + "1977206", + "1991017", + "1992015", + "1993898", + "2000263", + "2015741", + "2021764", + "2038222", + "2043255", + "2051357", + "2081693", + "2108033", + "2114650", + "2116127", + "2130953", + "2137552", + "2222883", + "2224533", + "2242717", + "2243178", + "2303253", + "2343788", + "2352573", + "2385631", + "2421618", + "2435600", + "2439594", + "2440071", + "2504660", + "2506210", + "2512929", + "2515641", + "2523793", + "2714202", + "2717932", + "2750578", + "2768208", + "2776011", + "2777076", + "2813095", + "2817369", + "2885325", + "3015773", + "3020757", + "3024387", + "3029766", + "3035292", + "3076072", + "3127594", + "3172269", + "3201076", + "3206083", + "3214384", + "3220050", + "3228889", + "3237625", + "3260759", + "3380243", + "3390010", + "3466521", + "3505708", + "3510849", + "3513132", + "3580487", + "3588928", + "3614401", + "3631231", + "3722410", + "3742186", + "3743978", + "3779238", + "3807401", + "3838000", + "3900388", + "3900628", + "3912441", + "3916293", + "3945037", + "3946829", + "3947322", + "3980224", + "3985082", + "3991031", + "4000808", + "4001152", + "4009684", + "4017067", + "4079059", + "4106712", + "4111068", + "4212205", + "4254181", + "4255410", + "4301842", + "4303913", + "4381604", + "4383501", + "4389698", + "4397790", + "4441622", + "4472700", + "4474573", + "4512505", + "4517736", + "4608105", + "4623245", + "4662078", + "4679429", + "4687786", + "4750212", + "4757076", + "4792560", + "4816542", + "4904413", + "4905857", + "4914123", + "4938494", + "4999918", + "5000849", + "5014600", + "5019211", + "5019336", + "5040928", + "5051719", + "5052360", + "5064159", + "5080510", + "5085204", + "5104070", + "5137534", + "5146360", + "5183710", + "5214564", + "5364823", + "5379367", + "5386792", + "5402177", + "5415484", + "5425483", + "5434709", + "5441407", + "5461587", + "5518816", + "5605993", + "5609581", + "5710678", + "5726963", + "5729553", + "5861901", + "5916226", + "6002349", + "6018022", + "6018774", + "6072599", + "6082515", + "6101331", + "6229231", + "6301469", + "6310692", + "6342208", + "6373492", + "6399653", + "6409015", + "6418735", + "6428684", + "6465744", + "6472518", + "6606024", + "6609689", + "6648349", + "6648802", + "6687628", + "6710750", + "6911648", + "6967103", + "6967715", + "7004690", + "7012297", + "7046014", + "7124746", + "7133101", + "7241896", + "7367204", + "7414402", + "7580012", + "7591902", + "7602394", + "7669807", + "7721244", + "7758808", + "7839293", + "7850134", + "7931926", + "8002966", + "8003998", + "8015208", + "8038523", + "8041378", + "8174344", + "8317349", + "8415432", + "8446908", + "8500555", + "8563553", + "8606568", + "8736779", + "8765711", + "8816498", + "8832701", + "8898389", + "8911299", + "8988149", + "9167172", + "9185737", + "9530908", + "9540774", + "9616046", + "9636499", + "9777228", + "9838244", + "9974601", + "010645000", + "012280400", + "12305900", + "015414600", + "020725800", + "025168600", + "030367701", + "032341001", + "033075301", + "040766800", + "075023200", + "105405500", + "123456600", + "126598200", + "127129500", + "140763400", + "141742700", + "166180000", + "173605700", + "183688100", + "199577800", + "200019800", + "200882900", + "212612600", + "268515400", + "271161200", + "284753100", + "297518300", + "339102600", + "348160300", + "364094300", + "376629200", + "382011501", + "400635900", + "419723200", + "445628100", + "446031700", + "492134200", + "501471700", + "516460300", + "518427000", + "520717000", + "549157600", + "606530400", + "629314600", + "651866600", + "654272400", + "684461700", + "700305600", + "740613500", + "781787700", + "953647500", + "971982400", + "989686100" + ] + }, + { + "validator": "64", + "valid": [ + "1206473010", + "5016511020", + "7129309000" + ] + }, + { + "validator": "65", + "valid": [ + "1234567400", + "1234567590" + ] + }, + { + "validator": "66", + "valid": [ + "100150502", + "100154508", + "100154516", + "101154508", + "101154516", + "0983393104", + "1934567890" + ] + }, + { + "validator": "68", + "valid": [ + "412718", + "2011740", + "2056760", + "5030817", + "5477724", + "6210801", + "6743173", + "7322472", + "7922792", + "8406316", + "8606147", + "19807727", + "51181008", + "53101527", + "63206300", + "71214205", + "71240804", + "76545806", + "987654324", + "987654328", + "8889654328" + ], + "invalid": [ + "6414241", + "179751314" + ] + }, + { + "validator": "69", + "valid": [ + "0192735300", + "1234567006", + "1234567900", + "2676152100", + "3429127000", + "4633049600", + "6820735200", + "9721134869", + "9993327600" + ] + }, + { + "validator": "70", + "valid": [ + "6790160566" + ] + }, + { + "validator": "71", + "valid": [ + "7101234007" + ] + }, + { + "validator": "73", + "valid": [ + "1340966", + "1340967", + "1340968", + "3157179", + "3503391", + "3503392", + "3503398", + "0003503398", + "4356770", + "0099100010", + "0199100002", + "0199100004", + "2599100002", + "2599100003", + "3199204090", + "7899100003" + ], + "invalid": [ + "121212", + "0099100110", + "0099345678", + "0199100040", + "987654321" + ] + }, + { + "validator": "74", + "valid": [ + "1016", + "26260", + "239314", + "239319", + "242243", + "242248", + "2166429", + "2180800", + "2191583", + "2212686", + "3126166", + "11183027", + "12150645", + "16139552", + "18002113", + "19188812", + "21156690", + "21164306", + "23162183", + "24158198", + "25342700", + "29250677", + "1821200043" + ], + "invalid": [ + "1011", + "26265", + "18002118", + "6160000024" + ] + }, + { + "validator": "76", + "valid": [ + "0000123456", + "05809599", + "6123004", + "6531994", + "0006543200", + "06915620", + "8414580", + "0012345600", + "0100800600", + "0104328600", + "0104860000", + "105873300", + "0112634900", + "0113304400", + "120240600", + "0120566300", + "0121637500", + "0125787000", + "0128125200", + "0128706000", + "132511500", + "0170935500", + "0172758800", + "0189463800", + "0192100900", + "192650000", + "0196647900", + "0198032400", + "0208896400", + "0210575500", + "0217797300", + "0229277400", + "0231661400", + "0242439300", + "257924800", + "262121600", + "0275041700", + "276322900", + "0283431500", + "300634700", + "0300691800", + "0304816000", + "0307135200", + "0330385800", + "0355884800", + "0360341600", + "0362792500", + "0376111300", + "0377432600", + "380269300", + "0382556500", + "0402954900", + "0412751100", + "0423584800", + "0442018400", + "0443942900", + "0450002700", + "0452113400", + "0463287400", + "0465112100", + "0474515200", + "475407400", + "0479894600", + "0497179600", + "500126200", + "0508685100", + "0521968100", + "0527717600", + "0540112400", + "0543222400", + "0550006000", + "0550423500", + "564428800", + "0568021900", + "0572497100", + "0580959900", + "0582180000", + "0584789800", + "0586390900", + "0587902400", + "591024900", + "0591994000", + "0595377700", + "600201800", + "0601346600", + "0601711300", + "0601755100", + "0601782400", + "0607777800", + "0615188700", + "616217400", + "0622059900", + "0626028700", + "631049700", + "0636079800", + "0644103800", + "0661830300", + "0671404300", + "683597100", + "0702319400", + "703070800", + "0705479800", + "0711523400", + "0719079700", + "720670700", + "0722974400", + "0738194300", + "752765200", + "0755268300", + "755343200", + "758549400", + "0770541400", + "0770751400", + "0803082000", + "818739300", + "827270000", + "829419700", + "0834822400", + "0848425900", + "0887238700", + "0890570800", + "0910652200", + "0921624800", + "0923303900", + "0932650900", + "0934153500", + "0949667100", + "0961376600", + "979219300", + "4013888500", + "4039882200", + "4041862600", + "4093425200", + "4096323900", + "4170214200", + "4274556200", + "4301338800", + "4366681500", + "4366759500", + "4545908400", + "7876543100", + "9012345600" + ] + }, + { + "validator": "77", + "valid": [ + "10338", + "13844", + "0000047671", + "0000054321", + "69258" + ] + }, + { + "validator": "78", + "valid": [ + "2268316", + "2418697", + "2431302", + "2443018", + "2516888", + "4334181", + "4629739", + "5083688", + "5561311", + "6573331", + "7581499", + "8707069", + "8717050", + "8920555", + "9999999981" + ] + }, + { + "validator": "79", + "valid": [ + "1550167850", + "3230012688", + "5440001898", + "6330001063", + "7000149349", + "8000003577", + "9011200140" + ] + }, + { + "validator": "80", + "valid": [ + "340966", + "340968", + "0099100010", + "0199100002", + "0199100004", + "2599100002", + "2599100003", + "3199204090", + "3199500501" + ], + "invalid": [ + "0099100110", + "0099345678", + "0199100040" + ] + }, + { + "validator": "81", + "valid": [ + "300900", + "467405", + "526800", + "544825", + "0646440", + "960306", + "1105027", + "1114000", + "1359100", + "2369010", + "2636310", + "2656370", + "3524450", + "7023650", + "7033249", + "7117663", + "7168802", + "7296770", + "7491751", + "7568231", + "7612192", + "7622090", + "0099100010", + "100587427", + "0199100002", + "0199100004", + "2599100002", + "2599100003", + "3199204090", + "3199500501" + ], + "invalid": [ + "0099100110", + "0099345678", + "0199100040" + ] + }, + { + "validator": "82", + "valid": [ + "123897", + "3199500501" + ] + }, + { + "validator": "83", + "valid": [ + "0000156071", + "0000156078", + "0001156071", + "0001156136", + "0099100002" + ] + }, + { + "validator": "84", + "valid": [ + "100005", + "197284", + "240692", + "240699", + "240961", + "350982", + "350984", + "350985", + "371394", + "393814", + "461052", + "461054", + "461059", + "506869", + "634484", + "703176", + "950360", + "0099100010", + "0199100002", + "0199100004", + "2599100002", + "2599100003", + "3199204090", + "3199500501" + ], + "invalid": [ + "240965", + "350980", + "461053", + "0099100110", + "0099345678", + "0199100040" + ] + }, + { + "validator": "85", + "valid": [ + "0000156071", + "0000156078", + "316764", + "0326816", + "0001156071", + "0001156136", + "3199100002" + ] + }, + { + "validator": "86", + "valid": [ + "123897", + "340960", + "340968", + "833371", + "946150", + "972323", + "1001171", + "1009588", + "1136845", + "1293406", + "0099100010", + "0199100002", + "0199100004", + "2599100002", + "2599100003", + "3199204090", + "3199500501" + ], + "invalid": [ + "0099100110", + "0099345678", + "0199100040" + ] + }, + { + "validator": "87", + "valid": [ + "406", + "34715", + "51768", + "100005", + "223175", + "393814", + "542655", + "950360", + "973356", + "1298310", + "1311349", + "2266057", + "3011810", + "3186646", + "3467504", + "10701590", + "10720185", + "0099100010", + "0199100002", + "0199100004", + "2599100002", + "2599100003", + "3199204090", + "3199500501" + ], + "invalid": [ + "0099100110", + "0099345678", + "0199100040" + ] + }, + { + "validator": "88", + "valid": [ + "1112", + "11410", + "16284", + "27146", + "32700", + "36765", + "37834", + "40100", + "50741", + "66877", + "67067", + "72222", + "78239", + "89060", + "119890", + "126314", + "152846", + "179426", + "215490", + "222348", + "227897", + "303674", + "317098", + "319988", + "320897", + "363910", + "483192", + "582840", + "614491", + "704890", + "707899", + "727610", + "818526", + "923222", + "929913", + "1000500", + "1057162", + "1064827", + "1069080", + "1073796", + "1190571", + "1202090", + "1431188", + "1694219", + "1807323", + "1807536", + "1825526", + "1920103", + "2508508", + "2525259", + "2569906", + "2628910", + "2680696", + "2704900", + "2807220", + "3221016", + "3227103", + "3241599", + "3302989", + "3501523", + "3603377", + "4207289", + "4840968", + "5195039", + "5729114", + "5916941", + "6124593", + "7174918", + "7178441", + "7425511", + "9710213", + "90013000", + "92525253", + "99913003", + "100007960", + "100263036" + ] + }, + { + "validator": "89", + "valid": [ + "1098506", + "32028008", + "218433000", + "254024009", + "507072006" + ] + }, + { + "validator": "90", + "valid": [ + "0000156071", + "0000156073", + "0000156077", + "0000156132", + "259413", + "415176", + "0000654321", + "0000666034", + "0000677747", + "737577", + "0000824491", + "0000840507", + "0000996663", + "0001156132", + "0001156136", + "0001784451", + "0001863530", + "0001975641", + "0001988654", + "2426013", + "2451050", + "3140482", + "0003865960", + "3921000", + "4569164", + "0004923250", + "0006073093", + "0099100002", + "982507293" + ], + "invalid": [ + "0000726393", + "0000820487", + "0000901568", + "0000924591", + "0001924592", + "0003865964", + "0099100007" + ] + }, + { + "validator": "91", + "valid": [ + "2974117000", + "5281770000", + "8840012000", + "8840019000", + "8840045000", + "8840050000", + "8840055000", + "8840080000", + "8840087000", + "9952812000" + ], + "invalid": [ + "8840010000", + "8840011000", + "8840014000", + "8840025000", + "8840026000", + "8840057000", + "8840062000" + ] + }, + { + "validator": "92", + "valid": [ + "4069613759", + "4069634518", + "4079604146", + "4129654921", + "4139507456", + "4149555848", + "4149578179", + "4239653647", + "4239680359", + "4349555862", + "4359725290" + ] + }, + { + "validator": "93", + "valid": [ + "0000127783", + "0000127791", + "0000306754", + "0000671479", + "1277830000", + "1277910000", + "3067540000", + "6714790000" + ] + }, + { + "validator": "94", + "valid": [ + "6782533003" + ] + }, + { + "validator": "95", + "valid": [ + "2594811", + "5300100", + "33739966", + "34239185", + "38794531", + "43917056", + "44212463", + "45333655", + "46599730", + "48256538", + "0068007003", + "189912137", + "235308215", + "654502633", + "657550590", + "658311255", + "659110580", + "0847321750", + "0910000000", + "0989999999", + "3180376878", + "4320265385", + "5800607576", + "6130421618", + "6340241892", + "6410681216", + "6450060494", + "6454000003" + ], + "invalid": [ + "6414241", + "51181008", + "71214205", + "179751314", + "1234567897", + "4455667784" + ] + }, + { + "validator": "96", + "valid": [ + "0000000208", + "0000254100", + "0101115152", + "115018954", + "161022942", + "0301204301", + "313808651", + "315811340", + "0318093154", + "319812057", + "329807382", + "345807936", + "371824206", + "378000624", + "0385014384", + "388816198", + "394225724", + "1200161570", + "1200571353", + "1200996087", + "1201255242", + "1201413450", + "1201674709", + "1251027898", + "1251063924", + "1251088153", + "1251112070", + "1251178780", + "1251199940", + "1251258300", + "1251272795", + "1251325481", + "1251424030", + "1251495190", + "1251673102", + "1251705004", + "1251721832", + "1251763837", + "9421000009" + ] + }, + { + "validator": "97", + "valid": [ + "24010019" + ] + }, + { + "validator": "98", + "valid": [ + "3009800016", + "5989800173", + "6719430018", + "9619319999", + "9619439213", + "9619509976" + ] + }, + { + "validator": "99", + "valid": [ + "1458264", + "1464558", + "1598783", + "2409097", + "2456737", + "2509822", + "2686821", + "2689901", + "3123707", + "3426610", + "3523004", + "4481488", + "0005559707", + "6258468", + "6710948", + "6947719", + "7071159", + "7746504", + "8003157", + "8788871", + "9081178", + "9424474", + "47313937", + "0068007003", + "85302353", + "303800468", + "311303740", + "326605174", + "326800139", + "0847321750", + "1290255151", + "1490152756", + "2610153499", + "4950117929", + "5180163834", + "5480158891", + "6260239897", + "6660243192", + "6720348169", + "6750164135", + "6790147721", + "6810215281" + ] + }, + { + "validator": "52", + "blz": "13051052", + "valid": [ + "42200908", + "46310653", + "49750996" + ] + }, + { + "validator": "52", + "blz": "13051172", + "valid": [ + "43001500", + "48726458" + ], + "invalid": [ + "29837521", + "82335729" + ] + }, + { + "validator": "52", + "blz": "81053132", + "valid": [ + "41084332" + ] + }, + { + "validator": "53", + "blz": "16052072", + "valid": [ + "382432256" + ] + }, + { + "validator": "53", + "blz": "85055142", + "valid": [ + "345033997" + ] + }, + { + "validator": "B6", + "blz": "80053762", + "valid": [ + "9110000000" + ], + "invalid": [ + "467310018", + "9111000000" + ] + }, + { + "validator": "B6", + "blz": "80053772", + "invalid": [ + "477310018" + ] + }, + { + "validator": "B6", + "blz": "80053782", + "valid": [ + "487310018" + ] + }, + { + "validator": "C0", + "blz": "81053272", + "valid": [ + "42279904", + "48074470", + "49279640", + "0082335729", + "0734192657", + "6932875274" + ] + }, + { + "validator": "C0", + "blz": "86055462", + "invalid": [ + "0132572975", + "3038752371" + ] + } +] \ No newline at end of file From ba3a41e3183ebe1e46782454f122b0626bfbd9ff Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 6 Jun 2014 20:20:19 +0200 Subject: [PATCH 174/303] PSR2 formatting --- classes/util/BICUtil.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/util/BICUtil.php b/classes/util/BICUtil.php index 05a3582c..931ccd4c 100644 --- a/classes/util/BICUtil.php +++ b/classes/util/BICUtil.php @@ -9,7 +9,7 @@ * @license GPL */ class BICUtil -{ +{ /** * Extends an 8 character BIC to an 11 character BIC. From 7be7e68cb3a62564dc4ff37f417722fd995ae332 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 6 Jun 2014 20:47:42 +0200 Subject: [PATCH 175/303] fixed test for PHP 5.3 --- tests/ValidatorTest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/ValidatorTest.php b/tests/ValidatorTest.php index 73dd2104..cb0d11ea 100644 --- a/tests/ValidatorTest.php +++ b/tests/ValidatorTest.php @@ -180,7 +180,8 @@ public function testAccount(\stdClass $testCase) } - $checkAccounts = function ($account, $key, $isValid) use ($bank) { + $test = $this; + $checkAccounts = function ($account, $key, $isValid) use ($bank, $test) { $this->assertEquals( $isValid, $bank->isValid($account), From 948f0000349477f3ec4100512af1318c9191a641 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 6 Jun 2014 21:25:09 +0200 Subject: [PATCH 176/303] reorganized tests to reduce memory foot print --- .travis.yml | 3 +- autoloader/autoloader.php | 4 - autoloader/index/1.php | 35 --- tests/autoloader/InstantAutoloader.php | 249 ++++++++++++++++++++ tests/autoloader/autoloader.php | 27 +++ tests/autoloader/index/0.php | 240 +++++++++++++++++++ tests/autoloader/index/1.php | 35 +++ tests/bin/test-install.php | 2 +- tests/{ => unit-large}/BackendTest.php | 0 tests/{ => unit-large}/CrossProjectTest.php | 0 tests/{ => unit}/00UpdatePlanTest.php | 0 tests/{ => unit}/AgencyQueryTest.php | 0 tests/{ => unit}/BAVFacadeTest.php | 0 tests/{ => unit}/BICUtilTest.php | 0 tests/{ => unit}/BackendContainerTest.php | 0 tests/{ => unit}/DataConstraintTest.php | 2 +- tests/{ => unit}/DownloaderTest.php | 0 tests/{ => unit}/FileUtilTest.php | 4 +- tests/{ => unit}/FileValidatorTest.php | 6 +- tests/{ => unit}/URIPickerTest.php | 2 +- tests/{ => unit}/ValidatorTest.php | 4 +- 21 files changed, 563 insertions(+), 50 deletions(-) delete mode 100644 autoloader/index/1.php create mode 100644 tests/autoloader/InstantAutoloader.php create mode 100644 tests/autoloader/autoloader.php create mode 100644 tests/autoloader/index/0.php create mode 100644 tests/autoloader/index/1.php rename tests/{ => unit-large}/BackendTest.php (100%) rename tests/{ => unit-large}/CrossProjectTest.php (100%) rename tests/{ => unit}/00UpdatePlanTest.php (100%) rename tests/{ => unit}/AgencyQueryTest.php (100%) rename tests/{ => unit}/BAVFacadeTest.php (100%) rename tests/{ => unit}/BICUtilTest.php (100%) rename tests/{ => unit}/BackendContainerTest.php (100%) rename tests/{ => unit}/DataConstraintTest.php (98%) rename tests/{ => unit}/DownloaderTest.php (100%) rename tests/{ => unit}/FileUtilTest.php (92%) rename tests/{ => unit}/FileValidatorTest.php (90%) rename tests/{ => unit}/URIPickerTest.php (96%) rename tests/{ => unit}/ValidatorTest.php (97%) diff --git a/.travis.yml b/.travis.yml index 59b4b3a4..d3e9f3da 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,6 +18,7 @@ before_script: - echo 'SET @@GLOBAL.wait_timeout=600' | mysql -uroot script: - - phpunit --exclude-group large tests/ + - phpunit large tests/unit/ + - phpunit --exclude-group large tests/unit-large/ - phpcs --standard=PSR2 classes/ bin/ docs/example.php tests/classes/ tests/bin/ diff --git a/autoloader/autoloader.php b/autoloader/autoloader.php index fcb35987..f2164d81 100644 --- a/autoloader/autoloader.php +++ b/autoloader/autoloader.php @@ -20,8 +20,4 @@ $_autoloader = new InstantAutoloader(__DIR__ . '/index/0.php'); $_autoloader->setBasePath(__DIR__); $_autoloader->register(); - -$_autoloader = new InstantAutoloader(__DIR__ . '/index/1.php'); -$_autoloader->setBasePath(__DIR__); -$_autoloader->register(); unset($_autoloader); \ No newline at end of file diff --git a/autoloader/index/1.php b/autoloader/index/1.php deleted file mode 100644 index 06d23b42..00000000 --- a/autoloader/index/1.php +++ /dev/null @@ -1,35 +0,0 @@ - '../tests/classes/testAPI/TestAPI.php', - 'malkusch\bav\timemock' => '../tests/classes/TimeMock.php', - 'malkusch\bav\classfile' => '../tests/classes/class/ClassFile.php', - 'malkusch\bav\pdofactory' => '../tests/classes/PDOFactory.php', - 'malkusch\bav\bavtestapi' => '../tests/classes/testAPI/BAVTestAPI.php', - 'malkusch\bav\testapiresult' => '../tests/classes/testAPI/TestAPIResult.php', - 'malkusch\bav\testapiexception' => '../tests/classes/testAPI/exception/TestAPIException.php', - 'malkusch\bav\kontochecktestapi' => '../tests/classes/testAPI/KontocheckTestAPI.php', - 'malkusch\bav\classfileexception' => '../tests/classes/class/exception/ClassFileException.php', - 'malkusch\bav\ktoblzchecktestapi' => '../tests/classes/testAPI/KtoblzcheckTestAPI.php', - 'malkusch\bav\testapierrorresult' => '../tests/classes/testAPI/TestAPIErrorResult.php', - 'malkusch\bav\classfileioexception' => '../tests/classes/class/exception/ClassFileIOException.php', - 'malkusch\bav\missingclassexception' => '../tests/classes/class/exception/MissingClassException.php', - 'malkusch\bav\validationtestapiexception' => '../tests/classes/testAPI/exception/ValidationTestAPIException.php', - 'malkusch\bav\testapiunavailableexception' => '../tests/classes/testAPI/exception/TestAPIUnavailableException.php', - 'malkusch\bav\banknotfoundtestapiexception' => '../tests/classes/testAPI/exception/BankNotFoundTestAPIException.php', - 'malkusch\bav\notinitializedtestapiexception' => '../tests/classes/testAPI/exception/NotInitializedTestAPIException.php', -); diff --git a/tests/autoloader/InstantAutoloader.php b/tests/autoloader/InstantAutoloader.php new file mode 100644 index 00000000..e03880e3 --- /dev/null +++ b/tests/autoloader/InstantAutoloader.php @@ -0,0 +1,249 @@ +. + * + * @category PHP + * @package Autoloader + * @author Markus Malkusch + * @copyright 2009 - 2010 Markus Malkusch + * @license http://php-autoloader.malkusch.de/en/license/ GPL 3 + * @version SVN: $Id$ + * @link http://php-autoloader.malkusch.de/en/ + */ + +namespace malkusch\autoloader; + +/** + * There might be several InstantAutoloaders deployed in a project. + * One is enough. + */ +if (class_exists("malkusch\autoloader\InstantAutoloader")) { + return; + +} + +/** + * An instant autoloader for shipping with project builds + * + * You can build a complete index of your project (by calling + * Autoloader::buildIndex()). If you use AutoloaderIndex_PHPArrayCode as + * index you can only use this instant autoloader for your project. This class + * has no further dependency on any other class. Just copy this class and the + * generated index anywhere into your project. + * + * Consider setting the AutoloaderIndexFilter_RelativePath filter. + * + * @category PHP + * @package Autoloader + * @author Markus Malkusch + * @license http://php-autoloader.malkusch.de/en/license/ GPL 3 + * @version Release: 1.12 + * @link http://php-autoloader.malkusch.de/en/ + * @see Autoloader::buildIndex() + * @see AutoloaderIndex_PHPArrayCode() + * @see AutoloaderIndexFilter_RelativePath() + */ +class InstantAutoloader +{ + + const + /** + * The name of the class constructor is classConstructor(). + */ + CLASS_CONSTRUCTOR = 'classConstructor'; + + private + /** + * @var string + */ + $_basePath = "", + /** + * @var array + */ + $_index = array(); + + /** + * Loads the generated index array + * + * The index must be a generated AutoloaderIndex_PHPArrayCode index. + * + * @param string $indexPath Path to the generated index + */ + public function __construct($indexPath) + { + $this->_index = require $indexPath; + } + + /** + * Registers this autoloader at the autoloader stack + * + * @return void + */ + public function register() + { + // spl_autoload_register() disables __autoload(). This might be unwanted. + if (\function_exists("__autoload")) { + \spl_autoload_register("__autoload"); + + } + \spl_autoload_register(array($this, "__autoload")); + } + + /** + * Includes all class paths + * + * You can use this as an alternative to the autoload mechanism. This + * simply includes all classes without any autoloader. + * + * @return void + */ + public function requireAll() + { + foreach ($this->_index as $classPath) { + $this->_requirePath($classPath); + + } + } + + /** + * Sets the base path for the class paths in the index + * + * @param string $basePath Base path for the class paths in the index + * + * @return void + */ + public function setBasePath($basePath) + { + $this->_basePath = $basePath; + } + + /** + * Autoloader callback + * + * @param string $class Class name + * + * @return void + */ + public function __autoload($class) + { + $this->_normalizeClass($class); + + /* + * spl_autoload_call() runs the complete stack, + * even though the class is already defined by + * a previously registered method. + */ + if ( + \class_exists($class, false) + || \interface_exists($class, false) + ) { + return; + + } + if ( + \version_compare(PHP_VERSION, "5.4", '>=') + && \trait_exists($class, false) + ) { + return; + + } + if (! \array_key_exists($class, $this->_index)) { + return; + + } + + $this->_requirePath($this->_index[$class]); + + $this->_callClassConstructor($class, self::CLASS_CONSTRUCTOR); + } + + /** + * Requires a class path + * + * @param string $path Class path + * + * @return void + */ + private function _requirePath($path) + { + if (! empty($this->_basePath)) { + $path = $this->_basePath . DIRECTORY_SEPARATOR . $path; + + } + require_once $path; + } + + /** + * Normalizes the reference of a class name with strtolower() + * + * Normalizing is needed as PHP is case insensitive. + * + * @param String &$class The reference of a class name + * + * @see strtolower(). + * @return void + */ + private function _normalizeClass(&$class) + { + $class = \strtolower($class); + } + + /** + * Calls the class constructor + * + * If the class $class has the method public static $constructor, it + * will be called. + * + * @param String $class A class which might have a class constructor + * @param String $constructorName the method name of the class constructor + * + * @return bool true if the class constructor was called + */ + public static function _callClassConstructor($class, $constructorName) + { + $reflectionClass = new \ReflectionClass($class); + if (! $reflectionClass->hasMethod($constructorName)) { + return false; + + } + + $constructor = $reflectionClass->getMethod($constructorName); + if (! $constructor->isStatic()) { + return false; + + } + + if (\version_compare(PHP_VERSION, "5.4", '>=') && $reflectionClass->isTrait()) { + return false; + + } + + if ($constructor->getDeclaringClass()->getName() != $reflectionClass->getName()) { + return false; + + } + + $constructor->invoke(null); + return true; + } + +} diff --git a/tests/autoloader/autoloader.php b/tests/autoloader/autoloader.php new file mode 100644 index 00000000..fcb35987 --- /dev/null +++ b/tests/autoloader/autoloader.php @@ -0,0 +1,27 @@ +setBasePath(__DIR__); +$_autoloader->register(); + +$_autoloader = new InstantAutoloader(__DIR__ . '/index/1.php'); +$_autoloader->setBasePath(__DIR__); +$_autoloader->register(); +unset($_autoloader); \ No newline at end of file diff --git a/tests/autoloader/index/0.php b/tests/autoloader/index/0.php new file mode 100644 index 00000000..89de4ebe --- /dev/null +++ b/tests/autoloader/index/0.php @@ -0,0 +1,240 @@ + '../../classes/BAV.php', + 'malkusch\bav\bank' => '../../classes/bank/Bank.php', + 'malkusch\bav\lock' => '../../classes/util/Lock.php', + 'malkusch\bav\agency' => '../../classes/bank/Agency.php', + 'malkusch\bav\bicutil' => '../../classes/util/BICUtil.php', + 'malkusch\bav\encoding' => '../../classes/encoding/Encoding.php', + 'malkusch\bav\fileutil' => '../../classes/util/FileUtil.php', + 'malkusch\bav\uripicker' => '../../classes/dataBackend/file/download/uripicker/URIPicker.php', + 'malkusch\bav\validator' => '../../classes/validator/Validator.php', + 'malkusch\bav\downloader' => '../../classes/dataBackend/file/download/Downloader.php', + 'malkusch\bav\fileparser' => '../../classes/dataBackend/file/fileParser/FileParser.php', + 'malkusch\bav\updateplan' => '../../classes/dataBackend/update/UpdatePlan.php', + 'malkusch\bav\mbencoding' => '../../classes/encoding/MBEncoding.php', + 'malkusch\bav\databackend' => '../../classes/dataBackend/DataBackend.php', + 'malkusch\bav\validator00' => '../../classes/validator/validators/Validator00.php', + 'malkusch\bav\validator01' => '../../classes/validator/validators/Validator01.php', + 'malkusch\bav\validator02' => '../../classes/validator/validators/Validator02.php', + 'malkusch\bav\validator03' => '../../classes/validator/validators/Validator03.php', + 'malkusch\bav\validator04' => '../../classes/validator/validators/Validator04.php', + 'malkusch\bav\validator05' => '../../classes/validator/validators/Validator05.php', + 'malkusch\bav\validator06' => '../../classes/validator/validators/Validator06.php', + 'malkusch\bav\validator07' => '../../classes/validator/validators/Validator07.php', + 'malkusch\bav\validator08' => '../../classes/validator/validators/Validator08.php', + 'malkusch\bav\validator09' => '../../classes/validator/validators/Validator09.php', + 'malkusch\bav\validator10' => '../../classes/validator/validators/Validator10.php', + 'malkusch\bav\validator11' => '../../classes/validator/validators/Validator11.php', + 'malkusch\bav\validator13' => '../../classes/validator/validators/Validator13.php', + 'malkusch\bav\validator14' => '../../classes/validator/validators/Validator14.php', + 'malkusch\bav\validator15' => '../../classes/validator/validators/Validator15.php', + 'malkusch\bav\validator16' => '../../classes/validator/validators/Validator16.php', + 'malkusch\bav\validator17' => '../../classes/validator/validators/Validator17.php', + 'malkusch\bav\validator18' => '../../classes/validator/validators/Validator18.php', + 'malkusch\bav\validator19' => '../../classes/validator/validators/Validator19.php', + 'malkusch\bav\validator20' => '../../classes/validator/validators/Validator20.php', + 'malkusch\bav\validator21' => '../../classes/validator/validators/Validator21.php', + 'malkusch\bav\validator22' => '../../classes/validator/validators/Validator22.php', + 'malkusch\bav\validator23' => '../../classes/validator/validators/Validator23.php', + 'malkusch\bav\validator24' => '../../classes/validator/validators/Validator24.php', + 'malkusch\bav\validator25' => '../../classes/validator/validators/Validator25.php', + 'malkusch\bav\validator26' => '../../classes/validator/validators/Validator26.php', + 'malkusch\bav\validator27' => '../../classes/validator/validators/Validator27.php', + 'malkusch\bav\validator28' => '../../classes/validator/validators/Validator28.php', + 'malkusch\bav\validator29' => '../../classes/validator/validators/Validator29.php', + 'malkusch\bav\validator30' => '../../classes/validator/validators/Validator30.php', + 'malkusch\bav\validator31' => '../../classes/validator/validators/Validator31.php', + 'malkusch\bav\validator32' => '../../classes/validator/validators/Validator32.php', + 'malkusch\bav\validator33' => '../../classes/validator/validators/Validator33.php', + 'malkusch\bav\validator34' => '../../classes/validator/validators/Validator34.php', + 'malkusch\bav\validator35' => '../../classes/validator/validators/Validator35.php', + 'malkusch\bav\validator36' => '../../classes/validator/validators/Validator36.php', + 'malkusch\bav\validator37' => '../../classes/validator/validators/Validator37.php', + 'malkusch\bav\validator38' => '../../classes/validator/validators/Validator38.php', + 'malkusch\bav\validator39' => '../../classes/validator/validators/Validator39.php', + 'malkusch\bav\validator40' => '../../classes/validator/validators/Validator40.php', + 'malkusch\bav\validator41' => '../../classes/validator/validators/Validator41.php', + 'malkusch\bav\validator42' => '../../classes/validator/validators/Validator42.php', + 'malkusch\bav\validator43' => '../../classes/validator/validators/Validator43.php', + 'malkusch\bav\validator44' => '../../classes/validator/validators/Validator44.php', + 'malkusch\bav\validator45' => '../../classes/validator/validators/Validator45.php', + 'malkusch\bav\validator46' => '../../classes/validator/validators/Validator46.php', + 'malkusch\bav\validator47' => '../../classes/validator/validators/Validator47.php', + 'malkusch\bav\validator48' => '../../classes/validator/validators/Validator48.php', + 'malkusch\bav\validator49' => '../../classes/validator/validators/Validator49.php', + 'malkusch\bav\validator50' => '../../classes/validator/validators/Validator50.php', + 'malkusch\bav\validator51' => '../../classes/validator/validators/Validator51.php', + 'malkusch\bav\validator52' => '../../classes/validator/validators/Validator52.php', + 'malkusch\bav\validator53' => '../../classes/validator/validators/Validator53.php', + 'malkusch\bav\validator54' => '../../classes/validator/validators/Validator54.php', + 'malkusch\bav\validator55' => '../../classes/validator/validators/Validator55.php', + 'malkusch\bav\validator56' => '../../classes/validator/validators/Validator56.php', + 'malkusch\bav\validator57' => '../../classes/validator/validators/Validator57.php', + 'malkusch\bav\validator58' => '../../classes/validator/validators/Validator58.php', + 'malkusch\bav\validator59' => '../../classes/validator/validators/Validator59.php', + 'malkusch\bav\validator60' => '../../classes/validator/validators/Validator60.php', + 'malkusch\bav\validator61' => '../../classes/validator/validators/Validator61.php', + 'malkusch\bav\validator62' => '../../classes/validator/validators/Validator62.php', + 'malkusch\bav\validator63' => '../../classes/validator/validators/Validator63.php', + 'malkusch\bav\validator64' => '../../classes/validator/validators/Validator64.php', + 'malkusch\bav\validator65' => '../../classes/validator/validators/Validator65.php', + 'malkusch\bav\validator66' => '../../classes/validator/validators/Validator66.php', + 'malkusch\bav\validator67' => '../../classes/validator/validators/Validator67.php', + 'malkusch\bav\validator68' => '../../classes/validator/validators/Validator68.php', + 'malkusch\bav\validator69' => '../../classes/validator/validators/Validator69.php', + 'malkusch\bav\validator70' => '../../classes/validator/validators/Validator70.php', + 'malkusch\bav\validator71' => '../../classes/validator/validators/Validator71.php', + 'malkusch\bav\validator72' => '../../classes/validator/validators/Validator72.php', + 'malkusch\bav\validator73' => '../../classes/validator/validators/Validator73.php', + 'malkusch\bav\validator74' => '../../classes/validator/validators/Validator74.php', + 'malkusch\bav\validator75' => '../../classes/validator/validators/Validator75.php', + 'malkusch\bav\validator76' => '../../classes/validator/validators/Validator76.php', + 'malkusch\bav\validator77' => '../../classes/validator/validators/Validator77.php', + 'malkusch\bav\validator78' => '../../classes/validator/validators/Validator78.php', + 'malkusch\bav\validator79' => '../../classes/validator/validators/Validator79.php', + 'malkusch\bav\validator80' => '../../classes/validator/validators/Validator80.php', + 'malkusch\bav\validator81' => '../../classes/validator/validators/Validator81.php', + 'malkusch\bav\validator82' => '../../classes/validator/validators/Validator82.php', + 'malkusch\bav\validator83' => '../../classes/validator/validators/Validator83.php', + 'malkusch\bav\validator84' => '../../classes/validator/validators/Validator84.php', + 'malkusch\bav\validator85' => '../../classes/validator/validators/Validator85.php', + 'malkusch\bav\validator86' => '../../classes/validator/validators/Validator86.php', + 'malkusch\bav\validator87' => '../../classes/validator/validators/Validator87.php', + 'malkusch\bav\validator88' => '../../classes/validator/validators/Validator88.php', + 'malkusch\bav\validator89' => '../../classes/validator/validators/Validator89.php', + 'malkusch\bav\validator90' => '../../classes/validator/validators/Validator90.php', + 'malkusch\bav\validator91' => '../../classes/validator/validators/Validator91.php', + 'malkusch\bav\validator92' => '../../classes/validator/validators/Validator92.php', + 'malkusch\bav\validator93' => '../../classes/validator/validators/Validator93.php', + 'malkusch\bav\validator94' => '../../classes/validator/validators/Validator94.php', + 'malkusch\bav\validator95' => '../../classes/validator/validators/Validator95.php', + 'malkusch\bav\validator96' => '../../classes/validator/validators/Validator96.php', + 'malkusch\bav\validator97' => '../../classes/validator/validators/Validator97.php', + 'malkusch\bav\validator98' => '../../classes/validator/validators/Validator98.php', + 'malkusch\bav\validator99' => '../../classes/validator/validators/Validator99.php', + 'malkusch\bav\validatora0' => '../../classes/validator/validators/ValidatorA0.php', + 'malkusch\bav\validatora1' => '../../classes/validator/validators/ValidatorA1.php', + 'malkusch\bav\validatora2' => '../../classes/validator/validators/ValidatorA2.php', + 'malkusch\bav\validatora3' => '../../classes/validator/validators/ValidatorA3.php', + 'malkusch\bav\validatora4' => '../../classes/validator/validators/ValidatorA4.php', + 'malkusch\bav\validatora5' => '../../classes/validator/validators/ValidatorA5.php', + 'malkusch\bav\validatora6' => '../../classes/validator/validators/ValidatorA6.php', + 'malkusch\bav\validatora7' => '../../classes/validator/validators/ValidatorA7.php', + 'malkusch\bav\validatora8' => '../../classes/validator/validators/ValidatorA8.php', + 'malkusch\bav\validatora9' => '../../classes/validator/validators/ValidatorA9.php', + 'malkusch\bav\validatorb0' => '../../classes/validator/validators/ValidatorB0.php', + 'malkusch\bav\validatorb1' => '../../classes/validator/validators/ValidatorB1.php', + 'malkusch\bav\validatorb2' => '../../classes/validator/validators/ValidatorB2.php', + 'malkusch\bav\validatorb3' => '../../classes/validator/validators/ValidatorB3.php', + 'malkusch\bav\validatorb4' => '../../classes/validator/validators/ValidatorB4.php', + 'malkusch\bav\validatorb5' => '../../classes/validator/validators/ValidatorB5.php', + 'malkusch\bav\validatorb6' => '../../classes/validator/validators/ValidatorB6.php', + 'malkusch\bav\validatorb7' => '../../classes/validator/validators/ValidatorB7.php', + 'malkusch\bav\validatorb8' => '../../classes/validator/validators/ValidatorB8.php', + 'malkusch\bav\validatorb9' => '../../classes/validator/validators/ValidatorB9.php', + 'malkusch\bav\validatorc0' => '../../classes/validator/validators/ValidatorC0.php', + 'malkusch\bav\validatorc1' => '../../classes/validator/validators/ValidatorC1.php', + 'malkusch\bav\validatorc2' => '../../classes/validator/validators/ValidatorC2.php', + 'malkusch\bav\validatorc3' => '../../classes/validator/validators/ValidatorC3.php', + 'malkusch\bav\validatorc4' => '../../classes/validator/validators/ValidatorC4.php', + 'malkusch\bav\validatorc5' => '../../classes/validator/validators/ValidatorC5.php', + 'malkusch\bav\validatorc6' => '../../classes/validator/validators/ValidatorC6.php', + 'malkusch\bav\validatorc7' => '../../classes/validator/validators/ValidatorC7.php', + 'malkusch\bav\validatorc8' => '../../classes/validator/validators/ValidatorC8.php', + 'malkusch\bav\validatorc9' => '../../classes/validator/validators/ValidatorC9.php', + 'malkusch\bav\validatord0' => '../../classes/validator/validators/ValidatorD0.php', + 'malkusch\bav\validatord1' => '../../classes/validator/validators/ValidatorD1.php', + 'malkusch\bav\validatord2' => '../../classes/validator/validators/ValidatorD2.php', + 'malkusch\bav\validatord3' => '../../classes/validator/validators/ValidatorD3.php', + 'malkusch\bav\validatord4' => '../../classes/validator/validators/ValidatorD4.php', + 'malkusch\bav\validatord5' => '../../classes/validator/validators/ValidatorD5.php', + 'malkusch\bav\validatord6' => '../../classes/validator/validators/ValidatorD6.php', + 'malkusch\bav\validatord7' => '../../classes/validator/validators/ValidatorD7.php', + 'malkusch\bav\validatord8' => '../../classes/validator/validators/ValidatorD8.php', + 'malkusch\bav\validatord9' => '../../classes/validator/validators/ValidatorD9.php', + 'malkusch\bav\validatore0' => '../../classes/validator/validators/ValidatorE0.php', + 'malkusch\bav\validatore1' => '../../classes/validator/validators/ValidatorE1.php', + 'malkusch\bav\domuripicker' => '../../classes/dataBackend/file/download/uripicker/DOMURIPicker.php', + 'malkusch\bav\bavexception' => '../../classes/exception/BAVException.php', + 'malkusch\bav\validator51x' => '../../classes/validator/validators/Validator51x.php', + 'malkusch\bav\validator69b' => '../../classes/validator/validators/Validator69b.php', + 'malkusch\bav\validator77a' => '../../classes/validator/validators/Validator77a.php', + 'malkusch\bav\validator83x' => '../../classes/validator/validators/Validator83x.php', + 'malkusch\bav\validator84b' => '../../classes/validator/validators/Validator84b.php', + 'malkusch\bav\validator87a' => '../../classes/validator/validators/Validator87a.php', + 'malkusch\bav\validator87c' => '../../classes/validator/validators/Validator87c.php', + 'malkusch\bav\validator90c' => '../../classes/validator/validators/Validator90c.php', + 'malkusch\bav\validator90d' => '../../classes/validator/validators/Validator90d.php', + 'malkusch\bav\validator90e' => '../../classes/validator/validators/Validator90e.php', + 'malkusch\bav\validator90g' => '../../classes/validator/validators/Validator90g.php', + 'malkusch\bav\validatora4b' => '../../classes/validator/validators/ValidatorA4b.php', + 'malkusch\bav\validatorb9a' => '../../classes/validator/validators/ValidatorB9a.php', + 'malkusch\bav\validatorb9b' => '../../classes/validator/validators/ValidatorB9b.php', + 'malkusch\bav\validatorc1b' => '../../classes/validator/validators/ValidatorC1b.php', + 'malkusch\bav\configuration' => '../../classes/configuration/Configuration.php', + 'malkusch\bav\filevalidator' => '../../classes/dataBackend/file/validator/FileValidator.php', + 'malkusch\bav\logupdateplan' => '../../classes/dataBackend/update/LogUpdatePlan.php', + 'malkusch\bav\iconvencoding' => '../../classes/encoding/IconvEncoding.php', + 'malkusch\bav\fileexception' => '../../classes/util/exception/FileException.php', + 'malkusch\bav\lockexception' => '../../classes/util/exception/LockException.php', + 'malkusch\bav\fieldexception' => '../../classes/dataBackend/file/validator/exception/FieldException.php', + 'malkusch\bav\pdodatabackend' => '../../classes/dataBackend/pdo/PDODataBackend.php', + 'malkusch\bav\validatorchain' => '../../classes/validator/ValidatorChain.php', + 'malkusch\bav\agencyexception' => '../../classes/bank/exception/AgencyException.php', + 'malkusch\bav\filedatabackend' => '../../classes/dataBackend/file/FileDataBackend.php', + 'malkusch\bav\regexpuripicker' => '../../classes/dataBackend/file/download/uripicker/RegExpURIPicker.php', + 'malkusch\bav\iso8859encoding' => '../../classes/encoding/ISO8859Encoding.php', + 'malkusch\bav\fallbackuripicker' => '../../classes/dataBackend/file/download/uripicker/FallbackURIPicker.php', + 'malkusch\bav\fileparsercontext' => '../../classes/dataBackend/file/fileParser/FileParserContext.php', + 'malkusch\bav\encodingexception' => '../../classes/encoding/exception/EncodingException.php', + 'malkusch\bav\uripickerexception' => '../../classes/dataBackend/file/download/uripicker/exception/URIPickerException.php', + 'malkusch\bav\validatoriteration' => '../../classes/validator/ValidatorIteration.php', + 'malkusch\bav\validatorexception' => '../../classes/validator/exception/ValidatorException.php', + 'malkusch\bav\downloaderexception' => '../../classes/dataBackend/file/download/exception/DownloaderException.php', + 'malkusch\bav\fileparserexception' => '../../classes/dataBackend/file/fileParser/exception/FileParserException.php', + 'malkusch\bav\automaticupdateplan' => '../../classes/dataBackend/update/AutomaticUpdatePlan.php', + 'malkusch\bav\defaultconfiguration' => '../../classes/configuration/DefaultConfiguration.php', + 'malkusch\bav\databackendcontainer' => '../../classes/dataBackend/DataBackendContainer.php', + 'malkusch\bav\databackendexception' => '../../classes/dataBackend/exception/DataBackendException.php', + 'malkusch\bav\configurationregistry' => '../../classes/configuration/ConfigurationRegistry.php', + 'malkusch\bav\banknotfoundexception' => '../../classes/dataBackend/exception/BankNotFoundException.php', + 'malkusch\bav\nomainagencyexception' => '../../classes/dataBackend/exception/NoMainAgencyException.php', + 'malkusch\bav\configurationexception' => '../../classes/configuration/ConfigurationException.php', + 'malkusch\bav\databackendioexception' => '../../classes/dataBackend/exception/DataBackendIOException.php', + 'malkusch\bav\filevalidatorexception' => '../../classes/dataBackend/file/validator/exception/FileValidatorException.php', + 'malkusch\bav\validatorbankdependent' => '../../classes/validator/ValidatorBankDependent.php', + 'malkusch\bav\validatoreserexception' => '../../classes/validator/exception/ValidatorESERException.php', + 'malkusch\bav\pdodatabackendcontainer' => '../../classes/dataBackend/pdo/PDODataBackendContainer.php', + 'malkusch\bav\filedatabackendcontainer' => '../../classes/dataBackend/file/FileDataBackendContainer.php', + 'malkusch\bav\invalidfilesizeexception' => '../../classes/dataBackend/file/validator/exception/InvalidFilesizeException.php', + 'malkusch\bav\notempdirectoryexception' => '../../classes/util/exception/NoTempDirectoryException.php', + 'malkusch\bav\fileparsercontextexception' => '../../classes/dataBackend/file/fileParser/exception/FileParserContextException.php', + 'malkusch\bav\invalidlinelengthexception' => '../../classes/dataBackend/file/validator/exception/InvalidLineLengthException.php', + 'malkusch\bav\weightediterationvalidator' => '../../classes/validator/WeightedIterationValidator.php', + 'malkusch\bav\validatornotexistsexception' => '../../classes/validator/exception/ValidatorNotExistsException.php', + 'malkusch\bav\fileparsernotexistsexception' => '../../classes/dataBackend/file/fileParser/exception/FileParserNotExistsException.php', + 'malkusch\bav\unsupportedencodingexception' => '../../classes/encoding/exception/UnsupportedEncodingException.php', + 'malkusch\bav\validatoroutofboundsexception' => '../../classes/validator/exception/ValidatorOutOfBoundsException.php', + 'malkusch\bav\transformationiterationvalidator' => '../../classes/validator/TransformationIterationValidator.php', + 'malkusch\bav\undefinedattributeagencyexception' => '../../classes/bank/exception/UndefinedAttributeAgencyException.php', + 'malkusch\bav\undefinedfileparsercontextexception' => '../../classes/dataBackend/file/fileParser/exception/UndefinedFileParserContextException.php', + 'malkusch\bav\missingattributesdatabackendioexception' => '../../classes/dataBackend/exception/MissingAttributesDataBackendIOException.php', + 'malkusch\bav\fileparserioexception' => '../../classes/dataBackend/file/fileParser/exception/FileParserIOException', + 'malkusch\bav\parseexception' => '../../classes/dataBackend/file/fileParser/exception/ParseException', +); diff --git a/tests/autoloader/index/1.php b/tests/autoloader/index/1.php new file mode 100644 index 00000000..0367e64d --- /dev/null +++ b/tests/autoloader/index/1.php @@ -0,0 +1,35 @@ + '../classes/testAPI/TestAPI.php', + 'malkusch\bav\timemock' => '../classes/TimeMock.php', + 'malkusch\bav\classfile' => '../classes/class/ClassFile.php', + 'malkusch\bav\pdofactory' => '../classes/PDOFactory.php', + 'malkusch\bav\bavtestapi' => '../classes/testAPI/BAVTestAPI.php', + 'malkusch\bav\testapiresult' => '../classes/testAPI/TestAPIResult.php', + 'malkusch\bav\testapiexception' => '../classes/testAPI/exception/TestAPIException.php', + 'malkusch\bav\kontochecktestapi' => '../classes/testAPI/KontocheckTestAPI.php', + 'malkusch\bav\classfileexception' => '../classes/class/exception/ClassFileException.php', + 'malkusch\bav\ktoblzchecktestapi' => '../classes/testAPI/KtoblzcheckTestAPI.php', + 'malkusch\bav\testapierrorresult' => '../classes/testAPI/TestAPIErrorResult.php', + 'malkusch\bav\classfileioexception' => '../classes/class/exception/ClassFileIOException.php', + 'malkusch\bav\missingclassexception' => '../classes/class/exception/MissingClassException.php', + 'malkusch\bav\validationtestapiexception' => '../classes/testAPI/exception/ValidationTestAPIException.php', + 'malkusch\bav\testapiunavailableexception' => '../classes/testAPI/exception/TestAPIUnavailableException.php', + 'malkusch\bav\banknotfoundtestapiexception' => '../classes/testAPI/exception/BankNotFoundTestAPIException.php', + 'malkusch\bav\notinitializedtestapiexception' => '../classes/testAPI/exception/NotInitializedTestAPIException.php', +); diff --git a/tests/bin/test-install.php b/tests/bin/test-install.php index 57dbf2bd..2f7dcec6 100755 --- a/tests/bin/test-install.php +++ b/tests/bin/test-install.php @@ -9,7 +9,7 @@ namespace malkusch\bav; -require_once __DIR__ . "/../../autoloader/autoloader.php"; +require_once __DIR__ . "/../autoloader/autoloader.php"; try { ConfigurationRegistry::getConfiguration()->setAutomaticInstallation(false); diff --git a/tests/BackendTest.php b/tests/unit-large/BackendTest.php similarity index 100% rename from tests/BackendTest.php rename to tests/unit-large/BackendTest.php diff --git a/tests/CrossProjectTest.php b/tests/unit-large/CrossProjectTest.php similarity index 100% rename from tests/CrossProjectTest.php rename to tests/unit-large/CrossProjectTest.php diff --git a/tests/00UpdatePlanTest.php b/tests/unit/00UpdatePlanTest.php similarity index 100% rename from tests/00UpdatePlanTest.php rename to tests/unit/00UpdatePlanTest.php diff --git a/tests/AgencyQueryTest.php b/tests/unit/AgencyQueryTest.php similarity index 100% rename from tests/AgencyQueryTest.php rename to tests/unit/AgencyQueryTest.php diff --git a/tests/BAVFacadeTest.php b/tests/unit/BAVFacadeTest.php similarity index 100% rename from tests/BAVFacadeTest.php rename to tests/unit/BAVFacadeTest.php diff --git a/tests/BICUtilTest.php b/tests/unit/BICUtilTest.php similarity index 100% rename from tests/BICUtilTest.php rename to tests/unit/BICUtilTest.php diff --git a/tests/BackendContainerTest.php b/tests/unit/BackendContainerTest.php similarity index 100% rename from tests/BackendContainerTest.php rename to tests/unit/BackendContainerTest.php diff --git a/tests/DataConstraintTest.php b/tests/unit/DataConstraintTest.php similarity index 98% rename from tests/DataConstraintTest.php rename to tests/unit/DataConstraintTest.php index 3290a1bc..71fd9388 100644 --- a/tests/DataConstraintTest.php +++ b/tests/unit/DataConstraintTest.php @@ -42,7 +42,7 @@ public static function setUpBeforeClass() ) engine=MEMORY" ); - $fp = fopen(__DIR__ . '/../data/banklist.txt', 'r'); + $fp = fopen(__DIR__ . '/../../data/banklist.txt', 'r'); if (! is_resource($fp)) { throw new RuntimeException('I/O-Error'); diff --git a/tests/DownloaderTest.php b/tests/unit/DownloaderTest.php similarity index 100% rename from tests/DownloaderTest.php rename to tests/unit/DownloaderTest.php diff --git a/tests/FileUtilTest.php b/tests/unit/FileUtilTest.php similarity index 92% rename from tests/FileUtilTest.php rename to tests/unit/FileUtilTest.php index 0a385ba3..932fce86 100644 --- a/tests/FileUtilTest.php +++ b/tests/unit/FileUtilTest.php @@ -19,8 +19,8 @@ class FileUtilTest extends \PHPUnit_Framework_TestCase */ public function testSafeRenameOneFS() { - $before = __DIR__ . "/data/testSafeRenameBefore"; - $after = __DIR__ . "/data/testSafeRenameAfter"; + $before = __DIR__ . "/../data/testSafeRenameBefore"; + $after = __DIR__ . "/../data/testSafeRenameAfter"; touch($before); diff --git a/tests/FileValidatorTest.php b/tests/unit/FileValidatorTest.php similarity index 90% rename from tests/FileValidatorTest.php rename to tests/unit/FileValidatorTest.php index 90a31bb2..5d4595b1 100644 --- a/tests/FileValidatorTest.php +++ b/tests/unit/FileValidatorTest.php @@ -40,7 +40,7 @@ public function testInvalidLineLength() $backend = new FileDataBackend(); $file = $backend->getFile(); - $invalidFile = __DIR__ . "/data/invalidLength.txt"; + $invalidFile = __DIR__ . "/../data/invalidLength.txt"; copy($file, $invalidFile); $fp = fopen($invalidFile, "c"); @@ -58,7 +58,7 @@ public function testNotConstantLineLength() $backend = new FileDataBackend(); $file = $backend->getFile(); - $invalidFile = __DIR__ . "/data/notConstantLength.txt"; + $invalidFile = __DIR__ . "/../data/notConstantLength.txt"; copy($file, $invalidFile); $fp = fopen($invalidFile, "a"); @@ -76,7 +76,7 @@ public function testInvalidFirstLineContent() $backend = new FileDataBackend(); $file = $backend->getFile(); - $invalidFile = __DIR__ . "/data/invalidFirstLineContent.txt"; + $invalidFile = __DIR__ . "/../data/invalidFirstLineContent.txt"; copy($file, $invalidFile); $fp = fopen($invalidFile, "c"); diff --git a/tests/URIPickerTest.php b/tests/unit/URIPickerTest.php similarity index 96% rename from tests/URIPickerTest.php rename to tests/unit/URIPickerTest.php index 4da65621..650180fa 100644 --- a/tests/URIPickerTest.php +++ b/tests/unit/URIPickerTest.php @@ -56,7 +56,7 @@ public function testSameResults() */ public function testPickURI(URIPicker $picker) { - $html = file_get_contents(__DIR__ . "/data/bankleitzahlen_download.html"); + $html = file_get_contents(__DIR__ . "/../data/bankleitzahlen_download.html"); $uri = $picker->pickURI($html); $this->assertEquals( diff --git a/tests/ValidatorTest.php b/tests/unit/ValidatorTest.php similarity index 97% rename from tests/ValidatorTest.php rename to tests/unit/ValidatorTest.php index cb0d11ea..6f85766d 100644 --- a/tests/ValidatorTest.php +++ b/tests/unit/ValidatorTest.php @@ -58,7 +58,7 @@ public function provideBanks() $this->setUp(); $banks = array(); - $files = ClassFile::getClassFiles(__DIR__.'/../classes/validator/validators/'); + $files = ClassFile::getClassFiles(__DIR__.'/../../classes/validator/validators/'); foreach ($files as $class) { if (! preg_match('~^Validator([A-Z0-9]{2})$~', $class->getName(), $matchType)) { continue; @@ -150,7 +150,7 @@ public function testAccountLength(Bank $bank, $account) */ public function provideTestAccounts() { - $verifyArray = json_decode(file_get_contents(__DIR__ . '/data/accounts.json')); + $verifyArray = json_decode(file_get_contents(__DIR__ . '/../data/accounts.json')); if (! is_array($verifyArray)) { throw new \RuntimeException("couldn't parse accounts.json."); From fdc7adbe1608bd93bbdfc22fc38d8fcbac48b390 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 6 Jun 2014 21:36:40 +0200 Subject: [PATCH 177/303] fixed invalid phpunit call --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index d3e9f3da..0801f392 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,7 +18,7 @@ before_script: - echo 'SET @@GLOBAL.wait_timeout=600' | mysql -uroot script: - - phpunit large tests/unit/ + - phpunit tests/unit/ - phpunit --exclude-group large tests/unit-large/ - phpcs --standard=PSR2 classes/ bin/ docs/example.php tests/classes/ tests/bin/ From 6e03a2309ac892b1bc730c3dd539f08581e2b2a7 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 6 Jun 2014 21:53:27 +0200 Subject: [PATCH 178/303] fixed for PHP 5.3 --- tests/unit/ValidatorTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/ValidatorTest.php b/tests/unit/ValidatorTest.php index 6f85766d..ada58ef0 100644 --- a/tests/unit/ValidatorTest.php +++ b/tests/unit/ValidatorTest.php @@ -182,7 +182,7 @@ public function testAccount(\stdClass $testCase) $test = $this; $checkAccounts = function ($account, $key, $isValid) use ($bank, $test) { - $this->assertEquals( + $test->assertEquals( $isValid, $bank->isValid($account), "$account validates wrongly." From 39d31d8c9e24ec4d092ecfc2374c0c9d407d399d Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 6 Jun 2014 22:52:57 +0200 Subject: [PATCH 179/303] added StatementContainer --- autoloader/index/0.php | 1 + classes/dataBackend/pdo/PDODataBackend.php | 215 ++++++---------- .../dataBackend/pdo/StatementContainer.php | 49 ++++ tests/autoloader/index/0.php | 239 ++--------------- tests/autoloader/index/1.php | 240 ++++++++++++++++-- tests/unit/StatementContainerTest.php | 54 ++++ 6 files changed, 424 insertions(+), 374 deletions(-) create mode 100644 classes/dataBackend/pdo/StatementContainer.php create mode 100644 tests/unit/StatementContainerTest.php diff --git a/autoloader/index/0.php b/autoloader/index/0.php index c171d82d..fdbda90b 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -204,6 +204,7 @@ 'malkusch\bav\fileparsercontext' => '../classes/dataBackend/file/fileParser/FileParserContext.php', 'malkusch\bav\encodingexception' => '../classes/encoding/exception/EncodingException.php', 'malkusch\bav\uripickerexception' => '../classes/dataBackend/file/download/uripicker/exception/URIPickerException.php', + 'malkusch\bav\statementcontainer' => '../classes/dataBackend/pdo/StatementContainer.php', 'malkusch\bav\validatoriteration' => '../classes/validator/ValidatorIteration.php', 'malkusch\bav\validatorexception' => '../classes/validator/exception/ValidatorException.php', 'malkusch\bav\downloaderexception' => '../classes/dataBackend/file/download/exception/DownloaderException.php', diff --git a/classes/dataBackend/pdo/PDODataBackend.php b/classes/dataBackend/pdo/PDODataBackend.php index 725cfe37..b770c6ac 100644 --- a/classes/dataBackend/pdo/PDODataBackend.php +++ b/classes/dataBackend/pdo/PDODataBackend.php @@ -18,49 +18,15 @@ class PDODataBackend extends DataBackend private $agencies = array(); /** - * @var \PDOStatement - */ - private $selectBank; - - /** - * @var \PDOStatement - */ - private $selectMainAgency; - - /** - * @var \PDOStatement - */ - private $selectAgencies; - - /** - * @var \PDOStatement - */ - private $selectAgency; - - /** - * @var \PDOStatement - */ - private $selectAgencysBank; - - /** - * @var \PDOStatement - */ - private $selectMeta; - - /** - * @var \PDOStatement - */ - private $selectInstalled; - - /** - * @var \PDOStatement + * @var string */ - private $selectBICAgencies; + private $agencyAttributes = + "a.id, name, postcode, city, shortTerm AS 'shortTerm', pan, bic"; /** - * @var \PDOStatement + * @var StatementContainer */ - private $selectValidBIC; + private $statementContainer; /** * @var \PDO @@ -84,6 +50,7 @@ public function __construct(\PDO $pdo, $prefix = "bav_") { $this->pdo = $pdo; $this->prefix = $prefix; + $this->statementContainer = new StatementContainer($pdo); $this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); } @@ -113,7 +80,6 @@ public function getPrefix() public function getAgencies($sql) { try { - $this->prepareStatements(); $agencies = array(); foreach ($this->pdo->query($sql) as $result) { @@ -122,18 +88,26 @@ public function getAgencies($sql) throw new MissingAttributesDataBackendIOException(); } - $this->selectAgency->execute(array(':agency' => $result['id'])); - $result = $this->selectAgency->fetch(\PDO::FETCH_ASSOC); - $this->selectAgency->closeCursor(); + $stmt = $this->statementContainer->prepare( + "SELECT $this->agencyAttributes, bank FROM {$this->prefix}agency a + WHERE id = :agency" + ); + $stmt->execute(array(':agency' => $result['id'])); + $result = $stmt->fetch(\PDO::FETCH_ASSOC); + $stmt->closeCursor(); if ($result === false) { throw new DataBackendIOException(); } } if (! array_key_exists('bank', $result)) { - $this->selectAgencysBank->execute(array(':agency' => $result['id'])); - $bankResult = $this->selectAgencysBank->fetch(\PDO::FETCH_ASSOC); - $this->selectAgencysBank->closeCursor(); + $stmt = $this->statementContainer->prepare( + "SELECT bank FROM {$this->prefix}agency + WHERE id = :agency" + ); + $stmt->execute(array(':agency' => $result['id'])); + $bankResult = $stmt->fetch(\PDO::FETCH_ASSOC); + $stmt->closeCursor(); if ($bankResult === false) { throw new DataBackendIOException(); @@ -155,54 +129,6 @@ public function getAgencies($sql) } } - /** - * @throws \PDOException - */ - private function prepareStatements() - { - if (! is_null($this->selectBank)) { - return; - } - - $this->selectBank = $this->pdo->prepare("SELECT id, validator FROM {$this->prefix}bank WHERE id = :bankID"); - - $agencyAttributes - = "a.id, name, postcode, city, shortTerm AS 'shortTerm', pan, bic"; - $this->selectMainAgency = $this->pdo->prepare( - "SELECT $agencyAttributes FROM {$this->prefix}bank b - INNER JOIN {$this->prefix}agency a ON b.mainAgency = a.id - WHERE b.id = :bankID" - ); - $this->selectAgencies = $this->pdo->prepare( - "SELECT $agencyAttributes FROM {$this->prefix}agency a - WHERE bank = :bankID AND id != :mainAgency" - ); - $this->selectAgency = $this->pdo->prepare( - "SELECT $agencyAttributes, bank FROM {$this->prefix}agency a - WHERE id = :agency" - ); - $this->selectAgencysBank = $this->pdo->prepare( - "SELECT bank FROM {$this->prefix}agency - WHERE id = :agency" - ); - $this->selectMeta = $this->pdo->prepare( - "SELECT value FROM {$this->prefix}meta - WHERE name = :name" - ); - $this->selectInstalled = $this->pdo->prepare( - "SELECT CASE WHEN EXISTS( - (SELECT * FROM information_schema.tables WHERE table_name='{$this->prefix}meta') - ) THEN 1 ELSE 0 END" - ); - $this->selectBICAgencies = $this->pdo->prepare( - "SELECT bank, $agencyAttributes FROM {$this->prefix}agency a - WHERE bic = :bic" - ); - $this->selectValidBIC = $this->pdo->prepare( - "SELECT bic FROM {$this->prefix}agency WHERE bic = :bic GROUP BY (bic)" - ); - } - /** * @see DataBackend::update() * @throws DataBackendException @@ -409,7 +335,6 @@ public function getAllBanks() throw new DataBackendIOException(); } catch (MissingAttributesDataBackendIOException $e) { - $this->selectBank->closeCursor(); throw new LogicException($e); } @@ -425,23 +350,25 @@ public function getAllBanks() protected function getNewBank($bankID) { try { - $this->prepareStatements(); - $this->selectBank->execute(array(':bankID' => $bankID)); - $result = $this->selectBank->fetch(\PDO::FETCH_ASSOC); + $stmt = $this->statementContainer->prepare( + "SELECT id, validator FROM {$this->prefix}bank WHERE id = :bankID" + ); + $stmt->execute(array(':bankID' => $bankID)); + $result = $stmt->fetch(\PDO::FETCH_ASSOC); if ($result === false) { - $this->selectBank->closeCursor(); + $stmt->closeCursor(); throw new BankNotFoundException($bankID); } - $this->selectBank->closeCursor(); + $stmt->closeCursor(); return $this->getBankObject($result); } catch (\PDOException $e) { - $this->selectBank->closeCursor(); + $stmt->closeCursor(); throw new DataBackendIOException(); } catch (MissingAttributesDataBackendIOException $e) { - $this->selectBank->closeCursor(); + $stmt->closeCursor(); throw new LogicException($e); } @@ -517,22 +444,26 @@ private function getAgencyObject(Bank $bank, Array $fetchedResult) public function getMainAgency(Bank $bank) { try { - $this->prepareStatements(); - $this->selectMainAgency->execute(array(":bankID" => $bank->getBankID())); - $result = $this->selectMainAgency->fetch(); + $stmt = $this->statementContainer->prepare( + "SELECT $this->agencyAttributes FROM {$this->prefix}bank b + INNER JOIN {$this->prefix}agency a ON b.mainAgency = a.id + WHERE b.id = :bankID" + ); + $stmt->execute(array(":bankID" => $bank->getBankID())); + $result = $stmt->fetch(); if ($result === false) { throw new DataBackendException(); } - $this->selectMainAgency->closeCursor(); + $stmt->closeCursor(); return $this->getAgencyObject($bank, $result); } catch (\PDOException $e) { - $this->selectMainAgency->closeCursor(); + $stmt->closeCursor(); throw new DataBackendIOException($e->getMessage(), 0, $e); } catch (MissingAttributesDataBackendIOException $e) { - $this->selectMainAgency->closeCursor(); + $stmt->closeCursor(); throw new LogicException($e); } @@ -546,24 +477,27 @@ public function getMainAgency(Bank $bank) public function getAgenciesForBank(Bank $bank) { try { - $this->prepareStatements(); + $stmt = $this->statementContainer->prepare( + "SELECT $this->agencyAttributes FROM {$this->prefix}agency a + WHERE bank = :bankID AND id != :mainAgency" + ); $agencies = array(); - $this->selectAgencies->execute(array( + $stmt->execute(array( ":bankID" => $bank->getBankID(), ":mainAgency" => $bank->getMainAgency()->getID())); - foreach ($this->selectAgencies->fetchAll() as $agencyResult) { + foreach ($stmt->fetchAll() as $agencyResult) { $agencies[] = $this->getAgencyObject($bank, $agencyResult); } - $this->selectAgencies->closeCursor(); + $stmt->closeCursor(); return $agencies; } catch (\PDOException $e) { - $this->selectAgencies->closeCursor(); + $stmt->closeCursor(); throw new DataBackendIOException($e->getMessage(), 0, $e); } catch (MissingAttributesDataBackendIOException $e) { - $this->selectAgencies->closeCursor(); + $stmt->closeCursor(); throw new LogicException($e); } @@ -578,20 +512,23 @@ public function getAgenciesForBank(Bank $bank) public function getLastUpdate() { try { - $this->prepareStatements(); - $this->selectMeta->execute(array( + $stmt = $this->statementContainer->prepare( + "SELECT value FROM {$this->prefix}meta + WHERE name = :name" + ); + $stmt->execute(array( ":name" => self::META_MODIFICATION, )); - $result = $this->selectMeta->fetch(); + $result = $stmt->fetch(); if ($result === false) { throw new DataBackendException(); } - $this->selectMeta->closeCursor(); + $stmt->closeCursor(); return $result["value"]; } catch (\PDOException $e) { - $this->selectMeta->closeCursor(); + $stmt->closeCursor(); throw new DataBackendIOException($e->getMessage(), $e->getCode(), $e); } @@ -606,18 +543,22 @@ public function getLastUpdate() public function isInstalled() { try { - $this->prepareStatements(); - $this->selectInstalled->execute(); - $result = $this->selectInstalled->fetch(); + $stmt = $this->statementContainer->prepare( + "SELECT CASE WHEN EXISTS( + (SELECT * FROM information_schema.tables WHERE table_name='{$this->prefix}meta') + ) THEN 1 ELSE 0 END" + ); + $stmt->execute(); + $result = $stmt->fetch(); if ($result === false) { throw new DataBackendException(); } - $this->selectInstalled->closeCursor(); + $stmt->closeCursor(); return $result[0] == 1; } catch (\PDOException $e) { - $this->selectInstalled->closeCursor(); + $stmt->closeCursor(); throw new DataBackendIOException($e->getMessage(), $e->getCode(), $e); } @@ -632,15 +573,16 @@ public function isInstalled() public function isValidBIC($bic) { try { - $this->prepareStatements(); - $this->selectValidBIC->execute(array(":bic" => $bic)); + $stmt = $this->statementContainer->prepare( + "SELECT bic FROM {$this->prefix}agency WHERE bic = :bic GROUP BY (bic)" + ); + $stmt->execute(array(":bic" => $bic)); - $rows = $this->selectValidBIC->fetchAll(); - $this->selectValidBIC->closeCursor(); + $rows = $stmt->fetchAll(); return ! empty($rows); } catch (\PDOException $e) { - $this->selectValidBIC->closeCursor(); + $stmt->closeCursor(); throw new DataBackendIOException($e->getMessage(), 0, $e); } @@ -655,22 +597,25 @@ public function isValidBIC($bic) public function getBICAgencies($bic) { try { - $this->prepareStatements(); + $stmt = $this->statementContainer->prepare( + "SELECT bank, $this->agencyAttributes FROM {$this->prefix}agency a + WHERE bic = :bic" + ); $agencies = array(); - $this->selectBICAgencies->execute(array(":bic" => $bic)); - foreach ($this->selectBICAgencies->fetchAll() as $result) { + $stmt->execute(array(":bic" => $bic)); + foreach ($stmt->fetchAll() as $result) { $agencies[] = $this->getAgencyObject($this->getBank($result['bank']), $result); } - $this->selectBICAgencies->closeCursor(); + $stmt->closeCursor(); return $agencies; } catch (\PDOException $e) { - $this->selectBICAgencies->closeCursor(); + $stmt->closeCursor(); throw new DataBackendIOException($e->getMessage(), 0, $e); } catch (MissingAttributesDataBackendIOException $e) { - $this->selectBICAgencies->closeCursor(); + $stmt->closeCursor(); throw new LogicException($e); } diff --git a/classes/dataBackend/pdo/StatementContainer.php b/classes/dataBackend/pdo/StatementContainer.php new file mode 100644 index 00000000..96a328b4 --- /dev/null +++ b/classes/dataBackend/pdo/StatementContainer.php @@ -0,0 +1,49 @@ + + * @license GPL + */ +class StatementContainer +{ + + /** + * @var \PDOStatement[] + */ + private $statements = array(); + + /** + * @var \PDO + */ + private $pdo; + + /** + * Inject the pdo. + */ + public function __construct(\PDO $pdo) + { + $this->pdo = $pdo; + } + + /** + * Returns a PDOStatement + * + * This method will return the same object for equal queries. + * + * @param string $sql + * @return \PDOStatement + * @throws \PDOException + */ + public function prepare($sql) + { + if (! array_key_exists($sql, $this->statements)) { + $this->statements[$sql] = $this->pdo->prepare($sql); + + } + return $this->statements[$sql]; + } +} diff --git a/tests/autoloader/index/0.php b/tests/autoloader/index/0.php index 89de4ebe..0367e64d 100644 --- a/tests/autoloader/index/0.php +++ b/tests/autoloader/index/0.php @@ -15,226 +15,21 @@ */ return array( - 'malkusch\bav\bav' => '../../classes/BAV.php', - 'malkusch\bav\bank' => '../../classes/bank/Bank.php', - 'malkusch\bav\lock' => '../../classes/util/Lock.php', - 'malkusch\bav\agency' => '../../classes/bank/Agency.php', - 'malkusch\bav\bicutil' => '../../classes/util/BICUtil.php', - 'malkusch\bav\encoding' => '../../classes/encoding/Encoding.php', - 'malkusch\bav\fileutil' => '../../classes/util/FileUtil.php', - 'malkusch\bav\uripicker' => '../../classes/dataBackend/file/download/uripicker/URIPicker.php', - 'malkusch\bav\validator' => '../../classes/validator/Validator.php', - 'malkusch\bav\downloader' => '../../classes/dataBackend/file/download/Downloader.php', - 'malkusch\bav\fileparser' => '../../classes/dataBackend/file/fileParser/FileParser.php', - 'malkusch\bav\updateplan' => '../../classes/dataBackend/update/UpdatePlan.php', - 'malkusch\bav\mbencoding' => '../../classes/encoding/MBEncoding.php', - 'malkusch\bav\databackend' => '../../classes/dataBackend/DataBackend.php', - 'malkusch\bav\validator00' => '../../classes/validator/validators/Validator00.php', - 'malkusch\bav\validator01' => '../../classes/validator/validators/Validator01.php', - 'malkusch\bav\validator02' => '../../classes/validator/validators/Validator02.php', - 'malkusch\bav\validator03' => '../../classes/validator/validators/Validator03.php', - 'malkusch\bav\validator04' => '../../classes/validator/validators/Validator04.php', - 'malkusch\bav\validator05' => '../../classes/validator/validators/Validator05.php', - 'malkusch\bav\validator06' => '../../classes/validator/validators/Validator06.php', - 'malkusch\bav\validator07' => '../../classes/validator/validators/Validator07.php', - 'malkusch\bav\validator08' => '../../classes/validator/validators/Validator08.php', - 'malkusch\bav\validator09' => '../../classes/validator/validators/Validator09.php', - 'malkusch\bav\validator10' => '../../classes/validator/validators/Validator10.php', - 'malkusch\bav\validator11' => '../../classes/validator/validators/Validator11.php', - 'malkusch\bav\validator13' => '../../classes/validator/validators/Validator13.php', - 'malkusch\bav\validator14' => '../../classes/validator/validators/Validator14.php', - 'malkusch\bav\validator15' => '../../classes/validator/validators/Validator15.php', - 'malkusch\bav\validator16' => '../../classes/validator/validators/Validator16.php', - 'malkusch\bav\validator17' => '../../classes/validator/validators/Validator17.php', - 'malkusch\bav\validator18' => '../../classes/validator/validators/Validator18.php', - 'malkusch\bav\validator19' => '../../classes/validator/validators/Validator19.php', - 'malkusch\bav\validator20' => '../../classes/validator/validators/Validator20.php', - 'malkusch\bav\validator21' => '../../classes/validator/validators/Validator21.php', - 'malkusch\bav\validator22' => '../../classes/validator/validators/Validator22.php', - 'malkusch\bav\validator23' => '../../classes/validator/validators/Validator23.php', - 'malkusch\bav\validator24' => '../../classes/validator/validators/Validator24.php', - 'malkusch\bav\validator25' => '../../classes/validator/validators/Validator25.php', - 'malkusch\bav\validator26' => '../../classes/validator/validators/Validator26.php', - 'malkusch\bav\validator27' => '../../classes/validator/validators/Validator27.php', - 'malkusch\bav\validator28' => '../../classes/validator/validators/Validator28.php', - 'malkusch\bav\validator29' => '../../classes/validator/validators/Validator29.php', - 'malkusch\bav\validator30' => '../../classes/validator/validators/Validator30.php', - 'malkusch\bav\validator31' => '../../classes/validator/validators/Validator31.php', - 'malkusch\bav\validator32' => '../../classes/validator/validators/Validator32.php', - 'malkusch\bav\validator33' => '../../classes/validator/validators/Validator33.php', - 'malkusch\bav\validator34' => '../../classes/validator/validators/Validator34.php', - 'malkusch\bav\validator35' => '../../classes/validator/validators/Validator35.php', - 'malkusch\bav\validator36' => '../../classes/validator/validators/Validator36.php', - 'malkusch\bav\validator37' => '../../classes/validator/validators/Validator37.php', - 'malkusch\bav\validator38' => '../../classes/validator/validators/Validator38.php', - 'malkusch\bav\validator39' => '../../classes/validator/validators/Validator39.php', - 'malkusch\bav\validator40' => '../../classes/validator/validators/Validator40.php', - 'malkusch\bav\validator41' => '../../classes/validator/validators/Validator41.php', - 'malkusch\bav\validator42' => '../../classes/validator/validators/Validator42.php', - 'malkusch\bav\validator43' => '../../classes/validator/validators/Validator43.php', - 'malkusch\bav\validator44' => '../../classes/validator/validators/Validator44.php', - 'malkusch\bav\validator45' => '../../classes/validator/validators/Validator45.php', - 'malkusch\bav\validator46' => '../../classes/validator/validators/Validator46.php', - 'malkusch\bav\validator47' => '../../classes/validator/validators/Validator47.php', - 'malkusch\bav\validator48' => '../../classes/validator/validators/Validator48.php', - 'malkusch\bav\validator49' => '../../classes/validator/validators/Validator49.php', - 'malkusch\bav\validator50' => '../../classes/validator/validators/Validator50.php', - 'malkusch\bav\validator51' => '../../classes/validator/validators/Validator51.php', - 'malkusch\bav\validator52' => '../../classes/validator/validators/Validator52.php', - 'malkusch\bav\validator53' => '../../classes/validator/validators/Validator53.php', - 'malkusch\bav\validator54' => '../../classes/validator/validators/Validator54.php', - 'malkusch\bav\validator55' => '../../classes/validator/validators/Validator55.php', - 'malkusch\bav\validator56' => '../../classes/validator/validators/Validator56.php', - 'malkusch\bav\validator57' => '../../classes/validator/validators/Validator57.php', - 'malkusch\bav\validator58' => '../../classes/validator/validators/Validator58.php', - 'malkusch\bav\validator59' => '../../classes/validator/validators/Validator59.php', - 'malkusch\bav\validator60' => '../../classes/validator/validators/Validator60.php', - 'malkusch\bav\validator61' => '../../classes/validator/validators/Validator61.php', - 'malkusch\bav\validator62' => '../../classes/validator/validators/Validator62.php', - 'malkusch\bav\validator63' => '../../classes/validator/validators/Validator63.php', - 'malkusch\bav\validator64' => '../../classes/validator/validators/Validator64.php', - 'malkusch\bav\validator65' => '../../classes/validator/validators/Validator65.php', - 'malkusch\bav\validator66' => '../../classes/validator/validators/Validator66.php', - 'malkusch\bav\validator67' => '../../classes/validator/validators/Validator67.php', - 'malkusch\bav\validator68' => '../../classes/validator/validators/Validator68.php', - 'malkusch\bav\validator69' => '../../classes/validator/validators/Validator69.php', - 'malkusch\bav\validator70' => '../../classes/validator/validators/Validator70.php', - 'malkusch\bav\validator71' => '../../classes/validator/validators/Validator71.php', - 'malkusch\bav\validator72' => '../../classes/validator/validators/Validator72.php', - 'malkusch\bav\validator73' => '../../classes/validator/validators/Validator73.php', - 'malkusch\bav\validator74' => '../../classes/validator/validators/Validator74.php', - 'malkusch\bav\validator75' => '../../classes/validator/validators/Validator75.php', - 'malkusch\bav\validator76' => '../../classes/validator/validators/Validator76.php', - 'malkusch\bav\validator77' => '../../classes/validator/validators/Validator77.php', - 'malkusch\bav\validator78' => '../../classes/validator/validators/Validator78.php', - 'malkusch\bav\validator79' => '../../classes/validator/validators/Validator79.php', - 'malkusch\bav\validator80' => '../../classes/validator/validators/Validator80.php', - 'malkusch\bav\validator81' => '../../classes/validator/validators/Validator81.php', - 'malkusch\bav\validator82' => '../../classes/validator/validators/Validator82.php', - 'malkusch\bav\validator83' => '../../classes/validator/validators/Validator83.php', - 'malkusch\bav\validator84' => '../../classes/validator/validators/Validator84.php', - 'malkusch\bav\validator85' => '../../classes/validator/validators/Validator85.php', - 'malkusch\bav\validator86' => '../../classes/validator/validators/Validator86.php', - 'malkusch\bav\validator87' => '../../classes/validator/validators/Validator87.php', - 'malkusch\bav\validator88' => '../../classes/validator/validators/Validator88.php', - 'malkusch\bav\validator89' => '../../classes/validator/validators/Validator89.php', - 'malkusch\bav\validator90' => '../../classes/validator/validators/Validator90.php', - 'malkusch\bav\validator91' => '../../classes/validator/validators/Validator91.php', - 'malkusch\bav\validator92' => '../../classes/validator/validators/Validator92.php', - 'malkusch\bav\validator93' => '../../classes/validator/validators/Validator93.php', - 'malkusch\bav\validator94' => '../../classes/validator/validators/Validator94.php', - 'malkusch\bav\validator95' => '../../classes/validator/validators/Validator95.php', - 'malkusch\bav\validator96' => '../../classes/validator/validators/Validator96.php', - 'malkusch\bav\validator97' => '../../classes/validator/validators/Validator97.php', - 'malkusch\bav\validator98' => '../../classes/validator/validators/Validator98.php', - 'malkusch\bav\validator99' => '../../classes/validator/validators/Validator99.php', - 'malkusch\bav\validatora0' => '../../classes/validator/validators/ValidatorA0.php', - 'malkusch\bav\validatora1' => '../../classes/validator/validators/ValidatorA1.php', - 'malkusch\bav\validatora2' => '../../classes/validator/validators/ValidatorA2.php', - 'malkusch\bav\validatora3' => '../../classes/validator/validators/ValidatorA3.php', - 'malkusch\bav\validatora4' => '../../classes/validator/validators/ValidatorA4.php', - 'malkusch\bav\validatora5' => '../../classes/validator/validators/ValidatorA5.php', - 'malkusch\bav\validatora6' => '../../classes/validator/validators/ValidatorA6.php', - 'malkusch\bav\validatora7' => '../../classes/validator/validators/ValidatorA7.php', - 'malkusch\bav\validatora8' => '../../classes/validator/validators/ValidatorA8.php', - 'malkusch\bav\validatora9' => '../../classes/validator/validators/ValidatorA9.php', - 'malkusch\bav\validatorb0' => '../../classes/validator/validators/ValidatorB0.php', - 'malkusch\bav\validatorb1' => '../../classes/validator/validators/ValidatorB1.php', - 'malkusch\bav\validatorb2' => '../../classes/validator/validators/ValidatorB2.php', - 'malkusch\bav\validatorb3' => '../../classes/validator/validators/ValidatorB3.php', - 'malkusch\bav\validatorb4' => '../../classes/validator/validators/ValidatorB4.php', - 'malkusch\bav\validatorb5' => '../../classes/validator/validators/ValidatorB5.php', - 'malkusch\bav\validatorb6' => '../../classes/validator/validators/ValidatorB6.php', - 'malkusch\bav\validatorb7' => '../../classes/validator/validators/ValidatorB7.php', - 'malkusch\bav\validatorb8' => '../../classes/validator/validators/ValidatorB8.php', - 'malkusch\bav\validatorb9' => '../../classes/validator/validators/ValidatorB9.php', - 'malkusch\bav\validatorc0' => '../../classes/validator/validators/ValidatorC0.php', - 'malkusch\bav\validatorc1' => '../../classes/validator/validators/ValidatorC1.php', - 'malkusch\bav\validatorc2' => '../../classes/validator/validators/ValidatorC2.php', - 'malkusch\bav\validatorc3' => '../../classes/validator/validators/ValidatorC3.php', - 'malkusch\bav\validatorc4' => '../../classes/validator/validators/ValidatorC4.php', - 'malkusch\bav\validatorc5' => '../../classes/validator/validators/ValidatorC5.php', - 'malkusch\bav\validatorc6' => '../../classes/validator/validators/ValidatorC6.php', - 'malkusch\bav\validatorc7' => '../../classes/validator/validators/ValidatorC7.php', - 'malkusch\bav\validatorc8' => '../../classes/validator/validators/ValidatorC8.php', - 'malkusch\bav\validatorc9' => '../../classes/validator/validators/ValidatorC9.php', - 'malkusch\bav\validatord0' => '../../classes/validator/validators/ValidatorD0.php', - 'malkusch\bav\validatord1' => '../../classes/validator/validators/ValidatorD1.php', - 'malkusch\bav\validatord2' => '../../classes/validator/validators/ValidatorD2.php', - 'malkusch\bav\validatord3' => '../../classes/validator/validators/ValidatorD3.php', - 'malkusch\bav\validatord4' => '../../classes/validator/validators/ValidatorD4.php', - 'malkusch\bav\validatord5' => '../../classes/validator/validators/ValidatorD5.php', - 'malkusch\bav\validatord6' => '../../classes/validator/validators/ValidatorD6.php', - 'malkusch\bav\validatord7' => '../../classes/validator/validators/ValidatorD7.php', - 'malkusch\bav\validatord8' => '../../classes/validator/validators/ValidatorD8.php', - 'malkusch\bav\validatord9' => '../../classes/validator/validators/ValidatorD9.php', - 'malkusch\bav\validatore0' => '../../classes/validator/validators/ValidatorE0.php', - 'malkusch\bav\validatore1' => '../../classes/validator/validators/ValidatorE1.php', - 'malkusch\bav\domuripicker' => '../../classes/dataBackend/file/download/uripicker/DOMURIPicker.php', - 'malkusch\bav\bavexception' => '../../classes/exception/BAVException.php', - 'malkusch\bav\validator51x' => '../../classes/validator/validators/Validator51x.php', - 'malkusch\bav\validator69b' => '../../classes/validator/validators/Validator69b.php', - 'malkusch\bav\validator77a' => '../../classes/validator/validators/Validator77a.php', - 'malkusch\bav\validator83x' => '../../classes/validator/validators/Validator83x.php', - 'malkusch\bav\validator84b' => '../../classes/validator/validators/Validator84b.php', - 'malkusch\bav\validator87a' => '../../classes/validator/validators/Validator87a.php', - 'malkusch\bav\validator87c' => '../../classes/validator/validators/Validator87c.php', - 'malkusch\bav\validator90c' => '../../classes/validator/validators/Validator90c.php', - 'malkusch\bav\validator90d' => '../../classes/validator/validators/Validator90d.php', - 'malkusch\bav\validator90e' => '../../classes/validator/validators/Validator90e.php', - 'malkusch\bav\validator90g' => '../../classes/validator/validators/Validator90g.php', - 'malkusch\bav\validatora4b' => '../../classes/validator/validators/ValidatorA4b.php', - 'malkusch\bav\validatorb9a' => '../../classes/validator/validators/ValidatorB9a.php', - 'malkusch\bav\validatorb9b' => '../../classes/validator/validators/ValidatorB9b.php', - 'malkusch\bav\validatorc1b' => '../../classes/validator/validators/ValidatorC1b.php', - 'malkusch\bav\configuration' => '../../classes/configuration/Configuration.php', - 'malkusch\bav\filevalidator' => '../../classes/dataBackend/file/validator/FileValidator.php', - 'malkusch\bav\logupdateplan' => '../../classes/dataBackend/update/LogUpdatePlan.php', - 'malkusch\bav\iconvencoding' => '../../classes/encoding/IconvEncoding.php', - 'malkusch\bav\fileexception' => '../../classes/util/exception/FileException.php', - 'malkusch\bav\lockexception' => '../../classes/util/exception/LockException.php', - 'malkusch\bav\fieldexception' => '../../classes/dataBackend/file/validator/exception/FieldException.php', - 'malkusch\bav\pdodatabackend' => '../../classes/dataBackend/pdo/PDODataBackend.php', - 'malkusch\bav\validatorchain' => '../../classes/validator/ValidatorChain.php', - 'malkusch\bav\agencyexception' => '../../classes/bank/exception/AgencyException.php', - 'malkusch\bav\filedatabackend' => '../../classes/dataBackend/file/FileDataBackend.php', - 'malkusch\bav\regexpuripicker' => '../../classes/dataBackend/file/download/uripicker/RegExpURIPicker.php', - 'malkusch\bav\iso8859encoding' => '../../classes/encoding/ISO8859Encoding.php', - 'malkusch\bav\fallbackuripicker' => '../../classes/dataBackend/file/download/uripicker/FallbackURIPicker.php', - 'malkusch\bav\fileparsercontext' => '../../classes/dataBackend/file/fileParser/FileParserContext.php', - 'malkusch\bav\encodingexception' => '../../classes/encoding/exception/EncodingException.php', - 'malkusch\bav\uripickerexception' => '../../classes/dataBackend/file/download/uripicker/exception/URIPickerException.php', - 'malkusch\bav\validatoriteration' => '../../classes/validator/ValidatorIteration.php', - 'malkusch\bav\validatorexception' => '../../classes/validator/exception/ValidatorException.php', - 'malkusch\bav\downloaderexception' => '../../classes/dataBackend/file/download/exception/DownloaderException.php', - 'malkusch\bav\fileparserexception' => '../../classes/dataBackend/file/fileParser/exception/FileParserException.php', - 'malkusch\bav\automaticupdateplan' => '../../classes/dataBackend/update/AutomaticUpdatePlan.php', - 'malkusch\bav\defaultconfiguration' => '../../classes/configuration/DefaultConfiguration.php', - 'malkusch\bav\databackendcontainer' => '../../classes/dataBackend/DataBackendContainer.php', - 'malkusch\bav\databackendexception' => '../../classes/dataBackend/exception/DataBackendException.php', - 'malkusch\bav\configurationregistry' => '../../classes/configuration/ConfigurationRegistry.php', - 'malkusch\bav\banknotfoundexception' => '../../classes/dataBackend/exception/BankNotFoundException.php', - 'malkusch\bav\nomainagencyexception' => '../../classes/dataBackend/exception/NoMainAgencyException.php', - 'malkusch\bav\configurationexception' => '../../classes/configuration/ConfigurationException.php', - 'malkusch\bav\databackendioexception' => '../../classes/dataBackend/exception/DataBackendIOException.php', - 'malkusch\bav\filevalidatorexception' => '../../classes/dataBackend/file/validator/exception/FileValidatorException.php', - 'malkusch\bav\validatorbankdependent' => '../../classes/validator/ValidatorBankDependent.php', - 'malkusch\bav\validatoreserexception' => '../../classes/validator/exception/ValidatorESERException.php', - 'malkusch\bav\pdodatabackendcontainer' => '../../classes/dataBackend/pdo/PDODataBackendContainer.php', - 'malkusch\bav\filedatabackendcontainer' => '../../classes/dataBackend/file/FileDataBackendContainer.php', - 'malkusch\bav\invalidfilesizeexception' => '../../classes/dataBackend/file/validator/exception/InvalidFilesizeException.php', - 'malkusch\bav\notempdirectoryexception' => '../../classes/util/exception/NoTempDirectoryException.php', - 'malkusch\bav\fileparsercontextexception' => '../../classes/dataBackend/file/fileParser/exception/FileParserContextException.php', - 'malkusch\bav\invalidlinelengthexception' => '../../classes/dataBackend/file/validator/exception/InvalidLineLengthException.php', - 'malkusch\bav\weightediterationvalidator' => '../../classes/validator/WeightedIterationValidator.php', - 'malkusch\bav\validatornotexistsexception' => '../../classes/validator/exception/ValidatorNotExistsException.php', - 'malkusch\bav\fileparsernotexistsexception' => '../../classes/dataBackend/file/fileParser/exception/FileParserNotExistsException.php', - 'malkusch\bav\unsupportedencodingexception' => '../../classes/encoding/exception/UnsupportedEncodingException.php', - 'malkusch\bav\validatoroutofboundsexception' => '../../classes/validator/exception/ValidatorOutOfBoundsException.php', - 'malkusch\bav\transformationiterationvalidator' => '../../classes/validator/TransformationIterationValidator.php', - 'malkusch\bav\undefinedattributeagencyexception' => '../../classes/bank/exception/UndefinedAttributeAgencyException.php', - 'malkusch\bav\undefinedfileparsercontextexception' => '../../classes/dataBackend/file/fileParser/exception/UndefinedFileParserContextException.php', - 'malkusch\bav\missingattributesdatabackendioexception' => '../../classes/dataBackend/exception/MissingAttributesDataBackendIOException.php', - 'malkusch\bav\fileparserioexception' => '../../classes/dataBackend/file/fileParser/exception/FileParserIOException', - 'malkusch\bav\parseexception' => '../../classes/dataBackend/file/fileParser/exception/ParseException', + 'malkusch\bav\testapi' => '../classes/testAPI/TestAPI.php', + 'malkusch\bav\timemock' => '../classes/TimeMock.php', + 'malkusch\bav\classfile' => '../classes/class/ClassFile.php', + 'malkusch\bav\pdofactory' => '../classes/PDOFactory.php', + 'malkusch\bav\bavtestapi' => '../classes/testAPI/BAVTestAPI.php', + 'malkusch\bav\testapiresult' => '../classes/testAPI/TestAPIResult.php', + 'malkusch\bav\testapiexception' => '../classes/testAPI/exception/TestAPIException.php', + 'malkusch\bav\kontochecktestapi' => '../classes/testAPI/KontocheckTestAPI.php', + 'malkusch\bav\classfileexception' => '../classes/class/exception/ClassFileException.php', + 'malkusch\bav\ktoblzchecktestapi' => '../classes/testAPI/KtoblzcheckTestAPI.php', + 'malkusch\bav\testapierrorresult' => '../classes/testAPI/TestAPIErrorResult.php', + 'malkusch\bav\classfileioexception' => '../classes/class/exception/ClassFileIOException.php', + 'malkusch\bav\missingclassexception' => '../classes/class/exception/MissingClassException.php', + 'malkusch\bav\validationtestapiexception' => '../classes/testAPI/exception/ValidationTestAPIException.php', + 'malkusch\bav\testapiunavailableexception' => '../classes/testAPI/exception/TestAPIUnavailableException.php', + 'malkusch\bav\banknotfoundtestapiexception' => '../classes/testAPI/exception/BankNotFoundTestAPIException.php', + 'malkusch\bav\notinitializedtestapiexception' => '../classes/testAPI/exception/NotInitializedTestAPIException.php', ); diff --git a/tests/autoloader/index/1.php b/tests/autoloader/index/1.php index 0367e64d..4af80a4c 100644 --- a/tests/autoloader/index/1.php +++ b/tests/autoloader/index/1.php @@ -15,21 +15,227 @@ */ return array( - 'malkusch\bav\testapi' => '../classes/testAPI/TestAPI.php', - 'malkusch\bav\timemock' => '../classes/TimeMock.php', - 'malkusch\bav\classfile' => '../classes/class/ClassFile.php', - 'malkusch\bav\pdofactory' => '../classes/PDOFactory.php', - 'malkusch\bav\bavtestapi' => '../classes/testAPI/BAVTestAPI.php', - 'malkusch\bav\testapiresult' => '../classes/testAPI/TestAPIResult.php', - 'malkusch\bav\testapiexception' => '../classes/testAPI/exception/TestAPIException.php', - 'malkusch\bav\kontochecktestapi' => '../classes/testAPI/KontocheckTestAPI.php', - 'malkusch\bav\classfileexception' => '../classes/class/exception/ClassFileException.php', - 'malkusch\bav\ktoblzchecktestapi' => '../classes/testAPI/KtoblzcheckTestAPI.php', - 'malkusch\bav\testapierrorresult' => '../classes/testAPI/TestAPIErrorResult.php', - 'malkusch\bav\classfileioexception' => '../classes/class/exception/ClassFileIOException.php', - 'malkusch\bav\missingclassexception' => '../classes/class/exception/MissingClassException.php', - 'malkusch\bav\validationtestapiexception' => '../classes/testAPI/exception/ValidationTestAPIException.php', - 'malkusch\bav\testapiunavailableexception' => '../classes/testAPI/exception/TestAPIUnavailableException.php', - 'malkusch\bav\banknotfoundtestapiexception' => '../classes/testAPI/exception/BankNotFoundTestAPIException.php', - 'malkusch\bav\notinitializedtestapiexception' => '../classes/testAPI/exception/NotInitializedTestAPIException.php', + 'malkusch\bav\bav' => '../../classes/BAV.php', + 'malkusch\bav\bank' => '../../classes/bank/Bank.php', + 'malkusch\bav\lock' => '../../classes/util/Lock.php', + 'malkusch\bav\agency' => '../../classes/bank/Agency.php', + 'malkusch\bav\bicutil' => '../../classes/util/BICUtil.php', + 'malkusch\bav\encoding' => '../../classes/encoding/Encoding.php', + 'malkusch\bav\fileutil' => '../../classes/util/FileUtil.php', + 'malkusch\bav\uripicker' => '../../classes/dataBackend/file/download/uripicker/URIPicker.php', + 'malkusch\bav\validator' => '../../classes/validator/Validator.php', + 'malkusch\bav\downloader' => '../../classes/dataBackend/file/download/Downloader.php', + 'malkusch\bav\fileparser' => '../../classes/dataBackend/file/fileParser/FileParser.php', + 'malkusch\bav\updateplan' => '../../classes/dataBackend/update/UpdatePlan.php', + 'malkusch\bav\mbencoding' => '../../classes/encoding/MBEncoding.php', + 'malkusch\bav\databackend' => '../../classes/dataBackend/DataBackend.php', + 'malkusch\bav\validator00' => '../../classes/validator/validators/Validator00.php', + 'malkusch\bav\validator01' => '../../classes/validator/validators/Validator01.php', + 'malkusch\bav\validator02' => '../../classes/validator/validators/Validator02.php', + 'malkusch\bav\validator03' => '../../classes/validator/validators/Validator03.php', + 'malkusch\bav\validator04' => '../../classes/validator/validators/Validator04.php', + 'malkusch\bav\validator05' => '../../classes/validator/validators/Validator05.php', + 'malkusch\bav\validator06' => '../../classes/validator/validators/Validator06.php', + 'malkusch\bav\validator07' => '../../classes/validator/validators/Validator07.php', + 'malkusch\bav\validator08' => '../../classes/validator/validators/Validator08.php', + 'malkusch\bav\validator09' => '../../classes/validator/validators/Validator09.php', + 'malkusch\bav\validator10' => '../../classes/validator/validators/Validator10.php', + 'malkusch\bav\validator11' => '../../classes/validator/validators/Validator11.php', + 'malkusch\bav\validator13' => '../../classes/validator/validators/Validator13.php', + 'malkusch\bav\validator14' => '../../classes/validator/validators/Validator14.php', + 'malkusch\bav\validator15' => '../../classes/validator/validators/Validator15.php', + 'malkusch\bav\validator16' => '../../classes/validator/validators/Validator16.php', + 'malkusch\bav\validator17' => '../../classes/validator/validators/Validator17.php', + 'malkusch\bav\validator18' => '../../classes/validator/validators/Validator18.php', + 'malkusch\bav\validator19' => '../../classes/validator/validators/Validator19.php', + 'malkusch\bav\validator20' => '../../classes/validator/validators/Validator20.php', + 'malkusch\bav\validator21' => '../../classes/validator/validators/Validator21.php', + 'malkusch\bav\validator22' => '../../classes/validator/validators/Validator22.php', + 'malkusch\bav\validator23' => '../../classes/validator/validators/Validator23.php', + 'malkusch\bav\validator24' => '../../classes/validator/validators/Validator24.php', + 'malkusch\bav\validator25' => '../../classes/validator/validators/Validator25.php', + 'malkusch\bav\validator26' => '../../classes/validator/validators/Validator26.php', + 'malkusch\bav\validator27' => '../../classes/validator/validators/Validator27.php', + 'malkusch\bav\validator28' => '../../classes/validator/validators/Validator28.php', + 'malkusch\bav\validator29' => '../../classes/validator/validators/Validator29.php', + 'malkusch\bav\validator30' => '../../classes/validator/validators/Validator30.php', + 'malkusch\bav\validator31' => '../../classes/validator/validators/Validator31.php', + 'malkusch\bav\validator32' => '../../classes/validator/validators/Validator32.php', + 'malkusch\bav\validator33' => '../../classes/validator/validators/Validator33.php', + 'malkusch\bav\validator34' => '../../classes/validator/validators/Validator34.php', + 'malkusch\bav\validator35' => '../../classes/validator/validators/Validator35.php', + 'malkusch\bav\validator36' => '../../classes/validator/validators/Validator36.php', + 'malkusch\bav\validator37' => '../../classes/validator/validators/Validator37.php', + 'malkusch\bav\validator38' => '../../classes/validator/validators/Validator38.php', + 'malkusch\bav\validator39' => '../../classes/validator/validators/Validator39.php', + 'malkusch\bav\validator40' => '../../classes/validator/validators/Validator40.php', + 'malkusch\bav\validator41' => '../../classes/validator/validators/Validator41.php', + 'malkusch\bav\validator42' => '../../classes/validator/validators/Validator42.php', + 'malkusch\bav\validator43' => '../../classes/validator/validators/Validator43.php', + 'malkusch\bav\validator44' => '../../classes/validator/validators/Validator44.php', + 'malkusch\bav\validator45' => '../../classes/validator/validators/Validator45.php', + 'malkusch\bav\validator46' => '../../classes/validator/validators/Validator46.php', + 'malkusch\bav\validator47' => '../../classes/validator/validators/Validator47.php', + 'malkusch\bav\validator48' => '../../classes/validator/validators/Validator48.php', + 'malkusch\bav\validator49' => '../../classes/validator/validators/Validator49.php', + 'malkusch\bav\validator50' => '../../classes/validator/validators/Validator50.php', + 'malkusch\bav\validator51' => '../../classes/validator/validators/Validator51.php', + 'malkusch\bav\validator52' => '../../classes/validator/validators/Validator52.php', + 'malkusch\bav\validator53' => '../../classes/validator/validators/Validator53.php', + 'malkusch\bav\validator54' => '../../classes/validator/validators/Validator54.php', + 'malkusch\bav\validator55' => '../../classes/validator/validators/Validator55.php', + 'malkusch\bav\validator56' => '../../classes/validator/validators/Validator56.php', + 'malkusch\bav\validator57' => '../../classes/validator/validators/Validator57.php', + 'malkusch\bav\validator58' => '../../classes/validator/validators/Validator58.php', + 'malkusch\bav\validator59' => '../../classes/validator/validators/Validator59.php', + 'malkusch\bav\validator60' => '../../classes/validator/validators/Validator60.php', + 'malkusch\bav\validator61' => '../../classes/validator/validators/Validator61.php', + 'malkusch\bav\validator62' => '../../classes/validator/validators/Validator62.php', + 'malkusch\bav\validator63' => '../../classes/validator/validators/Validator63.php', + 'malkusch\bav\validator64' => '../../classes/validator/validators/Validator64.php', + 'malkusch\bav\validator65' => '../../classes/validator/validators/Validator65.php', + 'malkusch\bav\validator66' => '../../classes/validator/validators/Validator66.php', + 'malkusch\bav\validator67' => '../../classes/validator/validators/Validator67.php', + 'malkusch\bav\validator68' => '../../classes/validator/validators/Validator68.php', + 'malkusch\bav\validator69' => '../../classes/validator/validators/Validator69.php', + 'malkusch\bav\validator70' => '../../classes/validator/validators/Validator70.php', + 'malkusch\bav\validator71' => '../../classes/validator/validators/Validator71.php', + 'malkusch\bav\validator72' => '../../classes/validator/validators/Validator72.php', + 'malkusch\bav\validator73' => '../../classes/validator/validators/Validator73.php', + 'malkusch\bav\validator74' => '../../classes/validator/validators/Validator74.php', + 'malkusch\bav\validator75' => '../../classes/validator/validators/Validator75.php', + 'malkusch\bav\validator76' => '../../classes/validator/validators/Validator76.php', + 'malkusch\bav\validator77' => '../../classes/validator/validators/Validator77.php', + 'malkusch\bav\validator78' => '../../classes/validator/validators/Validator78.php', + 'malkusch\bav\validator79' => '../../classes/validator/validators/Validator79.php', + 'malkusch\bav\validator80' => '../../classes/validator/validators/Validator80.php', + 'malkusch\bav\validator81' => '../../classes/validator/validators/Validator81.php', + 'malkusch\bav\validator82' => '../../classes/validator/validators/Validator82.php', + 'malkusch\bav\validator83' => '../../classes/validator/validators/Validator83.php', + 'malkusch\bav\validator84' => '../../classes/validator/validators/Validator84.php', + 'malkusch\bav\validator85' => '../../classes/validator/validators/Validator85.php', + 'malkusch\bav\validator86' => '../../classes/validator/validators/Validator86.php', + 'malkusch\bav\validator87' => '../../classes/validator/validators/Validator87.php', + 'malkusch\bav\validator88' => '../../classes/validator/validators/Validator88.php', + 'malkusch\bav\validator89' => '../../classes/validator/validators/Validator89.php', + 'malkusch\bav\validator90' => '../../classes/validator/validators/Validator90.php', + 'malkusch\bav\validator91' => '../../classes/validator/validators/Validator91.php', + 'malkusch\bav\validator92' => '../../classes/validator/validators/Validator92.php', + 'malkusch\bav\validator93' => '../../classes/validator/validators/Validator93.php', + 'malkusch\bav\validator94' => '../../classes/validator/validators/Validator94.php', + 'malkusch\bav\validator95' => '../../classes/validator/validators/Validator95.php', + 'malkusch\bav\validator96' => '../../classes/validator/validators/Validator96.php', + 'malkusch\bav\validator97' => '../../classes/validator/validators/Validator97.php', + 'malkusch\bav\validator98' => '../../classes/validator/validators/Validator98.php', + 'malkusch\bav\validator99' => '../../classes/validator/validators/Validator99.php', + 'malkusch\bav\validatora0' => '../../classes/validator/validators/ValidatorA0.php', + 'malkusch\bav\validatora1' => '../../classes/validator/validators/ValidatorA1.php', + 'malkusch\bav\validatora2' => '../../classes/validator/validators/ValidatorA2.php', + 'malkusch\bav\validatora3' => '../../classes/validator/validators/ValidatorA3.php', + 'malkusch\bav\validatora4' => '../../classes/validator/validators/ValidatorA4.php', + 'malkusch\bav\validatora5' => '../../classes/validator/validators/ValidatorA5.php', + 'malkusch\bav\validatora6' => '../../classes/validator/validators/ValidatorA6.php', + 'malkusch\bav\validatora7' => '../../classes/validator/validators/ValidatorA7.php', + 'malkusch\bav\validatora8' => '../../classes/validator/validators/ValidatorA8.php', + 'malkusch\bav\validatora9' => '../../classes/validator/validators/ValidatorA9.php', + 'malkusch\bav\validatorb0' => '../../classes/validator/validators/ValidatorB0.php', + 'malkusch\bav\validatorb1' => '../../classes/validator/validators/ValidatorB1.php', + 'malkusch\bav\validatorb2' => '../../classes/validator/validators/ValidatorB2.php', + 'malkusch\bav\validatorb3' => '../../classes/validator/validators/ValidatorB3.php', + 'malkusch\bav\validatorb4' => '../../classes/validator/validators/ValidatorB4.php', + 'malkusch\bav\validatorb5' => '../../classes/validator/validators/ValidatorB5.php', + 'malkusch\bav\validatorb6' => '../../classes/validator/validators/ValidatorB6.php', + 'malkusch\bav\validatorb7' => '../../classes/validator/validators/ValidatorB7.php', + 'malkusch\bav\validatorb8' => '../../classes/validator/validators/ValidatorB8.php', + 'malkusch\bav\validatorb9' => '../../classes/validator/validators/ValidatorB9.php', + 'malkusch\bav\validatorc0' => '../../classes/validator/validators/ValidatorC0.php', + 'malkusch\bav\validatorc1' => '../../classes/validator/validators/ValidatorC1.php', + 'malkusch\bav\validatorc2' => '../../classes/validator/validators/ValidatorC2.php', + 'malkusch\bav\validatorc3' => '../../classes/validator/validators/ValidatorC3.php', + 'malkusch\bav\validatorc4' => '../../classes/validator/validators/ValidatorC4.php', + 'malkusch\bav\validatorc5' => '../../classes/validator/validators/ValidatorC5.php', + 'malkusch\bav\validatorc6' => '../../classes/validator/validators/ValidatorC6.php', + 'malkusch\bav\validatorc7' => '../../classes/validator/validators/ValidatorC7.php', + 'malkusch\bav\validatorc8' => '../../classes/validator/validators/ValidatorC8.php', + 'malkusch\bav\validatorc9' => '../../classes/validator/validators/ValidatorC9.php', + 'malkusch\bav\validatord0' => '../../classes/validator/validators/ValidatorD0.php', + 'malkusch\bav\validatord1' => '../../classes/validator/validators/ValidatorD1.php', + 'malkusch\bav\validatord2' => '../../classes/validator/validators/ValidatorD2.php', + 'malkusch\bav\validatord3' => '../../classes/validator/validators/ValidatorD3.php', + 'malkusch\bav\validatord4' => '../../classes/validator/validators/ValidatorD4.php', + 'malkusch\bav\validatord5' => '../../classes/validator/validators/ValidatorD5.php', + 'malkusch\bav\validatord6' => '../../classes/validator/validators/ValidatorD6.php', + 'malkusch\bav\validatord7' => '../../classes/validator/validators/ValidatorD7.php', + 'malkusch\bav\validatord8' => '../../classes/validator/validators/ValidatorD8.php', + 'malkusch\bav\validatord9' => '../../classes/validator/validators/ValidatorD9.php', + 'malkusch\bav\validatore0' => '../../classes/validator/validators/ValidatorE0.php', + 'malkusch\bav\validatore1' => '../../classes/validator/validators/ValidatorE1.php', + 'malkusch\bav\domuripicker' => '../../classes/dataBackend/file/download/uripicker/DOMURIPicker.php', + 'malkusch\bav\bavexception' => '../../classes/exception/BAVException.php', + 'malkusch\bav\validator51x' => '../../classes/validator/validators/Validator51x.php', + 'malkusch\bav\validator69b' => '../../classes/validator/validators/Validator69b.php', + 'malkusch\bav\validator77a' => '../../classes/validator/validators/Validator77a.php', + 'malkusch\bav\validator83x' => '../../classes/validator/validators/Validator83x.php', + 'malkusch\bav\validator84b' => '../../classes/validator/validators/Validator84b.php', + 'malkusch\bav\validator87a' => '../../classes/validator/validators/Validator87a.php', + 'malkusch\bav\validator87c' => '../../classes/validator/validators/Validator87c.php', + 'malkusch\bav\validator90c' => '../../classes/validator/validators/Validator90c.php', + 'malkusch\bav\validator90d' => '../../classes/validator/validators/Validator90d.php', + 'malkusch\bav\validator90e' => '../../classes/validator/validators/Validator90e.php', + 'malkusch\bav\validator90g' => '../../classes/validator/validators/Validator90g.php', + 'malkusch\bav\validatora4b' => '../../classes/validator/validators/ValidatorA4b.php', + 'malkusch\bav\validatorb9a' => '../../classes/validator/validators/ValidatorB9a.php', + 'malkusch\bav\validatorb9b' => '../../classes/validator/validators/ValidatorB9b.php', + 'malkusch\bav\validatorc1b' => '../../classes/validator/validators/ValidatorC1b.php', + 'malkusch\bav\configuration' => '../../classes/configuration/Configuration.php', + 'malkusch\bav\filevalidator' => '../../classes/dataBackend/file/validator/FileValidator.php', + 'malkusch\bav\logupdateplan' => '../../classes/dataBackend/update/LogUpdatePlan.php', + 'malkusch\bav\iconvencoding' => '../../classes/encoding/IconvEncoding.php', + 'malkusch\bav\fileexception' => '../../classes/util/exception/FileException.php', + 'malkusch\bav\lockexception' => '../../classes/util/exception/LockException.php', + 'malkusch\bav\fieldexception' => '../../classes/dataBackend/file/validator/exception/FieldException.php', + 'malkusch\bav\pdodatabackend' => '../../classes/dataBackend/pdo/PDODataBackend.php', + 'malkusch\bav\validatorchain' => '../../classes/validator/ValidatorChain.php', + 'malkusch\bav\agencyexception' => '../../classes/bank/exception/AgencyException.php', + 'malkusch\bav\filedatabackend' => '../../classes/dataBackend/file/FileDataBackend.php', + 'malkusch\bav\regexpuripicker' => '../../classes/dataBackend/file/download/uripicker/RegExpURIPicker.php', + 'malkusch\bav\iso8859encoding' => '../../classes/encoding/ISO8859Encoding.php', + 'malkusch\bav\fallbackuripicker' => '../../classes/dataBackend/file/download/uripicker/FallbackURIPicker.php', + 'malkusch\bav\fileparsercontext' => '../../classes/dataBackend/file/fileParser/FileParserContext.php', + 'malkusch\bav\encodingexception' => '../../classes/encoding/exception/EncodingException.php', + 'malkusch\bav\uripickerexception' => '../../classes/dataBackend/file/download/uripicker/exception/URIPickerException.php', + 'malkusch\bav\statementcontainer' => '../../classes/dataBackend/pdo/StatementContainer.php', + 'malkusch\bav\validatoriteration' => '../../classes/validator/ValidatorIteration.php', + 'malkusch\bav\validatorexception' => '../../classes/validator/exception/ValidatorException.php', + 'malkusch\bav\downloaderexception' => '../../classes/dataBackend/file/download/exception/DownloaderException.php', + 'malkusch\bav\fileparserexception' => '../../classes/dataBackend/file/fileParser/exception/FileParserException.php', + 'malkusch\bav\automaticupdateplan' => '../../classes/dataBackend/update/AutomaticUpdatePlan.php', + 'malkusch\bav\defaultconfiguration' => '../../classes/configuration/DefaultConfiguration.php', + 'malkusch\bav\databackendcontainer' => '../../classes/dataBackend/DataBackendContainer.php', + 'malkusch\bav\databackendexception' => '../../classes/dataBackend/exception/DataBackendException.php', + 'malkusch\bav\configurationregistry' => '../../classes/configuration/ConfigurationRegistry.php', + 'malkusch\bav\banknotfoundexception' => '../../classes/dataBackend/exception/BankNotFoundException.php', + 'malkusch\bav\nomainagencyexception' => '../../classes/dataBackend/exception/NoMainAgencyException.php', + 'malkusch\bav\configurationexception' => '../../classes/configuration/ConfigurationException.php', + 'malkusch\bav\databackendioexception' => '../../classes/dataBackend/exception/DataBackendIOException.php', + 'malkusch\bav\filevalidatorexception' => '../../classes/dataBackend/file/validator/exception/FileValidatorException.php', + 'malkusch\bav\validatorbankdependent' => '../../classes/validator/ValidatorBankDependent.php', + 'malkusch\bav\validatoreserexception' => '../../classes/validator/exception/ValidatorESERException.php', + 'malkusch\bav\pdodatabackendcontainer' => '../../classes/dataBackend/pdo/PDODataBackendContainer.php', + 'malkusch\bav\filedatabackendcontainer' => '../../classes/dataBackend/file/FileDataBackendContainer.php', + 'malkusch\bav\invalidfilesizeexception' => '../../classes/dataBackend/file/validator/exception/InvalidFilesizeException.php', + 'malkusch\bav\notempdirectoryexception' => '../../classes/util/exception/NoTempDirectoryException.php', + 'malkusch\bav\fileparsercontextexception' => '../../classes/dataBackend/file/fileParser/exception/FileParserContextException.php', + 'malkusch\bav\invalidlinelengthexception' => '../../classes/dataBackend/file/validator/exception/InvalidLineLengthException.php', + 'malkusch\bav\weightediterationvalidator' => '../../classes/validator/WeightedIterationValidator.php', + 'malkusch\bav\validatornotexistsexception' => '../../classes/validator/exception/ValidatorNotExistsException.php', + 'malkusch\bav\fileparsernotexistsexception' => '../../classes/dataBackend/file/fileParser/exception/FileParserNotExistsException.php', + 'malkusch\bav\unsupportedencodingexception' => '../../classes/encoding/exception/UnsupportedEncodingException.php', + 'malkusch\bav\validatoroutofboundsexception' => '../../classes/validator/exception/ValidatorOutOfBoundsException.php', + 'malkusch\bav\transformationiterationvalidator' => '../../classes/validator/TransformationIterationValidator.php', + 'malkusch\bav\undefinedattributeagencyexception' => '../../classes/bank/exception/UndefinedAttributeAgencyException.php', + 'malkusch\bav\undefinedfileparsercontextexception' => '../../classes/dataBackend/file/fileParser/exception/UndefinedFileParserContextException.php', + 'malkusch\bav\missingattributesdatabackendioexception' => '../../classes/dataBackend/exception/MissingAttributesDataBackendIOException.php', + 'malkusch\bav\fileparserioexception' => '../../classes/dataBackend/file/fileParser/exception/FileParserIOException', + 'malkusch\bav\parseexception' => '../../classes/dataBackend/file/fileParser/exception/ParseException', ); diff --git a/tests/unit/StatementContainerTest.php b/tests/unit/StatementContainerTest.php new file mode 100644 index 00000000..75b279d8 --- /dev/null +++ b/tests/unit/StatementContainerTest.php @@ -0,0 +1,54 @@ + + * @see StatementContainer + */ +class StatementContainerTest extends \PHPUnit_Framework_TestCase +{ + + /** + * @var StatementContainer + */ + private $statementContainer; + + public function setUp() + { + $this->statementContainer = new StatementContainer(PDOFactory::makePDO()); + } + + /** + * Tests two equal queries should return the same object + */ + public function testStoring() + { + $query = "SELECT :param as test FROM DUAL"; + $stmt1 = $this->statementContainer->prepare($query); + $stmt2 = $this->statementContainer->prepare($query); + + $this->assertSame($stmt1, $stmt2); + } + + /** + * Tests the query + */ + public function testQuery() + { + $query = "SELECT :param as test FROM DUAL"; + + $stmt = $this->statementContainer->prepare($query); + $stmt->execute(array(":param" => 5)); + $this->assertEquals(array("5"), $stmt->fetchAll(\PDO::FETCH_COLUMN)); + + $stmt2 = $this->statementContainer->prepare($query); + $stmt2->execute(array(":param" => 4)); + $this->assertEquals(array("4"), $stmt2->fetchAll(\PDO::FETCH_COLUMN)); + } +} From 5aa83f3a3bc036fcc2b646b0147784f58f382f4c Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 6 Jun 2014 23:36:41 +0200 Subject: [PATCH 180/303] bootstraping tests with regular autoloader --- tests/autoloader/autoloader.php | 4 - tests/autoloader/index/1.php | 241 -------------------------- tests/bin/test-install.php | 2 +- tests/bootstrap.php | 4 + tests/unit-large/BackendTest.php | 2 +- tests/unit-large/CrossProjectTest.php | 2 +- tests/unit/00UpdatePlanTest.php | 2 +- tests/unit/AgencyQueryTest.php | 2 +- tests/unit/BAVFacadeTest.php | 2 +- tests/unit/BICUtilTest.php | 2 +- tests/unit/BackendContainerTest.php | 2 +- tests/unit/DataConstraintTest.php | 2 +- tests/unit/DownloaderTest.php | 2 +- tests/unit/FileUtilTest.php | 2 +- tests/unit/FileValidatorTest.php | 2 +- tests/unit/StatementContainerTest.php | 2 +- tests/unit/URIPickerTest.php | 2 +- tests/unit/ValidatorTest.php | 2 +- 18 files changed, 19 insertions(+), 260 deletions(-) delete mode 100644 tests/autoloader/index/1.php create mode 100644 tests/bootstrap.php diff --git a/tests/autoloader/autoloader.php b/tests/autoloader/autoloader.php index fcb35987..f2164d81 100644 --- a/tests/autoloader/autoloader.php +++ b/tests/autoloader/autoloader.php @@ -20,8 +20,4 @@ $_autoloader = new InstantAutoloader(__DIR__ . '/index/0.php'); $_autoloader->setBasePath(__DIR__); $_autoloader->register(); - -$_autoloader = new InstantAutoloader(__DIR__ . '/index/1.php'); -$_autoloader->setBasePath(__DIR__); -$_autoloader->register(); unset($_autoloader); \ No newline at end of file diff --git a/tests/autoloader/index/1.php b/tests/autoloader/index/1.php deleted file mode 100644 index 4af80a4c..00000000 --- a/tests/autoloader/index/1.php +++ /dev/null @@ -1,241 +0,0 @@ - '../../classes/BAV.php', - 'malkusch\bav\bank' => '../../classes/bank/Bank.php', - 'malkusch\bav\lock' => '../../classes/util/Lock.php', - 'malkusch\bav\agency' => '../../classes/bank/Agency.php', - 'malkusch\bav\bicutil' => '../../classes/util/BICUtil.php', - 'malkusch\bav\encoding' => '../../classes/encoding/Encoding.php', - 'malkusch\bav\fileutil' => '../../classes/util/FileUtil.php', - 'malkusch\bav\uripicker' => '../../classes/dataBackend/file/download/uripicker/URIPicker.php', - 'malkusch\bav\validator' => '../../classes/validator/Validator.php', - 'malkusch\bav\downloader' => '../../classes/dataBackend/file/download/Downloader.php', - 'malkusch\bav\fileparser' => '../../classes/dataBackend/file/fileParser/FileParser.php', - 'malkusch\bav\updateplan' => '../../classes/dataBackend/update/UpdatePlan.php', - 'malkusch\bav\mbencoding' => '../../classes/encoding/MBEncoding.php', - 'malkusch\bav\databackend' => '../../classes/dataBackend/DataBackend.php', - 'malkusch\bav\validator00' => '../../classes/validator/validators/Validator00.php', - 'malkusch\bav\validator01' => '../../classes/validator/validators/Validator01.php', - 'malkusch\bav\validator02' => '../../classes/validator/validators/Validator02.php', - 'malkusch\bav\validator03' => '../../classes/validator/validators/Validator03.php', - 'malkusch\bav\validator04' => '../../classes/validator/validators/Validator04.php', - 'malkusch\bav\validator05' => '../../classes/validator/validators/Validator05.php', - 'malkusch\bav\validator06' => '../../classes/validator/validators/Validator06.php', - 'malkusch\bav\validator07' => '../../classes/validator/validators/Validator07.php', - 'malkusch\bav\validator08' => '../../classes/validator/validators/Validator08.php', - 'malkusch\bav\validator09' => '../../classes/validator/validators/Validator09.php', - 'malkusch\bav\validator10' => '../../classes/validator/validators/Validator10.php', - 'malkusch\bav\validator11' => '../../classes/validator/validators/Validator11.php', - 'malkusch\bav\validator13' => '../../classes/validator/validators/Validator13.php', - 'malkusch\bav\validator14' => '../../classes/validator/validators/Validator14.php', - 'malkusch\bav\validator15' => '../../classes/validator/validators/Validator15.php', - 'malkusch\bav\validator16' => '../../classes/validator/validators/Validator16.php', - 'malkusch\bav\validator17' => '../../classes/validator/validators/Validator17.php', - 'malkusch\bav\validator18' => '../../classes/validator/validators/Validator18.php', - 'malkusch\bav\validator19' => '../../classes/validator/validators/Validator19.php', - 'malkusch\bav\validator20' => '../../classes/validator/validators/Validator20.php', - 'malkusch\bav\validator21' => '../../classes/validator/validators/Validator21.php', - 'malkusch\bav\validator22' => '../../classes/validator/validators/Validator22.php', - 'malkusch\bav\validator23' => '../../classes/validator/validators/Validator23.php', - 'malkusch\bav\validator24' => '../../classes/validator/validators/Validator24.php', - 'malkusch\bav\validator25' => '../../classes/validator/validators/Validator25.php', - 'malkusch\bav\validator26' => '../../classes/validator/validators/Validator26.php', - 'malkusch\bav\validator27' => '../../classes/validator/validators/Validator27.php', - 'malkusch\bav\validator28' => '../../classes/validator/validators/Validator28.php', - 'malkusch\bav\validator29' => '../../classes/validator/validators/Validator29.php', - 'malkusch\bav\validator30' => '../../classes/validator/validators/Validator30.php', - 'malkusch\bav\validator31' => '../../classes/validator/validators/Validator31.php', - 'malkusch\bav\validator32' => '../../classes/validator/validators/Validator32.php', - 'malkusch\bav\validator33' => '../../classes/validator/validators/Validator33.php', - 'malkusch\bav\validator34' => '../../classes/validator/validators/Validator34.php', - 'malkusch\bav\validator35' => '../../classes/validator/validators/Validator35.php', - 'malkusch\bav\validator36' => '../../classes/validator/validators/Validator36.php', - 'malkusch\bav\validator37' => '../../classes/validator/validators/Validator37.php', - 'malkusch\bav\validator38' => '../../classes/validator/validators/Validator38.php', - 'malkusch\bav\validator39' => '../../classes/validator/validators/Validator39.php', - 'malkusch\bav\validator40' => '../../classes/validator/validators/Validator40.php', - 'malkusch\bav\validator41' => '../../classes/validator/validators/Validator41.php', - 'malkusch\bav\validator42' => '../../classes/validator/validators/Validator42.php', - 'malkusch\bav\validator43' => '../../classes/validator/validators/Validator43.php', - 'malkusch\bav\validator44' => '../../classes/validator/validators/Validator44.php', - 'malkusch\bav\validator45' => '../../classes/validator/validators/Validator45.php', - 'malkusch\bav\validator46' => '../../classes/validator/validators/Validator46.php', - 'malkusch\bav\validator47' => '../../classes/validator/validators/Validator47.php', - 'malkusch\bav\validator48' => '../../classes/validator/validators/Validator48.php', - 'malkusch\bav\validator49' => '../../classes/validator/validators/Validator49.php', - 'malkusch\bav\validator50' => '../../classes/validator/validators/Validator50.php', - 'malkusch\bav\validator51' => '../../classes/validator/validators/Validator51.php', - 'malkusch\bav\validator52' => '../../classes/validator/validators/Validator52.php', - 'malkusch\bav\validator53' => '../../classes/validator/validators/Validator53.php', - 'malkusch\bav\validator54' => '../../classes/validator/validators/Validator54.php', - 'malkusch\bav\validator55' => '../../classes/validator/validators/Validator55.php', - 'malkusch\bav\validator56' => '../../classes/validator/validators/Validator56.php', - 'malkusch\bav\validator57' => '../../classes/validator/validators/Validator57.php', - 'malkusch\bav\validator58' => '../../classes/validator/validators/Validator58.php', - 'malkusch\bav\validator59' => '../../classes/validator/validators/Validator59.php', - 'malkusch\bav\validator60' => '../../classes/validator/validators/Validator60.php', - 'malkusch\bav\validator61' => '../../classes/validator/validators/Validator61.php', - 'malkusch\bav\validator62' => '../../classes/validator/validators/Validator62.php', - 'malkusch\bav\validator63' => '../../classes/validator/validators/Validator63.php', - 'malkusch\bav\validator64' => '../../classes/validator/validators/Validator64.php', - 'malkusch\bav\validator65' => '../../classes/validator/validators/Validator65.php', - 'malkusch\bav\validator66' => '../../classes/validator/validators/Validator66.php', - 'malkusch\bav\validator67' => '../../classes/validator/validators/Validator67.php', - 'malkusch\bav\validator68' => '../../classes/validator/validators/Validator68.php', - 'malkusch\bav\validator69' => '../../classes/validator/validators/Validator69.php', - 'malkusch\bav\validator70' => '../../classes/validator/validators/Validator70.php', - 'malkusch\bav\validator71' => '../../classes/validator/validators/Validator71.php', - 'malkusch\bav\validator72' => '../../classes/validator/validators/Validator72.php', - 'malkusch\bav\validator73' => '../../classes/validator/validators/Validator73.php', - 'malkusch\bav\validator74' => '../../classes/validator/validators/Validator74.php', - 'malkusch\bav\validator75' => '../../classes/validator/validators/Validator75.php', - 'malkusch\bav\validator76' => '../../classes/validator/validators/Validator76.php', - 'malkusch\bav\validator77' => '../../classes/validator/validators/Validator77.php', - 'malkusch\bav\validator78' => '../../classes/validator/validators/Validator78.php', - 'malkusch\bav\validator79' => '../../classes/validator/validators/Validator79.php', - 'malkusch\bav\validator80' => '../../classes/validator/validators/Validator80.php', - 'malkusch\bav\validator81' => '../../classes/validator/validators/Validator81.php', - 'malkusch\bav\validator82' => '../../classes/validator/validators/Validator82.php', - 'malkusch\bav\validator83' => '../../classes/validator/validators/Validator83.php', - 'malkusch\bav\validator84' => '../../classes/validator/validators/Validator84.php', - 'malkusch\bav\validator85' => '../../classes/validator/validators/Validator85.php', - 'malkusch\bav\validator86' => '../../classes/validator/validators/Validator86.php', - 'malkusch\bav\validator87' => '../../classes/validator/validators/Validator87.php', - 'malkusch\bav\validator88' => '../../classes/validator/validators/Validator88.php', - 'malkusch\bav\validator89' => '../../classes/validator/validators/Validator89.php', - 'malkusch\bav\validator90' => '../../classes/validator/validators/Validator90.php', - 'malkusch\bav\validator91' => '../../classes/validator/validators/Validator91.php', - 'malkusch\bav\validator92' => '../../classes/validator/validators/Validator92.php', - 'malkusch\bav\validator93' => '../../classes/validator/validators/Validator93.php', - 'malkusch\bav\validator94' => '../../classes/validator/validators/Validator94.php', - 'malkusch\bav\validator95' => '../../classes/validator/validators/Validator95.php', - 'malkusch\bav\validator96' => '../../classes/validator/validators/Validator96.php', - 'malkusch\bav\validator97' => '../../classes/validator/validators/Validator97.php', - 'malkusch\bav\validator98' => '../../classes/validator/validators/Validator98.php', - 'malkusch\bav\validator99' => '../../classes/validator/validators/Validator99.php', - 'malkusch\bav\validatora0' => '../../classes/validator/validators/ValidatorA0.php', - 'malkusch\bav\validatora1' => '../../classes/validator/validators/ValidatorA1.php', - 'malkusch\bav\validatora2' => '../../classes/validator/validators/ValidatorA2.php', - 'malkusch\bav\validatora3' => '../../classes/validator/validators/ValidatorA3.php', - 'malkusch\bav\validatora4' => '../../classes/validator/validators/ValidatorA4.php', - 'malkusch\bav\validatora5' => '../../classes/validator/validators/ValidatorA5.php', - 'malkusch\bav\validatora6' => '../../classes/validator/validators/ValidatorA6.php', - 'malkusch\bav\validatora7' => '../../classes/validator/validators/ValidatorA7.php', - 'malkusch\bav\validatora8' => '../../classes/validator/validators/ValidatorA8.php', - 'malkusch\bav\validatora9' => '../../classes/validator/validators/ValidatorA9.php', - 'malkusch\bav\validatorb0' => '../../classes/validator/validators/ValidatorB0.php', - 'malkusch\bav\validatorb1' => '../../classes/validator/validators/ValidatorB1.php', - 'malkusch\bav\validatorb2' => '../../classes/validator/validators/ValidatorB2.php', - 'malkusch\bav\validatorb3' => '../../classes/validator/validators/ValidatorB3.php', - 'malkusch\bav\validatorb4' => '../../classes/validator/validators/ValidatorB4.php', - 'malkusch\bav\validatorb5' => '../../classes/validator/validators/ValidatorB5.php', - 'malkusch\bav\validatorb6' => '../../classes/validator/validators/ValidatorB6.php', - 'malkusch\bav\validatorb7' => '../../classes/validator/validators/ValidatorB7.php', - 'malkusch\bav\validatorb8' => '../../classes/validator/validators/ValidatorB8.php', - 'malkusch\bav\validatorb9' => '../../classes/validator/validators/ValidatorB9.php', - 'malkusch\bav\validatorc0' => '../../classes/validator/validators/ValidatorC0.php', - 'malkusch\bav\validatorc1' => '../../classes/validator/validators/ValidatorC1.php', - 'malkusch\bav\validatorc2' => '../../classes/validator/validators/ValidatorC2.php', - 'malkusch\bav\validatorc3' => '../../classes/validator/validators/ValidatorC3.php', - 'malkusch\bav\validatorc4' => '../../classes/validator/validators/ValidatorC4.php', - 'malkusch\bav\validatorc5' => '../../classes/validator/validators/ValidatorC5.php', - 'malkusch\bav\validatorc6' => '../../classes/validator/validators/ValidatorC6.php', - 'malkusch\bav\validatorc7' => '../../classes/validator/validators/ValidatorC7.php', - 'malkusch\bav\validatorc8' => '../../classes/validator/validators/ValidatorC8.php', - 'malkusch\bav\validatorc9' => '../../classes/validator/validators/ValidatorC9.php', - 'malkusch\bav\validatord0' => '../../classes/validator/validators/ValidatorD0.php', - 'malkusch\bav\validatord1' => '../../classes/validator/validators/ValidatorD1.php', - 'malkusch\bav\validatord2' => '../../classes/validator/validators/ValidatorD2.php', - 'malkusch\bav\validatord3' => '../../classes/validator/validators/ValidatorD3.php', - 'malkusch\bav\validatord4' => '../../classes/validator/validators/ValidatorD4.php', - 'malkusch\bav\validatord5' => '../../classes/validator/validators/ValidatorD5.php', - 'malkusch\bav\validatord6' => '../../classes/validator/validators/ValidatorD6.php', - 'malkusch\bav\validatord7' => '../../classes/validator/validators/ValidatorD7.php', - 'malkusch\bav\validatord8' => '../../classes/validator/validators/ValidatorD8.php', - 'malkusch\bav\validatord9' => '../../classes/validator/validators/ValidatorD9.php', - 'malkusch\bav\validatore0' => '../../classes/validator/validators/ValidatorE0.php', - 'malkusch\bav\validatore1' => '../../classes/validator/validators/ValidatorE1.php', - 'malkusch\bav\domuripicker' => '../../classes/dataBackend/file/download/uripicker/DOMURIPicker.php', - 'malkusch\bav\bavexception' => '../../classes/exception/BAVException.php', - 'malkusch\bav\validator51x' => '../../classes/validator/validators/Validator51x.php', - 'malkusch\bav\validator69b' => '../../classes/validator/validators/Validator69b.php', - 'malkusch\bav\validator77a' => '../../classes/validator/validators/Validator77a.php', - 'malkusch\bav\validator83x' => '../../classes/validator/validators/Validator83x.php', - 'malkusch\bav\validator84b' => '../../classes/validator/validators/Validator84b.php', - 'malkusch\bav\validator87a' => '../../classes/validator/validators/Validator87a.php', - 'malkusch\bav\validator87c' => '../../classes/validator/validators/Validator87c.php', - 'malkusch\bav\validator90c' => '../../classes/validator/validators/Validator90c.php', - 'malkusch\bav\validator90d' => '../../classes/validator/validators/Validator90d.php', - 'malkusch\bav\validator90e' => '../../classes/validator/validators/Validator90e.php', - 'malkusch\bav\validator90g' => '../../classes/validator/validators/Validator90g.php', - 'malkusch\bav\validatora4b' => '../../classes/validator/validators/ValidatorA4b.php', - 'malkusch\bav\validatorb9a' => '../../classes/validator/validators/ValidatorB9a.php', - 'malkusch\bav\validatorb9b' => '../../classes/validator/validators/ValidatorB9b.php', - 'malkusch\bav\validatorc1b' => '../../classes/validator/validators/ValidatorC1b.php', - 'malkusch\bav\configuration' => '../../classes/configuration/Configuration.php', - 'malkusch\bav\filevalidator' => '../../classes/dataBackend/file/validator/FileValidator.php', - 'malkusch\bav\logupdateplan' => '../../classes/dataBackend/update/LogUpdatePlan.php', - 'malkusch\bav\iconvencoding' => '../../classes/encoding/IconvEncoding.php', - 'malkusch\bav\fileexception' => '../../classes/util/exception/FileException.php', - 'malkusch\bav\lockexception' => '../../classes/util/exception/LockException.php', - 'malkusch\bav\fieldexception' => '../../classes/dataBackend/file/validator/exception/FieldException.php', - 'malkusch\bav\pdodatabackend' => '../../classes/dataBackend/pdo/PDODataBackend.php', - 'malkusch\bav\validatorchain' => '../../classes/validator/ValidatorChain.php', - 'malkusch\bav\agencyexception' => '../../classes/bank/exception/AgencyException.php', - 'malkusch\bav\filedatabackend' => '../../classes/dataBackend/file/FileDataBackend.php', - 'malkusch\bav\regexpuripicker' => '../../classes/dataBackend/file/download/uripicker/RegExpURIPicker.php', - 'malkusch\bav\iso8859encoding' => '../../classes/encoding/ISO8859Encoding.php', - 'malkusch\bav\fallbackuripicker' => '../../classes/dataBackend/file/download/uripicker/FallbackURIPicker.php', - 'malkusch\bav\fileparsercontext' => '../../classes/dataBackend/file/fileParser/FileParserContext.php', - 'malkusch\bav\encodingexception' => '../../classes/encoding/exception/EncodingException.php', - 'malkusch\bav\uripickerexception' => '../../classes/dataBackend/file/download/uripicker/exception/URIPickerException.php', - 'malkusch\bav\statementcontainer' => '../../classes/dataBackend/pdo/StatementContainer.php', - 'malkusch\bav\validatoriteration' => '../../classes/validator/ValidatorIteration.php', - 'malkusch\bav\validatorexception' => '../../classes/validator/exception/ValidatorException.php', - 'malkusch\bav\downloaderexception' => '../../classes/dataBackend/file/download/exception/DownloaderException.php', - 'malkusch\bav\fileparserexception' => '../../classes/dataBackend/file/fileParser/exception/FileParserException.php', - 'malkusch\bav\automaticupdateplan' => '../../classes/dataBackend/update/AutomaticUpdatePlan.php', - 'malkusch\bav\defaultconfiguration' => '../../classes/configuration/DefaultConfiguration.php', - 'malkusch\bav\databackendcontainer' => '../../classes/dataBackend/DataBackendContainer.php', - 'malkusch\bav\databackendexception' => '../../classes/dataBackend/exception/DataBackendException.php', - 'malkusch\bav\configurationregistry' => '../../classes/configuration/ConfigurationRegistry.php', - 'malkusch\bav\banknotfoundexception' => '../../classes/dataBackend/exception/BankNotFoundException.php', - 'malkusch\bav\nomainagencyexception' => '../../classes/dataBackend/exception/NoMainAgencyException.php', - 'malkusch\bav\configurationexception' => '../../classes/configuration/ConfigurationException.php', - 'malkusch\bav\databackendioexception' => '../../classes/dataBackend/exception/DataBackendIOException.php', - 'malkusch\bav\filevalidatorexception' => '../../classes/dataBackend/file/validator/exception/FileValidatorException.php', - 'malkusch\bav\validatorbankdependent' => '../../classes/validator/ValidatorBankDependent.php', - 'malkusch\bav\validatoreserexception' => '../../classes/validator/exception/ValidatorESERException.php', - 'malkusch\bav\pdodatabackendcontainer' => '../../classes/dataBackend/pdo/PDODataBackendContainer.php', - 'malkusch\bav\filedatabackendcontainer' => '../../classes/dataBackend/file/FileDataBackendContainer.php', - 'malkusch\bav\invalidfilesizeexception' => '../../classes/dataBackend/file/validator/exception/InvalidFilesizeException.php', - 'malkusch\bav\notempdirectoryexception' => '../../classes/util/exception/NoTempDirectoryException.php', - 'malkusch\bav\fileparsercontextexception' => '../../classes/dataBackend/file/fileParser/exception/FileParserContextException.php', - 'malkusch\bav\invalidlinelengthexception' => '../../classes/dataBackend/file/validator/exception/InvalidLineLengthException.php', - 'malkusch\bav\weightediterationvalidator' => '../../classes/validator/WeightedIterationValidator.php', - 'malkusch\bav\validatornotexistsexception' => '../../classes/validator/exception/ValidatorNotExistsException.php', - 'malkusch\bav\fileparsernotexistsexception' => '../../classes/dataBackend/file/fileParser/exception/FileParserNotExistsException.php', - 'malkusch\bav\unsupportedencodingexception' => '../../classes/encoding/exception/UnsupportedEncodingException.php', - 'malkusch\bav\validatoroutofboundsexception' => '../../classes/validator/exception/ValidatorOutOfBoundsException.php', - 'malkusch\bav\transformationiterationvalidator' => '../../classes/validator/TransformationIterationValidator.php', - 'malkusch\bav\undefinedattributeagencyexception' => '../../classes/bank/exception/UndefinedAttributeAgencyException.php', - 'malkusch\bav\undefinedfileparsercontextexception' => '../../classes/dataBackend/file/fileParser/exception/UndefinedFileParserContextException.php', - 'malkusch\bav\missingattributesdatabackendioexception' => '../../classes/dataBackend/exception/MissingAttributesDataBackendIOException.php', - 'malkusch\bav\fileparserioexception' => '../../classes/dataBackend/file/fileParser/exception/FileParserIOException', - 'malkusch\bav\parseexception' => '../../classes/dataBackend/file/fileParser/exception/ParseException', -); diff --git a/tests/bin/test-install.php b/tests/bin/test-install.php index 2f7dcec6..4b95de4c 100755 --- a/tests/bin/test-install.php +++ b/tests/bin/test-install.php @@ -9,7 +9,7 @@ namespace malkusch\bav; -require_once __DIR__ . "/../autoloader/autoloader.php"; +require_once __DIR__ . "/../bootstrap.php"; try { ConfigurationRegistry::getConfiguration()->setAutomaticInstallation(false); diff --git a/tests/bootstrap.php b/tests/bootstrap.php new file mode 100644 index 00000000..22f98ca3 --- /dev/null +++ b/tests/bootstrap.php @@ -0,0 +1,4 @@ +getAgencies($sql) diff --git a/tests/unit/BAVFacadeTest.php b/tests/unit/BAVFacadeTest.php index 320f0d78..42d738e8 100644 --- a/tests/unit/BAVFacadeTest.php +++ b/tests/unit/BAVFacadeTest.php @@ -2,7 +2,7 @@ namespace malkusch\bav; -require_once __DIR__ . "/../autoloader/autoloader.php"; +require_once __DIR__ . "/../bootstrap.php"; /** * Tests the facade BAV. diff --git a/tests/unit/BICUtilTest.php b/tests/unit/BICUtilTest.php index 1fdbead3..d196c274 100644 --- a/tests/unit/BICUtilTest.php +++ b/tests/unit/BICUtilTest.php @@ -2,7 +2,7 @@ namespace malkusch\bav; -require_once __DIR__ . "/../autoloader/autoloader.php"; +require_once __DIR__ . "/../bootstrap.php"; /** * Tests BICUtil. diff --git a/tests/unit/BackendContainerTest.php b/tests/unit/BackendContainerTest.php index 8def1d07..febce6df 100644 --- a/tests/unit/BackendContainerTest.php +++ b/tests/unit/BackendContainerTest.php @@ -2,7 +2,7 @@ namespace malkusch\bav; -require_once __DIR__ . "/../autoloader/autoloader.php"; +require_once __DIR__ . "/../bootstrap.php"; /** * Tests DataBackendContainer diff --git a/tests/unit/DataConstraintTest.php b/tests/unit/DataConstraintTest.php index 71fd9388..4dba2d12 100644 --- a/tests/unit/DataConstraintTest.php +++ b/tests/unit/DataConstraintTest.php @@ -2,7 +2,7 @@ namespace malkusch\bav; -require_once __DIR__ . "/../autoloader/autoloader.php"; +require_once __DIR__ . "/../bootstrap.php"; /** * Test if the banklist.txt fits into the model. diff --git a/tests/unit/DownloaderTest.php b/tests/unit/DownloaderTest.php index 30d880b7..d0198f45 100644 --- a/tests/unit/DownloaderTest.php +++ b/tests/unit/DownloaderTest.php @@ -2,7 +2,7 @@ namespace malkusch\bav; -require_once __DIR__ . "/../autoloader/autoloader.php"; +require_once __DIR__ . "/../bootstrap.php"; /** * Tests Downloader. diff --git a/tests/unit/FileUtilTest.php b/tests/unit/FileUtilTest.php index 932fce86..ce642557 100644 --- a/tests/unit/FileUtilTest.php +++ b/tests/unit/FileUtilTest.php @@ -2,7 +2,7 @@ namespace malkusch\bav; -require_once __DIR__ . "/../autoloader/autoloader.php"; +require_once __DIR__ . "/../bootstrap.php"; /** * Test FileUtil diff --git a/tests/unit/FileValidatorTest.php b/tests/unit/FileValidatorTest.php index 5d4595b1..8c60c2c0 100644 --- a/tests/unit/FileValidatorTest.php +++ b/tests/unit/FileValidatorTest.php @@ -2,7 +2,7 @@ namespace malkusch\bav; -require_once __DIR__ . "/../autoloader/autoloader.php"; +require_once __DIR__ . "/../bootstrap.php"; /** * Tests FileValidator. diff --git a/tests/unit/StatementContainerTest.php b/tests/unit/StatementContainerTest.php index 75b279d8..97456881 100644 --- a/tests/unit/StatementContainerTest.php +++ b/tests/unit/StatementContainerTest.php @@ -2,7 +2,7 @@ namespace malkusch\bav; -require_once __DIR__ . "/../autoloader/autoloader.php"; +require_once __DIR__ . "/../bootstrap.php"; /** * Tests StatementContainer. diff --git a/tests/unit/URIPickerTest.php b/tests/unit/URIPickerTest.php index 650180fa..cd0c5f7d 100644 --- a/tests/unit/URIPickerTest.php +++ b/tests/unit/URIPickerTest.php @@ -2,7 +2,7 @@ namespace malkusch\bav; -require_once __DIR__ . "/../autoloader/autoloader.php"; +require_once __DIR__ . "/../bootstrap.php"; /** * Tests URIPicker. diff --git a/tests/unit/ValidatorTest.php b/tests/unit/ValidatorTest.php index ada58ef0..9f7462b7 100644 --- a/tests/unit/ValidatorTest.php +++ b/tests/unit/ValidatorTest.php @@ -2,7 +2,7 @@ namespace malkusch\bav; -require_once __DIR__ . "/../autoloader/autoloader.php"; +require_once __DIR__ . "/../bootstrap.php"; /** * check all validators in order to find errors From 03c40184b05201119703bd0efffbe3c4f426a66d Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 7 Jun 2014 00:25:20 +0200 Subject: [PATCH 181/303] sqlite2 support fixed --- classes/dataBackend/pdo/PDODataBackend.php | 27 +++++++++++++++++----- docs/example.php | 2 +- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/classes/dataBackend/pdo/PDODataBackend.php b/classes/dataBackend/pdo/PDODataBackend.php index b770c6ac..80245083 100644 --- a/classes/dataBackend/pdo/PDODataBackend.php +++ b/classes/dataBackend/pdo/PDODataBackend.php @@ -543,11 +543,26 @@ public function getLastUpdate() public function isInstalled() { try { - $stmt = $this->statementContainer->prepare( - "SELECT CASE WHEN EXISTS( - (SELECT * FROM information_schema.tables WHERE table_name='{$this->prefix}meta') - ) THEN 1 ELSE 0 END" - ); + + switch ($this->pdo->getAttribute(\PDO::ATTR_DRIVER_NAME)) { + + case "sqlite": + $query = + "SELECT count(*) FROM sqlite_master + WHERE type='table' AND name = '{$this->prefix}meta'"; + break; + + default: + $query = + "SELECT CASE WHEN EXISTS( + (SELECT * FROM information_schema.tables + WHERE table_name='{$this->prefix}meta') + ) THEN 1 ELSE 0 END"; + break; + + } + + $stmt = $this->statementContainer->prepare($query); $stmt->execute(); $result = $stmt->fetch(); if ($result === false) { @@ -559,7 +574,7 @@ public function isInstalled() } catch (\PDOException $e) { $stmt->closeCursor(); - throw new DataBackendIOException($e->getMessage(), $e->getCode(), $e); + throw new DataBackendIOException($e->getMessage(), 0, $e); } } diff --git a/docs/example.php b/docs/example.php index b6ccc2bf..06321c65 100755 --- a/docs/example.php +++ b/docs/example.php @@ -64,7 +64,7 @@ * @see ConfigurationRegistry */ $backendContainer = new PDODataBackendContainer( - new \PDO('mysql:host=localhost;dbname=test', 'test') + new \PDO('sqlite::memory:') ); $backend = $backendContainer->getDataBackend(); From e80f42ae2948e9f6e0ba5d039e9cc53693389b64 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 7 Jun 2014 00:36:30 +0200 Subject: [PATCH 182/303] updated readme documentation --- README-1.0.0.md | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/README-1.0.0.md b/README-1.0.0.md index 3fceb328..cc8dbb29 100644 --- a/README-1.0.0.md +++ b/README-1.0.0.md @@ -10,15 +10,18 @@ Visit and download the latest version or use [Composer } ``` + # Autoloader -If you don't use composer's autoloader you have to include `bav/autoloader/autoloader.php`. BAV uses the autoloader generated by [PHP-Autoloader](http://php-autoloader.malkusch.de/en/). +If you don't use composer's autoloader (`vendor/autoload.php`) you have +to include `bav/autoloader/autoloader.php`. ```php -namespace malkusch\bav; +// Composer's autoloader: +require_once __DIR__ . "/vendor/autoload.php"; -require_once __DIR__ . "/bav/autoloader/autoloader.php"; +use malkusch\bav\BAV; $bav = new BAV(); ``` @@ -55,6 +58,7 @@ $configuration->setUpdatePlan(new AutomaticUpdatePlan()); return $configuration; ``` + # Update The Bundesbank releases new files for March, June, September and December. @@ -67,7 +71,7 @@ Call `bin/bav-update.php`. ## Programmatically ```php -namespace malkusch\bav; +use malkusch\bav\BAV; $bav = new BAV(); $bav->update(); @@ -85,6 +89,9 @@ $configuration->setUpdatePlan(new AutomaticUpdatePlan()); return $configuration; ``` +This automatic update plan will perform long running update operations as a shutdown +hook. I.e. it won't bother users during normal operations. + # Usage @@ -117,7 +124,7 @@ An Agency object has the fields: ## Example ```php -namespace malkusch\bav; +use malkusch\bav\BAV; $bav = new BAV(); $bankID = "10000000"; @@ -137,7 +144,7 @@ var_dump( $agency = $bav->getMainAgency($bankID); echo "{$agency->getName()} {$agency->getCity()}\n"; ``` -See also `docs/example.php`. +See also `bav/docs/example.php`. # Optional Dependencies From 582922907c8f61b8d465a518bd69f2941402663f Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sun, 8 Jun 2014 15:01:45 +0200 Subject: [PATCH 183/303] PSR2 compliant --- tests/bootstrap.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 22f98ca3..5281c838 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -1,4 +1,4 @@ Date: Sun, 8 Jun 2014 15:02:14 +0200 Subject: [PATCH 184/303] PHP 5.6 --- .travis.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 0801f392..ac6adbed 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,7 @@ language: php php: + - 5.6 - 5.5 - 5.4 - 5.3 @@ -13,12 +14,12 @@ install: before_script: - composer --prefer-source --dev install + - mysql -e 'SET @@GLOBAL.wait_timeout=600' - mysql -e 'create database bav;' - php tests/bin/test-install.php - - echo 'SET @@GLOBAL.wait_timeout=600' | mysql -uroot script: - phpunit tests/unit/ - phpunit --exclude-group large tests/unit-large/ - - phpcs --standard=PSR2 classes/ bin/ docs/example.php tests/classes/ tests/bin/ + - phpcs --standard=PSR2 classes/ bin/ docs/example.php tests/classes/ tests/bin/ tests/bootstrap.php From b2575346c59aca1a67c41bf33ea76054d03cc9a0 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sun, 8 Jun 2014 15:34:28 +0200 Subject: [PATCH 185/303] removed 5.6 --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index ac6adbed..30bc3bfe 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,6 @@ language: php php: - - 5.6 - 5.5 - 5.4 - 5.3 From 2487f40de5074142b4c20db512c0d1b89205281d Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 01:06:15 +0200 Subject: [PATCH 186/303] doctrine mapping --- .../mapping/malkusch.bav.Agency.dcm.xml | 22 +++++++++++++++++++ .../mapping/malkusch.bav.Bank.dcm.xml | 16 ++++++++++++++ composer.json | 6 +++-- docs/changelog.txt | 2 ++ 4 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 classes/dataBackend/orm/doctrine/mapping/malkusch.bav.Agency.dcm.xml create mode 100644 classes/dataBackend/orm/doctrine/mapping/malkusch.bav.Bank.dcm.xml diff --git a/classes/dataBackend/orm/doctrine/mapping/malkusch.bav.Agency.dcm.xml b/classes/dataBackend/orm/doctrine/mapping/malkusch.bav.Agency.dcm.xml new file mode 100644 index 00000000..822627c8 --- /dev/null +++ b/classes/dataBackend/orm/doctrine/mapping/malkusch.bav.Agency.dcm.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/classes/dataBackend/orm/doctrine/mapping/malkusch.bav.Bank.dcm.xml b/classes/dataBackend/orm/doctrine/mapping/malkusch.bav.Bank.dcm.xml new file mode 100644 index 00000000..26e750db --- /dev/null +++ b/classes/dataBackend/orm/doctrine/mapping/malkusch.bav.Bank.dcm.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/composer.json b/composer.json index 120396e9..a3377d5b 100644 --- a/composer.json +++ b/composer.json @@ -24,10 +24,12 @@ "ext-mbstring": "Enables UTF-8 support", "ext-dom": "Enables picking the download URI by xpath", "lib-curl": "Enables API for downloading the bank file", - "lib-iconv": "Enables UTF-8 support" + "lib-iconv": "Enables UTF-8 support", + "doctrine/orm": "Support for Doctrine ORM data backend" }, "require-dev": { - "phpunit/phpunit": ">=4" + "phpunit/phpunit": ">=4", + "doctrine/orm": "v2.4.3" }, "archive": { "exclude": ["/tests/"] diff --git a/docs/changelog.txt b/docs/changelog.txt index 650bda2e..92f3931c 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -32,6 +32,8 @@ Version 1.0.0 - not yet released - changed format of verifiy.ini into JSON + -[TODO] add ORM-Backends (Doctrine, Propel) + Version 0.28 - May 26, 2014 --------------------------- From 393fccbfa293da85a40aded638423fc54bf17136 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 01:37:04 +0200 Subject: [PATCH 187/303] implemented installation and update --- autoloader/index/0.php | 2 + .../orm/doctrine/DoctrineBackendContainer.php | 73 +++++++++++ .../orm/doctrine/DoctrineDataBackend.php | 121 ++++++++++++++++++ 3 files changed, 196 insertions(+) create mode 100644 classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php create mode 100644 classes/dataBackend/orm/doctrine/DoctrineDataBackend.php diff --git a/autoloader/index/0.php b/autoloader/index/0.php index fdbda90b..fea6c5d1 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -209,6 +209,7 @@ 'malkusch\bav\validatorexception' => '../classes/validator/exception/ValidatorException.php', 'malkusch\bav\downloaderexception' => '../classes/dataBackend/file/download/exception/DownloaderException.php', 'malkusch\bav\fileparserexception' => '../classes/dataBackend/file/fileParser/exception/FileParserException.php', + 'malkusch\bav\doctrinedatabackend' => '../classes/dataBackend/orm/doctrine/DoctrineDataBackend.php', 'malkusch\bav\automaticupdateplan' => '../classes/dataBackend/update/AutomaticUpdatePlan.php', 'malkusch\bav\defaultconfiguration' => '../classes/configuration/DefaultConfiguration.php', 'malkusch\bav\databackendcontainer' => '../classes/dataBackend/DataBackendContainer.php', @@ -224,6 +225,7 @@ 'malkusch\bav\pdodatabackendcontainer' => '../classes/dataBackend/pdo/PDODataBackendContainer.php', 'malkusch\bav\filedatabackendcontainer' => '../classes/dataBackend/file/FileDataBackendContainer.php', 'malkusch\bav\invalidfilesizeexception' => '../classes/dataBackend/file/validator/exception/InvalidFilesizeException.php', + 'malkusch\bav\doctrinebackendcontainer' => '../classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php', 'malkusch\bav\notempdirectoryexception' => '../classes/util/exception/NoTempDirectoryException.php', 'malkusch\bav\fileparsercontextexception' => '../classes/dataBackend/file/fileParser/exception/FileParserContextException.php', 'malkusch\bav\invalidlinelengthexception' => '../classes/dataBackend/file/validator/exception/InvalidLineLengthException.php', diff --git a/classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php b/classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php new file mode 100644 index 00000000..e0e3918a --- /dev/null +++ b/classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php @@ -0,0 +1,73 @@ + + * @license GPL + * @see DataBackend + * @link http://www.doctrine-project.org/ + */ +class DoctrineBackendContainer extends DataBackendContainer +{ + + /** + * @var EntityManager + */ + private $em; + + /** + * Return the paths to the XML-Mappings + * + * @return string[] + */ + public static function getXMLMappings() + { + return array(__DIR__ . "/mapping/"); + } + + /** + * Builds a container for a connection. + * + * @param array $connection Doctrine::DBAL connection + * @return DoctrineBackendContainer + */ + public static function buildByConnection(array $connection, $isDevMode = false) + { + $mappings = self::getXMLMappings(); + $config = Setup::createXMLMetadataConfiguration($mappings, $isDevMode); + + $entityManager = EntityManager::create($connection, $config); + return new self($entityManager); + } + + /** + * Injects the EntityManager + */ + public function __construct(EntityManager $entityManager) + { + $this->em = $entityManager; + } + + /** + * Gets the EntityManager + * + * @return EntityManager + */ + public function getEntityManager() + { + return $this->em; + } + + protected function makeDataBackend() + { + return new DoctrineDataBackend($this->em); + } +} diff --git a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php new file mode 100644 index 00000000..2e5ceb92 --- /dev/null +++ b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php @@ -0,0 +1,121 @@ + + * @license GPL + * @link http://www.doctrine-project.org/ + */ +class DoctrineDataBackend extends DataBackend +{ + + /** + * @var EntityManager + */ + private $em; + + public function __construct(EntityManager $em) + { + $this->em = $em; + } + + protected function getNewBank($bankID) + { + + } + + public function getAgenciesForBank(Bank $bank) + { + + } + + public function getAllBanks() + { + + } + + public function getBICAgencies($bic) + { + + } + + public function getLastUpdate() + { + + } + + public function getMainAgency(Bank $bank) + { + + } + + private function getClassesMetadata() + { + return array( + $this->em->getClassMetadata('malkusch\bav\Bank'), + $this->em->getClassMetadata('malkusch\bav\Agency'), + ); + } + + public function install() + { + $tool = new SchemaTool($this->em); + $classes = $this->getClassesMetadata(); + $tool->createSchema($classes); + + $this->update(); + } + + public function isInstalled() + { + + } + + public function uninstall() + { + $tool = new SchemaTool($this->em); + $classes = $this->getClassesMetadata(); + $tool->dropSchema($classes); + } + + public function update() + { + $this->em->transactional(function ($em) { + + // Download data + $fileUtil = new FileUtil(); + $fileBackend = new FileDataBackend(tempnam($fileUtil->getTempDirectory(), 'bav')); + $fileBackend->install(); + + // Delete all + $em->createQuery("DELETE FROM malkusch\bav\Agency")->execute(); + $em->createQuery("DELETE FROM malkusch\bav\Bank")->execute(); + + // Inserting data + foreach ($fileBackend->getAllBanks() as $bank) { + try { + $em->persist($bank); + + $agencies = $bank->getAgencies(); + $agencies[] = $bank->getMainAgency(); + foreach ($agencies as $agency) { + $em->persist($agency); + + } + } catch (NoMainAgencyException $e) { + trigger_error( + "Skipping bank {$e->getBank()->getBankID()} without any main agency." + ); + } + } + }); + } +} From 98c5cebed5d5eaf8661fe1a33c57e3c543c4317f Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 09:24:39 +0200 Subject: [PATCH 188/303] ::isInstalled(), getNewBank() --- .../orm/doctrine/DoctrineDataBackend.php | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php index 2e5ceb92..328db05d 100644 --- a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php +++ b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php @@ -4,6 +4,8 @@ use Doctrine\ORM\EntityManager; use Doctrine\ORM\Tools\SchemaTool; +use Doctrine\ORM\Tools\SchemaValidator; +use Doctrine\ORM\ORMException; /** * Use Doctrine ORM as backend. @@ -29,7 +31,18 @@ public function __construct(EntityManager $em) protected function getNewBank($bankID) { - + try { + $bank = $this->em->find('malkusch\bav\Bank', $bankID); + if ($bank == null) { + throw new BankNotFoundException($bankID); + + } + return $bank; + + } catch (ORMException $e) { + throw new DataBackendException($e); + + } } public function getAgenciesForBank(Bank $bank) @@ -76,7 +89,9 @@ public function install() public function isInstalled() { - + $schemaValidator = new SchemaValidator($this->em); + $validation = $schemaValidator->validateClass($this->em->getClassMetadata("malkusch\bav\Bank")); + return empty($validation); } public function uninstall() @@ -116,6 +131,8 @@ public function update() ); } } + + //TODO update last modified! }); } } From a6124fa2cd6df44d84b4d32c3eb3719a7528f711 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 09:35:21 +0200 Subject: [PATCH 189/303] getMainAgency() --- classes/dataBackend/orm/doctrine/DoctrineDataBackend.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php index 328db05d..a5926106 100644 --- a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php +++ b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php @@ -67,7 +67,8 @@ public function getLastUpdate() public function getMainAgency(Bank $bank) { - + // Return the Doctrine proxy + return $bank->getMainAgency(); } private function getClassesMetadata() From a8661200cdc5ac21206442721556550a06245001 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 11:02:05 +0200 Subject: [PATCH 190/303] getAgenciesForBank() --- classes/bank/Bank.php | 8 ++++++++ .../dataBackend/orm/doctrine/DoctrineDataBackend.php | 10 +++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/classes/bank/Bank.php b/classes/bank/Bank.php index c9cc5139..a48ece50 100644 --- a/classes/bank/Bank.php +++ b/classes/bank/Bank.php @@ -126,6 +126,14 @@ public function getAgencies() } return $this->agencies; } + + /** + * @internal + */ + public function setDataBackend(DataBackend $backend) + { + $this->dataBackend = $backend; + } /** * Use this method to check your bank account. diff --git a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php index a5926106..205ab560 100644 --- a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php +++ b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php @@ -37,6 +37,7 @@ protected function getNewBank($bankID) throw new BankNotFoundException($bankID); } + $bank->setDataBackend($this); return $bank; } catch (ORMException $e) { @@ -47,7 +48,14 @@ protected function getNewBank($bankID) public function getAgenciesForBank(Bank $bank) { - + $query = $this->em->createQuery( + "select agency from malkusch\bav\Agency agency where agency.id != :mainAgency and agency.bank=:bank" + ); + $query->setParameters(array( + "mainAgency" => $bank->getMainAgency()->getID(), + "bank" => $bank + )); + return $query->getResult(); } public function getAllBanks() From 423bd156000b292f2a6131323f13648517c9ed71 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 11:04:05 +0200 Subject: [PATCH 191/303] getAllBanks() --- classes/dataBackend/orm/doctrine/DoctrineDataBackend.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php index 205ab560..6f6f05c7 100644 --- a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php +++ b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php @@ -60,7 +60,7 @@ public function getAgenciesForBank(Bank $bank) public function getAllBanks() { - + return $this->em->getRepository("malkusch\bav\Bank")->findAll(); } public function getBICAgencies($bic) From c60c004f22e966955e6a4143c851e8e40bdc5899 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 11:11:21 +0200 Subject: [PATCH 192/303] getBICAgencies() --- classes/dataBackend/orm/doctrine/DoctrineDataBackend.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php index 6f6f05c7..052f715a 100644 --- a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php +++ b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php @@ -65,7 +65,9 @@ public function getAllBanks() public function getBICAgencies($bic) { - + return $this->em->getRepository("malkusch\bav\Agency")->findBy(array( + "bic" => $bic + )); } public function getLastUpdate() From 889ff746fd7c810bdd0a11ba205c59025b3bb8ec Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 11:14:34 +0200 Subject: [PATCH 193/303] index on bic --- .../orm/doctrine/mapping/malkusch.bav.Agency.dcm.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/classes/dataBackend/orm/doctrine/mapping/malkusch.bav.Agency.dcm.xml b/classes/dataBackend/orm/doctrine/mapping/malkusch.bav.Agency.dcm.xml index 822627c8..00d7b303 100644 --- a/classes/dataBackend/orm/doctrine/mapping/malkusch.bav.Agency.dcm.xml +++ b/classes/dataBackend/orm/doctrine/mapping/malkusch.bav.Agency.dcm.xml @@ -18,5 +18,9 @@ + + + + \ No newline at end of file From 9cd4c92f92da6ac35e99c2c900a0e83863fdb71c Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 11:32:41 +0200 Subject: [PATCH 194/303] MetaData and last modified --- autoloader/index/0.php | 1 + classes/dataBackend/orm/MetaData.php | 65 +++++++++++++++++++ .../orm/doctrine/DoctrineDataBackend.php | 16 ++++- .../mapping/malkusch.bav.MetaData.dcm.xml | 11 ++++ 4 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 classes/dataBackend/orm/MetaData.php create mode 100644 classes/dataBackend/orm/doctrine/mapping/malkusch.bav.MetaData.dcm.xml diff --git a/autoloader/index/0.php b/autoloader/index/0.php index fea6c5d1..b99e0ac5 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -20,6 +20,7 @@ 'malkusch\bav\lock' => '../classes/util/Lock.php', 'malkusch\bav\agency' => '../classes/bank/Agency.php', 'malkusch\bav\bicutil' => '../classes/util/BICUtil.php', + 'malkusch\bav\metadata' => '../classes/dataBackend/orm/MetaData.php', 'malkusch\bav\encoding' => '../classes/encoding/Encoding.php', 'malkusch\bav\fileutil' => '../classes/util/FileUtil.php', 'malkusch\bav\uripicker' => '../classes/dataBackend/file/download/uripicker/URIPicker.php', diff --git a/classes/dataBackend/orm/MetaData.php b/classes/dataBackend/orm/MetaData.php new file mode 100644 index 00000000..7d559471 --- /dev/null +++ b/classes/dataBackend/orm/MetaData.php @@ -0,0 +1,65 @@ + + */ +class MetaData +{ + + const LASTMODIFIED = "lastModified"; + + /** + * @var String + */ + private $name; + + /** + * @var String + */ + private $value; + + /** + * Sets the name + * + * @param string $name + */ + public function setName($name) + { + $this->name = $name; + } + + /** + * Gets the name + * + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Sets the value + * + * @param string $value + */ + public function setValue($value) + { + $this->value = $value; + } + + /** + * Gets the value + * + * @return string + */ + public function getValue() + { + return $this->value; + } +} diff --git a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php index 052f715a..71888538 100644 --- a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php +++ b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php @@ -72,7 +72,12 @@ public function getBICAgencies($bic) public function getLastUpdate() { - + $lastModified = $this->em->find("malkusch\bav\MetaData", MetaData::LASTMODIFIED); + if ($lastModified == null) { + throw new DataBackendException(); + + } + return $lastModified->getValue(); } public function getMainAgency(Bank $bank) @@ -86,6 +91,7 @@ private function getClassesMetadata() return array( $this->em->getClassMetadata('malkusch\bav\Bank'), $this->em->getClassMetadata('malkusch\bav\Agency'), + $this->em->getClassMetadata('malkusch\bav\MetaData'), ); } @@ -114,7 +120,7 @@ public function uninstall() public function update() { - $this->em->transactional(function ($em) { + $this->em->transactional(function (EntityManager $em) { // Download data $fileUtil = new FileUtil(); @@ -143,7 +149,11 @@ public function update() } } - //TODO update last modified! + // last modified + $lastModified = new MetaData(); + $lastModified->setName(MetaData::LASTMODIFIED); + $lastModified->setValue(time()); + $em->persist($lastModified); }); } } diff --git a/classes/dataBackend/orm/doctrine/mapping/malkusch.bav.MetaData.dcm.xml b/classes/dataBackend/orm/doctrine/mapping/malkusch.bav.MetaData.dcm.xml new file mode 100644 index 00000000..744a3540 --- /dev/null +++ b/classes/dataBackend/orm/doctrine/mapping/malkusch.bav.MetaData.dcm.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file From ec36b2a4c26b054489b19307c330c032d010d55b Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 11:45:22 +0200 Subject: [PATCH 195/303] harmonized PDO backend with ORM backend --- classes/dataBackend/pdo/PDODataBackend.php | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/classes/dataBackend/pdo/PDODataBackend.php b/classes/dataBackend/pdo/PDODataBackend.php index 80245083..df3c421c 100644 --- a/classes/dataBackend/pdo/PDODataBackend.php +++ b/classes/dataBackend/pdo/PDODataBackend.php @@ -38,11 +38,6 @@ class PDODataBackend extends DataBackend */ private $prefix = ''; - /** - * @var string last modification name - */ - const META_MODIFICATION = "lastModified"; - /** * @param String $prefix the prefix of the table names. */ @@ -197,7 +192,7 @@ public function update() "UPDATE {$this->prefix}meta SET value=:value WHERE name=:name" ); $modificationStmt->execute(array( - ":name" => self::META_MODIFICATION, + ":name" => MetaData::LASTMODIFIED, ":value" => time() )); @@ -284,7 +279,7 @@ public function install() "INSERT INTO {$this->prefix}meta (name, value) VALUES (:name, :value)" ); $insertMetaStmt->execute(array( - ":name" => self::META_MODIFICATION, + ":name" => MetaData::LASTMODIFIED, ":value" => null )); $this->update(); @@ -517,7 +512,7 @@ public function getLastUpdate() WHERE name = :name" ); $stmt->execute(array( - ":name" => self::META_MODIFICATION, + ":name" => MetaData::LASTMODIFIED, )); $result = $stmt->fetch(); if ($result === false) { From ab8adedfb7abbb4b702419585a6347dd9c16b09f Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 12:18:57 +0200 Subject: [PATCH 196/303] fix some methods --- .../orm/doctrine/DoctrineDataBackend.php | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php index 71888538..9b1548a8 100644 --- a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php +++ b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php @@ -6,6 +6,7 @@ use Doctrine\ORM\Tools\SchemaTool; use Doctrine\ORM\Tools\SchemaValidator; use Doctrine\ORM\ORMException; +use Doctrine\DBAL\DBALException; /** * Use Doctrine ORM as backend. @@ -106,9 +107,14 @@ public function install() public function isInstalled() { - $schemaValidator = new SchemaValidator($this->em); - $validation = $schemaValidator->validateClass($this->em->getClassMetadata("malkusch\bav\Bank")); - return empty($validation); + try { + $this->em->find("malkusch\bav\MetaData", MetaData::LASTMODIFIED); + return true; + + } catch (DBALException $e) { + return false; + + } } public function uninstall() @@ -150,7 +156,11 @@ public function update() } // last modified - $lastModified = new MetaData(); + $lastModified = $em->find("malkusch\bav\MetaData", MetaData::LASTMODIFIED); + if ($lastModified == null) { + $lastModified = new MetaData(); + + } $lastModified->setName(MetaData::LASTMODIFIED); $lastModified->setValue(time()); $em->persist($lastModified); From c8411c1fa25cebb29b43cf3ef4131bdb41ff8fd2 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 13:00:08 +0200 Subject: [PATCH 197/303] fix orm update --- .../orm/doctrine/mapping/malkusch.bav.Agency.dcm.xml | 2 +- .../dataBackend/orm/doctrine/mapping/malkusch.bav.Bank.dcm.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/dataBackend/orm/doctrine/mapping/malkusch.bav.Agency.dcm.xml b/classes/dataBackend/orm/doctrine/mapping/malkusch.bav.Agency.dcm.xml index 00d7b303..4bbd6919 100644 --- a/classes/dataBackend/orm/doctrine/mapping/malkusch.bav.Agency.dcm.xml +++ b/classes/dataBackend/orm/doctrine/mapping/malkusch.bav.Agency.dcm.xml @@ -13,7 +13,7 @@ - + diff --git a/classes/dataBackend/orm/doctrine/mapping/malkusch.bav.Bank.dcm.xml b/classes/dataBackend/orm/doctrine/mapping/malkusch.bav.Bank.dcm.xml index 26e750db..3ed9ae65 100644 --- a/classes/dataBackend/orm/doctrine/mapping/malkusch.bav.Bank.dcm.xml +++ b/classes/dataBackend/orm/doctrine/mapping/malkusch.bav.Bank.dcm.xml @@ -10,7 +10,7 @@ - + \ No newline at end of file From 9ed21886560edead91b821f1888ff0fb92f477d8 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 13:40:52 +0200 Subject: [PATCH 198/303] added license --- classes/dataBackend/orm/MetaData.php | 1 + 1 file changed, 1 insertion(+) diff --git a/classes/dataBackend/orm/MetaData.php b/classes/dataBackend/orm/MetaData.php index 7d559471..9f020fae 100644 --- a/classes/dataBackend/orm/MetaData.php +++ b/classes/dataBackend/orm/MetaData.php @@ -7,6 +7,7 @@ * * @internal * @author Markus Malkusch + * @license GPL */ class MetaData { From f5ea274a5424dd4240d384dbde97a64aba63241f Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 13:41:40 +0200 Subject: [PATCH 199/303] clarified method signature --- classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php b/classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php index e0e3918a..b206e0c4 100644 --- a/classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php +++ b/classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php @@ -36,10 +36,10 @@ public static function getXMLMappings() /** * Builds a container for a connection. * - * @param array $connection Doctrine::DBAL connection + * @param mixed $connection Doctrine::DBAL connection * @return DoctrineBackendContainer */ - public static function buildByConnection(array $connection, $isDevMode = false) + public static function buildByConnection($connection, $isDevMode = false) { $mappings = self::getXMLMappings(); $config = Setup::createXMLMetadataConfiguration($mappings, $isDevMode); From 2aab4e0019572d557652939a23672cb72429e5cd Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 13:42:05 +0200 Subject: [PATCH 200/303] removed unused use --- classes/dataBackend/orm/doctrine/DoctrineDataBackend.php | 1 - 1 file changed, 1 deletion(-) diff --git a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php index 9b1548a8..1616d0ab 100644 --- a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php +++ b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php @@ -4,7 +4,6 @@ use Doctrine\ORM\EntityManager; use Doctrine\ORM\Tools\SchemaTool; -use Doctrine\ORM\Tools\SchemaValidator; use Doctrine\ORM\ORMException; use Doctrine\DBAL\DBALException; From a0bcae2ebc0a53587bbaf58fa23d908bab2dce4d Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 14:10:54 +0200 Subject: [PATCH 201/303] added doctrine into backend test --- tests/unit-large/BackendTest.php | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/tests/unit-large/BackendTest.php b/tests/unit-large/BackendTest.php index 1ec32145..d49d1494 100644 --- a/tests/unit-large/BackendTest.php +++ b/tests/unit-large/BackendTest.php @@ -3,10 +3,11 @@ namespace malkusch\bav; require_once __DIR__ . "/../bootstrap.php"; +require_once __DIR__ . "/../../vendor/autoload.php"; /** * Tests the Backends. - * This test needs some memory (about 400M)! + * This test needs some memory (about 800M)! * * @license GPL * @author Markus Malkusch @@ -37,10 +38,16 @@ public function provideBackends() $fileBackend = new FileDataBackend(); $this->setupBackend($fileBackend); + + $conn = array( + 'pdo' => PDOFactory::makePDO(), + ); + $doctrineContainer = DoctrineBackendContainer::buildByConnection($conn, true); return array( array($pdoBackend), - array($fileBackend) + array($fileBackend), + array($doctrineContainer->getDataBackend()), ); } @@ -64,10 +71,19 @@ public function provideInstallationBackends() $fileBackend = new FileDataBackend(tempnam($fileUtil->getTempDirectory(), 'bavtest')); $this->setupInstallationBackends($fileBackend); + + $conn = array( + 'driver' => 'pdo_sqlite', + 'path' => ":memory:" + ); + $doctrineContainer = DoctrineBackendContainer::buildByConnection($conn, true); + $doctrineBackend = $doctrineContainer->getDataBackend(); + $this->setupInstallationBackends($doctrineBackend); return array( array($pdoBackend), - array($fileBackend) + array($fileBackend), + array($doctrineBackend), ); } From 007256457aa5a2f0bd6cd898d74811cda72c2f36 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 14:12:39 +0200 Subject: [PATCH 202/303] add doctrine/orm into README --- README-1.0.0.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README-1.0.0.md b/README-1.0.0.md index cc8dbb29..0f26e31d 100644 --- a/README-1.0.0.md +++ b/README-1.0.0.md @@ -160,6 +160,9 @@ missing BAV works only with the ISO-8859-15 encoding. * **PDO**: If you intend to use a DBS you need to use `PDODataBackendContainer`. `PDODataBackendContainer` needs a `PDO` support compiled in PHP. +* **doctrine/orm**: You can use `DoctrineBackendContainer` which uses doctrine +as data backend. + # License and authors From 7f6efef57da68fef418c8888f66dd78f25406d9c Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 14:26:07 +0200 Subject: [PATCH 203/303] call em->clear() after uninstall() --- classes/dataBackend/orm/doctrine/DoctrineDataBackend.php | 1 + 1 file changed, 1 insertion(+) diff --git a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php index 1616d0ab..f36f4a9e 100644 --- a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php +++ b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php @@ -121,6 +121,7 @@ public function uninstall() $tool = new SchemaTool($this->em); $classes = $this->getClassesMetadata(); $tool->dropSchema($classes); + $this->em->clear(); } public function update() From 88773e916ad3451a4181d459253206f0fd266f6c Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 14:43:52 +0200 Subject: [PATCH 204/303] changelog --- docs/changelog.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 92f3931c..bc58fadc 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -32,7 +32,7 @@ Version 1.0.0 - not yet released - changed format of verifiy.ini into JSON - -[TODO] add ORM-Backends (Doctrine, Propel) + - added the Doctrine data backend DoctrineBackendContainer. Version 0.28 - May 26, 2014 From d24f4c9eaed8abfba4bf4252944be606af56d60a Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 14:56:51 +0200 Subject: [PATCH 205/303] fixed backend test --- tests/unit-large/BackendTest.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/unit-large/BackendTest.php b/tests/unit-large/BackendTest.php index d49d1494..f089ad22 100644 --- a/tests/unit-large/BackendTest.php +++ b/tests/unit-large/BackendTest.php @@ -7,7 +7,7 @@ /** * Tests the Backends. - * This test needs some memory (about 800M)! + * This test needs some memory (about 900M)! * * @license GPL * @author Markus Malkusch @@ -43,11 +43,13 @@ public function provideBackends() 'pdo' => PDOFactory::makePDO(), ); $doctrineContainer = DoctrineBackendContainer::buildByConnection($conn, true); + $doctrineBackend = new DoctrineDataBackend($doctrineContainer->getEntityManager()); + $this->setupBackend($doctrineBackend); return array( array($pdoBackend), array($fileBackend), - array($doctrineContainer->getDataBackend()), + array($doctrineBackend), ); } @@ -77,7 +79,7 @@ public function provideInstallationBackends() 'path' => ":memory:" ); $doctrineContainer = DoctrineBackendContainer::buildByConnection($conn, true); - $doctrineBackend = $doctrineContainer->getDataBackend(); + $doctrineBackend = new DoctrineDataBackend($doctrineContainer->getEntityManager()); $this->setupInstallationBackends($doctrineBackend); return array( From 7a0ca62497a40d4dcd9ec2f7d71a9be68496d1e5 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sun, 1 Jun 2014 14:52:48 +0200 Subject: [PATCH 206/303] release 0.29 Conflicts: docs/changelog.txt --- docs/changelog.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/changelog.txt b/docs/changelog.txt index bc58fadc..fb8b49b0 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -35,6 +35,11 @@ Version 1.0.0 - not yet released - added the Doctrine data backend DoctrineBackendContainer. +Version 0.29 - June 1, 2014 +--------------------------- + - fixed validators: 78, 68, 59, 58 + + Version 0.28 - May 26, 2014 --------------------------- - added Composer support From 813935112cfd829dcc0213dffeb1574b7d6576db Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 16:47:24 +0200 Subject: [PATCH 207/303] reduced memory foot print --- tests/unit-large/BackendTest.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/unit-large/BackendTest.php b/tests/unit-large/BackendTest.php index f089ad22..78437ece 100644 --- a/tests/unit-large/BackendTest.php +++ b/tests/unit-large/BackendTest.php @@ -19,6 +19,11 @@ class BackendTest extends \PHPUnit_Framework_TestCase * @var FileDataBackend */ private static $referenceBackend; + + /** + * @var EntityManager[] + */ + private static $entityManagers = array(); /** * Defines the reference backend @@ -44,6 +49,7 @@ public function provideBackends() ); $doctrineContainer = DoctrineBackendContainer::buildByConnection($conn, true); $doctrineBackend = new DoctrineDataBackend($doctrineContainer->getEntityManager()); + self::$entityManagers[] = $doctrineContainer->getEntityManager(); $this->setupBackend($doctrineBackend); return array( @@ -80,6 +86,7 @@ public function provideInstallationBackends() ); $doctrineContainer = DoctrineBackendContainer::buildByConnection($conn, true); $doctrineBackend = new DoctrineDataBackend($doctrineContainer->getEntityManager()); + self::$entityManagers[] = $doctrineContainer->getEntityManager(); $this->setupInstallationBackends($doctrineBackend); return array( @@ -142,6 +149,15 @@ public function provideAgencies() } return $agencies; } + + protected function tearDown() + { + // Reduce memory foot print + foreach (self::$entityManagers as $em) { + $em->clear(); + + } + } /** * @dataProvider provideInstallationBackends From b384bda170d5e326b00f0b3acbfe5d6d0621c2b9 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 21:57:30 +0200 Subject: [PATCH 208/303] increase mysql packet timeout for CI --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 30bc3bfe..e092dd16 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,7 +13,7 @@ install: before_script: - composer --prefer-source --dev install - - mysql -e 'SET @@GLOBAL.wait_timeout=600' + - mysql -e 'SET @@GLOBAL.wait_timeout=1200' - mysql -e 'create database bav;' - php tests/bin/test-install.php From c5c02cd494481d7192c4feeb9efa1307364b5ba0 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 22:16:51 +0200 Subject: [PATCH 209/303] added DataBackend::free() for less memory consumption during tests --- classes/dataBackend/DataBackend.php | 8 ++ classes/dataBackend/file/FileDataBackend.php | 6 ++ .../orm/doctrine/DoctrineDataBackend.php | 6 ++ classes/dataBackend/pdo/PDODataBackend.php | 6 ++ tests/unit-large/BackendTest.php | 88 ++++++++----------- 5 files changed, 65 insertions(+), 49 deletions(-) diff --git a/classes/dataBackend/DataBackend.php b/classes/dataBackend/DataBackend.php index 784bfc1d..eed80ddd 100644 --- a/classes/dataBackend/DataBackend.php +++ b/classes/dataBackend/DataBackend.php @@ -185,4 +185,12 @@ public function isValidBIC($bic) $agencies = $this->getBICAgencies($bic); return ! empty($agencies); } + + /** + * Frees memory of cached instances + */ + public function free() + { + $this->instances = array(); + } } diff --git a/classes/dataBackend/file/FileDataBackend.php b/classes/dataBackend/file/FileDataBackend.php index 1994e552..047b01b7 100644 --- a/classes/dataBackend/file/FileDataBackend.php +++ b/classes/dataBackend/file/FileDataBackend.php @@ -443,4 +443,10 @@ public function getBICAgencies($bic) } return $agencies; } + + public function free() + { + parent::free(); + $this->contextCache = array(); + } } diff --git a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php index f36f4a9e..96dca28d 100644 --- a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php +++ b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php @@ -166,4 +166,10 @@ public function update() $em->persist($lastModified); }); } + + public function free() + { + parent::free(); + $this->em->clear(); + } } diff --git a/classes/dataBackend/pdo/PDODataBackend.php b/classes/dataBackend/pdo/PDODataBackend.php index df3c421c..b85af367 100644 --- a/classes/dataBackend/pdo/PDODataBackend.php +++ b/classes/dataBackend/pdo/PDODataBackend.php @@ -630,4 +630,10 @@ public function getBICAgencies($bic) } } + + public function free() + { + parent::free(); + $this->agencies = array(); + } } diff --git a/tests/unit-large/BackendTest.php b/tests/unit-large/BackendTest.php index 78437ece..117d48c4 100644 --- a/tests/unit-large/BackendTest.php +++ b/tests/unit-large/BackendTest.php @@ -21,9 +21,9 @@ class BackendTest extends \PHPUnit_Framework_TestCase private static $referenceBackend; /** - * @var EntityManager[] + * @var DataBackend[] */ - private static $entityManagers = array(); + private static $freeableDatabackends = array(); /** * Defines the reference backend @@ -38,71 +38,61 @@ public static function classConstructor() */ public function provideBackends() { - $pdoBackend = new PDODataBackend(PDOFactory::makePDO()); - $this->setupBackend($pdoBackend); - - $fileBackend = new FileDataBackend(); - $this->setupBackend($fileBackend); + $backends = array(); + + $backends[] = new PDODataBackend(PDOFactory::makePDO()); + $backends[] = new FileDataBackend(); $conn = array( - 'pdo' => PDOFactory::makePDO(), + "pdo" => PDOFactory::makePDO(), ); $doctrineContainer = DoctrineBackendContainer::buildByConnection($conn, true); - $doctrineBackend = new DoctrineDataBackend($doctrineContainer->getEntityManager()); - self::$entityManagers[] = $doctrineContainer->getEntityManager(); - $this->setupBackend($doctrineBackend); - - return array( - array($pdoBackend), - array($fileBackend), - array($doctrineBackend), - ); - } + $backends[] = new DoctrineDataBackend($doctrineContainer->getEntityManager()); - private function setupBackend(DataBackend $backend) - { - if ($backend->isInstalled()) { - return; + array_walk($backends, function (DataBackend &$backend) { + if (! $backend->isInstalled()) { + $backend->install(); - } - $backend->install(); + } + + self::$freeableDatabackends[] = $backend; + + $backend = array($backend); + }); + + return $backends; } /** */ public function provideInstallationBackends() { - $pdoBackend = new PDODataBackend(PDOFactory::makePDO(), 'bavtest_'); - $this->setupInstallationBackends($pdoBackend); + $backends = array(); + + $backends[] = new PDODataBackend(PDOFactory::makePDO(), "bavtest_"); $fileUtil = new FileUtil(); - - $fileBackend = new FileDataBackend(tempnam($fileUtil->getTempDirectory(), 'bavtest')); - $this->setupInstallationBackends($fileBackend); + $backends[] = new FileDataBackend(tempnam($fileUtil->getTempDirectory(), "bavtest")); $conn = array( - 'driver' => 'pdo_sqlite', - 'path' => ":memory:" + "driver" => "pdo_sqlite", + "path" => ":memory:" ); $doctrineContainer = DoctrineBackendContainer::buildByConnection($conn, true); - $doctrineBackend = new DoctrineDataBackend($doctrineContainer->getEntityManager()); - self::$entityManagers[] = $doctrineContainer->getEntityManager(); - $this->setupInstallationBackends($doctrineBackend); - - return array( - array($pdoBackend), - array($fileBackend), - array($doctrineBackend), - ); - } + $backends[] = new DoctrineDataBackend($doctrineContainer->getEntityManager()); - private function setupInstallationBackends(DataBackend $backend) - { - if (! $backend->isInstalled()) { - return; + array_walk($backends, function (DataBackend &$backend) { + if ($backend->isInstalled()) { + $backend->uninstall(); - } - $backend->uninstall(); + } + + self::$freeableDatabackends[] = $backend; + + $backend = array($backend); + }); + + return $backends; } /** @@ -153,8 +143,8 @@ public function provideAgencies() protected function tearDown() { // Reduce memory foot print - foreach (self::$entityManagers as $em) { - $em->clear(); + foreach (self::$freeableDatabackends as $backend) { + $backend->free(); } } From 732b903287fa066f5aab501612985c7053be036f Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 22:30:33 +0200 Subject: [PATCH 210/303] documented api --- classes/dataBackend/update/AutomaticUpdatePlan.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/classes/dataBackend/update/AutomaticUpdatePlan.php b/classes/dataBackend/update/AutomaticUpdatePlan.php index 4bb24a6f..1d7341c1 100644 --- a/classes/dataBackend/update/AutomaticUpdatePlan.php +++ b/classes/dataBackend/update/AutomaticUpdatePlan.php @@ -23,6 +23,8 @@ class AutomaticUpdatePlan extends UpdatePlan /** * Set to false if you don't want to see an E_USER_NOTICE about an update. + * + * @param bool $notice */ public function setNotice($notice) { From f3b711e45115fa31f76009ee7c8f45c693b4d655 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 22:34:17 +0200 Subject: [PATCH 211/303] fixed wrong namespace for LogicException --- classes/dataBackend/file/FileDataBackend.php | 6 +++--- classes/dataBackend/pdo/PDODataBackend.php | 12 ++++++------ classes/validator/validators/Validator57.php | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/classes/dataBackend/file/FileDataBackend.php b/classes/dataBackend/file/FileDataBackend.php index 047b01b7..eaece8b7 100644 --- a/classes/dataBackend/file/FileDataBackend.php +++ b/classes/dataBackend/file/FileDataBackend.php @@ -310,7 +310,7 @@ public function getMainAgency(Bank $bank) throw new NoMainAgencyException($bank); } catch (UndefinedFileParserContextException $e) { - throw new LogicException("Start and end should be defined."); + throw new \LogicException("Start and end should be defined."); } catch (FileParserIOException $e) { throw new DataBackendIOException("Parser Exception at bank {$bank->getBankID()}"); @@ -342,7 +342,7 @@ public function getAgenciesForBank(Bank $bank) return $agencies; } catch (UndefinedFileParserContextException $e) { - throw new LogicException("Start and end should be defined."); + throw new \LogicException("Start and end should be defined."); } catch (FileParserIOException $e) { throw new DataBackendIOException(); @@ -359,7 +359,7 @@ public function getAgenciesForBank(Bank $bank) private function defineContextInterval($bankID) { if (! isset($this->contextCache[$bankID])) { - throw new LogicException("The contextCache object should exist!"); + throw new \LogicException("The contextCache object should exist!"); } $context = $this->contextCache[$bankID]; diff --git a/classes/dataBackend/pdo/PDODataBackend.php b/classes/dataBackend/pdo/PDODataBackend.php index b85af367..876f4158 100644 --- a/classes/dataBackend/pdo/PDODataBackend.php +++ b/classes/dataBackend/pdo/PDODataBackend.php @@ -119,7 +119,7 @@ public function getAgencies($sql) throw new DataBackendIOException(); } catch (BankNotFoundException $e) { - throw new LogicException($e); + throw new \LogicException($e); } } @@ -330,7 +330,7 @@ public function getAllBanks() throw new DataBackendIOException(); } catch (MissingAttributesDataBackendIOException $e) { - throw new LogicException($e); + throw new \LogicException($e); } } @@ -364,7 +364,7 @@ protected function getNewBank($bankID) } catch (MissingAttributesDataBackendIOException $e) { $stmt->closeCursor(); - throw new LogicException($e); + throw new \LogicException($e); } } @@ -459,7 +459,7 @@ public function getMainAgency(Bank $bank) } catch (MissingAttributesDataBackendIOException $e) { $stmt->closeCursor(); - throw new LogicException($e); + throw new \LogicException($e); } } @@ -493,7 +493,7 @@ public function getAgenciesForBank(Bank $bank) } catch (MissingAttributesDataBackendIOException $e) { $stmt->closeCursor(); - throw new LogicException($e); + throw new \LogicException($e); } } @@ -626,7 +626,7 @@ public function getBICAgencies($bic) } catch (MissingAttributesDataBackendIOException $e) { $stmt->closeCursor(); - throw new LogicException($e); + throw new \LogicException($e); } } diff --git a/classes/validator/validators/Validator57.php b/classes/validator/validators/Validator57.php index 28adfec3..6354eb2d 100644 --- a/classes/validator/validators/Validator57.php +++ b/classes/validator/validators/Validator57.php @@ -182,7 +182,7 @@ private function getMode() return 4; } else { - throw new LogicException(); + throw new \LogicException(); } } From 41b230421d8042b046ee2d7110130398f980754a Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 22:58:16 +0200 Subject: [PATCH 212/303] decrease memory in test --- tests/unit-large/BackendTest.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tests/unit-large/BackendTest.php b/tests/unit-large/BackendTest.php index 117d48c4..7318eb01 100644 --- a/tests/unit-large/BackendTest.php +++ b/tests/unit-large/BackendTest.php @@ -7,7 +7,7 @@ /** * Tests the Backends. - * This test needs some memory (about 900M)! + * This test needs some memory (about 550M)! * * @license GPL * @author Markus Malkusch @@ -107,6 +107,16 @@ public function provideBanks() $comparedBank = $backend->getBank($bank->getBankID()); $banks[] = array($bank, $comparedBank); + /* + * load agencies, because clearing the backend in tearDown() + * makes it impossible for some data backends to load the + * agencies later. + */ + $comparedBank->getMainAgency(); + $comparedBank->getAgencies(); + $bank->getMainAgency(); + $bank->getAgencies(); + } } return $banks; @@ -147,6 +157,7 @@ protected function tearDown() $backend->free(); } + gc_collect_cycles(); } /** From 9c838cbde95ca7bedc8872c064baf3a311a7d205 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 23:14:22 +0200 Subject: [PATCH 213/303] fixed test for PHP 5.3 --- tests/unit-large/BackendTest.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tests/unit-large/BackendTest.php b/tests/unit-large/BackendTest.php index 7318eb01..cd97911d 100644 --- a/tests/unit-large/BackendTest.php +++ b/tests/unit-large/BackendTest.php @@ -49,7 +49,7 @@ public function provideBackends() $doctrineContainer = DoctrineBackendContainer::buildByConnection($conn, true); $backends[] = new DoctrineDataBackend($doctrineContainer->getEntityManager()); - array_walk($backends, function (DataBackend &$backend) { + foreach ($backends as &$backend) { if (! $backend->isInstalled()) { $backend->install(); @@ -58,7 +58,8 @@ public function provideBackends() self::$freeableDatabackends[] = $backend; $backend = array($backend); - }); + + }; return $backends; } @@ -81,7 +82,7 @@ public function provideInstallationBackends() $doctrineContainer = DoctrineBackendContainer::buildByConnection($conn, true); $backends[] = new DoctrineDataBackend($doctrineContainer->getEntityManager()); - array_walk($backends, function (DataBackend &$backend) { + foreach ($backends as &$backend) { if ($backend->isInstalled()) { $backend->uninstall(); @@ -90,7 +91,8 @@ public function provideInstallationBackends() self::$freeableDatabackends[] = $backend; $backend = array($backend); - }); + + }; return $backends; } @@ -157,7 +159,6 @@ protected function tearDown() $backend->free(); } - gc_collect_cycles(); } /** From c326b5e0312bf25d55a48820fd2e634f39a9ec93 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 24 Jun 2014 23:37:15 +0200 Subject: [PATCH 214/303] decreased memory usage drastically --- tests/unit-large/BackendTest.php | 116 ++++++++++++------------------- 1 file changed, 43 insertions(+), 73 deletions(-) diff --git a/tests/unit-large/BackendTest.php b/tests/unit-large/BackendTest.php index cd97911d..942a2af1 100644 --- a/tests/unit-large/BackendTest.php +++ b/tests/unit-large/BackendTest.php @@ -34,7 +34,7 @@ public static function classConstructor() } /** - * @return Array The tested backends + * @return DataBackend[] The tested backends */ public function provideBackends() { @@ -65,6 +65,7 @@ public function provideBackends() } /** + * @return DataBackend[] */ public function provideInstallationBackends() { @@ -97,61 +98,6 @@ public function provideInstallationBackends() return $backends; } - /** - * @return Array - */ - public function provideBanks() - { - $banks = array(); - foreach ($this->provideBackends() as $backendArray) { - $backend = $backendArray[0]; - foreach (self::$referenceBackend->getAllBanks() as $bank) { - $comparedBank = $backend->getBank($bank->getBankID()); - $banks[] = array($bank, $comparedBank); - - /* - * load agencies, because clearing the backend in tearDown() - * makes it impossible for some data backends to load the - * agencies later. - */ - $comparedBank->getMainAgency(); - $comparedBank->getAgencies(); - $bank->getMainAgency(); - $bank->getAgencies(); - - } - } - return $banks; - } - - /** - * @return Array - */ - public function provideAgencies() - { - $agencies = array(); - foreach ($this->provideBanks() as $banks) { - $referenceBank = $banks[0]; - $testedBank = $banks[1]; - - $referenceAgencies = array(); - foreach ($referenceBank->getAgencies() as $agency) { - $referenceAgencies[$agency->getID()] = $agency; - - } - - foreach ($testedBank->getAgencies() as $agency) { - $agencies[] = array( - $referenceAgencies[$agency->getID()], - $agency - ); - - } - - } - return $agencies; - } - protected function tearDown() { // Reduce memory foot print @@ -238,32 +184,56 @@ public function testGetAllBanks(DataBackend $backend) } /** - * @dataProvider provideBanks + * Test loading all banks + * + * @dataProvider provideBackends */ - public function testBanks(Bank $referenceBank, Bank $testedBank) + public function testBanks(DataBackend $backend) { - $this->assertEquals( - $referenceBank->getValidationType(), - $testedBank->getValidationType() - ); + foreach (self::$referenceBackend->getAllBanks() as $referenceBank) { + $testedBank = $backend->getBank($referenceBank->getBankID()); - $this->assertEqualAgency( - $referenceBank->getMainAgency(), - $testedBank->getMainAgency() - ); + $this->assertEquals( + $referenceBank->getValidationType(), + $testedBank->getValidationType() + ); - $this->assertEquals( - count($referenceBank->getAgencies()), - count($testedBank->getAgencies()) - ); + $this->assertEqualAgency( + $referenceBank->getMainAgency(), + $testedBank->getMainAgency() + ); + + $this->assertEquals( + count($referenceBank->getAgencies()), + count($testedBank->getAgencies()) + ); + + } } /** - * @dataProvider provideAgencies + * Tests loading all agencies + * + * @dataProvider provideBackends */ - public function testAgencies(Agency $referenceAgency, Agency $testedAgency) + public function testAgencies(DataBackend $backend) { - $this->assertEqualAgency($referenceAgency, $testedAgency); + foreach (self::$referenceBackend->getAllBanks() as $referenceBank) { + $testedBank = $backend->getBank($referenceBank->getBankID()); + + $referenceAgencies = array(); + foreach ($referenceBank->getAgencies() as $agency) { + $referenceAgencies[$agency->getID()] = $agency; + + } + + foreach ($testedBank->getAgencies() as $agency) { + $referenceAgency = $referenceAgencies[$agency->getID()]; + + $this->assertEqualAgency($referenceAgency, $agency); + + } + } } private function assertEqualAgency(Agency $a, Agency $b) From 82cb50f928075fe7496ca1fc27ceddaa71772c5c Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Wed, 25 Jun 2014 00:39:50 +0200 Subject: [PATCH 215/303] added SQLDataBackend --- autoloader/index/0.php | 1 + classes/dataBackend/DataBackend.php | 2 +- classes/dataBackend/SQLDataBackend.php | 25 +++++++ .../orm/doctrine/DoctrineDataBackend.php | 35 +++++++++- classes/dataBackend/pdo/PDODataBackend.php | 2 +- tests/unit/AgencyQueryTest.php | 66 +++++++++---------- 6 files changed, 94 insertions(+), 37 deletions(-) create mode 100644 classes/dataBackend/SQLDataBackend.php diff --git a/autoloader/index/0.php b/autoloader/index/0.php index b99e0ac5..ea80902a 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -194,6 +194,7 @@ 'malkusch\bav\iconvencoding' => '../classes/encoding/IconvEncoding.php', 'malkusch\bav\fileexception' => '../classes/util/exception/FileException.php', 'malkusch\bav\lockexception' => '../classes/util/exception/LockException.php', + 'malkusch\bav\sqldatabackend' => '../classes/dataBackend/SQLDataBackend.php', 'malkusch\bav\fieldexception' => '../classes/dataBackend/file/validator/exception/FieldException.php', 'malkusch\bav\pdodatabackend' => '../classes/dataBackend/pdo/PDODataBackend.php', 'malkusch\bav\validatorchain' => '../classes/validator/ValidatorChain.php', diff --git a/classes/dataBackend/DataBackend.php b/classes/dataBackend/DataBackend.php index eed80ddd..9fbc2ced 100644 --- a/classes/dataBackend/DataBackend.php +++ b/classes/dataBackend/DataBackend.php @@ -17,7 +17,7 @@ * * @author Markus Malkusch * @license GPL - * @see DataBackendFactory + * @see DataBackendContainer */ abstract class DataBackend { diff --git a/classes/dataBackend/SQLDataBackend.php b/classes/dataBackend/SQLDataBackend.php new file mode 100644 index 00000000..810bba8c --- /dev/null +++ b/classes/dataBackend/SQLDataBackend.php @@ -0,0 +1,25 @@ + + * @license GPL + */ +abstract class SQLDataBackend extends DataBackend +{ + + /** + * You may use an arbitrary SQL statement to receive Agency objects. + * Your statement should at least return the id of the agencies. + * + * @param string $sql + * @throws MissingAttributesDataBackendIOException + * @throws DataBackendIOException + * @throws DataBackendException + * @return Agency[] + */ + abstract public function getAgencies($sql); +} diff --git a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php index 96dca28d..7e2da63e 100644 --- a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php +++ b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php @@ -16,7 +16,7 @@ * @license GPL * @link http://www.doctrine-project.org/ */ -class DoctrineDataBackend extends DataBackend +class DoctrineDataBackend extends SQLDataBackend { /** @@ -172,4 +172,37 @@ public function free() parent::free(); $this->em->clear(); } + + /** + * You may use an arbitrary SQL statement to receive Agency objects. + * Your statement should at least return the id of the agencies. + * + * @param string $sql + * @throws MissingAttributesDataBackendIOException + * @throws DataBackendIOException + * @throws DataBackendException + * @return Agency[] + */ + public function getAgencies($sql) + { + $agencies = array(); + $backend = $this; + $this->em->transactional(function () use (&$agencies, $sql, $backend) { + $stmt = $this->em->getConnection()->executeQuery($sql); + + foreach ($stmt as $result) { + if (! array_key_exists('id', $result)) { + throw new MissingAttributesDataBackendIOException(); + + } + $id = $result["id"]; + $agency = $this->em->find("malkusch\bav\Agency", $id); + $agencies[] = $agency; + + $agency->getBank()->setDataBackend($backend); + + } + }); + return $agencies; + } } diff --git a/classes/dataBackend/pdo/PDODataBackend.php b/classes/dataBackend/pdo/PDODataBackend.php index 876f4158..6656a323 100644 --- a/classes/dataBackend/pdo/PDODataBackend.php +++ b/classes/dataBackend/pdo/PDODataBackend.php @@ -9,7 +9,7 @@ * @author Markus Malkusch * @license GPL */ -class PDODataBackend extends DataBackend +class PDODataBackend extends SQLDataBackend { /** diff --git a/tests/unit/AgencyQueryTest.php b/tests/unit/AgencyQueryTest.php index b9c25933..e2679a5d 100644 --- a/tests/unit/AgencyQueryTest.php +++ b/tests/unit/AgencyQueryTest.php @@ -3,75 +3,73 @@ namespace malkusch\bav; require_once __DIR__ . "/../bootstrap.php"; +require_once __DIR__ . "/../../vendor/autoload.php"; /** - * check PDODataBackend->getAgencies($sql) + * Test SQLDataBackend::getAgencies($sql) * - * Copyright (C) 2009 Markus Malkusch - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * @package test * @author Markus Malkusch - * @copyright Copyright (C) 2009 Markus Malkusch + * @licends GPL */ class AgencyQueryTest extends \PHPUnit_Framework_TestCase { /** - * @var PDODataBackend + * @return SQLDataBackend[][] */ - private $backend; - - /** - */ - protected function setUp() + public function provideBackends() { - $this->backend = new PDODataBackend(PDOFactory::makePDO()); + $conn = array( + "pdo" => PDOFactory::makePDO(), + ); + $doctrineContainer = DoctrineBackendContainer::buildByConnection($conn, true); + + return array( + array(new PDODataBackend(PDOFactory::makePDO())), + array($doctrineContainer->getDataBackend()) + ); } - public function testOnlyID() + /** + * @dataProvider provideBackends + */ + public function testOnlyID(SQLDataBackend $backend) { - $agencies = $this->backend->getAgencies( + $agencies = $backend->getAgencies( 'SELECT id FROM bav_agency LIMIT 100' ); $this->assertAgencies($agencies, 100); } - public function testIDAndBank() + /** + * @dataProvider provideBackends + */ + public function testIDAndBank(SQLDataBackend $backend) { - $agencies = $this->backend->getAgencies( + $agencies = $backend->getAgencies( 'SELECT id, bank FROM bav_agency LIMIT 100' ); $this->assertAgencies($agencies, 100); } - public function testNoBank() + /** + * @dataProvider provideBackends + */ + public function testNoBank(SQLDataBackend $backend) { - $agencies = $this->backend->getAgencies( + $agencies = $backend->getAgencies( 'SELECT id, name, postcode, city, shortTerm, pan, bic FROM bav_agency LIMIT 100' ); $this->assertAgencies($agencies, 100); } /** + * @dataProvider provideBackends * @expectedException malkusch\bav\MissingAttributesDataBackendIOException */ - public function testNoID() + public function testNoID(SQLDataBackend $backend) { - $result = $this->backend->getAgencies( + $result = $backend->getAgencies( 'SELECT name, postcode, city, shortTerm, pan, bic, bank FROM bav_agency LIMIT 1' ); } From 962ef1919bae5c0cb7795cbd513d6bca4ffa4deb Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Wed, 25 Jun 2014 07:23:58 +0200 Subject: [PATCH 216/303] fix for PHP 5.3 --- classes/dataBackend/orm/doctrine/DoctrineDataBackend.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php index 7e2da63e..3feb0a6d 100644 --- a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php +++ b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php @@ -187,8 +187,9 @@ public function getAgencies($sql) { $agencies = array(); $backend = $this; - $this->em->transactional(function () use (&$agencies, $sql, $backend) { - $stmt = $this->em->getConnection()->executeQuery($sql); + $em = $this->em; + $this->em->transactional(function () use (&$agencies, $sql, $backend, $em) { + $stmt = $em->getConnection()->executeQuery($sql); foreach ($stmt as $result) { if (! array_key_exists('id', $result)) { @@ -196,7 +197,7 @@ public function getAgencies($sql) } $id = $result["id"]; - $agency = $this->em->find("malkusch\bav\Agency", $id); + $agency = $em->find("malkusch\bav\Agency", $id); $agencies[] = $agency; $agency->getBank()->setDataBackend($backend); From 7e15ad2c02a5bf9f5d2429533bcd41dcf3984db9 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Wed, 25 Jun 2014 08:36:24 +0200 Subject: [PATCH 217/303] added callbacks for PHP's filter validation --- README-1.0.0.md | 8 + autoloader/index/0.php | 2 + classes/BAV.php | 58 ++++++- .../exception/InvalidContextException.php | 14 ++ classes/validator/ContextValidation.php | 129 ++++++++++++++++ docs/changelog.txt | 2 + docs/example.php | 18 +++ tests/unit/BAVFacadeTest.php | 57 +++++++ tests/unit/ContextValidationTest.php | 143 ++++++++++++++++++ 9 files changed, 428 insertions(+), 3 deletions(-) create mode 100644 classes/dataBackend/exception/InvalidContextException.php create mode 100644 classes/validator/ContextValidation.php create mode 100644 tests/unit/ContextValidationTest.php diff --git a/README-1.0.0.md b/README-1.0.0.md index 0f26e31d..04737618 100644 --- a/README-1.0.0.md +++ b/README-1.0.0.md @@ -102,6 +102,14 @@ You can use BAV with the api facade `BAV`. * `BAV::isValidBankAccount($bankID, $account)`: Returns true for existing accounts of an existing bank. +* `BAV::isValidAccount($account)`: This method validates an account against the bank +of the last `isValidBank()` call. + +* `BAV::getValidBankFilterCallback()`: Returns a callback for filter bank validation. + +* `BAV::getValidAccountFilterCallback()`: Returns a callback for filter account validation. +The account filter needs to be called after the bank filter. + * `BAV::getMainAgency()`: Returns the main agency of a bank. * `BAV::getAgencies()`: Returns further agencies. The main agency is not included in this list. diff --git a/autoloader/index/0.php b/autoloader/index/0.php index ea80902a..88b12010 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -205,6 +205,7 @@ 'malkusch\bav\fallbackuripicker' => '../classes/dataBackend/file/download/uripicker/FallbackURIPicker.php', 'malkusch\bav\fileparsercontext' => '../classes/dataBackend/file/fileParser/FileParserContext.php', 'malkusch\bav\encodingexception' => '../classes/encoding/exception/EncodingException.php', + 'malkusch\bav\contextvalidation' => '../classes/validator/ContextValidation.php', 'malkusch\bav\uripickerexception' => '../classes/dataBackend/file/download/uripicker/exception/URIPickerException.php', 'malkusch\bav\statementcontainer' => '../classes/dataBackend/pdo/StatementContainer.php', 'malkusch\bav\validatoriteration' => '../classes/validator/ValidatorIteration.php', @@ -224,6 +225,7 @@ 'malkusch\bav\filevalidatorexception' => '../classes/dataBackend/file/validator/exception/FileValidatorException.php', 'malkusch\bav\validatorbankdependent' => '../classes/validator/ValidatorBankDependent.php', 'malkusch\bav\validatoreserexception' => '../classes/validator/exception/ValidatorESERException.php', + 'malkusch\bav\invalidcontextexception' => '../classes/dataBackend/exception/InvalidContextException.php', 'malkusch\bav\pdodatabackendcontainer' => '../classes/dataBackend/pdo/PDODataBackendContainer.php', 'malkusch\bav\filedatabackendcontainer' => '../classes/dataBackend/file/FileDataBackendContainer.php', 'malkusch\bav\invalidfilesizeexception' => '../classes/dataBackend/file/validator/exception/InvalidFilesizeException.php', diff --git a/classes/BAV.php b/classes/BAV.php index 5687b83f..f2da521c 100644 --- a/classes/BAV.php +++ b/classes/BAV.php @@ -20,6 +20,11 @@ class BAV * @var DataBackend */ private $backend; + + /** + * @var ContextValidation + */ + private $contextValidation; /** * Inject the configuration. @@ -38,6 +43,8 @@ public function __construct(Configuration $configuration = null) $this->configuration = $configuration; $this->backend = $configuration->getDataBackendContainer()->getDataBackend(); + + $this->contextValidation = new ContextValidation($this->backend); } /** @@ -88,19 +95,36 @@ public function isValidBankAccount($bankID, $account) } } + /** + * Returns true if the account is valid for the current context. + * + * You have to have called isValidBank() before! If the current context + * is no valid bank every account will validate to true. + * + * @param string $account + * @see isValidBank() + * @see ContextValidation::isValidAccount() + * @throws InvalidContextException isValidBank() was not called before. + * @return bool + */ + public function isValidAccount($account) + { + return $this->contextValidation->isValidAccount($account); + } + /** * Returns true if a bank exists * * @throws DataBackendException * @param string $bankID * @return bool - * @see DataBackend::isValidBank() + * @see ContextValidation::isValidBank() */ public function isValidBank($bankID) { - return $this->backend->isValidBank($bankID); + return $this->contextValidation->isValidBank($bankID); } - + /** * Every bank has one main agency. * @@ -168,4 +192,32 @@ public function isValidBIC($bic) { return $this->backend->isValidBIC(BICUtil::normalize($bic)); } + + /** + * Returns the third call back parameter for filter_var() for validating + * a bank. + * + * filter_var($bankID, FILTER_CALLBACK, $bav->getValidBankFilterCallback()); + * + * @return array + * @see isValidBank(); + */ + public function getValidBankFilterCallback() + { + return $this->contextValidation->getValidBankFilterCallback(); + } + + /** + * Returns the third call back parameter for filter_var() for validating + * a bank account. + * + * filter_var($bankID, FILTER_CALLBACK, $bav->getValidBankFilterCallback()); + * + * @return array + * @see isValidAccount(); + */ + public function getValidAccountFilterCallback() + { + return $this->contextValidation->getValidAccountFilterCallback(); + } } diff --git a/classes/dataBackend/exception/InvalidContextException.php b/classes/dataBackend/exception/InvalidContextException.php new file mode 100644 index 00000000..8a19e099 --- /dev/null +++ b/classes/dataBackend/exception/InvalidContextException.php @@ -0,0 +1,14 @@ + + */ +class InvalidContextException extends BAVException +{ + +} diff --git a/classes/validator/ContextValidation.php b/classes/validator/ContextValidation.php new file mode 100644 index 00000000..e38e3a6c --- /dev/null +++ b/classes/validator/ContextValidation.php @@ -0,0 +1,129 @@ + + * @license GPL + */ +class ContextValidation +{ + + /** + * @var bool + */ + private $initialized = false; + + /** + * @var DataBackend + */ + private $backend; + + /** + * @var Bank + */ + private $bank; + + /** + * Injects the backend. + */ + public function __construct(DataBackend $backend) + { + $this->backend = $backend; + } + + /** + * Returns true if a bank exists. + * + * This method sets the bank context and should be called first. + * + * @throws DataBackendException + * @param string $bankID + * @return bool + * @see DataBackend::isValidBank() + */ + public function isValidBank($bankID) + { + try { + $this->initialized = true; + $this->bank = $this->backend->getBank($bankID); + return true; + + } catch (BankNotFoundException $e) { + $this->bank = null; + return false; + + } + } + + /** + * Returns true if the account is valid for the current context. + * + * You have to have called isValidBank() before! If the current context + * is no valid bank every account will validate to true. + * + * @param string $account + * @see isValidBank() + * @see Bank::isValid() + * @throws InvalidContextException isValidBank() was not called before. + * @return bool + */ + public function isValidAccount($account) + { + if (! $this->initialized) { + throw new InvalidContextException("You have to call isValidBank() before."); + + } + + // No valid bank makes every account valid + if ($this->bank == null) { + return true; + + } + + return $this->bank->isValid($account); + } + + /** + * Returns the third call back parameter for filter_var() for validating + * a bank. + * + * filter_var($bankID, FILTER_CALLBACK, $validation->getValidBankFilterCallback()); + * + * @return array + * @see isValidBank(); + * @see filter_var() + */ + public function getValidBankFilterCallback() + { + $validation = $this; + return array("options" => function ($bankID) use ($validation) { + return $validation->isValidBank($bankID); + }); + } + + /** + * Returns the third call back parameter for filter_var() for validating + * a bank account. + * + * filter_var($bankID, FILTER_CALLBACK, $validation->getValidBankFilterCallback()); + * + * @return array + * @see isValidAccount(); + * @see filter_var() + */ + public function getValidAccountFilterCallback() + { + $validation = $this; + return array("options" => function ($account) use ($validation) { + return $validation->isValidAccount($account); + }); + } +} diff --git a/docs/changelog.txt b/docs/changelog.txt index fb8b49b0..c616e150 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -34,6 +34,8 @@ Version 1.0.0 - not yet released - added the Doctrine data backend DoctrineBackendContainer. + - support PHP's filter validation. + Version 0.29 - June 1, 2014 --------------------------- diff --git a/docs/example.php b/docs/example.php index 06321c65..33f97e51 100755 --- a/docs/example.php +++ b/docs/example.php @@ -33,6 +33,24 @@ echo "Account 12345 is ", $bav->isValidBankAccount("10000000", "12345") ? "valid" : "invalid", "\n"; + // Use PHP's validation filter + if (filter_var("10000000", FILTER_CALLBACK, $bav->getValidBankFilterCallback())) { + echo "Bank 10000000 is valid.\n"; + + } else { + echo "Bank 10000000 is invalid.\n"; + + } + + // Account filter validation needs a previous call to the bank filter. + if (filter_var("12345", FILTER_CALLBACK, $bav->getValidAccountFilterCallback())) { + echo "Account 12345 is valid.\n"; + + } else { + echo "Account 12345 is invalid.\n"; + + } + // Print name of the bank $agency = $bav->getMainAgency("10000000"); echo "{$agency->getName()} {$agency->getCity()}\n"; diff --git a/tests/unit/BAVFacadeTest.php b/tests/unit/BAVFacadeTest.php index 42d738e8..ddf76a49 100644 --- a/tests/unit/BAVFacadeTest.php +++ b/tests/unit/BAVFacadeTest.php @@ -215,4 +215,61 @@ public function testGetBICAgencies($bic, $expected) sort($agenciesIds); $this->assertEquals($expected, $agenciesIds); } + + /** + * Tests filter validation + * + * @see BAV::getValidAccountFilterCallback() + * @see BAV::getValidBankFilterCallback() + */ + public function testFilterValidation() + { + $bav = new BAV(); + + $this->assertFalse( + filter_var( + "0", + FILTER_CALLBACK, + $bav->getValidBankFilterCallback() + ) + ); + + $this->assertTrue( + filter_var( + "10000000", + FILTER_CALLBACK, + $bav->getValidBankFilterCallback() + ) + ); + + $this->assertTrue( + filter_var( + "12345", + FILTER_CALLBACK, + $bav->getValidAccountFilterCallback() + ) + ); + + $this->assertFalse( + filter_var( + "0", + FILTER_CALLBACK, + $bav->getValidAccountFilterCallback() + ) + ); + } + + /** + * Tests BAV::isValidAccount(); + * + * @dataProvider provideTestIsValidBankAccount + * @see BAV::isValidAccount(); + */ + public function testValidAccount($bankID, $account, $expected) + { + $bav = new BAV(); + $bav->isValidBank($bankID); + + $this->assertEquals($expected, $bav->isValidAccount($account)); + } } diff --git a/tests/unit/ContextValidationTest.php b/tests/unit/ContextValidationTest.php new file mode 100644 index 00000000..3198625e --- /dev/null +++ b/tests/unit/ContextValidationTest.php @@ -0,0 +1,143 @@ + + */ +class ContextValidationTest extends \PHPUnit_Framework_TestCase +{ + + /** + * @var ContextValidation + */ + private $validation; + + protected function setUp() + { + $bav = new BAV(); + $this->validation = new ContextValidation($bav->getDataBackend()); + } + + /** + * Tests switching the bank context + * + * @see ContextValidation::isValidBank() + */ + public function testContextSwitch() + { + $this->validation->isValidBank("0"); + $this->assertTrue($this->validation->isValidAccount("0")); + + $this->validation->isValidBank("10000000"); + $this->assertFalse($this->validation->isValidAccount("0")); + + $this->validation->isValidBank("0"); + $this->assertTrue($this->validation->isValidAccount("0")); + } + + /** + * Tests isValidBank() + * + * @see ContextValidation::isValidBank() + */ + public function testValidBank() + { + $this->assertTrue($this->validation->isValidBank("10000000")); + $this->assertFalse($this->validation->isValidBank("0")); + } + + /** + * Tests isValidAccount() + * + * @see ContextValidation::isValidAccount() + */ + public function testValidAccount() + { + // set context + $this->validation->isValidBank("10000000"); + + $this->assertTrue($this->validation->isValidAccount("12345")); + $this->assertFalse($this->validation->isValidAccount("0")); + } + + /** + * Tests filter validation + * + * @see ContextValidation::getValidAccountFilterCallback() + * @see ContextValidation::getValidBankFilterCallback() + */ + public function testFilterValidation() + { + // Valid bank context + $this->assertTrue( + filter_var( + "10000000", + FILTER_CALLBACK, + $this->validation->getValidBankFilterCallback() + ) + ); + $this->assertTrue( + filter_var( + "12345", + FILTER_CALLBACK, + $this->validation->getValidAccountFilterCallback() + ) + ); + $this->assertFalse( + filter_var( + "0", + FILTER_CALLBACK, + $this->validation->getValidAccountFilterCallback() + ) + ); + + // Invalid bank context, account always valid + $this->assertFalse( + filter_var( + "12345", + FILTER_CALLBACK, + $this->validation->getValidBankFilterCallback() + ) + ); + $this->assertTrue( + filter_var( + "0", + FILTER_CALLBACK, + $this->validation->getValidAccountFilterCallback() + ) + ); + } + + /** + * Test an invalid context + * + * @see ContextValidation::getValidAccountFilterCallback() + * @expectedException malkusch\bav\InvalidContextException + */ + public function testFilterInvalidContext() + { + filter_var( + "0", + FILTER_CALLBACK, + $this->validation->getValidAccountFilterCallback() + ); + } + + /** + * Test an invalid context + * + * @see ContextValidation::isValidAccount() + * @expectedException malkusch\bav\InvalidContextException + */ + public function testInvalidContext() + { + $this->validation->isValidAccount("12345"); + } +} From 620dd1d6c311ef18b7c7f70b024bbd914be17576 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Wed, 25 Jun 2014 08:46:03 +0200 Subject: [PATCH 218/303] edited api documentation --- README-1.0.0.md | 3 +++ classes/BAV.php | 12 ++++++++---- classes/validator/ContextValidation.php | 6 +++--- docs/changelog.txt | 2 -- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/README-1.0.0.md b/README-1.0.0.md index 04737618..5ed74572 100644 --- a/README-1.0.0.md +++ b/README-1.0.0.md @@ -1,3 +1,6 @@ +# About BAV +BAV (bank account validator) is a validation library for German bank accounts. + # Installation Visit and download the latest version or use [Composer](https://getcomposer.org/): diff --git a/classes/BAV.php b/classes/BAV.php index f2da521c..a4c171da 100644 --- a/classes/BAV.php +++ b/classes/BAV.php @@ -3,7 +3,9 @@ namespace malkusch\bav; /** - * Facade for bav's API. + * Facade for BAV's API. + * + * This class provides methods for validation of German bank accounts. * * @author Markus Malkusch * @license GPL @@ -200,7 +202,8 @@ public function isValidBIC($bic) * filter_var($bankID, FILTER_CALLBACK, $bav->getValidBankFilterCallback()); * * @return array - * @see isValidBank(); + * @see isValidBank() + * @see filter_var() */ public function getValidBankFilterCallback() { @@ -211,10 +214,11 @@ public function getValidBankFilterCallback() * Returns the third call back parameter for filter_var() for validating * a bank account. * - * filter_var($bankID, FILTER_CALLBACK, $bav->getValidBankFilterCallback()); + * filter_var($account, FILTER_CALLBACK, $bav->getValidBankFilterCallback()); * * @return array - * @see isValidAccount(); + * @see isValidAccount() + * @see filter_var() */ public function getValidAccountFilterCallback() { diff --git a/classes/validator/ContextValidation.php b/classes/validator/ContextValidation.php index e38e3a6c..6ab89abf 100644 --- a/classes/validator/ContextValidation.php +++ b/classes/validator/ContextValidation.php @@ -98,7 +98,7 @@ public function isValidAccount($account) * filter_var($bankID, FILTER_CALLBACK, $validation->getValidBankFilterCallback()); * * @return array - * @see isValidBank(); + * @see isValidBank() * @see filter_var() */ public function getValidBankFilterCallback() @@ -113,10 +113,10 @@ public function getValidBankFilterCallback() * Returns the third call back parameter for filter_var() for validating * a bank account. * - * filter_var($bankID, FILTER_CALLBACK, $validation->getValidBankFilterCallback()); + * filter_var($account, FILTER_CALLBACK, $validation->getValidBankFilterCallback()); * * @return array - * @see isValidAccount(); + * @see isValidAccount() * @see filter_var() */ public function getValidAccountFilterCallback() diff --git a/docs/changelog.txt b/docs/changelog.txt index c616e150..8378a99f 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -24,8 +24,6 @@ Version 1.0.0 - not yet released - added BIC support: BAV::isValidBIC($bic), BAV::getBICAgencies($bic) - -[TODO] Add international support for BIC validation. - -[TODO] add IBAN rule support -[TODO] evaluate IBAN validation support From d106970d00ddf611346f64f6a89cd5ccafcaf080 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Wed, 25 Jun 2014 09:18:38 +0200 Subject: [PATCH 219/303] release 1.0.0 --- README-1.0.0.md | 186 ---------------------------------------- README.md | 208 +++++++++++++++++++++++++++------------------ composer.json | 4 +- docs/changelog.txt | 14 +-- 4 files changed, 134 insertions(+), 278 deletions(-) delete mode 100644 README-1.0.0.md diff --git a/README-1.0.0.md b/README-1.0.0.md deleted file mode 100644 index 5ed74572..00000000 --- a/README-1.0.0.md +++ /dev/null @@ -1,186 +0,0 @@ -# About BAV -BAV (bank account validator) is a validation library for German bank accounts. - -# Installation - -Visit and download the latest version or use [Composer](https://getcomposer.org/): - -```json -{ - "require": { - "malkusch/bav": "~1.0" - } -} -``` - - -# Autoloader - -BAV uses the autoloader generated by [PHP-Autoloader](http://php-autoloader.malkusch.de/en/). -If you don't use composer's autoloader (`vendor/autoload.php`) you have -to include `bav/autoloader/autoloader.php`. - -```php -// Composer's autoloader: -require_once __DIR__ . "/vendor/autoload.php"; - -use malkusch\bav\BAV; - -$bav = new BAV(); -``` - - -# Configuration - -You can use BAV out of the box. BAV comes with a ready to play default -configuration (`DefaultConfiguration`): - -* `UTF-8` encoding (if supported) - -* `FileDataBackendContainer`. I.e. it uses binary search on the file from the Bundesbank. - -* automatic installation. You don't have to call any installation -script. The container will download the Bundesbank file upon the first execution. - -* update plan which triggers an E_USER_NOTICE if the Bundesbank file -is outdated. - -You can define your own configuration by calling `ConfigurationRegistry::setConfiguration()` -or preferably creating the file `bav/configuration.php` which returns a `Configuration` object: - -```php -namespace malkusch\bav; - -$configuration = new DefaultConfiguration(); - -$pdo = new \PDO("mysql:host=localhost;dbname=test"); -$configuration->setDataBackendContainer(new PDODataBackendContainer($pdo)); - -$configuration->setUpdatePlan(new AutomaticUpdatePlan()); - -return $configuration; -``` - - -# Update - -The Bundesbank releases new files for March, June, September and December. -BAV needs those new files. You have several possiblities to update bav: - -## Script - -Call `bin/bav-update.php`. - -## Programmatically - -```php -use malkusch\bav\BAV; - -$bav = new BAV(); -$bav->update(); -``` - -## Automatic - -Enable automatic updates with `AutomaticUpdatePlan` in your `bav/configuration.php`: - -```php -namespace malkusch\bav; - -$configuration = new DefaultConfiguration(); -$configuration->setUpdatePlan(new AutomaticUpdatePlan()); - -return $configuration; -``` -This automatic update plan will perform long running update operations as a shutdown -hook. I.e. it won't bother users during normal operations. - - -# Usage - -You can use BAV with the api facade `BAV`. - -* `BAV::isValidBank($bankID)`: Returns true for existing bank ids. - -* `BAV::isValidBankAccount($bankID, $account)`: Returns true for existing accounts of an existing -bank. - -* `BAV::isValidAccount($account)`: This method validates an account against the bank -of the last `isValidBank()` call. - -* `BAV::getValidBankFilterCallback()`: Returns a callback for filter bank validation. - -* `BAV::getValidAccountFilterCallback()`: Returns a callback for filter account validation. -The account filter needs to be called after the bank filter. - -* `BAV::getMainAgency()`: Returns the main agency of a bank. - -* `BAV::getAgencies()`: Returns further agencies. The main agency is not included in this list. -This list can be empty. - -An Agency object has the fields: - -* `Agency::getBIC()` - -* `Agency::getPostcode()` - -* `Agency::getCity()` - -* `Agency::getName()` - -* `Agency::getShortTerm()` - -* `Agency::getPAN()` - -## Example - -```php -use malkusch\bav\BAV; - -$bav = new BAV(); -$bankID = "10000000"; -$account = "1234567890" - -// check for a bank -var_dump( - $bav->isValidBank($bankID) -); - -// check for a bank account -var_dump( - $bav->isValidBankAccount($bankID, $account) -); - -// Get informations about a bank -$agency = $bav->getMainAgency($bankID); -echo "{$agency->getName()} {$agency->getCity()}\n"; -``` -See also `bav/docs/example.php`. - - -# Optional Dependencies - -You may have: - -* **CURL**: If you provide `bav/data/banklist.txt` you don't need CURL. - -* **mbstring or iconv**: BAV works with unicode encoding. Your PHP must have support compiled -in to either the `mb_*` or the `iconv_*` functions. If these functions are -missing BAV works only with the ISO-8859-15 encoding. - -* **PDO**: If you intend to use a DBS you need to use `PDODataBackendContainer`. -`PDODataBackendContainer` needs a `PDO` support compiled in PHP. - -* **doctrine/orm**: You can use `DoctrineBackendContainer` which uses doctrine -as data backend. - - -# License and authors - -This project is free and under GPL (see gpl.txt). So do what ever you want. -But it would be nice to leave a note about the authors. - -The author of the original project which gave the idea to this project is -Björn Wilmsmann. Responsable for this project is Markus Malkusch . - -[![Build Status](https://travis-ci.org/malkusch/bav.svg?branch=master)](https://travis-ci.org/malkusch/bav) \ No newline at end of file diff --git a/README.md b/README.md index b6d6f5ad..5ed74572 100644 --- a/README.md +++ b/README.md @@ -1,144 +1,180 @@ +# About BAV +BAV (bank account validator) is a validation library for German bank accounts. + +# Installation + +Visit and download the latest version or use [Composer](https://getcomposer.org/): + +```json +{ + "require": { + "malkusch/bav": "~1.0" + } +} +``` + + +# Autoloader + +BAV uses the autoloader generated by [PHP-Autoloader](http://php-autoloader.malkusch.de/en/). +If you don't use composer's autoloader (`vendor/autoload.php`) you have +to include `bav/autoloader/autoloader.php`. + +```php +// Composer's autoloader: +require_once __DIR__ . "/vendor/autoload.php"; + +use malkusch\bav\BAV; + +$bav = new BAV(); +``` + + # Configuration -Before you can use any class of BAV you have to include -`autoloader/autoloader.php`. BAV uses the autoloader generated by -[PHP-Autoloader](http://php-autoloader.malkusch.de/en/). +You can use BAV out of the box. BAV comes with a ready to play default +configuration (`DefaultConfiguration`): -BAV comes with a ready to play default configuration. This default configuration -sets the encoding to `UTF-8` (if support is available) and the backend to -`BAV_DataBackend_File`. +* `UTF-8` encoding (if supported) + +* `FileDataBackendContainer`. I.e. it uses binary search on the file from the Bundesbank. + +* automatic installation. You don't have to call any installation +script. The container will download the Bundesbank file upon the first execution. + +* update plan which triggers an E_USER_NOTICE if the Bundesbank file +is outdated. You can define your own configuration by calling `ConfigurationRegistry::setConfiguration()` or preferably creating the file `bav/configuration.php` which returns a `Configuration` object: ```php -use malkusch\bav\DefaultConfiguration; +namespace malkusch\bav; $configuration = new DefaultConfiguration(); -$configuration->setDataBackend(new BAV_DataBackend_PDO($pdo)); +$pdo = new \PDO("mysql:host=localhost;dbname=test"); +$configuration->setDataBackendContainer(new PDODataBackendContainer($pdo)); + +$configuration->setUpdatePlan(new AutomaticUpdatePlan()); return $configuration; ``` -# Installation and Update +# Update -Visit and download the latest version or use [Composer](https://getcomposer.org/): +The Bundesbank releases new files for March, June, September and December. +BAV needs those new files. You have several possiblities to update bav: -```json -{ - "require": { - "malkusch/bav": "0.29" - } -} -``` +## Script -You have to decide which datastructure you'll use. BAV comes with two -structures: -`BAV_DataBackend_File` and `BAV_DataBackend_PDO`. `BAV_DataBackend_File` (default) -uses the text file which is provided by the Bundesbank. `BAV_DataBackend_PDO` uses -PHP's PDO-API to connect with a DBS. +Call `bin/bav-update.php`. -If you use BAV the first time you have to create a `BAV_DataBackend` object -(PDO or File) and call the method `install()`. In case of PDO it will create -the tables. `install()` does also call `update()` to synchronize the first time -with the Bundesbank. -You can do this with the script: `bin/bav-install.php` +## Programmatically -To keep your database synchronized you have to call `update()`. It will -download the file from the Bundesbank and update your datastructure. The -Bundesbank releases 4 times a year a new file: March, June, September, -December. -You can do this with the script: `bin/bav-update.php` +```php +use malkusch\bav\BAV; -# Usage +$bav = new BAV(); +$bav->update(); +``` + +## Automatic -Get a `BAV_DataBackend` object (which has an installed data structure) from -the configuration: +Enable automatic updates with `AutomaticUpdatePlan` in your `bav/configuration.php`: ```php - ConfigurationRegistry::getConfiguration()->getDatabackend(); +namespace malkusch\bav; + +$configuration = new DefaultConfiguration(); +$configuration->setUpdatePlan(new AutomaticUpdatePlan()); + +return $configuration; ``` +This automatic update plan will perform long running update operations as a shutdown +hook. I.e. it won't bother users during normal operations. -Use the `BAV_DataBackend->getBank($bankID)` to get a `BAV_Bank` object. This -might raise a `BAV_DataBackendException_BankNotFound` if the bank was not -found. If you only want to check if a bank exists you may use -`BAV_DataBackend->bankExists($bankID)`. -You can use the `BAV_Bank` object to get information about the bank. Every -bank has a main agency. You get this `BAV_Agency` object with -`BAV_Bank->getMainAgency()`. A bank might also have some more agencies. These -optional agencies can be fetched with `BAV_Bank->getAgencies()`. Note that the -main agency is not included in this array. So the array -`BAV_Bank->getAgencies()` might even be empty. +# Usage + +You can use BAV with the api facade `BAV`. + +* `BAV::isValidBank($bankID)`: Returns true for existing bank ids. + +* `BAV::isValidBankAccount($bankID, $account)`: Returns true for existing accounts of an existing +bank. -A `BAV_Agency` object provides these informations: +* `BAV::isValidAccount($account)`: This method validates an account against the bank +of the last `isValidBank()` call. -* `BAV_Agency->getPostcode()` +* `BAV::getValidBankFilterCallback()`: Returns a callback for filter bank validation. -* `BAV_Agency->getCity()` +* `BAV::getValidAccountFilterCallback()`: Returns a callback for filter account validation. +The account filter needs to be called after the bank filter. -* `BAV_Agency->getName()` +* `BAV::getMainAgency()`: Returns the main agency of a bank. -* `BAV_Agency->getShortTerm()` +* `BAV::getAgencies()`: Returns further agencies. The main agency is not included in this list. +This list can be empty. -* `BAV_Agency->hasPAN()` +An Agency object has the fields: -* `BAV_Agency->getPAN()` +* `Agency::getBIC()` -* `BAV_Agency->hasBIC()` +* `Agency::getPostcode()` -* `BAV_Agency->getBIC()` +* `Agency::getCity()` -The boolean method `BAV_Bank->isValid($accountID)` will tell you if the -account is valid (`true`) or invalid (`false`). +* `Agency::getName()` -If you use `BAV_DataBackend_PDO` you may use -`BAV_DataBackend_PDO->getAgencies($sql)` to search for `BAV_Agency` objects with -an arbitrary SQL statement. Your statement should at least return the id of -the agencies. You perform better if your statement returns all attributes of -the agency table. +* `Agency::getShortTerm()` -BAV uses UTF-8 as default enconding. So every string -(especialy `BAV_Agency->get*()`) in BAV is UTF-8 encoded. If you intend to -work with those strings you should use PHP's `mb_*` oder `iconv_*` methods. +* `Agency::getPAN()` + +## Example + +```php +use malkusch\bav\BAV; +$bav = new BAV(); +$bankID = "10000000"; +$account = "1234567890" -# Example +// check for a bank +var_dump( + $bav->isValidBank($bankID) +); + +// check for a bank account +var_dump( + $bav->isValidBankAccount($bankID, $account) +); + +// Get informations about a bank +$agency = $bav->getMainAgency($bankID); +echo "{$agency->getName()} {$agency->getCity()}\n"; +``` +See also `bav/docs/example.php`. -You find it in `docs/example.php`. # Optional Dependencies You may have: -* **CURL**: `BAV_DataBackend_File->update()` makes usage of the `curl_*` methods. -`BAV_DataBackend_File->update()` is called to download the bank data from -the Bundesbank. This is also needed by `BAV_DataBackend_PDO->update()`. If -you provide data/banklist.txt without using -`BAV_DataBackend_File->update()` you don't need CURL. +* **CURL**: If you provide `bav/data/banklist.txt` you don't need CURL. * **mbstring or iconv**: BAV works with unicode encoding. Your PHP must have support compiled in to either the `mb_*` or the `iconv_*` functions. If these functions are missing BAV works only with the ISO-8859-15 encoding. -* **PDO**: If you intend to use a DBS you need to use `BAV_DataBackend_PDO`. -`BAV_DataBackend_PDO` needs a `PDO` support compiled in PHP. +* **PDO**: If you intend to use a DBS you need to use `PDODataBackendContainer`. +`PDODataBackendContainer` needs a `PDO` support compiled in PHP. +* **doctrine/orm**: You can use `DoctrineBackendContainer` which uses doctrine +as data backend. -# Helping BAV - -There exists also the script `bin/verifyImport.php`. You can use this to -import your bank accounts to a data/verify.ini and check them with -`test/ValidatorTest.php`. See the comments in `verifyImport.php` for more -details on usage. If there are errors you can send your verify.ini to -. Even if there aren't errors you can send this file, so -we have a larger database of testing accounts for future implementations. -The verify.ini contains only bank accounts with the validation type. There -is no information about the bank id, so the verify.ini can't be abused. - # License and authors This project is free and under GPL (see gpl.txt). So do what ever you want. @@ -146,3 +182,5 @@ But it would be nice to leave a note about the authors. The author of the original project which gave the idea to this project is Björn Wilmsmann. Responsable for this project is Markus Malkusch . + +[![Build Status](https://travis-ci.org/malkusch/bav.svg?branch=master)](https://travis-ci.org/malkusch/bav) \ No newline at end of file diff --git a/composer.json b/composer.json index a3377d5b..13e18116 100644 --- a/composer.json +++ b/composer.json @@ -35,7 +35,7 @@ "exclude": ["/tests/"] }, "bin": [ - "bin/bav-update.php", - "bin/bav-install.php" + "bin/bav-update.php", + "bin/bav-install.php" ] } diff --git a/docs/changelog.txt b/docs/changelog.txt index 8378a99f..51088a8b 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -1,5 +1,13 @@ -Version 1.0.0 - not yet released +Version 1.1.0 - not yet released -------------------------------- + + -[TODO] add IBAN rule support + + -[TODO] evaluate IBAN validation support + + +Version 1.0.0 - June 25, 2014 +----------------------------- - added BAV_DataBackend::getLastUpdate() - added BAV_DataBackend::isInstalled() @@ -24,10 +32,6 @@ Version 1.0.0 - not yet released - added BIC support: BAV::isValidBIC($bic), BAV::getBICAgencies($bic) - -[TODO] add IBAN rule support - - -[TODO] evaluate IBAN validation support - - changed format of verifiy.ini into JSON - added the Doctrine data backend DoctrineBackendContainer. From 9a7e9db683155e10bb7fae046c1a3d89bd0cb9d1 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Wed, 25 Jun 2014 09:23:55 +0200 Subject: [PATCH 220/303] added filter example --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 5ed74572..b192219c 100644 --- a/README.md +++ b/README.md @@ -151,6 +151,12 @@ var_dump( $bav->isValidBankAccount($bankID, $account) ); +// filter validation +var_dump( + filter_var($bankID, FILTER_CALLBACK, $bav->getValidBankFilterCallback()), + filter_var($account, FILTER_CALLBACK, $bav->getValidAccountFilterCallback()) +); + // Get informations about a bank $agency = $bav->getMainAgency($bankID); echo "{$agency->getName()} {$agency->getCity()}\n"; From 356f78f897b1a63e98a4e5f8c24861550c306594 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Wed, 25 Jun 2014 09:29:34 +0200 Subject: [PATCH 221/303] added php 5.2 into CI --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index e092dd16..f08a28cd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,7 @@ php: - 5.5 - 5.4 - 5.3 + - 5.2 env: PDO_DSN="mysql:host=localhost;dbname=bav" PDO_USER=travis From 2252d989b772778fb3761e0af5d1a0f3fc2460dc Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Wed, 25 Jun 2014 09:46:11 +0200 Subject: [PATCH 222/303] added donations link --- .travis.yml | 1 - README.md | 5 +++++ classes/BAV.php | 1 + classes/bank/Agency.php | 1 + classes/bank/Bank.php | 1 + classes/bank/exception/AgencyException.php | 1 + classes/bank/exception/UndefinedAttributeAgencyException.php | 1 + classes/configuration/Configuration.php | 1 + classes/configuration/ConfigurationException.php | 1 + classes/configuration/ConfigurationRegistry.php | 1 + classes/configuration/DefaultConfiguration.php | 1 + classes/dataBackend/DataBackend.php | 1 + classes/dataBackend/DataBackendContainer.php | 1 + classes/dataBackend/SQLDataBackend.php | 1 + classes/dataBackend/exception/BankNotFoundException.php | 1 + classes/dataBackend/exception/DataBackendException.php | 1 + classes/dataBackend/exception/DataBackendIOException.php | 1 + classes/dataBackend/exception/InvalidContextException.php | 1 + .../exception/MissingAttributesDataBackendIOException.php | 1 + classes/dataBackend/exception/NoMainAgencyException.php | 1 + classes/dataBackend/file/FileDataBackend.php | 1 + classes/dataBackend/file/FileDataBackendContainer.php | 1 + classes/dataBackend/file/download/Downloader.php | 1 + .../file/download/exception/DownloaderException.php | 1 + classes/dataBackend/file/download/uripicker/DOMURIPicker.php | 1 + .../file/download/uripicker/FallbackURIPicker.php | 1 + .../dataBackend/file/download/uripicker/RegExpURIPicker.php | 1 + classes/dataBackend/file/download/uripicker/URIPicker.php | 1 + .../file/download/uripicker/exception/URIPickerException.php | 1 + classes/dataBackend/file/fileParser/FileParser.php | 1 + classes/dataBackend/file/fileParser/FileParserContext.php | 1 + .../file/fileParser/exception/FileParserContextException.php | 1 + .../file/fileParser/exception/FileParserException.php | 1 + .../file/fileParser/exception/FileParserIOException | 1 + .../fileParser/exception/FileParserNotExistsException.php | 1 + classes/dataBackend/file/fileParser/exception/ParseException | 1 + .../exception/UndefinedFileParserContextException.php | 1 + classes/dataBackend/file/validator/FileValidator.php | 1 + .../dataBackend/file/validator/exception/FieldException.php | 1 + .../file/validator/exception/FileValidatorException.php | 1 + .../file/validator/exception/InvalidFilesizeException.php | 1 + .../file/validator/exception/InvalidLineLengthException.php | 1 + classes/dataBackend/orm/MetaData.php | 1 + .../dataBackend/orm/doctrine/DoctrineBackendContainer.php | 1 + classes/dataBackend/orm/doctrine/DoctrineDataBackend.php | 1 + classes/dataBackend/pdo/PDODataBackend.php | 1 + classes/dataBackend/pdo/PDODataBackendContainer.php | 1 + classes/dataBackend/pdo/StatementContainer.php | 1 + classes/dataBackend/update/AutomaticUpdatePlan.php | 1 + classes/dataBackend/update/LogUpdatePlan.php | 1 + classes/dataBackend/update/UpdatePlan.php | 1 + classes/encoding/Encoding.php | 1 + classes/encoding/ISO8859Encoding.php | 1 + classes/encoding/IconvEncoding.php | 1 + classes/encoding/MBEncoding.php | 1 + classes/encoding/exception/EncodingException.php | 1 + classes/encoding/exception/UnsupportedEncodingException.php | 1 + classes/exception/BAVException.php | 1 + classes/util/BICUtil.php | 1 + classes/util/FileUtil.php | 1 + classes/util/Lock.php | 1 + classes/util/exception/FileException.php | 1 + classes/util/exception/LockException.php | 1 + classes/util/exception/NoTempDirectoryException.php | 1 + classes/validator/ContextValidation.php | 1 + classes/validator/TransformationIterationValidator.php | 1 + classes/validator/Validator.php | 1 + classes/validator/ValidatorBankDependent.php | 1 + classes/validator/ValidatorChain.php | 1 + classes/validator/ValidatorIteration.php | 1 + classes/validator/WeightedIterationValidator.php | 1 + classes/validator/exception/ValidatorESERException.php | 1 + classes/validator/exception/ValidatorException.php | 1 + classes/validator/exception/ValidatorNotExistsException.php | 1 + .../validator/exception/ValidatorOutOfBoundsException.php | 1 + classes/validator/validators/Validator49.php | 1 + classes/validator/validators/Validator51.php | 1 + classes/validator/validators/Validator68.php | 1 + classes/validator/validators/Validator69.php | 1 + classes/validator/validators/Validator79.php | 1 + classes/validator/validators/Validator82.php | 1 + classes/validator/validators/Validator87a.php | 1 + classes/validator/validators/Validator97.php | 1 + classes/validator/validators/ValidatorA6.php | 1 + classes/validator/validators/ValidatorA8.php | 1 + classes/validator/validators/ValidatorB0.php | 1 + classes/validator/validators/ValidatorB2.php | 1 + classes/validator/validators/ValidatorB3.php | 1 + classes/validator/validators/ValidatorB4.php | 1 + classes/validator/validators/ValidatorB6.php | 1 + classes/validator/validators/ValidatorB9.php | 1 + classes/validator/validators/ValidatorC1.php | 1 + classes/validator/validators/ValidatorC3.php | 1 + classes/validator/validators/ValidatorC4.php | 1 + classes/validator/validators/ValidatorC5.php | 1 + classes/validator/validators/ValidatorC6.php | 1 + classes/validator/validators/ValidatorD0.php | 1 + classes/validator/validators/ValidatorD1.php | 1 + classes/validator/validators/ValidatorD2.php | 1 + classes/validator/validators/ValidatorD3.php | 1 + classes/validator/validators/ValidatorD4.php | 1 + classes/validator/validators/ValidatorD5.php | 1 + classes/validator/validators/ValidatorD6.php | 1 + classes/validator/validators/ValidatorD7.php | 1 + classes/validator/validators/ValidatorD8.php | 1 + classes/validator/validators/ValidatorD9.php | 1 + 106 files changed, 109 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index f08a28cd..e092dd16 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,6 @@ php: - 5.5 - 5.4 - 5.3 - - 5.2 env: PDO_DSN="mysql:host=localhost;dbname=bav" PDO_USER=travis diff --git a/README.md b/README.md index b192219c..edc9cdd6 100644 --- a/README.md +++ b/README.md @@ -189,4 +189,9 @@ But it would be nice to leave a note about the authors. The author of the original project which gave the idea to this project is Björn Wilmsmann. Responsable for this project is Markus Malkusch . +## Donations + +If you like BAV and feel generous donate here: +[1335STSwu9hST4vcMRppEPgENMHD2r1REK](bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK) + [![Build Status](https://travis-ci.org/malkusch/bav.svg?branch=master)](https://travis-ci.org/malkusch/bav) \ No newline at end of file diff --git a/classes/BAV.php b/classes/BAV.php index a4c171da..af1b7e49 100644 --- a/classes/BAV.php +++ b/classes/BAV.php @@ -8,6 +8,7 @@ * This class provides methods for validation of German bank accounts. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class BAV diff --git a/classes/bank/Agency.php b/classes/bank/Agency.php index 8055aab3..af15a6cd 100644 --- a/classes/bank/Agency.php +++ b/classes/bank/Agency.php @@ -28,6 +28,7 @@ * @package classes * @subpackage bank * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class Agency diff --git a/classes/bank/Bank.php b/classes/bank/Bank.php index a48ece50..9a911197 100644 --- a/classes/bank/Bank.php +++ b/classes/bank/Bank.php @@ -32,6 +32,7 @@ * @package classes * @subpackage bank * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class Bank diff --git a/classes/bank/exception/AgencyException.php b/classes/bank/exception/AgencyException.php index 203f0676..3f35704f 100644 --- a/classes/bank/exception/AgencyException.php +++ b/classes/bank/exception/AgencyException.php @@ -23,6 +23,7 @@ * @package classes * @subpackage dataBackend * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class AgencyException extends BAVException diff --git a/classes/bank/exception/UndefinedAttributeAgencyException.php b/classes/bank/exception/UndefinedAttributeAgencyException.php index 2a95e5a7..9ff49529 100644 --- a/classes/bank/exception/UndefinedAttributeAgencyException.php +++ b/classes/bank/exception/UndefinedAttributeAgencyException.php @@ -23,6 +23,7 @@ * @package classes * @subpackage dataBackend * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class UndefinedAttributeAgencyException extends AgencyException diff --git a/classes/configuration/Configuration.php b/classes/configuration/Configuration.php index 33a8cc57..a5f12bc5 100644 --- a/classes/configuration/Configuration.php +++ b/classes/configuration/Configuration.php @@ -6,6 +6,7 @@ * Configuration * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class Configuration diff --git a/classes/configuration/ConfigurationException.php b/classes/configuration/ConfigurationException.php index d9c5884c..8b633ef4 100644 --- a/classes/configuration/ConfigurationException.php +++ b/classes/configuration/ConfigurationException.php @@ -6,6 +6,7 @@ * Configuration exception * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class ConfigurationException extends BAVException diff --git a/classes/configuration/ConfigurationRegistry.php b/classes/configuration/ConfigurationRegistry.php index 2cb631fd..8dcf1f6f 100644 --- a/classes/configuration/ConfigurationRegistry.php +++ b/classes/configuration/ConfigurationRegistry.php @@ -6,6 +6,7 @@ * Registry for the configuration * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL * @see Configuration */ diff --git a/classes/configuration/DefaultConfiguration.php b/classes/configuration/DefaultConfiguration.php index c10cface..4b2c550c 100644 --- a/classes/configuration/DefaultConfiguration.php +++ b/classes/configuration/DefaultConfiguration.php @@ -12,6 +12,7 @@ * If no UTF-8 encoding is supported ISO-8859-15 will be used. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class DefaultConfiguration extends Configuration diff --git a/classes/dataBackend/DataBackend.php b/classes/dataBackend/DataBackend.php index 9fbc2ced..68795d77 100644 --- a/classes/dataBackend/DataBackend.php +++ b/classes/dataBackend/DataBackend.php @@ -16,6 +16,7 @@ * getBank() methode with the same id, you will receive each time the same object. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL * @see DataBackendContainer */ diff --git a/classes/dataBackend/DataBackendContainer.php b/classes/dataBackend/DataBackendContainer.php index 11d3d268..0f05451b 100644 --- a/classes/dataBackend/DataBackendContainer.php +++ b/classes/dataBackend/DataBackendContainer.php @@ -6,6 +6,7 @@ * Container for DataBackend objects. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL * @see DataBackend */ diff --git a/classes/dataBackend/SQLDataBackend.php b/classes/dataBackend/SQLDataBackend.php index 810bba8c..f2632586 100644 --- a/classes/dataBackend/SQLDataBackend.php +++ b/classes/dataBackend/SQLDataBackend.php @@ -6,6 +6,7 @@ * Additional methods for SQL based data backends * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ abstract class SQLDataBackend extends DataBackend diff --git a/classes/dataBackend/exception/BankNotFoundException.php b/classes/dataBackend/exception/BankNotFoundException.php index de33d93c..b1c80c17 100644 --- a/classes/dataBackend/exception/BankNotFoundException.php +++ b/classes/dataBackend/exception/BankNotFoundException.php @@ -23,6 +23,7 @@ * @package classes * @subpackage dataBackend * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class BankNotFoundException extends DataBackendException diff --git a/classes/dataBackend/exception/DataBackendException.php b/classes/dataBackend/exception/DataBackendException.php index 2e0d4ca3..b8dc97db 100644 --- a/classes/dataBackend/exception/DataBackendException.php +++ b/classes/dataBackend/exception/DataBackendException.php @@ -23,6 +23,7 @@ * @package classes * @subpackage dataBackend * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class DataBackendException extends BAVException diff --git a/classes/dataBackend/exception/DataBackendIOException.php b/classes/dataBackend/exception/DataBackendIOException.php index 23359444..b6d52714 100644 --- a/classes/dataBackend/exception/DataBackendIOException.php +++ b/classes/dataBackend/exception/DataBackendIOException.php @@ -23,6 +23,7 @@ * @package classes * @subpackage dataBackend * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class DataBackendIOException extends DataBackendException diff --git a/classes/dataBackend/exception/InvalidContextException.php b/classes/dataBackend/exception/InvalidContextException.php index 8a19e099..4a9689d5 100644 --- a/classes/dataBackend/exception/InvalidContextException.php +++ b/classes/dataBackend/exception/InvalidContextException.php @@ -7,6 +7,7 @@ * * @see ContextValidation * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations */ class InvalidContextException extends BAVException { diff --git a/classes/dataBackend/exception/MissingAttributesDataBackendIOException.php b/classes/dataBackend/exception/MissingAttributesDataBackendIOException.php index cf3345d8..b630d173 100644 --- a/classes/dataBackend/exception/MissingAttributesDataBackendIOException.php +++ b/classes/dataBackend/exception/MissingAttributesDataBackendIOException.php @@ -23,6 +23,7 @@ * @package classes * @subpackage dataBackend * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class MissingAttributesDataBackendIOException extends DataBackendIOException diff --git a/classes/dataBackend/exception/NoMainAgencyException.php b/classes/dataBackend/exception/NoMainAgencyException.php index 64cd89da..31fd3af2 100644 --- a/classes/dataBackend/exception/NoMainAgencyException.php +++ b/classes/dataBackend/exception/NoMainAgencyException.php @@ -23,6 +23,7 @@ * @package classes * @subpackage dataBackend * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2010 Markus Malkusch */ class NoMainAgencyException extends DataBackendException diff --git a/classes/dataBackend/file/FileDataBackend.php b/classes/dataBackend/file/FileDataBackend.php index eaece8b7..fe3b18f8 100644 --- a/classes/dataBackend/file/FileDataBackend.php +++ b/classes/dataBackend/file/FileDataBackend.php @@ -8,6 +8,7 @@ * any DBS. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class FileDataBackend extends DataBackend diff --git a/classes/dataBackend/file/FileDataBackendContainer.php b/classes/dataBackend/file/FileDataBackendContainer.php index e3e33aee..6450fb75 100644 --- a/classes/dataBackend/file/FileDataBackendContainer.php +++ b/classes/dataBackend/file/FileDataBackendContainer.php @@ -6,6 +6,7 @@ * Container for FileDataBackend objects. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL * @see DataBackend */ diff --git a/classes/dataBackend/file/download/Downloader.php b/classes/dataBackend/file/download/Downloader.php index a72e3210..03576014 100644 --- a/classes/dataBackend/file/download/Downloader.php +++ b/classes/dataBackend/file/download/Downloader.php @@ -6,6 +6,7 @@ * Downloads an URI * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class Downloader diff --git a/classes/dataBackend/file/download/exception/DownloaderException.php b/classes/dataBackend/file/download/exception/DownloaderException.php index c2f2b76f..5ab268b3 100644 --- a/classes/dataBackend/file/download/exception/DownloaderException.php +++ b/classes/dataBackend/file/download/exception/DownloaderException.php @@ -6,6 +6,7 @@ * Exception in downloads. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @see Downloader * @license GPL */ diff --git a/classes/dataBackend/file/download/uripicker/DOMURIPicker.php b/classes/dataBackend/file/download/uripicker/DOMURIPicker.php index b6d8b826..f22ada4e 100644 --- a/classes/dataBackend/file/download/uripicker/DOMURIPicker.php +++ b/classes/dataBackend/file/download/uripicker/DOMURIPicker.php @@ -6,6 +6,7 @@ * Finds the download URI in the Bundesbank HTML page with XPath. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class DOMURIPicker implements URIPicker diff --git a/classes/dataBackend/file/download/uripicker/FallbackURIPicker.php b/classes/dataBackend/file/download/uripicker/FallbackURIPicker.php index 151ccea4..7cb0a734 100644 --- a/classes/dataBackend/file/download/uripicker/FallbackURIPicker.php +++ b/classes/dataBackend/file/download/uripicker/FallbackURIPicker.php @@ -6,6 +6,7 @@ * Finds the download URI in the Bundesbank HTML page with any URI picker. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class FallbackURIPicker implements URIPicker diff --git a/classes/dataBackend/file/download/uripicker/RegExpURIPicker.php b/classes/dataBackend/file/download/uripicker/RegExpURIPicker.php index ea6364e3..fab96ab0 100644 --- a/classes/dataBackend/file/download/uripicker/RegExpURIPicker.php +++ b/classes/dataBackend/file/download/uripicker/RegExpURIPicker.php @@ -6,6 +6,7 @@ * Finds the download URI in the Bundesbank HTML page with a regular expression. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class RegExpURIPicker implements URIPicker diff --git a/classes/dataBackend/file/download/uripicker/URIPicker.php b/classes/dataBackend/file/download/uripicker/URIPicker.php index 8b87c2e6..3ca6e039 100644 --- a/classes/dataBackend/file/download/uripicker/URIPicker.php +++ b/classes/dataBackend/file/download/uripicker/URIPicker.php @@ -6,6 +6,7 @@ * Finds the download URI in the Bundesbank HTML page. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ interface URIPicker diff --git a/classes/dataBackend/file/download/uripicker/exception/URIPickerException.php b/classes/dataBackend/file/download/uripicker/exception/URIPickerException.php index 353ccef5..70ac9012 100644 --- a/classes/dataBackend/file/download/uripicker/exception/URIPickerException.php +++ b/classes/dataBackend/file/download/uripicker/exception/URIPickerException.php @@ -6,6 +6,7 @@ * Exception during URI picking. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class URIPickerException extends DataBackendException diff --git a/classes/dataBackend/file/fileParser/FileParser.php b/classes/dataBackend/file/fileParser/FileParser.php index 49ba0975..b68c8ece 100644 --- a/classes/dataBackend/file/fileParser/FileParser.php +++ b/classes/dataBackend/file/fileParser/FileParser.php @@ -26,6 +26,7 @@ * @package classes * @subpackage dataBackend * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class FileParser diff --git a/classes/dataBackend/file/fileParser/FileParserContext.php b/classes/dataBackend/file/fileParser/FileParserContext.php index 744e7bb5..2dc4ccda 100644 --- a/classes/dataBackend/file/fileParser/FileParserContext.php +++ b/classes/dataBackend/file/fileParser/FileParserContext.php @@ -27,6 +27,7 @@ * @package classes * @subpackage dataBackend * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class FileParserContext diff --git a/classes/dataBackend/file/fileParser/exception/FileParserContextException.php b/classes/dataBackend/file/fileParser/exception/FileParserContextException.php index 9ac2ce08..737bca98 100644 --- a/classes/dataBackend/file/fileParser/exception/FileParserContextException.php +++ b/classes/dataBackend/file/fileParser/exception/FileParserContextException.php @@ -23,6 +23,7 @@ * @package classes * @subpackage dataBackend * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class FileParserContextException extends BAVException diff --git a/classes/dataBackend/file/fileParser/exception/FileParserException.php b/classes/dataBackend/file/fileParser/exception/FileParserException.php index 25ef3146..bb5e03bc 100644 --- a/classes/dataBackend/file/fileParser/exception/FileParserException.php +++ b/classes/dataBackend/file/fileParser/exception/FileParserException.php @@ -23,6 +23,7 @@ * @package classes * @subpackage dataBackend * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class FileParserException extends BAVException diff --git a/classes/dataBackend/file/fileParser/exception/FileParserIOException b/classes/dataBackend/file/fileParser/exception/FileParserIOException index 0e5c15b5..3df28043 100644 --- a/classes/dataBackend/file/fileParser/exception/FileParserIOException +++ b/classes/dataBackend/file/fileParser/exception/FileParserIOException @@ -23,6 +23,7 @@ namespace malkusch\bav; * @package classes * @subpackage dataBackend * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class FileParserIOException extends FileParserException diff --git a/classes/dataBackend/file/fileParser/exception/FileParserNotExistsException.php b/classes/dataBackend/file/fileParser/exception/FileParserNotExistsException.php index 331f9ea0..f6aada0a 100644 --- a/classes/dataBackend/file/fileParser/exception/FileParserNotExistsException.php +++ b/classes/dataBackend/file/fileParser/exception/FileParserNotExistsException.php @@ -23,6 +23,7 @@ * @package classes * @subpackage dataBackend * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class FileParserNotExistsException extends FileParserException diff --git a/classes/dataBackend/file/fileParser/exception/ParseException b/classes/dataBackend/file/fileParser/exception/ParseException index 81743a87..54525d71 100644 --- a/classes/dataBackend/file/fileParser/exception/ParseException +++ b/classes/dataBackend/file/fileParser/exception/ParseException @@ -23,6 +23,7 @@ namespace malkusch\bav; * @package classes * @subpackage dataBackend * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class ParseException extends FileParserException diff --git a/classes/dataBackend/file/fileParser/exception/UndefinedFileParserContextException.php b/classes/dataBackend/file/fileParser/exception/UndefinedFileParserContextException.php index df07c961..84e18630 100644 --- a/classes/dataBackend/file/fileParser/exception/UndefinedFileParserContextException.php +++ b/classes/dataBackend/file/fileParser/exception/UndefinedFileParserContextException.php @@ -23,6 +23,7 @@ * @package classes * @subpackage dataBackend * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class UndefinedFileParserContextException extends FileParserContextException diff --git a/classes/dataBackend/file/validator/FileValidator.php b/classes/dataBackend/file/validator/FileValidator.php index 1ebad8db..7161881d 100644 --- a/classes/dataBackend/file/validator/FileValidator.php +++ b/classes/dataBackend/file/validator/FileValidator.php @@ -6,6 +6,7 @@ * Validates a bundesbank file. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class FileValidator diff --git a/classes/dataBackend/file/validator/exception/FieldException.php b/classes/dataBackend/file/validator/exception/FieldException.php index 400e316f..63cdaf55 100644 --- a/classes/dataBackend/file/validator/exception/FieldException.php +++ b/classes/dataBackend/file/validator/exception/FieldException.php @@ -6,6 +6,7 @@ * Invalid field content. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class FieldException extends FileValidatorException diff --git a/classes/dataBackend/file/validator/exception/FileValidatorException.php b/classes/dataBackend/file/validator/exception/FileValidatorException.php index 60fa1abc..24c93c43 100644 --- a/classes/dataBackend/file/validator/exception/FileValidatorException.php +++ b/classes/dataBackend/file/validator/exception/FileValidatorException.php @@ -6,6 +6,7 @@ * Validation exception. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class FileValidatorException extends DataBackendException diff --git a/classes/dataBackend/file/validator/exception/InvalidFilesizeException.php b/classes/dataBackend/file/validator/exception/InvalidFilesizeException.php index a540853d..1d954706 100644 --- a/classes/dataBackend/file/validator/exception/InvalidFilesizeException.php +++ b/classes/dataBackend/file/validator/exception/InvalidFilesizeException.php @@ -6,6 +6,7 @@ * Invalid file size. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class InvalidFilesizeException extends FileValidatorException diff --git a/classes/dataBackend/file/validator/exception/InvalidLineLengthException.php b/classes/dataBackend/file/validator/exception/InvalidLineLengthException.php index 90e3d264..99fe4f19 100644 --- a/classes/dataBackend/file/validator/exception/InvalidLineLengthException.php +++ b/classes/dataBackend/file/validator/exception/InvalidLineLengthException.php @@ -6,6 +6,7 @@ * Invalid line length * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class InvalidLineLengthException extends FileValidatorException diff --git a/classes/dataBackend/orm/MetaData.php b/classes/dataBackend/orm/MetaData.php index 9f020fae..e17e3aad 100644 --- a/classes/dataBackend/orm/MetaData.php +++ b/classes/dataBackend/orm/MetaData.php @@ -7,6 +7,7 @@ * * @internal * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class MetaData diff --git a/classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php b/classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php index b206e0c4..13bf07c8 100644 --- a/classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php +++ b/classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php @@ -11,6 +11,7 @@ * You will need Doctrine as composer dependency. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL * @see DataBackend * @link http://www.doctrine-project.org/ diff --git a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php index 3feb0a6d..386f17ae 100644 --- a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php +++ b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php @@ -13,6 +13,7 @@ * You will need Doctrine as composer dependency. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL * @link http://www.doctrine-project.org/ */ diff --git a/classes/dataBackend/pdo/PDODataBackend.php b/classes/dataBackend/pdo/PDODataBackend.php index 6656a323..81da5440 100644 --- a/classes/dataBackend/pdo/PDODataBackend.php +++ b/classes/dataBackend/pdo/PDODataBackend.php @@ -7,6 +7,7 @@ * may use getAgencies($sql) which returns an array of Agency objects. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class PDODataBackend extends SQLDataBackend diff --git a/classes/dataBackend/pdo/PDODataBackendContainer.php b/classes/dataBackend/pdo/PDODataBackendContainer.php index 28f8f610..44ac27fa 100644 --- a/classes/dataBackend/pdo/PDODataBackendContainer.php +++ b/classes/dataBackend/pdo/PDODataBackendContainer.php @@ -6,6 +6,7 @@ * Container for PDODataBackend objects. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL * @see DataBackend */ diff --git a/classes/dataBackend/pdo/StatementContainer.php b/classes/dataBackend/pdo/StatementContainer.php index 96a328b4..73501fdc 100644 --- a/classes/dataBackend/pdo/StatementContainer.php +++ b/classes/dataBackend/pdo/StatementContainer.php @@ -6,6 +6,7 @@ * Stores prepared statements for reuse. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class StatementContainer diff --git a/classes/dataBackend/update/AutomaticUpdatePlan.php b/classes/dataBackend/update/AutomaticUpdatePlan.php index 1d7341c1..e35e2fda 100644 --- a/classes/dataBackend/update/AutomaticUpdatePlan.php +++ b/classes/dataBackend/update/AutomaticUpdatePlan.php @@ -6,6 +6,7 @@ * Perform an update automatically. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class AutomaticUpdatePlan extends UpdatePlan diff --git a/classes/dataBackend/update/LogUpdatePlan.php b/classes/dataBackend/update/LogUpdatePlan.php index 2dbcff2b..2f13718f 100644 --- a/classes/dataBackend/update/LogUpdatePlan.php +++ b/classes/dataBackend/update/LogUpdatePlan.php @@ -6,6 +6,7 @@ * Logs a E_USER_WARNING if an update should be performed. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class LogUpdatePlan extends UpdatePlan diff --git a/classes/dataBackend/update/UpdatePlan.php b/classes/dataBackend/update/UpdatePlan.php index 894fdb39..e577ba1e 100644 --- a/classes/dataBackend/update/UpdatePlan.php +++ b/classes/dataBackend/update/UpdatePlan.php @@ -6,6 +6,7 @@ * Abstract update plan. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ abstract class UpdatePlan diff --git a/classes/encoding/Encoding.php b/classes/encoding/Encoding.php index 64f59439..c29d7a81 100644 --- a/classes/encoding/Encoding.php +++ b/classes/encoding/Encoding.php @@ -26,6 +26,7 @@ * @package classes * @subpackage dataBackend * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ abstract class Encoding diff --git a/classes/encoding/ISO8859Encoding.php b/classes/encoding/ISO8859Encoding.php index a0597b25..c9878237 100644 --- a/classes/encoding/ISO8859Encoding.php +++ b/classes/encoding/ISO8859Encoding.php @@ -26,6 +26,7 @@ * @package classes * @subpackage dataBackend * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class ISO8859Encoding extends Encoding diff --git a/classes/encoding/IconvEncoding.php b/classes/encoding/IconvEncoding.php index 120c98ba..7eec3ab7 100644 --- a/classes/encoding/IconvEncoding.php +++ b/classes/encoding/IconvEncoding.php @@ -27,6 +27,7 @@ * @package classes * @subpackage dataBackend * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class IconvEncoding extends Encoding diff --git a/classes/encoding/MBEncoding.php b/classes/encoding/MBEncoding.php index 1e9cad32..3b380f48 100644 --- a/classes/encoding/MBEncoding.php +++ b/classes/encoding/MBEncoding.php @@ -27,6 +27,7 @@ * @package classes * @subpackage dataBackend * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class MBEncoding extends Encoding diff --git a/classes/encoding/exception/EncodingException.php b/classes/encoding/exception/EncodingException.php index ef2a15bb..6176b56f 100644 --- a/classes/encoding/exception/EncodingException.php +++ b/classes/encoding/exception/EncodingException.php @@ -23,6 +23,7 @@ * @package classes * @subpackage dataBackend * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class EncodingException extends BAVException diff --git a/classes/encoding/exception/UnsupportedEncodingException.php b/classes/encoding/exception/UnsupportedEncodingException.php index b94a6fb5..8aed228d 100644 --- a/classes/encoding/exception/UnsupportedEncodingException.php +++ b/classes/encoding/exception/UnsupportedEncodingException.php @@ -23,6 +23,7 @@ * @package classes * @subpackage dataBackend * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class UnsupportedEncodingException extends EncodingException diff --git a/classes/exception/BAVException.php b/classes/exception/BAVException.php index c0f8762b..f283833e 100644 --- a/classes/exception/BAVException.php +++ b/classes/exception/BAVException.php @@ -6,6 +6,7 @@ * Base exception * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class BAVException extends \Exception diff --git a/classes/util/BICUtil.php b/classes/util/BICUtil.php index 931ccd4c..f9a0ed35 100644 --- a/classes/util/BICUtil.php +++ b/classes/util/BICUtil.php @@ -6,6 +6,7 @@ * Helper for BIC * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class BICUtil diff --git a/classes/util/FileUtil.php b/classes/util/FileUtil.php index d34bfdad..9e04cecb 100644 --- a/classes/util/FileUtil.php +++ b/classes/util/FileUtil.php @@ -6,6 +6,7 @@ * Helper for file system operations. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class FileUtil diff --git a/classes/util/Lock.php b/classes/util/Lock.php index 85a247b6..3efe1aa8 100644 --- a/classes/util/Lock.php +++ b/classes/util/Lock.php @@ -6,6 +6,7 @@ * Helper for locking * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL * @see DataBackend */ diff --git a/classes/util/exception/FileException.php b/classes/util/exception/FileException.php index 07ba7613..16cac085 100644 --- a/classes/util/exception/FileException.php +++ b/classes/util/exception/FileException.php @@ -6,6 +6,7 @@ * Exception during a file operation. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class FileException extends BAVException diff --git a/classes/util/exception/LockException.php b/classes/util/exception/LockException.php index b86aabc0..e903edba 100644 --- a/classes/util/exception/LockException.php +++ b/classes/util/exception/LockException.php @@ -6,6 +6,7 @@ * Exception during locking. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class LockException extends BAVException diff --git a/classes/util/exception/NoTempDirectoryException.php b/classes/util/exception/NoTempDirectoryException.php index e379aef5..8a674e52 100644 --- a/classes/util/exception/NoTempDirectoryException.php +++ b/classes/util/exception/NoTempDirectoryException.php @@ -6,6 +6,7 @@ * BAV couldn't find a writable directory for temporary files. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class NoTempDirectoryException extends FileException diff --git a/classes/validator/ContextValidation.php b/classes/validator/ContextValidation.php index 6ab89abf..851ee997 100644 --- a/classes/validator/ContextValidation.php +++ b/classes/validator/ContextValidation.php @@ -11,6 +11,7 @@ * This class provides callbacks for filter validation. * * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL */ class ContextValidation diff --git a/classes/validator/TransformationIterationValidator.php b/classes/validator/TransformationIterationValidator.php index 47b0f3e3..8ab68295 100644 --- a/classes/validator/TransformationIterationValidator.php +++ b/classes/validator/TransformationIterationValidator.php @@ -23,6 +23,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ abstract class TransformationIterationValidator extends ValidatorIteration diff --git a/classes/validator/Validator.php b/classes/validator/Validator.php index b651bb27..88ed0009 100644 --- a/classes/validator/Validator.php +++ b/classes/validator/Validator.php @@ -23,6 +23,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ abstract class Validator diff --git a/classes/validator/ValidatorBankDependent.php b/classes/validator/ValidatorBankDependent.php index 0787bc5f..4ca92ae0 100644 --- a/classes/validator/ValidatorBankDependent.php +++ b/classes/validator/ValidatorBankDependent.php @@ -25,6 +25,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2009 Markus Malkusch */ interface ValidatorBankDependent diff --git a/classes/validator/ValidatorChain.php b/classes/validator/ValidatorChain.php index 41e59420..216fb21f 100644 --- a/classes/validator/ValidatorChain.php +++ b/classes/validator/ValidatorChain.php @@ -27,6 +27,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class ValidatorChain extends Validator diff --git a/classes/validator/ValidatorIteration.php b/classes/validator/ValidatorIteration.php index 3e8e37ac..20832d2d 100644 --- a/classes/validator/ValidatorIteration.php +++ b/classes/validator/ValidatorIteration.php @@ -23,6 +23,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ abstract class ValidatorIteration extends Validator diff --git a/classes/validator/WeightedIterationValidator.php b/classes/validator/WeightedIterationValidator.php index 8b7b5fc0..9828d549 100644 --- a/classes/validator/WeightedIterationValidator.php +++ b/classes/validator/WeightedIterationValidator.php @@ -23,6 +23,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ abstract class WeightedIterationValidator extends ValidatorIteration diff --git a/classes/validator/exception/ValidatorESERException.php b/classes/validator/exception/ValidatorESERException.php index 45a253ca..797cf30c 100644 --- a/classes/validator/exception/ValidatorESERException.php +++ b/classes/validator/exception/ValidatorESERException.php @@ -23,6 +23,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class ValidatorESERException extends ValidatorException diff --git a/classes/validator/exception/ValidatorException.php b/classes/validator/exception/ValidatorException.php index 67695a82..d51aba14 100644 --- a/classes/validator/exception/ValidatorException.php +++ b/classes/validator/exception/ValidatorException.php @@ -23,6 +23,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class ValidatorException extends BAVException diff --git a/classes/validator/exception/ValidatorNotExistsException.php b/classes/validator/exception/ValidatorNotExistsException.php index 21c5e791..62b78ee3 100644 --- a/classes/validator/exception/ValidatorNotExistsException.php +++ b/classes/validator/exception/ValidatorNotExistsException.php @@ -23,6 +23,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class ValidatorNotExistsException extends ValidatorException diff --git a/classes/validator/exception/ValidatorOutOfBoundsException.php b/classes/validator/exception/ValidatorOutOfBoundsException.php index ef3f4467..84537b86 100644 --- a/classes/validator/exception/ValidatorOutOfBoundsException.php +++ b/classes/validator/exception/ValidatorOutOfBoundsException.php @@ -23,6 +23,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class ValidatorOutOfBoundsException extends ValidatorException diff --git a/classes/validator/validators/Validator49.php b/classes/validator/validators/Validator49.php index 09845917..0ca03e67 100644 --- a/classes/validator/validators/Validator49.php +++ b/classes/validator/validators/Validator49.php @@ -25,6 +25,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class Validator49 extends ValidatorChain diff --git a/classes/validator/validators/Validator51.php b/classes/validator/validators/Validator51.php index c2f79e74..3f0e2a91 100644 --- a/classes/validator/validators/Validator51.php +++ b/classes/validator/validators/Validator51.php @@ -25,6 +25,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class Validator51 extends ValidatorChain diff --git a/classes/validator/validators/Validator68.php b/classes/validator/validators/Validator68.php index 19e0d48d..293697a2 100644 --- a/classes/validator/validators/Validator68.php +++ b/classes/validator/validators/Validator68.php @@ -25,6 +25,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class Validator68 extends ValidatorChain diff --git a/classes/validator/validators/Validator69.php b/classes/validator/validators/Validator69.php index 778774ae..b1a17c46 100644 --- a/classes/validator/validators/Validator69.php +++ b/classes/validator/validators/Validator69.php @@ -25,6 +25,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class Validator69 extends ValidatorChain diff --git a/classes/validator/validators/Validator79.php b/classes/validator/validators/Validator79.php index e26040d6..09316247 100644 --- a/classes/validator/validators/Validator79.php +++ b/classes/validator/validators/Validator79.php @@ -23,6 +23,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class Validator79 extends Validator diff --git a/classes/validator/validators/Validator82.php b/classes/validator/validators/Validator82.php index c28ed9fa..9208ebfc 100644 --- a/classes/validator/validators/Validator82.php +++ b/classes/validator/validators/Validator82.php @@ -23,6 +23,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class Validator82 extends Validator diff --git a/classes/validator/validators/Validator87a.php b/classes/validator/validators/Validator87a.php index b34bf8ec..accd9c04 100644 --- a/classes/validator/validators/Validator87a.php +++ b/classes/validator/validators/Validator87a.php @@ -25,6 +25,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class Validator87a extends Validator diff --git a/classes/validator/validators/Validator97.php b/classes/validator/validators/Validator97.php index 1b512a2c..597a03e2 100644 --- a/classes/validator/validators/Validator97.php +++ b/classes/validator/validators/Validator97.php @@ -25,6 +25,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class Validator97 extends Validator diff --git a/classes/validator/validators/ValidatorA6.php b/classes/validator/validators/ValidatorA6.php index e2e7b11d..e33d914e 100644 --- a/classes/validator/validators/ValidatorA6.php +++ b/classes/validator/validators/ValidatorA6.php @@ -23,6 +23,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class ValidatorA6 extends Validator diff --git a/classes/validator/validators/ValidatorA8.php b/classes/validator/validators/ValidatorA8.php index ad2bb915..815303fe 100644 --- a/classes/validator/validators/ValidatorA8.php +++ b/classes/validator/validators/ValidatorA8.php @@ -25,6 +25,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class ValidatorA8 extends ValidatorChain diff --git a/classes/validator/validators/ValidatorB0.php b/classes/validator/validators/ValidatorB0.php index 13650077..03aad10e 100644 --- a/classes/validator/validators/ValidatorB0.php +++ b/classes/validator/validators/ValidatorB0.php @@ -23,6 +23,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class ValidatorB0 extends Validator diff --git a/classes/validator/validators/ValidatorB2.php b/classes/validator/validators/ValidatorB2.php index 3ffa0594..f81deee0 100644 --- a/classes/validator/validators/ValidatorB2.php +++ b/classes/validator/validators/ValidatorB2.php @@ -23,6 +23,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class ValidatorB2 extends Validator diff --git a/classes/validator/validators/ValidatorB3.php b/classes/validator/validators/ValidatorB3.php index 7e2e11df..36fe3c8f 100644 --- a/classes/validator/validators/ValidatorB3.php +++ b/classes/validator/validators/ValidatorB3.php @@ -23,6 +23,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class ValidatorB3 extends Validator diff --git a/classes/validator/validators/ValidatorB4.php b/classes/validator/validators/ValidatorB4.php index 199ad875..ac2418f0 100644 --- a/classes/validator/validators/ValidatorB4.php +++ b/classes/validator/validators/ValidatorB4.php @@ -23,6 +23,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class ValidatorB4 extends Validator diff --git a/classes/validator/validators/ValidatorB6.php b/classes/validator/validators/ValidatorB6.php index d9e62952..025cc550 100644 --- a/classes/validator/validators/ValidatorB6.php +++ b/classes/validator/validators/ValidatorB6.php @@ -23,6 +23,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class ValidatorB6 extends Validator implements ValidatorBankDependent diff --git a/classes/validator/validators/ValidatorB9.php b/classes/validator/validators/ValidatorB9.php index b21c4d96..e5e5b8e1 100644 --- a/classes/validator/validators/ValidatorB9.php +++ b/classes/validator/validators/ValidatorB9.php @@ -23,6 +23,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class ValidatorB9 extends Validator diff --git a/classes/validator/validators/ValidatorC1.php b/classes/validator/validators/ValidatorC1.php index 65d1bf25..2e1d7f69 100644 --- a/classes/validator/validators/ValidatorC1.php +++ b/classes/validator/validators/ValidatorC1.php @@ -23,6 +23,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch */ class ValidatorC1 extends Validator diff --git a/classes/validator/validators/ValidatorC3.php b/classes/validator/validators/ValidatorC3.php index b98066de..bf312f54 100644 --- a/classes/validator/validators/ValidatorC3.php +++ b/classes/validator/validators/ValidatorC3.php @@ -23,6 +23,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2007 Markus Malkusch */ class ValidatorC3 extends Validator diff --git a/classes/validator/validators/ValidatorC4.php b/classes/validator/validators/ValidatorC4.php index 68f7af70..bea79ded 100644 --- a/classes/validator/validators/ValidatorC4.php +++ b/classes/validator/validators/ValidatorC4.php @@ -23,6 +23,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2007 Markus Malkusch */ class ValidatorC4 extends Validator diff --git a/classes/validator/validators/ValidatorC5.php b/classes/validator/validators/ValidatorC5.php index 73804c19..570ad133 100644 --- a/classes/validator/validators/ValidatorC5.php +++ b/classes/validator/validators/ValidatorC5.php @@ -23,6 +23,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2007 Markus Malkusch */ class ValidatorC5 extends Validator diff --git a/classes/validator/validators/ValidatorC6.php b/classes/validator/validators/ValidatorC6.php index c006b5ab..bf6253a1 100644 --- a/classes/validator/validators/ValidatorC6.php +++ b/classes/validator/validators/ValidatorC6.php @@ -23,6 +23,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2007 Markus Malkusch */ class ValidatorC6 extends Validator diff --git a/classes/validator/validators/ValidatorD0.php b/classes/validator/validators/ValidatorD0.php index 896f534a..5a207f5e 100644 --- a/classes/validator/validators/ValidatorD0.php +++ b/classes/validator/validators/ValidatorD0.php @@ -23,6 +23,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2008 Markus Malkusch */ class ValidatorD0 extends Validator diff --git a/classes/validator/validators/ValidatorD1.php b/classes/validator/validators/ValidatorD1.php index b3d0e327..9d7d9648 100644 --- a/classes/validator/validators/ValidatorD1.php +++ b/classes/validator/validators/ValidatorD1.php @@ -23,6 +23,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2010 Markus Malkusch */ class ValidatorD1 extends Validator diff --git a/classes/validator/validators/ValidatorD2.php b/classes/validator/validators/ValidatorD2.php index a5f3fe40..1fb60cd3 100644 --- a/classes/validator/validators/ValidatorD2.php +++ b/classes/validator/validators/ValidatorD2.php @@ -24,6 +24,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2010 Markus Malkusch */ class ValidatorD2 extends ValidatorChain diff --git a/classes/validator/validators/ValidatorD3.php b/classes/validator/validators/ValidatorD3.php index a22be07a..287197e6 100644 --- a/classes/validator/validators/ValidatorD3.php +++ b/classes/validator/validators/ValidatorD3.php @@ -24,6 +24,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2010 Markus Malkusch */ class ValidatorD3 extends ValidatorChain diff --git a/classes/validator/validators/ValidatorD4.php b/classes/validator/validators/ValidatorD4.php index 20c298f2..ebc328f9 100644 --- a/classes/validator/validators/ValidatorD4.php +++ b/classes/validator/validators/ValidatorD4.php @@ -25,6 +25,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2010 Markus Malkusch */ class ValidatorD4 extends Validator diff --git a/classes/validator/validators/ValidatorD5.php b/classes/validator/validators/ValidatorD5.php index c6c54fd6..a39997b5 100644 --- a/classes/validator/validators/ValidatorD5.php +++ b/classes/validator/validators/ValidatorD5.php @@ -25,6 +25,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2010 Markus Malkusch */ class ValidatorD5 extends Validator diff --git a/classes/validator/validators/ValidatorD6.php b/classes/validator/validators/ValidatorD6.php index 4d16f0b9..617c5dc0 100644 --- a/classes/validator/validators/ValidatorD6.php +++ b/classes/validator/validators/ValidatorD6.php @@ -24,6 +24,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2010 Markus Malkusch */ class ValidatorD6 extends ValidatorChain diff --git a/classes/validator/validators/ValidatorD7.php b/classes/validator/validators/ValidatorD7.php index 84e705aa..90fd298f 100644 --- a/classes/validator/validators/ValidatorD7.php +++ b/classes/validator/validators/ValidatorD7.php @@ -25,6 +25,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2011 Markus Malkusch */ class ValidatorD7 extends WeightedIterationValidator diff --git a/classes/validator/validators/ValidatorD8.php b/classes/validator/validators/ValidatorD8.php index 0d2e4a2f..0b2b6e54 100644 --- a/classes/validator/validators/ValidatorD8.php +++ b/classes/validator/validators/ValidatorD8.php @@ -25,6 +25,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2011 Markus Malkusch */ class ValidatorD8 extends Validator diff --git a/classes/validator/validators/ValidatorD9.php b/classes/validator/validators/ValidatorD9.php index 7648783b..50060503 100644 --- a/classes/validator/validators/ValidatorD9.php +++ b/classes/validator/validators/ValidatorD9.php @@ -24,6 +24,7 @@ * @package classes * @subpackage validator * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2012 Markus Malkusch */ class ValidatorD9 extends ValidatorChain From 59df2e32152ca830e156361efabbf87dd91b3066 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Wed, 25 Jun 2014 09:48:01 +0200 Subject: [PATCH 223/303] edited donate text as github won't print a bitcoin: URI --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index edc9cdd6..a7429214 100644 --- a/README.md +++ b/README.md @@ -191,7 +191,7 @@ Björn Wilmsmann. Responsable for this project is Markus Malkusch Date: Wed, 25 Jun 2014 10:12:37 +0200 Subject: [PATCH 224/303] semantic typo --- classes/dataBackend/file/validator/FileValidator.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/classes/dataBackend/file/validator/FileValidator.php b/classes/dataBackend/file/validator/FileValidator.php index 7161881d..6ae63a2f 100644 --- a/classes/dataBackend/file/validator/FileValidator.php +++ b/classes/dataBackend/file/validator/FileValidator.php @@ -28,7 +28,8 @@ public function validate($file) $size = filesize($file); if ($size < self::FILESIZE) { throw new InvalidFilesizeException( - "Get updated BAV version: file size should be less than " . self::FILESIZE . " but was $size." + "Get updated BAV version:" + . " file size should not be less than " . self::FILESIZE . " but was $size." ); } From 0b4e2d5da75582d767bb346ade03a516537c8a5c Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sun, 29 Jun 2014 20:26:33 +0200 Subject: [PATCH 225/303] edited CI image --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a7429214..5af47741 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # About BAV + BAV (bank account validator) is a validation library for German bank accounts. + # Installation Visit and download the latest version or use [Composer](https://getcomposer.org/): @@ -194,4 +196,4 @@ Björn Wilmsmann. Responsable for this project is Markus Malkusch Date: Sun, 29 Jun 2014 21:07:19 +0200 Subject: [PATCH 226/303] bav/data should be writable --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 5af47741..757cabdf 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,8 @@ configuration (`DefaultConfiguration`): * `UTF-8` encoding (if supported) * `FileDataBackendContainer`. I.e. it uses binary search on the file from the Bundesbank. +Note that this data backend uses the directory `bav/data` for install and update +operations. You have to make sure that this directory is writable. * automatic installation. You don't have to call any installation script. The container will download the Bundesbank file upon the first execution. From d91f983ab777a460de222edff00d792f50a1eeb2 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sun, 29 Jun 2014 23:37:05 +0200 Subject: [PATCH 227/303] typo --- docs/example.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/example.php b/docs/example.php index 33f97e51..6c27a9b5 100755 --- a/docs/example.php +++ b/docs/example.php @@ -3,7 +3,7 @@ /** * This script shows examples how to use BAV. * - * If you didn't installt BAV yet and Configuration::isAutomaticInstallation() is true + * If you didn't install BAV yet and Configuration::isAutomaticInstallation() is true * (default) then BAV will install the bundesbank file which might take a few seconds. * * @filesource From b276390c631ba65e17147b6389681a54d0f555fa Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Mon, 30 Jun 2014 00:35:10 +0200 Subject: [PATCH 228/303] parallel unit tests --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index e092dd16..53e2bb0d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,6 +10,7 @@ env: PDO_DSN="mysql:host=localhost;dbname=bav" PDO_USER=travis install: - pyrus install pear/PHP_CodeSniffer - phpenv rehash + - sudo apt-get install parallel before_script: - composer --prefer-source --dev install @@ -18,7 +19,6 @@ before_script: - php tests/bin/test-install.php script: - - phpunit tests/unit/ - - phpunit --exclude-group large tests/unit-large/ + - find tests/ -type f -name "*Test.php" | parallel phpunit --exclude-group large {} - phpcs --standard=PSR2 classes/ bin/ docs/example.php tests/classes/ tests/bin/ tests/bootstrap.php From a11bb630c57fb26e6e69b97c97e0d28ea007f275 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Mon, 30 Jun 2014 01:01:55 +0200 Subject: [PATCH 229/303] Revert "parallel unit tests" This reverts commit b276390c631ba65e17147b6389681a54d0f555fa. --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 53e2bb0d..e092dd16 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,7 +10,6 @@ env: PDO_DSN="mysql:host=localhost;dbname=bav" PDO_USER=travis install: - pyrus install pear/PHP_CodeSniffer - phpenv rehash - - sudo apt-get install parallel before_script: - composer --prefer-source --dev install @@ -19,6 +18,7 @@ before_script: - php tests/bin/test-install.php script: - - find tests/ -type f -name "*Test.php" | parallel phpunit --exclude-group large {} + - phpunit tests/unit/ + - phpunit --exclude-group large tests/unit-large/ - phpcs --standard=PSR2 classes/ bin/ docs/example.php tests/classes/ tests/bin/ tests/bootstrap.php From 35c45a03236a9074685e3f33aee35becb70d53db Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Mon, 30 Jun 2014 11:07:11 +0200 Subject: [PATCH 230/303] edited documentation --- classes/BAV.php | 10 ++++- classes/bank/Agency.php | 40 +++++++------------ classes/configuration/Configuration.php | 12 ++++-- .../configuration/ConfigurationRegistry.php | 29 +++++++++++++- .../configuration/DefaultConfiguration.php | 6 ++- .../update/AutomaticUpdatePlan.php | 3 +- classes/dataBackend/update/LogUpdatePlan.php | 1 + classes/dataBackend/update/UpdatePlan.php | 1 + 8 files changed, 66 insertions(+), 36 deletions(-) diff --git a/classes/BAV.php b/classes/BAV.php index af1b7e49..ddd17b6b 100644 --- a/classes/BAV.php +++ b/classes/BAV.php @@ -7,9 +7,15 @@ * * This class provides methods for validation of German bank accounts. * + * If you don't inject a {@link Configuration} the facade will use the + * {@link ConfigurationRegistry}. The registry provides per default the + * {@link DefaultConfiguration}. + * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL + * @api + * @see ConfigurationRegistry */ class BAV { @@ -33,7 +39,7 @@ class BAV * Inject the configuration. * * If the $configuration is null the configuration from - * ConfigurationRegistry::getConfiguration() will be used. + * {@link ConfigurationRegistry::getConfiguration()} will be used. * * @see ConfigurationRegistry */ @@ -135,6 +141,7 @@ public function isValidBank($bankID) * * @throws DataBackendException * @throws BankNotFoundException + * @param string $bankID Bank id (Bankleitzahl) * @see Bank::getMainAgency() * @see getAgencies() * @return Agency @@ -149,6 +156,7 @@ public function getMainAgency($bankID) * * The main agency is not included in this list. * + * @param string $bankID Bank id (Bankleitzahl) * @throws DataBackendException * @throws BankNotFoundException * @return Agency[] diff --git a/classes/bank/Agency.php b/classes/bank/Agency.php index af15a6cd..52ef9ceb 100644 --- a/classes/bank/Agency.php +++ b/classes/bank/Agency.php @@ -3,33 +3,18 @@ namespace malkusch\bav; /** - * The agency belongs to one bank. Every bank has one main agency and may have - * some more agencies in different cities. Don't create this object directly. - * Use Bank->getMainAgency() or Bank->getAgencies(). + * The bank agency. + * + * Every bank has one main agency and may have some more agencies + * in different cities. * - * - * Copyright (C) 2006 Markus Malkusch - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * - * @package classes - * @subpackage bank * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @copyright Copyright (C) 2006 Markus Malkusch + * @license GPL + * @see BAV::getAgencies() + * @see BAV::getBICAgencies() + * @see BAV::getMainAgency() + * @api */ class Agency { @@ -75,8 +60,7 @@ class Agency private $name = ''; /** - * Don't create this object directly. Use Bank->getMainAgency() - * or Bank->getAgencies(). + * Don't create this object directly. * * @param int $id * @param string $name @@ -85,6 +69,10 @@ class Agency * @param string $postcode * @param string $bic might be empty * @param string $pan might be empty + * @internal + * @see BAV::getAgencies() + * @see BAV::getMainAgency() + * @see BAV::getBICAgencies() */ public function __construct($id, Bank $bank, $name, $shortTerm, $city, $postcode, $bic = '', $pan = '') { diff --git a/classes/configuration/Configuration.php b/classes/configuration/Configuration.php index a5f12bc5..52c164f6 100644 --- a/classes/configuration/Configuration.php +++ b/classes/configuration/Configuration.php @@ -8,6 +8,8 @@ * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL + * @see ConfigurationRegistry + * @api */ class Configuration { @@ -60,8 +62,8 @@ public function getUpdatePlan() /** * Turns automatic installation on or off. * - * If automatic installation is activated. The backend factory will check if it is - * installed and if not so install the backend. + * If automatic installation is activated {@link DataBackendContainer} will + * check if it is installed and if not install the backend. * * @see DataBackend::install() * @param bool $automaticInstallation Set true to turn installation on @@ -82,7 +84,7 @@ public function isAutomaticInstallation() } /** - * Sets the data backend container. + * Sets the data {@link DataBackendContainer}. */ public function setDataBackendContainer(DataBackendContainer $backendContainer) { @@ -90,7 +92,7 @@ public function setDataBackendContainer(DataBackendContainer $backendContainer) } /** - * Returns the data backend factory. + * Returns the {@link DataBackendContainer}. * * @return DataBackendContainer */ @@ -123,6 +125,8 @@ public function getEncoding() * If you set a temporary directory BAV will use this for temporary files. * This option is optional. If it is not set the system's path will be used. * + * The temporary directory is used for the installation and update process. + * * @param string $tempDirectory */ public function setTempDirectory($tempDirectory) diff --git a/classes/configuration/ConfigurationRegistry.php b/classes/configuration/ConfigurationRegistry.php index 8dcf1f6f..bea98406 100644 --- a/classes/configuration/ConfigurationRegistry.php +++ b/classes/configuration/ConfigurationRegistry.php @@ -5,10 +5,32 @@ /** * Registry for the configuration * + * BAV uses this static container for its runtime configuration. Per default the + * registry is initialized with the {@link DefaultConfiguration}. You can + * set your own configuration with {@link setConfiguration()} or preferably + * by providing the file bav/configuration.php. This file should return a + * {@link Configuration} object: + * + * + * setDataBackendContainer(new PDODataBackendContainer($pdo)); + * + * $configuration->setUpdatePlan(new AutomaticUpdatePlan()); + * + * return $configuration; + * + * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL * @see Configuration + * @api */ class ConfigurationRegistry { @@ -24,7 +46,7 @@ class ConfigurationRegistry * locate a configuration or register the default configuration. * * You may define the file bav/configuration.php. This file should return - * Configuration object. + * a Configuration object. * * @see DefaultConfiguration */ @@ -45,7 +67,10 @@ public static function classConstructor() } /** - * Register a configuration. + * Register a configuration programmatically. + * + * Alternatively you can provide the file bav/configuration.php which + * returns a {@link Configuration} object. */ public static function setConfiguration(Configuration $configuration) { diff --git a/classes/configuration/DefaultConfiguration.php b/classes/configuration/DefaultConfiguration.php index 4b2c550c..b93d112d 100644 --- a/classes/configuration/DefaultConfiguration.php +++ b/classes/configuration/DefaultConfiguration.php @@ -3,17 +3,19 @@ namespace malkusch\bav; /** - * Default configuration uses FileDataBackendContainer and any available UTF-8 encoder. + * Default configuration uses {@link FileDataBackendContainer} + * and any available UTF-8 encoder. * * Automatic installation is enabled. * - * The update plan is set to LogUpdatePlan. + * The update plan is set to {@link LogUpdatePlan} * * If no UTF-8 encoding is supported ISO-8859-15 will be used. * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL + * @api */ class DefaultConfiguration extends Configuration { diff --git a/classes/dataBackend/update/AutomaticUpdatePlan.php b/classes/dataBackend/update/AutomaticUpdatePlan.php index e35e2fda..c4d89511 100644 --- a/classes/dataBackend/update/AutomaticUpdatePlan.php +++ b/classes/dataBackend/update/AutomaticUpdatePlan.php @@ -8,6 +8,7 @@ * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL + * @api */ class AutomaticUpdatePlan extends UpdatePlan { @@ -35,7 +36,7 @@ public function setNotice($notice) /** * Perform an update. * - * If enabled this method will send a E_USER_NOTICE about the update. + * If enabled (default) this method will send a E_USER_NOTICE about the update. * * @see setNotice() */ diff --git a/classes/dataBackend/update/LogUpdatePlan.php b/classes/dataBackend/update/LogUpdatePlan.php index 2f13718f..7f54ab8d 100644 --- a/classes/dataBackend/update/LogUpdatePlan.php +++ b/classes/dataBackend/update/LogUpdatePlan.php @@ -8,6 +8,7 @@ * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL + * @api */ class LogUpdatePlan extends UpdatePlan { diff --git a/classes/dataBackend/update/UpdatePlan.php b/classes/dataBackend/update/UpdatePlan.php index e577ba1e..7d34d832 100644 --- a/classes/dataBackend/update/UpdatePlan.php +++ b/classes/dataBackend/update/UpdatePlan.php @@ -8,6 +8,7 @@ * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL + * @api */ abstract class UpdatePlan { From a35020e7656d0ba4630fde35f99fd7dbadff41a5 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Mon, 30 Jun 2014 13:03:44 +0200 Subject: [PATCH 231/303] swaped configuration location into tested ConfigurationLocator --- autoloader/index/0.php | 1 + .../configuration/ConfigurationLocator.php | 59 +++++++++ .../configuration/ConfigurationRegistry.php | 25 ++-- docs/changelog.txt | 3 + tests/data/configuration.php | 9 ++ tests/data/no_configuration.php | 3 + tests/unit/ConfigurationLocatorTest.php | 114 ++++++++++++++++++ 7 files changed, 202 insertions(+), 12 deletions(-) create mode 100644 classes/configuration/ConfigurationLocator.php create mode 100644 tests/data/configuration.php create mode 100644 tests/data/no_configuration.php create mode 100644 tests/unit/ConfigurationLocatorTest.php diff --git a/autoloader/index/0.php b/autoloader/index/0.php index 88b12010..c23856a0 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -214,6 +214,7 @@ 'malkusch\bav\fileparserexception' => '../classes/dataBackend/file/fileParser/exception/FileParserException.php', 'malkusch\bav\doctrinedatabackend' => '../classes/dataBackend/orm/doctrine/DoctrineDataBackend.php', 'malkusch\bav\automaticupdateplan' => '../classes/dataBackend/update/AutomaticUpdatePlan.php', + 'malkusch\bav\configurationlocator' => '../classes/configuration/ConfigurationLocator.php', 'malkusch\bav\defaultconfiguration' => '../classes/configuration/DefaultConfiguration.php', 'malkusch\bav\databackendcontainer' => '../classes/dataBackend/DataBackendContainer.php', 'malkusch\bav\databackendexception' => '../classes/dataBackend/exception/DataBackendException.php', diff --git a/classes/configuration/ConfigurationLocator.php b/classes/configuration/ConfigurationLocator.php new file mode 100644 index 00000000..d0521605 --- /dev/null +++ b/classes/configuration/ConfigurationLocator.php @@ -0,0 +1,59 @@ + + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @license GPL + * @see ConfigurationRegistry + */ +class ConfigurationLocator +{ + + /** + * @var string[] + */ + private $paths = array(); + + /** + * Sets the paths where a location is expected. + * + * Those paths may be relative to the include_path. + * + * @param string[] $paths + */ + public function __construct($paths = array()) + { + $this->paths = $paths; + } + + /** + * Locates a configuration. + * + * @return Configuration|null + * @throws ConfigurationException + */ + public function locate() + { + foreach ($this->paths as $path) { + $resolvedPath = stream_resolve_include_path($path); + if (! $resolvedPath) { + continue; + + } + $configuration = require $resolvedPath; + if (! $configuration instanceof Configuration) { + throw new ConfigurationException( + "$resolvedPath must return a malkusch\\bav\\Configuration object." + ); + + } + return $configuration; + + } + return null; + } +} diff --git a/classes/configuration/ConfigurationRegistry.php b/classes/configuration/ConfigurationRegistry.php index bea98406..9dc24abb 100644 --- a/classes/configuration/ConfigurationRegistry.php +++ b/classes/configuration/ConfigurationRegistry.php @@ -35,7 +35,9 @@ class ConfigurationRegistry { - const CONFIGURATION_PATH = "/../../configuration.php"; + const BAV_PATH = "/../../configuration.php"; + + const INCLUDE_PATH = "bav/configuration.php"; /** * @var Configuration @@ -49,21 +51,20 @@ class ConfigurationRegistry * a Configuration object. * * @see DefaultConfiguration + * @throws ConfigurationException */ public static function classConstructor() { - self::setConfiguration(new DefaultConfiguration()); - - $file = __DIR__ . self::CONFIGURATION_PATH; - if (file_exists($file)) { - $configuration = require_once $file; - if (! $configuration instanceof Configuration) { - throw new ConfigurationException("$file must return a Configuration object."); - - } - self::setConfiguration($configuration); - + $locator = new ConfigurationLocator(array( + __DIR__ . self::BAV_PATH, + self::INCLUDE_PATH + )); + $configuration = $locator->locate(); + if ($configuration == null) { + $configuration = new DefaultConfiguration(); + } + self::setConfiguration($configuration); } /** diff --git a/docs/changelog.txt b/docs/changelog.txt index 51088a8b..b9438a74 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -1,5 +1,8 @@ Version 1.1.0 - not yet released -------------------------------- + - configuration.php may now be either in BAV's directory (e.g. + vendor/malkusch/bav/configuration.php) or somewhere in the include path + in bav/configuration.php. -[TODO] add IBAN rule support diff --git a/tests/data/configuration.php b/tests/data/configuration.php new file mode 100644 index 00000000..33d0d257 --- /dev/null +++ b/tests/data/configuration.php @@ -0,0 +1,9 @@ +setTempDirectory("test"); + +return $configuration; diff --git a/tests/data/no_configuration.php b/tests/data/no_configuration.php new file mode 100644 index 00000000..7d3dd7f0 --- /dev/null +++ b/tests/data/no_configuration.php @@ -0,0 +1,3 @@ + + * @licends GPL + * @see ConfigurationLocator + */ +class ConfigurationLocatorTest extends \PHPUnit_Framework_TestCase +{ + + /** + * locate() should return null + * + * @see ConfigurationLocator::locate(); + */ + public function testlocateReturnsNull() + { + $locator = new ConfigurationLocator(array(__DIR__ . "/noop.php")); + $this->assertNull($locator->locate()); + } + + /** + * locate() should throw an exception + * + * @see ConfigurationLocator::locate(); + * @expectedException malkusch\bav\ConfigurationException + */ + public function testlocateThrowsException() + { + $locator = new ConfigurationLocator(array( + __DIR__ . "/../data/no_configuration.php" + )); + $locator->locate(); + } + + /** + * locate() should find absolute paths + * + * @param string[] $paths + * @dataProvider provideTestLocateFindsAbsolutePath + * @see ConfigurationLocator::locate(); + */ + public function testLocateFindsAbsolutePath(array $paths) + { + $locator = new ConfigurationLocator($paths); + $configuration = $locator->locate(); + + $this->assertInstanceOf("malkusch\bav\Configuration", $configuration); + $this->assertEquals("test", $configuration->getTempDirectory()); + } + + /** + * Test cases for testLocateFindsAbsolutePath(). + * + * @return string[][][] + * @see testLocateFindsAbsolutePath() + */ + public function provideTestLocateFindsAbsolutePath() + { + $existingPath = __DIR__ . "/../data/configuration.php"; + $notExistingPath = __DIR__ . "/../data/noop.php"; + + return array( + array(array($existingPath)), + array(array($existingPath, $notExistingPath)), + array(array($notExistingPath, $existingPath)), + ); + } + + /** + * locate() should find paths from the include path + * + * @param string[] $paths + * @dataProvider provideTestLocateFindsIncludePath + * @see ConfigurationLocator::locate(); + */ + public function testLocateFindsIncludePath($includePath, array $paths) + { + set_include_path(get_include_path() . PATH_SEPARATOR . $includePath); + + $locator = new ConfigurationLocator($paths); + $configuration = $locator->locate(); + + $this->assertInstanceOf("malkusch\bav\Configuration", $configuration); + $this->assertEquals("test", $configuration->getTempDirectory()); + + restore_include_path(); + } + + /** + * Test cases for testLocateFindsIncludePath(). + * + * @return string[][][] + * @see testLocateFindsIncludePath() + */ + public function provideTestLocateFindsIncludePath() + { + $existingPath = "configuration.php"; + $notExistingPath = "noop.php"; + $includePath = __DIR__ . "/../data"; + + return array( + array($includePath, array($existingPath)), + array($includePath, array($existingPath, $notExistingPath)), + array($includePath, array($notExistingPath, $existingPath)), + ); + } +} From f6ef7756f17b2b4092ad2dbf69b970d13254a7ad Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Mon, 30 Jun 2014 13:33:39 +0200 Subject: [PATCH 232/303] test configuration initialization of ConfigurationRegistry --- tests/data/bav/configuration.php | 9 +++++ tests/unit/ConfigurationRegistryTest.php | 48 ++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 tests/data/bav/configuration.php create mode 100644 tests/unit/ConfigurationRegistryTest.php diff --git a/tests/data/bav/configuration.php b/tests/data/bav/configuration.php new file mode 100644 index 00000000..33d0d257 --- /dev/null +++ b/tests/data/bav/configuration.php @@ -0,0 +1,9 @@ +setTempDirectory("test"); + +return $configuration; diff --git a/tests/unit/ConfigurationRegistryTest.php b/tests/unit/ConfigurationRegistryTest.php new file mode 100644 index 00000000..a52aac44 --- /dev/null +++ b/tests/unit/ConfigurationRegistryTest.php @@ -0,0 +1,48 @@ + + * @licends GPL + * @see ConfigurationRegistry + */ +class ConfigurationRegistryTest extends \PHPUnit_Framework_TestCase +{ + + /** + * Tests the initialization with a configuration from the include path. + * + * @see ConfigurationRegistry::classConstructor() + */ + public function testInitWithIncludePathConfiguration() + { + set_include_path(get_include_path() . PATH_SEPARATOR . __DIR__ . "/../data/"); + + ConfigurationRegistry::classConstructor(); + $configuration = ConfigurationRegistry::getConfiguration(); + + $this->assertInstanceOf("malkusch\bav\Configuration", $configuration); + $this->assertEquals("test", $configuration->getTempDirectory()); + + restore_include_path(); + } + + /** + * Tests the initialization with the default configuration + * + * @see ConfigurationRegistry::classConstructor() + */ + public function testInitWithDefaultConfiguration() + { + ConfigurationRegistry::classConstructor(); + $configuration = ConfigurationRegistry::getConfiguration(); + + $this->assertInstanceOf("malkusch\bav\DefaultConfiguration", $configuration); + $this->assertNotEquals("test", $configuration->getTempDirectory()); + } +} From 1c528d7df4a83a676f2de85b16ce7e8fa0641ad5 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Mon, 30 Jun 2014 14:05:27 +0200 Subject: [PATCH 233/303] version-0 documentation --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index 757cabdf..45c0b8f1 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,19 @@ Visit and download the latest version or use [Composer } ``` +## Version-0 + +The old version-0 branch (bav-0) is still maintained and will receive updates +for broken or new validation rules. + +```json +{ + "require": { + "malkusch/bav": "~0.29" + } +} +``` + # Autoloader From 3b99f48beb37e7e5e4bf9c50e1abe8e6be843d14 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Mon, 30 Jun 2014 20:45:26 +0200 Subject: [PATCH 234/303] test Lock --- tests/unit/LockTest.php | 137 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 tests/unit/LockTest.php diff --git a/tests/unit/LockTest.php b/tests/unit/LockTest.php new file mode 100644 index 00000000..0dc22758 --- /dev/null +++ b/tests/unit/LockTest.php @@ -0,0 +1,137 @@ + + * @see Lock + */ +class LockTest extends \PHPUnit_Framework_TestCase +{ + + /** + * Tests checkedLock(). + * + * @see Lock::checkedLock() + */ + public function testCheckedLock() + { + $name = __FUNCTION__; + $checkLock = new Lock($name); + $lock = new Lock($name); + + $this->assertFalse($lock->checkedLock()); + $this->assertFalse($checkLock->nonblockingLock()); + + $lock->unlock(); + } + + /** + * Tests executeOnce(). + * + * @see Lock::executeOnce() + */ + public function testExecuteOnce() + { + $name = __FUNCTION__; + + $isExecuted = false; + $isExecutedCheck = false; + + $lock = new Lock($name); + $lock->executeOnce(function () use (&$isExecuted, &$isExecutedCheck, $name) { + $isExecuted = true; + + $checkLock = new Lock($name); + $checkLock->nonblockingExecuteOnce(function () use (&$isExecutedCheck) { + $isExecutedCheck = true; + }); + }); + + $this->assertTrue($isExecuted); + $this->assertFalse($isExecutedCheck); + } + + /** + * Tests lock(). + * + * @see Lock::lock() + */ + public function testLock() + { + $name = __FUNCTION__; + $checkLock = new Lock($name); + $lock = new Lock($name); + + $lock->lock(); + $this->assertFalse($checkLock->nonblockingLock()); + + $lock->unlock(); + } + + /** + * Tests nonblockingExecuteOnce(). + * + * @see Lock::nonblockingExecuteOnce() + */ + public function testNonblockingExecuteOnce() + { + $name = __FUNCTION__; + + $isExecuted = false; + $isExecutedCheck = false; + + $lock = new Lock($name); + $lock->nonblockingExecuteOnce(function () use (&$isExecuted, &$isExecutedCheck, $name) { + $isExecuted = true; + + $checkLock = new Lock($name); + $checkLock->nonblockingExecuteOnce(function () use (&$isExecutedCheck) { + $isExecutedCheck = true; + }); + }); + + $this->assertTrue($isExecuted); + $this->assertFalse($isExecutedCheck); + } + + /** + * Tests nonblockingLock(). + * + * @see Lock::nonblockingLock() + */ + public function testNonblockingLock() + { + $name = __FUNCTION__; + $checkLock = new Lock($name); + $lock = new Lock($name); + + $this->assertTrue($lock->nonblockingLock()); + $this->assertFalse($checkLock->nonblockingLock()); + + $lock->unlock(); + } + + /** + * Tests unlock(). + * + * @see Lock::unlock() + */ + public function testUnlock() + { + $name = __FUNCTION__; + $checkLock = new Lock($name); + $lock = new Lock($name); + + $lock->lock(); + $lock->unlock(); + $this->assertTrue($checkLock->nonblockingLock()); + + $checkLock->unlock(); + } +} From 5f61ad17acf6b99cd4f8d83babafbb378cf1a9a6 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Mon, 30 Jun 2014 21:06:27 +0200 Subject: [PATCH 235/303] removed shutdown hook --- tests/unit/ConfigurationRegistryTest.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/unit/ConfigurationRegistryTest.php b/tests/unit/ConfigurationRegistryTest.php index a52aac44..67ad5d75 100644 --- a/tests/unit/ConfigurationRegistryTest.php +++ b/tests/unit/ConfigurationRegistryTest.php @@ -14,6 +14,14 @@ class ConfigurationRegistryTest extends \PHPUnit_Framework_TestCase { + /** + * Disable update hook + */ + protected function tearDown() + { + ConfigurationRegistry::getConfiguration()->setUpdatePlan(null); + } + /** * Tests the initialization with a configuration from the include path. * From d699af67dbfff67c71dbec1480832fcfa07599e7 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Mon, 30 Jun 2014 21:23:52 +0200 Subject: [PATCH 236/303] TODO BIC index for FileDataBackend --- docs/changelog.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/changelog.txt b/docs/changelog.txt index b9438a74..291fc8dc 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -8,6 +8,8 @@ Version 1.1.0 - not yet released -[TODO] evaluate IBAN validation support + -[TODO] BIC index for FileDataBackend + Version 1.0.0 - June 25, 2014 ----------------------------- From a310c3e0150ff5fc4b48c9ab86cf4e3dfd8828d2 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Mon, 30 Jun 2014 22:49:42 +0200 Subject: [PATCH 237/303] replaced bav's binary search with malkusch/php-index --- README.md | 18 +---- classes/dataBackend/file/FileDataBackend.php | 80 ++++++++------------ composer.json | 3 +- docs/changelog.txt | 2 + docs/example.php | 5 +- tests/bootstrap.php | 2 +- tests/unit-large/BackendTest.php | 1 - tests/unit/AgencyQueryTest.php | 1 - 8 files changed, 40 insertions(+), 72 deletions(-) diff --git a/README.md b/README.md index 45c0b8f1..33fa2ff0 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ BAV (bank account validator) is a validation library for German bank accounts. # Installation -Visit and download the latest version or use [Composer](https://getcomposer.org/): +Use [Composer](https://getcomposer.org/): ```json { @@ -29,22 +29,6 @@ for broken or new validation rules. ``` -# Autoloader - -BAV uses the autoloader generated by [PHP-Autoloader](http://php-autoloader.malkusch.de/en/). -If you don't use composer's autoloader (`vendor/autoload.php`) you have -to include `bav/autoloader/autoloader.php`. - -```php -// Composer's autoloader: -require_once __DIR__ . "/vendor/autoload.php"; - -use malkusch\bav\BAV; - -$bav = new BAV(); -``` - - # Configuration You can use BAV out of the box. BAV comes with a ready to play default diff --git a/classes/dataBackend/file/FileDataBackend.php b/classes/dataBackend/file/FileDataBackend.php index fe3b18f8..6e7e7ede 100644 --- a/classes/dataBackend/file/FileDataBackend.php +++ b/classes/dataBackend/file/FileDataBackend.php @@ -2,6 +2,8 @@ namespace malkusch\bav; +use \malkusch\index\Index_FixedSize; + /** * It uses the huge file from the Bundesbank and uses a binary search to find a row. * This is the easiest way to use BAV. BAV can work as a standalone application without @@ -27,6 +29,11 @@ class FileDataBackend extends DataBackend * @var FileParser */ private $parser; + + /** + * @var Index_FixedSize + */ + private $index; /** * @var FileUtil @@ -41,6 +48,22 @@ public function __construct($file = null) $this->parser = new FileParser($file); $this->fileUtil = new FileUtil(); } + + /** + * @return Index_FixedSize + */ + private function getIndex() + { + if ($this->index == null) { + $this->index = new Index_FixedSize( + $this->parser->getFile(), + FileParser::BANKID_OFFSET, + FileParser::BANKID_LENGTH + ); + + } + return $this->index; + } /** * Returns the path to the data file. @@ -221,21 +244,7 @@ public function getNewBank($bankID) { try { $this->parser->rewind(); - /** - * TODO Binary Search is also possible on $this->contextCache, - * to reduce the interval of $offset and $end; - */ - if (isset($this->contextCache[$bankID])) { - return $this->findBank( - $bankID, - $this->contextCache[$bankID]->getLine(), - $this->contextCache[$bankID]->getLine() - ); - - } else { - return $this->findBank($bankID, 0, $this->parser->getLines()); - - } + return $this->findBank($bankID); } catch (FileParserException $e) { throw new DataBackendIOException(); @@ -252,42 +261,19 @@ public function getNewBank($bankID) * @param int $length the line count * @return Bank */ - private function findBank($bankID, $offset, $end) + private function findBank($bankID) { - if ($end - $offset < 0) { + $result = $this->getIndex()->search($bankID); + + if ($result == null) { throw new BankNotFoundException($bankID); } - $line = $offset + (int)(($end - $offset) / 2); - $blz = $this->parser->getBankID($line); - - /** - * This handling is bad, as it may double the work - */ - if ($blz == '00000000') { - try { - return $this->findBank($bankID, $offset, $line - 1); - - } catch (BankNotFoundException $e) { - return $this->findBank($bankID, $line + 1, $end); - - } - - } elseif (! isset($this->contextCache[$blz])) { - $this->contextCache[$blz] = new FileParserContext($line); - - } - - if ($blz < $bankID) { - return $this->findBank($bankID, $line + 1, $end); - - } elseif ($blz > $bankID) { - return $this->findBank($bankID, $offset, $line - 1); - - } else { - return $this->parser->getBank($this, $this->parser->readLine($line)); - - } + + $line = $result->getOffset() / $this->parser->getLineLength(); + $this->contextCache[$bankID] = new FileParserContext($line); + + return $this->parser->getBank($this, $this->parser->readLine($line)); } /** diff --git a/composer.json b/composer.json index 13e18116..5aca975b 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,8 @@ "files": ["autoloader/autoloader.php"] }, "require": { - "php": ">=5" + "php": ">=5", + "malkusch/php-index": "0.0.1" }, "suggest": { "ext-PDO": "Allows storing bank information in a database", diff --git a/docs/changelog.txt b/docs/changelog.txt index 291fc8dc..cd148401 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -4,6 +4,8 @@ Version 1.1.0 - not yet released vendor/malkusch/bav/configuration.php) or somewhere in the include path in bav/configuration.php. + - Replaced binary search in FileDataBackend with malkusch/php-index + -[TODO] add IBAN rule support -[TODO] evaluate IBAN validation support diff --git a/docs/example.php b/docs/example.php index 6c27a9b5..83f93ca7 100755 --- a/docs/example.php +++ b/docs/example.php @@ -11,10 +11,7 @@ * @see BAV */ -/** - * We need to require the autoloader - */ -require_once __DIR__ . "/../autoloader/autoloader.php"; +require_once __DIR__ . "/../vendor/autoload.php"; use malkusch\bav\BAV; diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 5281c838..03601dff 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -1,4 +1,4 @@ Date: Tue, 1 Jul 2014 00:33:41 +0200 Subject: [PATCH 238/303] switch to php-index master --- classes/dataBackend/file/FileDataBackend.php | 6 +++--- composer.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/classes/dataBackend/file/FileDataBackend.php b/classes/dataBackend/file/FileDataBackend.php index 6e7e7ede..206f4a82 100644 --- a/classes/dataBackend/file/FileDataBackend.php +++ b/classes/dataBackend/file/FileDataBackend.php @@ -2,7 +2,7 @@ namespace malkusch\bav; -use \malkusch\index\Index_FixedSize; +use \malkusch\index\FixedSizeIndex; /** * It uses the huge file from the Bundesbank and uses a binary search to find a row. @@ -50,12 +50,12 @@ public function __construct($file = null) } /** - * @return Index_FixedSize + * @return FixedSizeIndex */ private function getIndex() { if ($this->index == null) { - $this->index = new Index_FixedSize( + $this->index = new FixedSizeIndex( $this->parser->getFile(), FileParser::BANKID_OFFSET, FileParser::BANKID_LENGTH diff --git a/composer.json b/composer.json index 5aca975b..a8f325eb 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,7 @@ }, "require": { "php": ">=5", - "malkusch/php-index": "0.0.1" + "malkusch/php-index": "dev-master" }, "suggest": { "ext-PDO": "Allows storing bank information in a database", From 7c6e67e64c9c5f644b9b0f65b1719c99cb6107d1 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 1 Jul 2014 10:07:27 +0200 Subject: [PATCH 239/303] api references --- README.md | 55 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 45c0b8f1..9233560e 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ $bav = new BAV(); # Configuration You can use BAV out of the box. BAV comes with a ready to play default -configuration (`DefaultConfiguration`): +configuration ([`DefaultConfiguration`](http://bav-php.github.io/bav/class-malkusch.bav.DefaultConfiguration.html)): * `UTF-8` encoding (if supported) @@ -62,8 +62,10 @@ script. The container will download the Bundesbank file upon the first execution * update plan which triggers an E_USER_NOTICE if the Bundesbank file is outdated. -You can define your own configuration by calling `ConfigurationRegistry::setConfiguration()` -or preferably creating the file `bav/configuration.php` which returns a `Configuration` object: +You can define your own configuration by calling +[`ConfigurationRegistry::setConfiguration()`](http://bav-php.github.io/bav/class-malkusch.bav.ConfigurationRegistry.html#_setConfiguration) +or preferably creating the file `bav/configuration.php` which returns a +[`Configuration`](http://bav-php.github.io/bav/class-malkusch.bav.Configuration.html) object: ```php namespace malkusch\bav; @@ -99,7 +101,9 @@ $bav->update(); ## Automatic -Enable automatic updates with `AutomaticUpdatePlan` in your `bav/configuration.php`: +Enable automatic updates with +[`AutomaticUpdatePlan`](http://bav-php.github.io/bav/class-malkusch.bav.AutomaticUpdatePlan.html) +in your `bav/configuration.php`: ```php namespace malkusch\bav; @@ -115,39 +119,46 @@ hook. I.e. it won't bother users during normal operations. # Usage -You can use BAV with the api facade `BAV`. +You can use BAV with the api facade +[`BAV`](http://bav-php.github.io/bav/class-malkusch.bav.BAV.html): -* `BAV::isValidBank($bankID)`: Returns true for existing bank ids. +* [`BAV::isValidBank($bankID)`](http://bav-php.github.io/bav/class-malkusch.bav.BAV.html#_isValidBank): +Returns true for existing bank ids. -* `BAV::isValidBankAccount($bankID, $account)`: Returns true for existing accounts of an existing -bank. +* [`BAV::isValidBankAccount($bankID, $account)`](http://bav-php.github.io/bav/class-malkusch.bav.BAV.html#_isValidBankAccount): +Returns true for existing accounts of an existing bank. -* `BAV::isValidAccount($account)`: This method validates an account against the bank -of the last `isValidBank()` call. +* [`BAV::isValidAccount($account)`](http://bav-php.github.io/bav/class-malkusch.bav.BAV.html#_isValidAccount): +This method validates an account against the bank of the last `isValidBank()` call. -* `BAV::getValidBankFilterCallback()`: Returns a callback for filter bank validation. +* [`BAV::getValidBankFilterCallback()`](http://bav-php.github.io/bav/class-malkusch.bav.BAV.html#_getValidBankFilterCallback): +Returns a callback for filter bank validation. -* `BAV::getValidAccountFilterCallback()`: Returns a callback for filter account validation. -The account filter needs to be called after the bank filter. +* [`BAV::getValidAccountFilterCallback()`](http://bav-php.github.io/bav/class-malkusch.bav.BAV.html#_getValidAccountFilterCallback): +Returns a callback for filter account validation. The account filter needs +to be called after the bank filter. -* `BAV::getMainAgency()`: Returns the main agency of a bank. +* [`BAV::getMainAgency()`](http://bav-php.github.io/bav/class-malkusch.bav.BAV.html#_getMainAgency): +Returns the main agency of a bank. -* `BAV::getAgencies()`: Returns further agencies. The main agency is not included in this list. +* [`BAV::getAgencies()`](http://bav-php.github.io/bav/class-malkusch.bav.BAV.html#_getAgencies): +Returns further agencies. The main agency is not included in this list. This list can be empty. -An Agency object has the fields: +An [`Agency`](http://bav-php.github.io/bav/class-malkusch.bav.Agency.html) +object has the fields: -* `Agency::getBIC()` +* [`Agency::getBIC()`](http://bav-php.github.io/bav/class-malkusch.bav.Agency.html#_getBIC) -* `Agency::getPostcode()` +* [`Agency::getPostcode()`](http://bav-php.github.io/bav/class-malkusch.bav.Agency.html#_getPostcode) -* `Agency::getCity()` +* [`Agency::getCity()`](http://bav-php.github.io/bav/class-malkusch.bav.Agency.html#_getCity) -* `Agency::getName()` +* [`Agency::getName()`](http://bav-php.github.io/bav/class-malkusch.bav.Agency.html#_getName) -* `Agency::getShortTerm()` +* [`Agency::getShortTerm()`](http://bav-php.github.io/bav/class-malkusch.bav.Agency.html#_getShortTerm) -* `Agency::getPAN()` +* [`Agency::getPAN()`](http://bav-php.github.io/bav/class-malkusch.bav.Agency.html#_getPAN) ## Example From 28e33857044fb61effedd31aee99a5c8a5b0d759 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 1 Jul 2014 10:18:57 +0200 Subject: [PATCH 240/303] added the backend container to the api --- classes/dataBackend/DataBackendContainer.php | 1 + classes/dataBackend/file/FileDataBackendContainer.php | 1 + classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php | 1 + classes/dataBackend/pdo/PDODataBackendContainer.php | 1 + 4 files changed, 4 insertions(+) diff --git a/classes/dataBackend/DataBackendContainer.php b/classes/dataBackend/DataBackendContainer.php index 0f05451b..4de34885 100644 --- a/classes/dataBackend/DataBackendContainer.php +++ b/classes/dataBackend/DataBackendContainer.php @@ -9,6 +9,7 @@ * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL * @see DataBackend + * @api */ abstract class DataBackendContainer { diff --git a/classes/dataBackend/file/FileDataBackendContainer.php b/classes/dataBackend/file/FileDataBackendContainer.php index 6450fb75..fecf6e13 100644 --- a/classes/dataBackend/file/FileDataBackendContainer.php +++ b/classes/dataBackend/file/FileDataBackendContainer.php @@ -9,6 +9,7 @@ * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL * @see DataBackend + * @api */ class FileDataBackendContainer extends DataBackendContainer { diff --git a/classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php b/classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php index 13bf07c8..bafbbaa2 100644 --- a/classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php +++ b/classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php @@ -15,6 +15,7 @@ * @license GPL * @see DataBackend * @link http://www.doctrine-project.org/ + * @api */ class DoctrineBackendContainer extends DataBackendContainer { diff --git a/classes/dataBackend/pdo/PDODataBackendContainer.php b/classes/dataBackend/pdo/PDODataBackendContainer.php index 44ac27fa..da25e8b7 100644 --- a/classes/dataBackend/pdo/PDODataBackendContainer.php +++ b/classes/dataBackend/pdo/PDODataBackendContainer.php @@ -9,6 +9,7 @@ * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license GPL * @see DataBackend + * @api */ class PDODataBackendContainer extends DataBackendContainer { From dec5730d44fdb128b538f5bf26415d6ec3178e46 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 1 Jul 2014 10:32:53 +0200 Subject: [PATCH 241/303] added the backend container to the api --- README.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9233560e..3db038ed 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,8 @@ configuration ([`DefaultConfiguration`](http://bav-php.github.io/bav/class-malku * `UTF-8` encoding (if supported) -* `FileDataBackendContainer`. I.e. it uses binary search on the file from the Bundesbank. +* [`FileDataBackendContainer`](http://bav-php.github.io/bav/class-malkusch.bav.FileDataBackendContainer.html). +I.e. it uses binary search on the file from the Bundesbank. Note that this data backend uses the directory `bav/data` for install and update operations. You have to make sure that this directory is writable. @@ -202,10 +203,13 @@ You may have: in to either the `mb_*` or the `iconv_*` functions. If these functions are missing BAV works only with the ISO-8859-15 encoding. -* **PDO**: If you intend to use a DBS you need to use `PDODataBackendContainer`. +* **PDO**: If you intend to use a DBS you need to use +[`PDODataBackendContainer`](http://bav-php.github.io/bav/class-malkusch.bav.PDODataBackendContainer.html). `PDODataBackendContainer` needs a `PDO` support compiled in PHP. -* **doctrine/orm**: You can use `DoctrineBackendContainer` which uses doctrine +* **doctrine/orm**: You can use +[`DoctrineBackendContainer`](http://bav-php.github.io/bav/class-malkusch.bav.DoctrineBackendContainer.html) +which uses doctrine as data backend. From 42e21b4bced501401812288112dc24b9574ae007 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Wed, 2 Jul 2014 21:29:50 +0200 Subject: [PATCH 242/303] removed legacy code for loading a type validator --- classes/bank/Bank.php | 2 - classes/validator/Validator.php | 17 +++---- .../exception/ValidatorNotExistsException.php | 49 ------------------- 3 files changed, 6 insertions(+), 62 deletions(-) delete mode 100644 classes/validator/exception/ValidatorNotExistsException.php diff --git a/classes/bank/Bank.php b/classes/bank/Bank.php index 9a911197..fb8e76d4 100644 --- a/classes/bank/Bank.php +++ b/classes/bank/Bank.php @@ -139,7 +139,6 @@ public function setDataBackend(DataBackend $backend) /** * Use this method to check your bank account. * - * @throws ValidatorNotExistsException for some reason the validator might not be implemented * @param string $account * @return bool */ @@ -149,7 +148,6 @@ public function isValid($account) } /** - * @throws ValidatorNotExistsException * @return Validator */ public function getValidator() diff --git a/classes/validator/Validator.php b/classes/validator/Validator.php index 88ed0009..ebeb5670 100644 --- a/classes/validator/Validator.php +++ b/classes/validator/Validator.php @@ -66,21 +66,16 @@ public function __construct(Bank $bank) } /** - * @throws ValidatorNotExistsException * @return Validator */ public static function getInstance(Bank $bank) { - $type = trim(strtoupper($bank->getValidationType())); - $class = "Validator$type"; - $file = __DIR__."/validators/$class.php"; - if (! file_exists($file)) { - throw new ValidatorNotExistsException($bank); - - } - require_once $file; - $nsClass = __NAMESPACE__ . "\\$class"; - return new $nsClass($bank); + $class = sprintf( + '%s\Validator%s', + __NAMESPACE__, + $bank->getValidationType() + ); + return new $class($bank); } /** diff --git a/classes/validator/exception/ValidatorNotExistsException.php b/classes/validator/exception/ValidatorNotExistsException.php deleted file mode 100644 index 62b78ee3..00000000 --- a/classes/validator/exception/ValidatorNotExistsException.php +++ /dev/null @@ -1,49 +0,0 @@ - - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * - * @package classes - * @subpackage validator - * @author Markus Malkusch - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @copyright Copyright (C) 2006 Markus Malkusch - */ -class ValidatorNotExistsException extends ValidatorException -{ - - /** - * @var Bank - */ - private $bank; - - public function __construct(Bank $bank) - { - $this->bank = $bank; - } - - /** - * @return Bank - */ - public function getBank() - { - return $this->bank; - } -} From 6b0f693ca6b08db3e839152949b842a8d4e3ba98 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Wed, 2 Jul 2014 22:09:14 +0200 Subject: [PATCH 243/303] added ValidatorFactory --- autoloader/index/0.php | 2 +- classes/bank/Bank.php | 3 +- classes/validator/ValidatorFactory.php | 27 +++++++++++ tests/unit/ValidatorFactoryTest.php | 66 ++++++++++++++++++++++++++ 4 files changed, 96 insertions(+), 2 deletions(-) create mode 100644 classes/validator/ValidatorFactory.php create mode 100644 tests/unit/ValidatorFactoryTest.php diff --git a/autoloader/index/0.php b/autoloader/index/0.php index c23856a0..e7b8cf51 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -202,6 +202,7 @@ 'malkusch\bav\filedatabackend' => '../classes/dataBackend/file/FileDataBackend.php', 'malkusch\bav\regexpuripicker' => '../classes/dataBackend/file/download/uripicker/RegExpURIPicker.php', 'malkusch\bav\iso8859encoding' => '../classes/encoding/ISO8859Encoding.php', + 'malkusch\bav\validatorfactory' => '../classes/validator/ValidatorFactory.php', 'malkusch\bav\fallbackuripicker' => '../classes/dataBackend/file/download/uripicker/FallbackURIPicker.php', 'malkusch\bav\fileparsercontext' => '../classes/dataBackend/file/fileParser/FileParserContext.php', 'malkusch\bav\encodingexception' => '../classes/encoding/exception/EncodingException.php', @@ -235,7 +236,6 @@ 'malkusch\bav\fileparsercontextexception' => '../classes/dataBackend/file/fileParser/exception/FileParserContextException.php', 'malkusch\bav\invalidlinelengthexception' => '../classes/dataBackend/file/validator/exception/InvalidLineLengthException.php', 'malkusch\bav\weightediterationvalidator' => '../classes/validator/WeightedIterationValidator.php', - 'malkusch\bav\validatornotexistsexception' => '../classes/validator/exception/ValidatorNotExistsException.php', 'malkusch\bav\fileparsernotexistsexception' => '../classes/dataBackend/file/fileParser/exception/FileParserNotExistsException.php', 'malkusch\bav\unsupportedencodingexception' => '../classes/encoding/exception/UnsupportedEncodingException.php', 'malkusch\bav\validatoroutofboundsexception' => '../classes/validator/exception/ValidatorOutOfBoundsException.php', diff --git a/classes/bank/Bank.php b/classes/bank/Bank.php index fb8e76d4..d6a1dad6 100644 --- a/classes/bank/Bank.php +++ b/classes/bank/Bank.php @@ -153,7 +153,8 @@ public function isValid($account) public function getValidator() { if (is_null($this->validator)) { - $this->validator = Validator::getInstance($this); + $factory = new ValidatorFactory(); + $this->validator = $factory->build($this); } return $this->validator; diff --git a/classes/validator/ValidatorFactory.php b/classes/validator/ValidatorFactory.php new file mode 100644 index 00000000..b409e8c0 --- /dev/null +++ b/classes/validator/ValidatorFactory.php @@ -0,0 +1,27 @@ + + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @license GPL + */ +class ValidatorFactory +{ + + /** + * Builds a validator for a bank. + * + * @return Validator + * @see Bank::getValidationType() + * @see Bank::getValidator() + */ + public function build(Bank $bank) + { + $class = sprintf('%s\Validator%s', __NAMESPACE__, $bank->getValidationType()); + return new $class($bank); + } +} diff --git a/tests/unit/ValidatorFactoryTest.php b/tests/unit/ValidatorFactoryTest.php new file mode 100644 index 00000000..dda8aa75 --- /dev/null +++ b/tests/unit/ValidatorFactoryTest.php @@ -0,0 +1,66 @@ + + * @license GPL + * @see ValidatorFactory + */ +class ValidatorFactoryTest extends \PHPUnit_Framework_TestCase +{ + + /** + * @var ValidatorFactory + */ + private $factory; + + protected function setUp() + { + $this->factory = new ValidatorFactory(); + } + + /** + * Tests build() + * + * @param string $type Validation type + * @see ValidatorFactory::build() + * @dataProvider provideTestBuild + */ + public function testBuild($type) + { + $bav = new BAV(); + $bank = new Bank($bav->getDataBackend(), null, $type); + + $validator = $this->factory->build($bank); + $this->assertInstanceOf("\\malkusch\\bav\\Validator$type", $validator); + } + + /** + * Test cases for testBuild() + * + * @return string[][] + * @see testBuild() + */ + public function provideTestBuild() + { + $cases = array(); + + $files = ClassFile::getClassFiles(__DIR__.'/../../classes/validator/validators/'); + foreach ($files as $class) { + if (! preg_match('~^Validator([A-Z0-9]{2})$~', $class->getName(), $matchType)) { + continue; + + } + $type = $matchType[1]; + $cases[] = array($type); + + } + + return $cases; + } +} From a0465c9c7ed27192c842e358ea610cf98a17c1fb Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Wed, 2 Jul 2014 22:11:04 +0200 Subject: [PATCH 244/303] removed unused test --- tests/unit/ValidatorTest.php | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/tests/unit/ValidatorTest.php b/tests/unit/ValidatorTest.php index 9f7462b7..fd16897d 100644 --- a/tests/unit/ValidatorTest.php +++ b/tests/unit/ValidatorTest.php @@ -92,26 +92,6 @@ public function provideAccountsAndBanksInAllLengths() return $providedAccountsAndBanks; } - /** - * This Test runs all validators in order to find parse Errors - * and fills {@link $implementedBanks}. - * - * @param String $validatorType - * @throws ClassFileIOException - * @throws MissingClassException - * @dataProvider provideBanks - */ - public function testFindParseErrors(Bank $bank) - { - /** - * testing 10 random bank accounts - */ - for ($i = 0; $i < 10; $i++) { - $bank->isValid(mt_rand(0, 9999999999)); - - } - } - /** * 0 - 0000000000 should always be invalid * From 02b0e7add340525f0ef3b4076389f98656df4743 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Wed, 2 Jul 2014 22:54:25 +0200 Subject: [PATCH 245/303] Validator::isValid() raises an E_USER_WARNING if the parameter $account is no string. --- classes/validator/Validator.php | 34 +++++++++++++++++++- classes/validator/validators/Validator59.php | 12 +++---- classes/validator/validators/Validator68.php | 21 +++++++----- classes/validator/validators/Validator75.php | 4 ++- docs/changelog.txt | 3 ++ tests/unit/ValidatorTest.php | 13 ++++++++ 6 files changed, 71 insertions(+), 16 deletions(-) diff --git a/classes/validator/Validator.php b/classes/validator/Validator.php index ebeb5670..7d6e5305 100644 --- a/classes/validator/Validator.php +++ b/classes/validator/Validator.php @@ -79,12 +79,44 @@ public static function getInstance(Bank $bank) } /** - * @param string $account + * Raises a E_USER_WARNING for non string accounts. + * + * @param string $account bank account + */ + protected function checkType($account) + { + if (is_string($account)) { + return; + + } + trigger_error( + "Only validation of strings are defined." + . "Note that e.g. an (int) 0020012357 evaluates to (string) '4199663'.", + E_USER_WARNING + ); + } + + /** + * Validates a bank account. + * + * Null is considered invalid. + * + * Note: The parameter $account should be a string. If it's not a string + * an E_USER_WARNING will be raised. Bank accounts may start with leading + * zeros, wich lead to unexpected results if not treated as a string ( + * e.g. (int) 0020012357 evaluates to (string) '4199663'). + * + * @param string $account bank account * @return bool */ public function isValid($account) { try { + if ($account == null) { + return false; + + } + $this->checkType($account); $this->init($account); $this->validate(); return ltrim($account, "0") != "" && $this->getResult(); diff --git a/classes/validator/validators/Validator59.php b/classes/validator/validators/Validator59.php index da707bba..ec45a7e7 100644 --- a/classes/validator/validators/Validator59.php +++ b/classes/validator/validators/Validator59.php @@ -30,18 +30,18 @@ public function __construct(Bank $bank) $this->setWeights(array(2, 1)); } - - public function isValid($account) + + protected function getResult() { - /* Es ist jedoch zu beachten, dass Kontonummern, die + /* + * Es ist jedoch zu beachten, dass Kontonummern, die * kleiner als 9-stellig sind,[…] als richtig behandelt werden. */ - $trimedAccount = ltrim($account, "0"); + $trimedAccount = ltrim($this->account, "0"); if (strlen($trimedAccount) < 9) { return ! empty($trimedAccount) && true; } - - return parent::isValid($account); + return parent::getResult(); } } diff --git a/classes/validator/validators/Validator68.php b/classes/validator/validators/Validator68.php index 293697a2..c40f622d 100644 --- a/classes/validator/validators/Validator68.php +++ b/classes/validator/validators/Validator68.php @@ -49,27 +49,32 @@ public function __construct(Bank $bank) $this->validators[1]->setWeights(array(2, 1, 2, 1, 2, 0, 0, 1)); } - public function isValid($account) + protected function init($account) { + parent::init($account); + // Die Kontonummern [..] enthalten keine führenden Nullen. - $account = ltrim($account, "0"); - - switch (strlen($account)) { + $this->account = ltrim($this->account, "0"); + } + + protected function getResult() + { + switch (strlen($this->account)) { case 10: - return $account{3} == 9 && $this->validator10->isValid($account); + return $this->account{3} == 9 && $this->validator10->isValid($this->account); case 9: - if ($account >= 400000000 && $account <= 499999999) { + if ($this->account >= 400000000 && $this->account <= 499999999) { return false; } - return parent::isValid($account); + return parent::getResult(); case 6: case 7: case 8: - return parent::isValid($account); + return parent::getResult(); default: return false; diff --git a/classes/validator/validators/Validator75.php b/classes/validator/validators/Validator75.php index a659ed8a..1231341b 100644 --- a/classes/validator/validators/Validator75.php +++ b/classes/validator/validators/Validator75.php @@ -32,9 +32,11 @@ public function __construct(Bank $bank) $this->setStart(4); $this->setEnd(-2); } - + public function isValid($account) { + $this->checkType($account); + $account = ltrim($account, '0'); $length = strlen($account); diff --git a/docs/changelog.txt b/docs/changelog.txt index 291fc8dc..73f1e7ef 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -4,6 +4,9 @@ Version 1.1.0 - not yet released vendor/malkusch/bav/configuration.php) or somewhere in the include path in bav/configuration.php. + - Validator::isValid() raises an E_USER_WARNING if the parameter $account + is no string. + -[TODO] add IBAN rule support -[TODO] evaluate IBAN validation support diff --git a/tests/unit/ValidatorTest.php b/tests/unit/ValidatorTest.php index fd16897d..a8584808 100644 --- a/tests/unit/ValidatorTest.php +++ b/tests/unit/ValidatorTest.php @@ -143,6 +143,19 @@ function (&$item) { ); return $verifyArray; } + + /** + * Validator::isValid() with an int should raise a warning. + * + * @see Validator::isValid() + * @dataProvider provideBanks + * @expectedException PHPUnit_Framework_Error_Warning + */ + public function testWarningForIsValidWithInt(Bank $bank) + { + $intAccount = 0020012357; + $bank->isValid($intAccount); + } /** * @dataProvider provideTestAccounts From 3f3972d38ce2b85bd7fe1f52005d923f02c482c4 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Wed, 2 Jul 2014 22:59:10 +0200 Subject: [PATCH 246/303] removed unused method --- classes/validator/Validator.php | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/classes/validator/Validator.php b/classes/validator/Validator.php index 7d6e5305..8afe141c 100644 --- a/classes/validator/Validator.php +++ b/classes/validator/Validator.php @@ -65,19 +65,6 @@ public function __construct(Bank $bank) $this->setChecknumberPosition(-1); } - /** - * @return Validator - */ - public static function getInstance(Bank $bank) - { - $class = sprintf( - '%s\Validator%s', - __NAMESPACE__, - $bank->getValidationType() - ); - return new $class($bank); - } - /** * Raises a E_USER_WARNING for non string accounts. * From 407d213547c859e481c3249ee61cfebe3c578230 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Thu, 3 Jul 2014 18:32:52 +0200 Subject: [PATCH 247/303] PSR2 --- classes/validator/validators/Validator59.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/validator/validators/Validator59.php b/classes/validator/validators/Validator59.php index ec45a7e7..92832ee3 100644 --- a/classes/validator/validators/Validator59.php +++ b/classes/validator/validators/Validator59.php @@ -33,7 +33,7 @@ public function __construct(Bank $bank) protected function getResult() { - /* + /* * Es ist jedoch zu beachten, dass Kontonummern, die * kleiner als 9-stellig sind,[…] als richtig behandelt werden. */ From c424d565686279fe96c9edbbaa141c13e74d04c7 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Thu, 3 Jul 2014 21:32:26 +0200 Subject: [PATCH 248/303] fixed a bug in FileParser which did hide the last line in the file of the Bundesbank. --- .../file/fileParser/FileParser.php | 4 +- docs/changelog.txt | 3 + tests/data/fileParserTest/bb-excerpt.txt | 10 ++ tests/data/fileParserTest/simple.txt | 2 + tests/unit/FileParserTest.php | 133 ++++++++++++++++++ 5 files changed, 151 insertions(+), 1 deletion(-) create mode 100644 tests/data/fileParserTest/bb-excerpt.txt create mode 100644 tests/data/fileParserTest/simple.txt create mode 100644 tests/unit/FileParserTest.php diff --git a/classes/dataBackend/file/fileParser/FileParser.php b/classes/dataBackend/file/fileParser/FileParser.php index b68c8ece..29e218c4 100644 --- a/classes/dataBackend/file/fileParser/FileParser.php +++ b/classes/dataBackend/file/fileParser/FileParser.php @@ -150,7 +150,9 @@ private function init() ); } - $this->lines = floor(($filesize - 1) / $this->lineLength); + + // size + 1, because the last line has no line break + $this->lines = floor(($filesize + 1) / $this->lineLength); } /** diff --git a/docs/changelog.txt b/docs/changelog.txt index cd148401..be45418c 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -6,6 +6,9 @@ Version 1.1.0 - not yet released - Replaced binary search in FileDataBackend with malkusch/php-index + - fixed a bug in FileParser which did hide the last line in the file + of the Bundesbank. + -[TODO] add IBAN rule support -[TODO] evaluate IBAN validation support diff --git a/tests/data/fileParserTest/bb-excerpt.txt b/tests/data/fileParserTest/bb-excerpt.txt new file mode 100644 index 00000000..cb9b86f7 --- /dev/null +++ b/tests/data/fileParserTest/bb-excerpt.txt @@ -0,0 +1,10 @@ +100000001Bundesbank 10591Berlin BBk Berlin 20100MARKDEF110009011380U000000000 +100100101Postbank 10916Berlin Postbank Berlin 10010PBNKDEFFXXX24000538U000000000 +100101111SEB 10789Berlin SEB Berlin 25805ESSEDE5F10013005361U000000000 +100104241Aareal Bank 10666Berlin Aareal Bank 26910AARBDE5W10009004795U000000000 +100196101Dexia Kommunalbank Deutschland 10969Berlin Dexia Berlin DXIADEBBXXX09055273U000000000 +100202001BHF-BANK 10117Berlin BHF-BANK Berlin 25155BHFBDEFF10060004794U000000000 +100205001Bank für Sozialwirtschaft 10178Berlin Bank für Sozialwirtschaft 25013BFSWDE33BER09000530U000000000 +100208901UniCredit Bank - HypoVereinsbank 10896Berlin UniCredit Bank-HypoVereinbk22014HYVEDEMM48899039785U000000000 +100208902UniCredit Bank - HypoVereinsbank 14532Kleinmachnow UniCredit Bank-HypoVereinbk22014HYVEDEMM48899049352U000000000 +100208902UniCredit Bank - HypoVereinsbank 16515Oranienburg UniCredit Bank-HypoVereinbk22014HYVEDEMM48899049745U000000000 diff --git a/tests/data/fileParserTest/simple.txt b/tests/data/fileParserTest/simple.txt new file mode 100644 index 00000000..c61a5c04 --- /dev/null +++ b/tests/data/fileParserTest/simple.txt @@ -0,0 +1,2 @@ +12345 +12345 \ No newline at end of file diff --git a/tests/unit/FileParserTest.php b/tests/unit/FileParserTest.php new file mode 100644 index 00000000..fa42021a --- /dev/null +++ b/tests/unit/FileParserTest.php @@ -0,0 +1,133 @@ + + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @see FileParser + */ +class FileParserTest extends \PHPUnit_Framework_TestCase +{ + + /** + * Tests using the default file + * + * @see FileParser::__construct() + */ + public function testDefaultFile() + { + $parser = new FileParser(); + $this->assertEquals( + realpath(__DIR__ . "/../../data/banklist.txt"), + realpath($parser->getFile()) + ); + } + + /** + * Tests getAgency() + * + * @see FileParser::getAgency() + */ + public function testGetAgency() + { + $this->markTestIncomplete(); + } + + /** + * Tests getBank() + * + * @see FileParser::getBank() + */ + public function testGetBank() + { + $this->markTestIncomplete(); + } + + /** + * Tests getBankID() + * + * @see FileParser::getBankID() + */ + public function testGetBankID() + { + $this->markTestIncomplete(); + } + + /** + * Tests getLineLength() + * + * @see FileParser::getLineLength() + * @dataProvider provideTestGetLineLength + */ + public function testGetLineLength($lineLength, $file) + { + $parser = new FileParser($file); + $this->assertEquals($lineLength, $parser->getLineLength()); + } + + /** + * Test cases for testGetLineLength() + * + * @return array + * @see testGetLineLength() + */ + public function provideTestGetLineLength() + { + return array( + array(6, __DIR__ . "/../data/fileParserTest/simple.txt"), + array(170, __DIR__ . "/../data/fileParserTest/bb-excerpt.txt"), + ); + } + + /** + * Tests getLines() + * + * @see FileParser::getLines() + * @dataProvider provideTestGetLines + */ + public function testGetLines($lines, $file) + { + $parser = new FileParser($file); + $this->assertEquals($lines, $parser->getLines()); + } + + /** + * Test cases for testGetLines() + * + * @return array + * @see testGetLines() + */ + public function provideTestGetLines() + { + return array( + array(2, __DIR__ . "/../data/fileParserTest/simple.txt"), + array(10, __DIR__ . "/../data/fileParserTest/bb-excerpt.txt"), + ); + } + + /** + * Tests readLine() + * + * @see FileParser::readLine() + */ + public function testReadLine() + { + $this->markTestIncomplete(); + } + + /** + * Tests seekLine() + * + * @see FileParser::seekLine() + */ + public function testSeekLine() + { + $this->markTestIncomplete(); + } +} From d7c7ae530779309328ee2d62f7e012b6aaee05d8 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Thu, 3 Jul 2014 21:43:46 +0200 Subject: [PATCH 249/303] removed unused method --- classes/dataBackend/file/FileDataBackend.php | 45 ++++++++------------ 1 file changed, 17 insertions(+), 28 deletions(-) diff --git a/classes/dataBackend/file/FileDataBackend.php b/classes/dataBackend/file/FileDataBackend.php index 206f4a82..c068afbe 100644 --- a/classes/dataBackend/file/FileDataBackend.php +++ b/classes/dataBackend/file/FileDataBackend.php @@ -3,6 +3,7 @@ namespace malkusch\bav; use \malkusch\index\FixedSizeIndex; +use \malkusch\index\IndexException; /** * It uses the huge file from the Bundesbank and uses a binary search to find a row. @@ -225,10 +226,10 @@ public function getAllBanks() return array_values($this->instances); } catch (FileParserIOException $e) { - throw new DataBackendIOException(); + throw new DataBackendIOException($e->getMessage(), $e->getCode(), $e); } catch (FileParserException $e) { - throw new DataBackendException(); + throw new DataBackendException($e->getMessage(), $e->getCode(), $e); } } @@ -243,37 +244,25 @@ public function getAllBanks() public function getNewBank($bankID) { try { - $this->parser->rewind(); - return $this->findBank($bankID); + $result = $this->getIndex()->search($bankID); + + if ($result == null) { + throw new BankNotFoundException($bankID); - } catch (FileParserException $e) { - throw new DataBackendIOException(); + } - } - } + $line = $result->getOffset() / $this->parser->getLineLength(); + $this->contextCache[$bankID] = new FileParserContext($line); - /** - * @throws BankNotFoundException - * @throws ParseException - * @throws FileParserIOException - * @param int $bankID - * @param int $offset the line number to start - * @param int $length the line count - * @return Bank - */ - private function findBank($bankID) - { - $result = $this->getIndex()->search($bankID); - - if ($result == null) { - throw new BankNotFoundException($bankID); + return $this->parser->getBank($this, $this->parser->readLine($line)); + } catch (FileParserException $e) { + throw new DataBackendIOException($e->getMessage(), $e->getCode(), $e); + + } catch (IndexException $e) { + throw new DataBackendIOException($e->getMessage(), $e->getCode(), $e); + } - - $line = $result->getOffset() / $this->parser->getLineLength(); - $this->contextCache[$bankID] = new FileParserContext($line); - - return $this->parser->getBank($this, $this->parser->readLine($line)); } /** From 20b23d1bb7bee857d4a805ecb463af074dd075f3 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Thu, 3 Jul 2014 21:44:03 +0200 Subject: [PATCH 250/303] added test for completeness --- tests/unit-large/BackendTest.php | 75 ++++++++++++++++++++++++++++++-- 1 file changed, 72 insertions(+), 3 deletions(-) diff --git a/tests/unit-large/BackendTest.php b/tests/unit-large/BackendTest.php index c2792920..b222acf1 100644 --- a/tests/unit-large/BackendTest.php +++ b/tests/unit-large/BackendTest.php @@ -147,12 +147,81 @@ public function testLastUpdate(DataBackend $backend) } /** - * @dataProvider provideInstallationBackends + * Tests that the backend provides all banks and agencies + * + * @dataProvider provideBackends */ public function testInstallationIsComplete(DataBackend $backend) { - $this->markTestIncomplete(); - //TODO test if the installation process fills all banks + $agencies = array(); + + foreach ($this->provideBanks() as $referenceBank) { + $bank = $backend->getBank($referenceBank->getBankID()); + + $this->assertEquals( + $referenceBank->getValidationType(), + $bank->getValidationType() + ); + + $agencies[$bank->getMainAgency()->getID()] = $bank->getMainAgency(); + foreach ($bank->getAgencies() as $agency) { + $agencies[$agency->getID()] = $agency; + + } + } + + $expectedAgencies = $this->provideAgencies(); + + $this->assertEquals(count($expectedAgencies), count($agencies)); + + foreach ($agencies as $id => $agency) { + $expectedAgency = $expectedAgencies[$id]; + $this->assertEqualAgency($expectedAgency, $agency); + + } + } + + /** + * Read all banks from the bundesbank file. + * + * @return Bank[] + */ + private function provideBanks() + { + $parser = new FileParser(); + $databackend = new FileDataBackend($parser->getFile()); + $banks = array(); + + for ($line = 0; $line < $parser->getLines(); $line++) { + $data = $parser->readLine($line); + $bank = $parser->getBank($databackend, $data); + $banks[$bank->getBankID()] = $bank; + + } + + return $banks; + } + + /** + * Read all agencies from the bundesbank file. + * + * @return Agency[] + */ + private function provideAgencies() + { + $parser = new FileParser(); + $databackend = new FileDataBackend($parser->getFile()); + $agencies = array(); + + for ($line = 0; $line < $parser->getLines(); $line++) { + $data = $parser->readLine($line); + $bank = $parser->getBank($databackend, $data); + $agency = $parser->getAgency($bank, $data); + $agencies[$agency->getID()] = $agency; + + } + + return $agencies; } /** From 15c858a9e493bfce6a584ca5b2acd83b000c890e Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 4 Jul 2014 23:01:10 +0200 Subject: [PATCH 251/303] test FileParser::readLine() --- tests/data/fileParserTest/simple.txt | 2 +- tests/unit/FileParserTest.php | 29 ++++++++++++++++++++++++++-- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/tests/data/fileParserTest/simple.txt b/tests/data/fileParserTest/simple.txt index c61a5c04..67ba5b79 100644 --- a/tests/data/fileParserTest/simple.txt +++ b/tests/data/fileParserTest/simple.txt @@ -1,2 +1,2 @@ 12345 -12345 \ No newline at end of file +67890 \ No newline at end of file diff --git a/tests/unit/FileParserTest.php b/tests/unit/FileParserTest.php index fa42021a..0b07f858 100644 --- a/tests/unit/FileParserTest.php +++ b/tests/unit/FileParserTest.php @@ -115,10 +115,35 @@ public function provideTestGetLines() * Tests readLine() * * @see FileParser::readLine() + * @dataProvider provideTestReadLine */ - public function testReadLine() + public function testReadLine($file, $line, $expectedData) { - $this->markTestIncomplete(); + $parser = new FileParser($file); + $data = $parser->readLine($line); + $this->assertEquals($expectedData, $data); + } + + /** + * Test cases for testReadLine() + * + * @return string[][] + * @see testReadLine() + */ + public function provideTestReadLine() + { + return array( + array( + __DIR__ . "/../data/fileParserTest/simple.txt", + 0, + "12345\n" + ), + array( + __DIR__ . "/../data/fileParserTest/simple.txt", + 1, + "67890" + ) + ); } /** From 8209bfcf924a75ad75702e40c36b2f655992d247 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 5 Jul 2014 10:28:16 +0200 Subject: [PATCH 252/303] read first line without length limit --- classes/dataBackend/file/fileParser/FileParser.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/dataBackend/file/fileParser/FileParser.php b/classes/dataBackend/file/fileParser/FileParser.php index 29e218c4..03054f5d 100644 --- a/classes/dataBackend/file/fileParser/FileParser.php +++ b/classes/dataBackend/file/fileParser/FileParser.php @@ -135,7 +135,7 @@ private function init() } - $dummyLine = fgets($this->fp, 1024); + $dummyLine = fgets($this->fp); if (! $dummyLine) { throw new FileParserIOException(); From 9f58b1fac78ed3e913c390be799be6c15e510003 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 5 Jul 2014 11:24:37 +0200 Subject: [PATCH 253/303] updated php-index version --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index a8f325eb..66feda30 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,7 @@ }, "require": { "php": ">=5", - "malkusch/php-index": "dev-master" + "malkusch/php-index": "0.1.0" }, "suggest": { "ext-PDO": "Allows storing bank information in a database", From f99757c6d1a2d83cdf68496a1ec79b5206de3ff5 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 23 Aug 2014 23:01:25 +0200 Subject: [PATCH 254/303] changed to WTFP License --- LICENSE | 14 + README.md | 4 +- bin/bav-install.php | 2 +- bin/bav-uninstall.php | 2 +- bin/bav-update.php | 2 +- classes/BAV.php | 2 +- classes/bank/Agency.php | 2 +- classes/configuration/Configuration.php | 2 +- .../configuration/ConfigurationException.php | 2 +- .../configuration/ConfigurationLocator.php | 2 +- .../configuration/ConfigurationRegistry.php | 2 +- .../configuration/DefaultConfiguration.php | 2 +- classes/dataBackend/DataBackend.php | 2 +- classes/dataBackend/DataBackendContainer.php | 2 +- classes/dataBackend/SQLDataBackend.php | 2 +- classes/dataBackend/file/FileDataBackend.php | 2 +- .../file/FileDataBackendContainer.php | 2 +- .../dataBackend/file/download/Downloader.php | 2 +- .../exception/DownloaderException.php | 2 +- .../file/download/uripicker/DOMURIPicker.php | 2 +- .../download/uripicker/FallbackURIPicker.php | 2 +- .../download/uripicker/RegExpURIPicker.php | 2 +- .../file/download/uripicker/URIPicker.php | 2 +- .../exception/URIPickerException.php | 2 +- .../file/validator/FileValidator.php | 2 +- .../validator/exception/FieldException.php | 2 +- .../exception/FileValidatorException.php | 2 +- .../exception/InvalidFilesizeException.php | 2 +- .../exception/InvalidLineLengthException.php | 2 +- classes/dataBackend/orm/MetaData.php | 2 +- .../orm/doctrine/DoctrineBackendContainer.php | 2 +- .../orm/doctrine/DoctrineDataBackend.php | 2 +- classes/dataBackend/pdo/PDODataBackend.php | 2 +- .../pdo/PDODataBackendContainer.php | 2 +- .../dataBackend/pdo/StatementContainer.php | 2 +- .../update/AutomaticUpdatePlan.php | 2 +- classes/dataBackend/update/LogUpdatePlan.php | 2 +- classes/dataBackend/update/UpdatePlan.php | 2 +- classes/exception/BAVException.php | 2 +- classes/util/BICUtil.php | 2 +- classes/util/FileUtil.php | 2 +- classes/util/Lock.php | 2 +- classes/util/exception/FileException.php | 2 +- classes/util/exception/LockException.php | 2 +- .../exception/NoTempDirectoryException.php | 2 +- classes/validator/ContextValidation.php | 2 +- classes/validator/ValidatorFactory.php | 2 +- composer.json | 2 +- docs/gpl.txt | 340 ------------------ tests/bin/test-install.php | 2 +- tests/classes/PDOFactory.php | 2 +- tests/classes/TimeMock.php | 2 +- tests/classes/testAPI/KontocheckTestAPI.php | 2 +- tests/classes/testAPI/KtoblzcheckTestAPI.php | 2 +- .../exception/TestAPIUnavailableException.php | 2 +- tests/unit-large/BackendTest.php | 2 +- tests/unit-large/CrossProjectTest.php | 2 +- tests/unit/00UpdatePlanTest.php | 2 +- tests/unit/BAVFacadeTest.php | 2 +- tests/unit/BICUtilTest.php | 2 +- tests/unit/BackendContainerTest.php | 2 +- tests/unit/ContextValidationTest.php | 2 +- tests/unit/DownloaderTest.php | 2 +- tests/unit/FileParserTest.php | 2 +- tests/unit/FileUtilTest.php | 2 +- tests/unit/FileValidatorTest.php | 2 +- tests/unit/LockTest.php | 2 +- tests/unit/StatementContainerTest.php | 2 +- tests/unit/URIPickerTest.php | 2 +- tests/unit/ValidatorFactoryTest.php | 2 +- tests/unit/ValidatorTest.php | 2 +- 71 files changed, 84 insertions(+), 410 deletions(-) create mode 100644 LICENSE delete mode 100644 docs/gpl.txt diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..ee7d6a54 --- /dev/null +++ b/LICENSE @@ -0,0 +1,14 @@ + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2004 Sam Hocevar + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. + diff --git a/README.md b/README.md index d006f84a..f5e79dfc 100644 --- a/README.md +++ b/README.md @@ -199,7 +199,7 @@ as data backend. # License and authors -This project is free and under GPL (see gpl.txt). So do what ever you want. +This project is free and under the WTFPL. So do what ever you want. But it would be nice to leave a note about the authors. The author of the original project which gave the idea to this project is @@ -210,4 +210,4 @@ Björn Wilmsmann. Responsable for this project is Markus Malkusch - * @license GPL + * @license WTFPL * @see DataBackend */ diff --git a/bin/bav-uninstall.php b/bin/bav-uninstall.php index c8e9b9e6..0f68bed2 100755 --- a/bin/bav-uninstall.php +++ b/bin/bav-uninstall.php @@ -4,7 +4,7 @@ * Removes the Bundesbank file. * * @author Markus Malkusch - * @license GPL + * @license WTFPL * @see DataBackend */ diff --git a/bin/bav-update.php b/bin/bav-update.php index 0b54ecf2..11c0a45a 100755 --- a/bin/bav-update.php +++ b/bin/bav-update.php @@ -4,7 +4,7 @@ * BAV updater for the Bundesbank bank data file. * * @author Markus Malkusch - * @license GPL + * @license WTFPL * @see DataBackend */ diff --git a/classes/BAV.php b/classes/BAV.php index ddd17b6b..bd0fe6bb 100644 --- a/classes/BAV.php +++ b/classes/BAV.php @@ -13,7 +13,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL * @api * @see ConfigurationRegistry */ diff --git a/classes/bank/Agency.php b/classes/bank/Agency.php index 52ef9ceb..73c79a3b 100644 --- a/classes/bank/Agency.php +++ b/classes/bank/Agency.php @@ -10,7 +10,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL * @see BAV::getAgencies() * @see BAV::getBICAgencies() * @see BAV::getMainAgency() diff --git a/classes/configuration/Configuration.php b/classes/configuration/Configuration.php index 52c164f6..85fc9cd8 100644 --- a/classes/configuration/Configuration.php +++ b/classes/configuration/Configuration.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL * @see ConfigurationRegistry * @api */ diff --git a/classes/configuration/ConfigurationException.php b/classes/configuration/ConfigurationException.php index 8b633ef4..b3c97081 100644 --- a/classes/configuration/ConfigurationException.php +++ b/classes/configuration/ConfigurationException.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL */ class ConfigurationException extends BAVException { diff --git a/classes/configuration/ConfigurationLocator.php b/classes/configuration/ConfigurationLocator.php index d0521605..8afae40c 100644 --- a/classes/configuration/ConfigurationLocator.php +++ b/classes/configuration/ConfigurationLocator.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL * @see ConfigurationRegistry */ class ConfigurationLocator diff --git a/classes/configuration/ConfigurationRegistry.php b/classes/configuration/ConfigurationRegistry.php index 9dc24abb..b4941094 100644 --- a/classes/configuration/ConfigurationRegistry.php +++ b/classes/configuration/ConfigurationRegistry.php @@ -28,7 +28,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL * @see Configuration * @api */ diff --git a/classes/configuration/DefaultConfiguration.php b/classes/configuration/DefaultConfiguration.php index b93d112d..02a4b969 100644 --- a/classes/configuration/DefaultConfiguration.php +++ b/classes/configuration/DefaultConfiguration.php @@ -14,7 +14,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL * @api */ class DefaultConfiguration extends Configuration diff --git a/classes/dataBackend/DataBackend.php b/classes/dataBackend/DataBackend.php index 68795d77..b2607989 100644 --- a/classes/dataBackend/DataBackend.php +++ b/classes/dataBackend/DataBackend.php @@ -17,7 +17,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL * @see DataBackendContainer */ abstract class DataBackend diff --git a/classes/dataBackend/DataBackendContainer.php b/classes/dataBackend/DataBackendContainer.php index 4de34885..61de213d 100644 --- a/classes/dataBackend/DataBackendContainer.php +++ b/classes/dataBackend/DataBackendContainer.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL * @see DataBackend * @api */ diff --git a/classes/dataBackend/SQLDataBackend.php b/classes/dataBackend/SQLDataBackend.php index f2632586..a76d006c 100644 --- a/classes/dataBackend/SQLDataBackend.php +++ b/classes/dataBackend/SQLDataBackend.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL */ abstract class SQLDataBackend extends DataBackend { diff --git a/classes/dataBackend/file/FileDataBackend.php b/classes/dataBackend/file/FileDataBackend.php index c068afbe..4be6d60d 100644 --- a/classes/dataBackend/file/FileDataBackend.php +++ b/classes/dataBackend/file/FileDataBackend.php @@ -12,7 +12,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL */ class FileDataBackend extends DataBackend { diff --git a/classes/dataBackend/file/FileDataBackendContainer.php b/classes/dataBackend/file/FileDataBackendContainer.php index fecf6e13..75a366aa 100644 --- a/classes/dataBackend/file/FileDataBackendContainer.php +++ b/classes/dataBackend/file/FileDataBackendContainer.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL * @see DataBackend * @api */ diff --git a/classes/dataBackend/file/download/Downloader.php b/classes/dataBackend/file/download/Downloader.php index 03576014..84a8824d 100644 --- a/classes/dataBackend/file/download/Downloader.php +++ b/classes/dataBackend/file/download/Downloader.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL */ class Downloader { diff --git a/classes/dataBackend/file/download/exception/DownloaderException.php b/classes/dataBackend/file/download/exception/DownloaderException.php index 5ab268b3..8e0c4e2e 100644 --- a/classes/dataBackend/file/download/exception/DownloaderException.php +++ b/classes/dataBackend/file/download/exception/DownloaderException.php @@ -8,7 +8,7 @@ * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @see Downloader - * @license GPL + * @license WTFPL */ class DownloaderException extends DataBackendException { diff --git a/classes/dataBackend/file/download/uripicker/DOMURIPicker.php b/classes/dataBackend/file/download/uripicker/DOMURIPicker.php index f22ada4e..7455568b 100644 --- a/classes/dataBackend/file/download/uripicker/DOMURIPicker.php +++ b/classes/dataBackend/file/download/uripicker/DOMURIPicker.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL */ class DOMURIPicker implements URIPicker { diff --git a/classes/dataBackend/file/download/uripicker/FallbackURIPicker.php b/classes/dataBackend/file/download/uripicker/FallbackURIPicker.php index 7cb0a734..b7067dd9 100644 --- a/classes/dataBackend/file/download/uripicker/FallbackURIPicker.php +++ b/classes/dataBackend/file/download/uripicker/FallbackURIPicker.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL */ class FallbackURIPicker implements URIPicker { diff --git a/classes/dataBackend/file/download/uripicker/RegExpURIPicker.php b/classes/dataBackend/file/download/uripicker/RegExpURIPicker.php index fab96ab0..2be6252c 100644 --- a/classes/dataBackend/file/download/uripicker/RegExpURIPicker.php +++ b/classes/dataBackend/file/download/uripicker/RegExpURIPicker.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL */ class RegExpURIPicker implements URIPicker { diff --git a/classes/dataBackend/file/download/uripicker/URIPicker.php b/classes/dataBackend/file/download/uripicker/URIPicker.php index 3ca6e039..0edf71d1 100644 --- a/classes/dataBackend/file/download/uripicker/URIPicker.php +++ b/classes/dataBackend/file/download/uripicker/URIPicker.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL */ interface URIPicker { diff --git a/classes/dataBackend/file/download/uripicker/exception/URIPickerException.php b/classes/dataBackend/file/download/uripicker/exception/URIPickerException.php index 70ac9012..a6c46a85 100644 --- a/classes/dataBackend/file/download/uripicker/exception/URIPickerException.php +++ b/classes/dataBackend/file/download/uripicker/exception/URIPickerException.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL */ class URIPickerException extends DataBackendException { diff --git a/classes/dataBackend/file/validator/FileValidator.php b/classes/dataBackend/file/validator/FileValidator.php index 6ae63a2f..841dd2c2 100644 --- a/classes/dataBackend/file/validator/FileValidator.php +++ b/classes/dataBackend/file/validator/FileValidator.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL */ class FileValidator { diff --git a/classes/dataBackend/file/validator/exception/FieldException.php b/classes/dataBackend/file/validator/exception/FieldException.php index 63cdaf55..e826a210 100644 --- a/classes/dataBackend/file/validator/exception/FieldException.php +++ b/classes/dataBackend/file/validator/exception/FieldException.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL */ class FieldException extends FileValidatorException { diff --git a/classes/dataBackend/file/validator/exception/FileValidatorException.php b/classes/dataBackend/file/validator/exception/FileValidatorException.php index 24c93c43..1587eef3 100644 --- a/classes/dataBackend/file/validator/exception/FileValidatorException.php +++ b/classes/dataBackend/file/validator/exception/FileValidatorException.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL */ class FileValidatorException extends DataBackendException { diff --git a/classes/dataBackend/file/validator/exception/InvalidFilesizeException.php b/classes/dataBackend/file/validator/exception/InvalidFilesizeException.php index 1d954706..c46b5811 100644 --- a/classes/dataBackend/file/validator/exception/InvalidFilesizeException.php +++ b/classes/dataBackend/file/validator/exception/InvalidFilesizeException.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL */ class InvalidFilesizeException extends FileValidatorException { diff --git a/classes/dataBackend/file/validator/exception/InvalidLineLengthException.php b/classes/dataBackend/file/validator/exception/InvalidLineLengthException.php index 99fe4f19..7f68128f 100644 --- a/classes/dataBackend/file/validator/exception/InvalidLineLengthException.php +++ b/classes/dataBackend/file/validator/exception/InvalidLineLengthException.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL */ class InvalidLineLengthException extends FileValidatorException { diff --git a/classes/dataBackend/orm/MetaData.php b/classes/dataBackend/orm/MetaData.php index e17e3aad..c4275c99 100644 --- a/classes/dataBackend/orm/MetaData.php +++ b/classes/dataBackend/orm/MetaData.php @@ -8,7 +8,7 @@ * @internal * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL */ class MetaData { diff --git a/classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php b/classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php index bafbbaa2..e5bdc6ad 100644 --- a/classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php +++ b/classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php @@ -12,7 +12,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL * @see DataBackend * @link http://www.doctrine-project.org/ * @api diff --git a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php index 386f17ae..d00ff958 100644 --- a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php +++ b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php @@ -14,7 +14,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL * @link http://www.doctrine-project.org/ */ class DoctrineDataBackend extends SQLDataBackend diff --git a/classes/dataBackend/pdo/PDODataBackend.php b/classes/dataBackend/pdo/PDODataBackend.php index 81da5440..fec8c3bb 100644 --- a/classes/dataBackend/pdo/PDODataBackend.php +++ b/classes/dataBackend/pdo/PDODataBackend.php @@ -8,7 +8,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL */ class PDODataBackend extends SQLDataBackend { diff --git a/classes/dataBackend/pdo/PDODataBackendContainer.php b/classes/dataBackend/pdo/PDODataBackendContainer.php index da25e8b7..2206bca5 100644 --- a/classes/dataBackend/pdo/PDODataBackendContainer.php +++ b/classes/dataBackend/pdo/PDODataBackendContainer.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL * @see DataBackend * @api */ diff --git a/classes/dataBackend/pdo/StatementContainer.php b/classes/dataBackend/pdo/StatementContainer.php index 73501fdc..97a8cf20 100644 --- a/classes/dataBackend/pdo/StatementContainer.php +++ b/classes/dataBackend/pdo/StatementContainer.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL */ class StatementContainer { diff --git a/classes/dataBackend/update/AutomaticUpdatePlan.php b/classes/dataBackend/update/AutomaticUpdatePlan.php index c4d89511..b13dfe5d 100644 --- a/classes/dataBackend/update/AutomaticUpdatePlan.php +++ b/classes/dataBackend/update/AutomaticUpdatePlan.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL * @api */ class AutomaticUpdatePlan extends UpdatePlan diff --git a/classes/dataBackend/update/LogUpdatePlan.php b/classes/dataBackend/update/LogUpdatePlan.php index 7f54ab8d..22e813ec 100644 --- a/classes/dataBackend/update/LogUpdatePlan.php +++ b/classes/dataBackend/update/LogUpdatePlan.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL * @api */ class LogUpdatePlan extends UpdatePlan diff --git a/classes/dataBackend/update/UpdatePlan.php b/classes/dataBackend/update/UpdatePlan.php index 7d34d832..ecd11833 100644 --- a/classes/dataBackend/update/UpdatePlan.php +++ b/classes/dataBackend/update/UpdatePlan.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL * @api */ abstract class UpdatePlan diff --git a/classes/exception/BAVException.php b/classes/exception/BAVException.php index f283833e..2db613a7 100644 --- a/classes/exception/BAVException.php +++ b/classes/exception/BAVException.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL */ class BAVException extends \Exception { diff --git a/classes/util/BICUtil.php b/classes/util/BICUtil.php index f9a0ed35..02b5e618 100644 --- a/classes/util/BICUtil.php +++ b/classes/util/BICUtil.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL */ class BICUtil { diff --git a/classes/util/FileUtil.php b/classes/util/FileUtil.php index 9e04cecb..1b47f416 100644 --- a/classes/util/FileUtil.php +++ b/classes/util/FileUtil.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL */ class FileUtil { diff --git a/classes/util/Lock.php b/classes/util/Lock.php index 3efe1aa8..780fdbe0 100644 --- a/classes/util/Lock.php +++ b/classes/util/Lock.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL * @see DataBackend */ class Lock diff --git a/classes/util/exception/FileException.php b/classes/util/exception/FileException.php index 16cac085..c02388d4 100644 --- a/classes/util/exception/FileException.php +++ b/classes/util/exception/FileException.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL */ class FileException extends BAVException { diff --git a/classes/util/exception/LockException.php b/classes/util/exception/LockException.php index e903edba..7dc9a2a4 100644 --- a/classes/util/exception/LockException.php +++ b/classes/util/exception/LockException.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL */ class LockException extends BAVException { diff --git a/classes/util/exception/NoTempDirectoryException.php b/classes/util/exception/NoTempDirectoryException.php index 8a674e52..00629446 100644 --- a/classes/util/exception/NoTempDirectoryException.php +++ b/classes/util/exception/NoTempDirectoryException.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL */ class NoTempDirectoryException extends FileException { diff --git a/classes/validator/ContextValidation.php b/classes/validator/ContextValidation.php index 851ee997..1d582a57 100644 --- a/classes/validator/ContextValidation.php +++ b/classes/validator/ContextValidation.php @@ -12,7 +12,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL */ class ContextValidation { diff --git a/classes/validator/ValidatorFactory.php b/classes/validator/ValidatorFactory.php index b409e8c0..9cb050c8 100644 --- a/classes/validator/ValidatorFactory.php +++ b/classes/validator/ValidatorFactory.php @@ -7,7 +7,7 @@ * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license GPL + * @license WTFPL */ class ValidatorFactory { diff --git a/composer.json b/composer.json index 66feda30..4835ca76 100644 --- a/composer.json +++ b/composer.json @@ -4,7 +4,7 @@ "description": "BAV provides validation for German Bank Accounts (Konto)", "keywords": ["bank", "account", "bankaccount", "validation", "check", "konto"], "homepage": "http://bav.malkusch.de/", - "license": "GPL-2.0", + "license": "WTFPL-2.0", "authors": [ { "name": "Markus Malkusch", diff --git a/docs/gpl.txt b/docs/gpl.txt deleted file mode 100644 index 5b6e7c66..00000000 --- a/docs/gpl.txt +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - 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 2 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, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/tests/bin/test-install.php b/tests/bin/test-install.php index 4b95de4c..11746b41 100755 --- a/tests/bin/test-install.php +++ b/tests/bin/test-install.php @@ -4,7 +4,7 @@ * Installs the test environment * * @author Markus Malkusch - * @license GPL + * @license WTFPL */ namespace malkusch\bav; diff --git a/tests/classes/PDOFactory.php b/tests/classes/PDOFactory.php index 31db47dd..ffb392a3 100644 --- a/tests/classes/PDOFactory.php +++ b/tests/classes/PDOFactory.php @@ -5,7 +5,7 @@ /** * PDO factory * - * @license GPL + * @license WTFPL * @author Markus Malkusch * @see makePDO() */ diff --git a/tests/classes/TimeMock.php b/tests/classes/TimeMock.php index a7855a3b..c65b77b1 100644 --- a/tests/classes/TimeMock.php +++ b/tests/classes/TimeMock.php @@ -18,7 +18,7 @@ function time() /** * Mock for PHP's time() built-in. * - * @license GPL + * @license WTFPL * @author Markus Malkusch */ class TimeMock diff --git a/tests/classes/testAPI/KontocheckTestAPI.php b/tests/classes/testAPI/KontocheckTestAPI.php index 319d62c7..5a914811 100644 --- a/tests/classes/testAPI/KontocheckTestAPI.php +++ b/tests/classes/testAPI/KontocheckTestAPI.php @@ -5,7 +5,7 @@ /** * The API for Michael Plugge's kontocheck. * - * @license GPL + * @license WTFPL * @author Markus Malkusch * @link http://sourceforge.net/projects/kontocheck/ */ diff --git a/tests/classes/testAPI/KtoblzcheckTestAPI.php b/tests/classes/testAPI/KtoblzcheckTestAPI.php index 5781e901..2fb469fc 100644 --- a/tests/classes/testAPI/KtoblzcheckTestAPI.php +++ b/tests/classes/testAPI/KtoblzcheckTestAPI.php @@ -6,7 +6,7 @@ * The API for ktoblzcheck * * @author Markus Malkusch - * @license GPL + * @license WTFPL * @link http://sourceforge.net/projects/ktoblzcheck/ */ class KtoblzcheckTestAPI extends TestAPI diff --git a/tests/classes/testAPI/exception/TestAPIUnavailableException.php b/tests/classes/testAPI/exception/TestAPIUnavailableException.php index a7627a0d..65237e28 100644 --- a/tests/classes/testAPI/exception/TestAPIUnavailableException.php +++ b/tests/classes/testAPI/exception/TestAPIUnavailableException.php @@ -6,7 +6,7 @@ * Error when API is not available. * * @author Markus Malkusch - * @license GPL + * @license WTFPL */ class TestAPIUnavailableException extends TestAPIException { diff --git a/tests/unit-large/BackendTest.php b/tests/unit-large/BackendTest.php index b222acf1..436c7994 100644 --- a/tests/unit-large/BackendTest.php +++ b/tests/unit-large/BackendTest.php @@ -8,7 +8,7 @@ * Tests the Backends. * This test needs some memory (about 550M)! * - * @license GPL + * @license WTFPL * @author Markus Malkusch */ class BackendTest extends \PHPUnit_Framework_TestCase diff --git a/tests/unit-large/CrossProjectTest.php b/tests/unit-large/CrossProjectTest.php index 207b0723..e2d9d021 100644 --- a/tests/unit-large/CrossProjectTest.php +++ b/tests/unit-large/CrossProjectTest.php @@ -15,7 +15,7 @@ * $ NODE_NUMBER=1 NODE_COUNT=2 phpunit CrossProjectTest.php * * @author Markus Malkusch - * @license GPL + * @license WTFPL * @large */ class CrossProjectTest extends \PHPUnit_Framework_TestCase diff --git a/tests/unit/00UpdatePlanTest.php b/tests/unit/00UpdatePlanTest.php index 50473929..49ae3560 100644 --- a/tests/unit/00UpdatePlanTest.php +++ b/tests/unit/00UpdatePlanTest.php @@ -11,7 +11,7 @@ * any unmocked call to time(). * * @see TimeMock - * @license GPL + * @license WTFPL * @author Markus Malkusch */ class UpdatePlanTest extends \PHPUnit_Framework_TestCase diff --git a/tests/unit/BAVFacadeTest.php b/tests/unit/BAVFacadeTest.php index ddf76a49..7fc6287f 100644 --- a/tests/unit/BAVFacadeTest.php +++ b/tests/unit/BAVFacadeTest.php @@ -7,7 +7,7 @@ /** * Tests the facade BAV. * - * @license GPL + * @license WTFPL * @author Markus Malkusch * @see BAV */ diff --git a/tests/unit/BICUtilTest.php b/tests/unit/BICUtilTest.php index d196c274..0d08775e 100644 --- a/tests/unit/BICUtilTest.php +++ b/tests/unit/BICUtilTest.php @@ -7,7 +7,7 @@ /** * Tests BICUtil. * - * @license GPL + * @license WTFPL * @see BICUtil * @author Markus Malkusch */ diff --git a/tests/unit/BackendContainerTest.php b/tests/unit/BackendContainerTest.php index febce6df..012682e1 100644 --- a/tests/unit/BackendContainerTest.php +++ b/tests/unit/BackendContainerTest.php @@ -7,7 +7,7 @@ /** * Tests DataBackendContainer * - * @license GPL + * @license WTFPL * @author Markus Malkusch */ class BackendContainerTest extends \PHPUnit_Framework_TestCase diff --git a/tests/unit/ContextValidationTest.php b/tests/unit/ContextValidationTest.php index 3198625e..3f743c0f 100644 --- a/tests/unit/ContextValidationTest.php +++ b/tests/unit/ContextValidationTest.php @@ -7,7 +7,7 @@ /** * Tests ContextValidation * - * @license GPL + * @license WTFPL * @see ContextValidation * @author Markus Malkusch */ diff --git a/tests/unit/DownloaderTest.php b/tests/unit/DownloaderTest.php index d0198f45..c1a18d93 100644 --- a/tests/unit/DownloaderTest.php +++ b/tests/unit/DownloaderTest.php @@ -7,7 +7,7 @@ /** * Tests Downloader. * - * @license GPL + * @license WTFPL * @author Markus Malkusch */ class DownloaderTest extends \PHPUnit_Framework_TestCase diff --git a/tests/unit/FileParserTest.php b/tests/unit/FileParserTest.php index 0b07f858..2af92da9 100644 --- a/tests/unit/FileParserTest.php +++ b/tests/unit/FileParserTest.php @@ -7,7 +7,7 @@ /** * Tests FileParser * - * @license GPL + * @license WTFPL * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @see FileParser diff --git a/tests/unit/FileUtilTest.php b/tests/unit/FileUtilTest.php index ce642557..c8255f0d 100644 --- a/tests/unit/FileUtilTest.php +++ b/tests/unit/FileUtilTest.php @@ -9,7 +9,7 @@ * * @see FileUtil * @author Markus Malkusch - * @license GPL + * @license WTFPL */ class FileUtilTest extends \PHPUnit_Framework_TestCase { diff --git a/tests/unit/FileValidatorTest.php b/tests/unit/FileValidatorTest.php index 8c60c2c0..5c7ce730 100644 --- a/tests/unit/FileValidatorTest.php +++ b/tests/unit/FileValidatorTest.php @@ -7,7 +7,7 @@ /** * Tests FileValidator. * - * @license GPL + * @license WTFPL * @author Markus Malkusch * @see BAV */ diff --git a/tests/unit/LockTest.php b/tests/unit/LockTest.php index 0dc22758..3e2ec2b1 100644 --- a/tests/unit/LockTest.php +++ b/tests/unit/LockTest.php @@ -7,7 +7,7 @@ /** * Tests Lock. * - * @license GPL + * @license WTFPL * @author Markus Malkusch * @see Lock */ diff --git a/tests/unit/StatementContainerTest.php b/tests/unit/StatementContainerTest.php index 97456881..57a3aa96 100644 --- a/tests/unit/StatementContainerTest.php +++ b/tests/unit/StatementContainerTest.php @@ -7,7 +7,7 @@ /** * Tests StatementContainer. * - * @license GPL + * @license WTFPL * @author Markus Malkusch * @see StatementContainer */ diff --git a/tests/unit/URIPickerTest.php b/tests/unit/URIPickerTest.php index cd0c5f7d..dfa111a7 100644 --- a/tests/unit/URIPickerTest.php +++ b/tests/unit/URIPickerTest.php @@ -7,7 +7,7 @@ /** * Tests URIPicker. * - * @license GPL + * @license WTFPL * @author Markus Malkusch */ class URIPickerTest extends \PHPUnit_Framework_TestCase diff --git a/tests/unit/ValidatorFactoryTest.php b/tests/unit/ValidatorFactoryTest.php index dda8aa75..0d6c63be 100644 --- a/tests/unit/ValidatorFactoryTest.php +++ b/tests/unit/ValidatorFactoryTest.php @@ -8,7 +8,7 @@ * Tests ValidatorFactory. * * @author Markus Malkusch - * @license GPL + * @license WTFPL * @see ValidatorFactory */ class ValidatorFactoryTest extends \PHPUnit_Framework_TestCase diff --git a/tests/unit/ValidatorTest.php b/tests/unit/ValidatorTest.php index a8584808..4b544641 100644 --- a/tests/unit/ValidatorTest.php +++ b/tests/unit/ValidatorTest.php @@ -8,7 +8,7 @@ * check all validators in order to find errors * * @author Markus Malkusch - * @license GPL + * @license WTFPL */ class ValidatorTest extends \PHPUnit_Framework_TestCase { From f25a63a7097272fcbed67f1a32dbb92790e46da1 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 11 Oct 2014 13:07:49 +0200 Subject: [PATCH 255/303] PHP 5.6 deprecated the iconv_* methods --- .gitignore | 1 + .travis.yml | 1 + README.md | 5 ++--- classes/encoding/Encoding.php | 29 +++-------------------------- classes/encoding/IconvEncoding.php | 1 + composer.json | 1 - 6 files changed, 8 insertions(+), 30 deletions(-) diff --git a/.gitignore b/.gitignore index f78579ff..681b2490 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,6 @@ nbproject .settings .buildpath .project +.idea vendor composer.lock diff --git a/.travis.yml b/.travis.yml index e092dd16..642a065f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,7 @@ language: php php: + - 5.6 - 5.5 - 5.4 - 5.3 diff --git a/README.md b/README.md index f5e79dfc..0bfd6d34 100644 --- a/README.md +++ b/README.md @@ -183,9 +183,8 @@ You may have: * **CURL**: If you provide `bav/data/banklist.txt` you don't need CURL. -* **mbstring or iconv**: BAV works with unicode encoding. Your PHP must have support compiled -in to either the `mb_*` or the `iconv_*` functions. If these functions are -missing BAV works only with the ISO-8859-15 encoding. +* **mbstring**: BAV works with unicode encoding. Your PHP must have support compiled +in the `mb_*` functions. If these functions are missing BAV works only with the ISO-8859-15 encoding. * **PDO**: If you intend to use a DBS you need to use [`PDODataBackendContainer`](http://bav-php.github.io/bav/class-malkusch.bav.PDODataBackendContainer.html). diff --git a/classes/encoding/Encoding.php b/classes/encoding/Encoding.php index c29d7a81..364f6fb2 100644 --- a/classes/encoding/Encoding.php +++ b/classes/encoding/Encoding.php @@ -3,31 +3,11 @@ namespace malkusch\bav; /** - * This class provides methods for any encoded strings + * This class provides methods for any encoded strings. * - * - * Copyright (C) 2006 Markus Malkusch - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * - * @package classes - * @subpackage dataBackend * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @copyright Copyright (C) 2006 Markus Malkusch + * @license WTFPL */ abstract class Encoding { @@ -87,10 +67,7 @@ public static function isSupported($encoding) */ public static function getInstance($encoding) { - if (IconvEncoding::isSupported($encoding)) { - return new IconvEncoding($encoding); - - } elseif (MBEncoding::isSupported($encoding)) { + if (MBEncoding::isSupported($encoding)) { return new MBEncoding($encoding); } elseif (ISO8859Encoding::isSupported($encoding)) { diff --git a/classes/encoding/IconvEncoding.php b/classes/encoding/IconvEncoding.php index 7eec3ab7..247afd8a 100644 --- a/classes/encoding/IconvEncoding.php +++ b/classes/encoding/IconvEncoding.php @@ -29,6 +29,7 @@ * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @copyright Copyright (C) 2006 Markus Malkusch + * @deprecated 1.0.1 PHP 5.6.0 deprecated the iconv_* methods */ class IconvEncoding extends Encoding { diff --git a/composer.json b/composer.json index 4835ca76..5dfeb992 100644 --- a/composer.json +++ b/composer.json @@ -25,7 +25,6 @@ "ext-mbstring": "Enables UTF-8 support", "ext-dom": "Enables picking the download URI by xpath", "lib-curl": "Enables API for downloading the bank file", - "lib-iconv": "Enables UTF-8 support", "doctrine/orm": "Support for Doctrine ORM data backend" }, "require-dev": { From 7c7f07446ef19a849961bec5a94446be4f177d01 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sun, 26 Oct 2014 22:26:06 +0100 Subject: [PATCH 256/303] Fix issue with multiple autoloader declarations. See https://github.com/bav-php/bav-symfony/issues/1 --- autoloader/InstantAutoloader.php | 363 ++++++++++++------------- composer.json | 2 +- tests/autoloader/InstantAutoloader.php | 363 ++++++++++++------------- 3 files changed, 363 insertions(+), 365 deletions(-) diff --git a/autoloader/InstantAutoloader.php b/autoloader/InstantAutoloader.php index e03880e3..d597906e 100644 --- a/autoloader/InstantAutoloader.php +++ b/autoloader/InstantAutoloader.php @@ -36,214 +36,213 @@ * There might be several InstantAutoloaders deployed in a project. * One is enough. */ -if (class_exists("malkusch\autoloader\InstantAutoloader")) { - return; +if (! class_exists("malkusch\autoloader\InstantAutoloader", false)) { -} - -/** - * An instant autoloader for shipping with project builds - * - * You can build a complete index of your project (by calling - * Autoloader::buildIndex()). If you use AutoloaderIndex_PHPArrayCode as - * index you can only use this instant autoloader for your project. This class - * has no further dependency on any other class. Just copy this class and the - * generated index anywhere into your project. - * - * Consider setting the AutoloaderIndexFilter_RelativePath filter. - * - * @category PHP - * @package Autoloader - * @author Markus Malkusch - * @license http://php-autoloader.malkusch.de/en/license/ GPL 3 - * @version Release: 1.12 - * @link http://php-autoloader.malkusch.de/en/ - * @see Autoloader::buildIndex() - * @see AutoloaderIndex_PHPArrayCode() - * @see AutoloaderIndexFilter_RelativePath() - */ -class InstantAutoloader -{ - - const - /** - * The name of the class constructor is classConstructor(). - */ - CLASS_CONSTRUCTOR = 'classConstructor'; - - private - /** - * @var string - */ - $_basePath = "", /** - * @var array + * An instant autoloader for shipping with project builds + * + * You can build a complete index of your project (by calling + * Autoloader::buildIndex()). If you use AutoloaderIndex_PHPArrayCode as + * index you can only use this instant autoloader for your project. This class + * has no further dependency on any other class. Just copy this class and the + * generated index anywhere into your project. + * + * Consider setting the AutoloaderIndexFilter_RelativePath filter. + * + * @category PHP + * @package Autoloader + * @author Markus Malkusch + * @license http://php-autoloader.malkusch.de/en/license/ GPL 3 + * @version Release: 1.12 + * @link http://php-autoloader.malkusch.de/en/ + * @see Autoloader::buildIndex() + * @see AutoloaderIndex_PHPArrayCode() + * @see AutoloaderIndexFilter_RelativePath() */ - $_index = array(); - - /** - * Loads the generated index array - * - * The index must be a generated AutoloaderIndex_PHPArrayCode index. - * - * @param string $indexPath Path to the generated index - */ - public function __construct($indexPath) + class InstantAutoloader { - $this->_index = require $indexPath; - } - /** - * Registers this autoloader at the autoloader stack - * - * @return void - */ - public function register() - { - // spl_autoload_register() disables __autoload(). This might be unwanted. - if (\function_exists("__autoload")) { - \spl_autoload_register("__autoload"); + const + /** + * The name of the class constructor is classConstructor(). + */ + CLASS_CONSTRUCTOR = 'classConstructor'; + + private + /** + * @var string + */ + $_basePath = "", + /** + * @var array + */ + $_index = array(); + + /** + * Loads the generated index array + * + * The index must be a generated AutoloaderIndex_PHPArrayCode index. + * + * @param string $indexPath Path to the generated index + */ + public function __construct($indexPath) + { + $this->_index = require $indexPath; + } + /** + * Registers this autoloader at the autoloader stack + * + * @return void + */ + public function register() + { + // spl_autoload_register() disables __autoload(). This might be unwanted. + if (\function_exists("__autoload")) { + \spl_autoload_register("__autoload"); + + } + \spl_autoload_register(array($this, "__autoload")); } - \spl_autoload_register(array($this, "__autoload")); - } - /** - * Includes all class paths - * - * You can use this as an alternative to the autoload mechanism. This - * simply includes all classes without any autoloader. - * - * @return void - */ - public function requireAll() - { - foreach ($this->_index as $classPath) { - $this->_requirePath($classPath); + /** + * Includes all class paths + * + * You can use this as an alternative to the autoload mechanism. This + * simply includes all classes without any autoloader. + * + * @return void + */ + public function requireAll() + { + foreach ($this->_index as $classPath) { + $this->_requirePath($classPath); + } } - } - - /** - * Sets the base path for the class paths in the index - * - * @param string $basePath Base path for the class paths in the index - * - * @return void - */ - public function setBasePath($basePath) - { - $this->_basePath = $basePath; - } - /** - * Autoloader callback - * - * @param string $class Class name - * - * @return void - */ - public function __autoload($class) - { - $this->_normalizeClass($class); - - /* - * spl_autoload_call() runs the complete stack, - * even though the class is already defined by - * a previously registered method. + /** + * Sets the base path for the class paths in the index + * + * @param string $basePath Base path for the class paths in the index + * + * @return void */ - if ( - \class_exists($class, false) - || \interface_exists($class, false) - ) { - return; + public function setBasePath($basePath) + { + $this->_basePath = $basePath; + } + /** + * Autoloader callback + * + * @param string $class Class name + * + * @return void + */ + public function __autoload($class) + { + $this->_normalizeClass($class); + + /* + * spl_autoload_call() runs the complete stack, + * even though the class is already defined by + * a previously registered method. + */ + if ( + \class_exists($class, false) + || \interface_exists($class, false) + ) { + return; + + } + if ( + \version_compare(PHP_VERSION, "5.4", '>=') + && \trait_exists($class, false) + ) { + return; + + } + if (!\array_key_exists($class, $this->_index)) { + return; + + } + + $this->_requirePath($this->_index[$class]); + + $this->_callClassConstructor($class, self::CLASS_CONSTRUCTOR); } - if ( - \version_compare(PHP_VERSION, "5.4", '>=') - && \trait_exists($class, false) - ) { - return; - } - if (! \array_key_exists($class, $this->_index)) { - return; + /** + * Requires a class path + * + * @param string $path Class path + * + * @return void + */ + private function _requirePath($path) + { + if (!empty($this->_basePath)) { + $path = $this->_basePath . DIRECTORY_SEPARATOR . $path; + } + require_once $path; } - - $this->_requirePath($this->_index[$class]); - - $this->_callClassConstructor($class, self::CLASS_CONSTRUCTOR); - } - - /** - * Requires a class path - * - * @param string $path Class path - * - * @return void - */ - private function _requirePath($path) - { - if (! empty($this->_basePath)) { - $path = $this->_basePath . DIRECTORY_SEPARATOR . $path; + /** + * Normalizes the reference of a class name with strtolower() + * + * Normalizing is needed as PHP is case insensitive. + * + * @param String &$class The reference of a class name + * + * @see strtolower(). + * @return void + */ + private function _normalizeClass(&$class) + { + $class = \strtolower($class); } - require_once $path; - } - /** - * Normalizes the reference of a class name with strtolower() - * - * Normalizing is needed as PHP is case insensitive. - * - * @param String &$class The reference of a class name - * - * @see strtolower(). - * @return void - */ - private function _normalizeClass(&$class) - { - $class = \strtolower($class); - } - - /** - * Calls the class constructor - * - * If the class $class has the method public static $constructor, it - * will be called. - * - * @param String $class A class which might have a class constructor - * @param String $constructorName the method name of the class constructor - * - * @return bool true if the class constructor was called - */ - public static function _callClassConstructor($class, $constructorName) - { - $reflectionClass = new \ReflectionClass($class); - if (! $reflectionClass->hasMethod($constructorName)) { - return false; + /** + * Calls the class constructor + * + * If the class $class has the method public static $constructor, it + * will be called. + * + * @param String $class A class which might have a class constructor + * @param String $constructorName the method name of the class constructor + * + * @return bool true if the class constructor was called + */ + public static function _callClassConstructor($class, $constructorName) + { + $reflectionClass = new \ReflectionClass($class); + if (!$reflectionClass->hasMethod($constructorName)) { + return false; - } - - $constructor = $reflectionClass->getMethod($constructorName); - if (! $constructor->isStatic()) { - return false; + } - } - - if (\version_compare(PHP_VERSION, "5.4", '>=') && $reflectionClass->isTrait()) { - return false; + $constructor = $reflectionClass->getMethod($constructorName); + if (!$constructor->isStatic()) { + return false; - } + } + + if (\version_compare(PHP_VERSION, "5.4", '>=') && $reflectionClass->isTrait()) { + return false; + + } + + if ($constructor->getDeclaringClass()->getName() != $reflectionClass->getName()) { + return false; - if ($constructor->getDeclaringClass()->getName() != $reflectionClass->getName()) { - return false; + } + $constructor->invoke(null); + return true; } - $constructor->invoke(null); - return true; } -} +} \ No newline at end of file diff --git a/composer.json b/composer.json index 5dfeb992..900c9bcb 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,7 @@ }, "require": { "php": ">=5", - "malkusch/php-index": "0.1.0" + "malkusch/php-index": "~0.1" }, "suggest": { "ext-PDO": "Allows storing bank information in a database", diff --git a/tests/autoloader/InstantAutoloader.php b/tests/autoloader/InstantAutoloader.php index e03880e3..d597906e 100644 --- a/tests/autoloader/InstantAutoloader.php +++ b/tests/autoloader/InstantAutoloader.php @@ -36,214 +36,213 @@ * There might be several InstantAutoloaders deployed in a project. * One is enough. */ -if (class_exists("malkusch\autoloader\InstantAutoloader")) { - return; +if (! class_exists("malkusch\autoloader\InstantAutoloader", false)) { -} - -/** - * An instant autoloader for shipping with project builds - * - * You can build a complete index of your project (by calling - * Autoloader::buildIndex()). If you use AutoloaderIndex_PHPArrayCode as - * index you can only use this instant autoloader for your project. This class - * has no further dependency on any other class. Just copy this class and the - * generated index anywhere into your project. - * - * Consider setting the AutoloaderIndexFilter_RelativePath filter. - * - * @category PHP - * @package Autoloader - * @author Markus Malkusch - * @license http://php-autoloader.malkusch.de/en/license/ GPL 3 - * @version Release: 1.12 - * @link http://php-autoloader.malkusch.de/en/ - * @see Autoloader::buildIndex() - * @see AutoloaderIndex_PHPArrayCode() - * @see AutoloaderIndexFilter_RelativePath() - */ -class InstantAutoloader -{ - - const - /** - * The name of the class constructor is classConstructor(). - */ - CLASS_CONSTRUCTOR = 'classConstructor'; - - private - /** - * @var string - */ - $_basePath = "", /** - * @var array + * An instant autoloader for shipping with project builds + * + * You can build a complete index of your project (by calling + * Autoloader::buildIndex()). If you use AutoloaderIndex_PHPArrayCode as + * index you can only use this instant autoloader for your project. This class + * has no further dependency on any other class. Just copy this class and the + * generated index anywhere into your project. + * + * Consider setting the AutoloaderIndexFilter_RelativePath filter. + * + * @category PHP + * @package Autoloader + * @author Markus Malkusch + * @license http://php-autoloader.malkusch.de/en/license/ GPL 3 + * @version Release: 1.12 + * @link http://php-autoloader.malkusch.de/en/ + * @see Autoloader::buildIndex() + * @see AutoloaderIndex_PHPArrayCode() + * @see AutoloaderIndexFilter_RelativePath() */ - $_index = array(); - - /** - * Loads the generated index array - * - * The index must be a generated AutoloaderIndex_PHPArrayCode index. - * - * @param string $indexPath Path to the generated index - */ - public function __construct($indexPath) + class InstantAutoloader { - $this->_index = require $indexPath; - } - /** - * Registers this autoloader at the autoloader stack - * - * @return void - */ - public function register() - { - // spl_autoload_register() disables __autoload(). This might be unwanted. - if (\function_exists("__autoload")) { - \spl_autoload_register("__autoload"); + const + /** + * The name of the class constructor is classConstructor(). + */ + CLASS_CONSTRUCTOR = 'classConstructor'; + + private + /** + * @var string + */ + $_basePath = "", + /** + * @var array + */ + $_index = array(); + + /** + * Loads the generated index array + * + * The index must be a generated AutoloaderIndex_PHPArrayCode index. + * + * @param string $indexPath Path to the generated index + */ + public function __construct($indexPath) + { + $this->_index = require $indexPath; + } + /** + * Registers this autoloader at the autoloader stack + * + * @return void + */ + public function register() + { + // spl_autoload_register() disables __autoload(). This might be unwanted. + if (\function_exists("__autoload")) { + \spl_autoload_register("__autoload"); + + } + \spl_autoload_register(array($this, "__autoload")); } - \spl_autoload_register(array($this, "__autoload")); - } - /** - * Includes all class paths - * - * You can use this as an alternative to the autoload mechanism. This - * simply includes all classes without any autoloader. - * - * @return void - */ - public function requireAll() - { - foreach ($this->_index as $classPath) { - $this->_requirePath($classPath); + /** + * Includes all class paths + * + * You can use this as an alternative to the autoload mechanism. This + * simply includes all classes without any autoloader. + * + * @return void + */ + public function requireAll() + { + foreach ($this->_index as $classPath) { + $this->_requirePath($classPath); + } } - } - - /** - * Sets the base path for the class paths in the index - * - * @param string $basePath Base path for the class paths in the index - * - * @return void - */ - public function setBasePath($basePath) - { - $this->_basePath = $basePath; - } - /** - * Autoloader callback - * - * @param string $class Class name - * - * @return void - */ - public function __autoload($class) - { - $this->_normalizeClass($class); - - /* - * spl_autoload_call() runs the complete stack, - * even though the class is already defined by - * a previously registered method. + /** + * Sets the base path for the class paths in the index + * + * @param string $basePath Base path for the class paths in the index + * + * @return void */ - if ( - \class_exists($class, false) - || \interface_exists($class, false) - ) { - return; + public function setBasePath($basePath) + { + $this->_basePath = $basePath; + } + /** + * Autoloader callback + * + * @param string $class Class name + * + * @return void + */ + public function __autoload($class) + { + $this->_normalizeClass($class); + + /* + * spl_autoload_call() runs the complete stack, + * even though the class is already defined by + * a previously registered method. + */ + if ( + \class_exists($class, false) + || \interface_exists($class, false) + ) { + return; + + } + if ( + \version_compare(PHP_VERSION, "5.4", '>=') + && \trait_exists($class, false) + ) { + return; + + } + if (!\array_key_exists($class, $this->_index)) { + return; + + } + + $this->_requirePath($this->_index[$class]); + + $this->_callClassConstructor($class, self::CLASS_CONSTRUCTOR); } - if ( - \version_compare(PHP_VERSION, "5.4", '>=') - && \trait_exists($class, false) - ) { - return; - } - if (! \array_key_exists($class, $this->_index)) { - return; + /** + * Requires a class path + * + * @param string $path Class path + * + * @return void + */ + private function _requirePath($path) + { + if (!empty($this->_basePath)) { + $path = $this->_basePath . DIRECTORY_SEPARATOR . $path; + } + require_once $path; } - - $this->_requirePath($this->_index[$class]); - - $this->_callClassConstructor($class, self::CLASS_CONSTRUCTOR); - } - - /** - * Requires a class path - * - * @param string $path Class path - * - * @return void - */ - private function _requirePath($path) - { - if (! empty($this->_basePath)) { - $path = $this->_basePath . DIRECTORY_SEPARATOR . $path; + /** + * Normalizes the reference of a class name with strtolower() + * + * Normalizing is needed as PHP is case insensitive. + * + * @param String &$class The reference of a class name + * + * @see strtolower(). + * @return void + */ + private function _normalizeClass(&$class) + { + $class = \strtolower($class); } - require_once $path; - } - /** - * Normalizes the reference of a class name with strtolower() - * - * Normalizing is needed as PHP is case insensitive. - * - * @param String &$class The reference of a class name - * - * @see strtolower(). - * @return void - */ - private function _normalizeClass(&$class) - { - $class = \strtolower($class); - } - - /** - * Calls the class constructor - * - * If the class $class has the method public static $constructor, it - * will be called. - * - * @param String $class A class which might have a class constructor - * @param String $constructorName the method name of the class constructor - * - * @return bool true if the class constructor was called - */ - public static function _callClassConstructor($class, $constructorName) - { - $reflectionClass = new \ReflectionClass($class); - if (! $reflectionClass->hasMethod($constructorName)) { - return false; + /** + * Calls the class constructor + * + * If the class $class has the method public static $constructor, it + * will be called. + * + * @param String $class A class which might have a class constructor + * @param String $constructorName the method name of the class constructor + * + * @return bool true if the class constructor was called + */ + public static function _callClassConstructor($class, $constructorName) + { + $reflectionClass = new \ReflectionClass($class); + if (!$reflectionClass->hasMethod($constructorName)) { + return false; - } - - $constructor = $reflectionClass->getMethod($constructorName); - if (! $constructor->isStatic()) { - return false; + } - } - - if (\version_compare(PHP_VERSION, "5.4", '>=') && $reflectionClass->isTrait()) { - return false; + $constructor = $reflectionClass->getMethod($constructorName); + if (!$constructor->isStatic()) { + return false; - } + } + + if (\version_compare(PHP_VERSION, "5.4", '>=') && $reflectionClass->isTrait()) { + return false; + + } + + if ($constructor->getDeclaringClass()->getName() != $reflectionClass->getName()) { + return false; - if ($constructor->getDeclaringClass()->getName() != $reflectionClass->getName()) { - return false; + } + $constructor->invoke(null); + return true; } - $constructor->invoke(null); - return true; } -} +} \ No newline at end of file From a9b17b052de6c44497b404dd8ade39e54888f2bf Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Mon, 1 Dec 2014 19:28:19 +0100 Subject: [PATCH 257/303] fixed composers archive exclusion option --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 900c9bcb..e91c929a 100644 --- a/composer.json +++ b/composer.json @@ -32,7 +32,7 @@ "doctrine/orm": "v2.4.3" }, "archive": { - "exclude": ["/tests/"] + "exclude": ["/tests"] }, "bin": [ "bin/bav-update.php", From 981cf34e216645d309055615ceeef4b8e828d101 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 13 Jan 2015 01:17:12 +0100 Subject: [PATCH 258/303] [PR18] Adding test cases for Validator74 and Validator66. --- tests/unit/Validator66_PR18_Test.php | 48 +++++++++++++++++++++ tests/unit/Validator74_PR18_Test.php | 62 ++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 tests/unit/Validator66_PR18_Test.php create mode 100644 tests/unit/Validator74_PR18_Test.php diff --git a/tests/unit/Validator66_PR18_Test.php b/tests/unit/Validator66_PR18_Test.php new file mode 100644 index 00000000..e864f688 --- /dev/null +++ b/tests/unit/Validator66_PR18_Test.php @@ -0,0 +1,48 @@ + + * @license WTFPL + * @link https://github.com/bav-php/bav/pull/18 + */ +class Validator66_PR18_Test extends \PHPUnit_Framework_TestCase +{ + + /** + * Tests for Validator66 which produces the remainer 0 and 1. + * + * @param string $account The account id. + * @param bool $expected The expected validation result. + * + * @dataProvider provideTestRemainer0and1 + * @link https://www.mail-archive.com/aqbanking-devel@lists.sourceforge.net/msg01292.html + */ + public function testRemainer0and1($account, $expected) + { + $backend = $this->getMock("malkusch\bav\FileDataBackend"); + $bank = $this->getMock( + "malkusch\bav\Bank", array(), array($backend, 1, 66)); + + $validator = new Validator66($bank); + $this->assertEquals($expected, $validator->isValid($account)); + } + + /** + * Returns test cases for testRemainer0and1(). + * + * @return array Test cases. + */ + public function provideTestRemainer0and1() + { + return array( + array("0100001001", true), // 0 + array("0100201000", true), // 1 + ); + } +} diff --git a/tests/unit/Validator74_PR18_Test.php b/tests/unit/Validator74_PR18_Test.php new file mode 100644 index 00000000..a59d7720 --- /dev/null +++ b/tests/unit/Validator74_PR18_Test.php @@ -0,0 +1,62 @@ + + * @license WTFPL + * @link https://github.com/bav-php/bav/pull/18 + */ +class Validator74_PR18_Test extends \PHPUnit_Framework_TestCase +{ + + /** + * Tests for Validator74 which produces accumulators which end from 1 to 14. + * + * A halfdecade seems to be understanded as 5, 15, 25, …. + * + * @param string $account The account id. + * @param bool $expected The expected validation result. + * + * @dataProvider provideTestAllHalfDecades + * @link https://www.mail-archive.com/aqbanking-devel@lists.sourceforge.net/msg01292.html + */ + public function testAllHalfDecades($account, $expected) + { + $backend = $this->getMock("malkusch\bav\FileDataBackend"); + $bank = $this->getMock( + "malkusch\bav\Bank", array(), array($backend, 1, 74)); + + $validator = new Validator74($bank); + $this->assertEquals($expected, $validator->isValid($account)); + } + + /** + * Returns test cases for testAllHalfDecades(). + * + * @return array Test cases. + */ + public function provideTestAllHalfDecades() + { + return array( + array("500004", true), // 5 - 1 = 4 + array("100003", true), // 5 - 2 = 3 + array("100102", true), // 5 - 3 = 2 + array("200001", true), // 5 - 4 = 1 + array("111000", true), // 15 - 5 = 10 (0) + array("200209", true), // 15 - 6 = 9 + array("200308", true), // 15 - 7 = 8 + array("200407", true), // 15 - 8 = 7 + array("200506", true), // 15 - 9 = 6 + array("200605", true), // 15 - 10 = 5 + array("190004", true), // 15 - 11 = 4 + array("200803", true), // 15 - 12 = 3 + array("200902", true), // 15 - 13 = 2 + array("144001", true), // 15 - 14 = 1 + ); + } +} From 52772648f359059886f2d26d0c0c8bad856f4d20 Mon Sep 17 00:00:00 2001 From: Dieter Funk Date: Mon, 12 Jan 2015 10:40:37 +0100 Subject: [PATCH 259/303] fix for Validator 74 --- classes/validator/validators/Validator74.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/classes/validator/validators/Validator74.php b/classes/validator/validators/Validator74.php index 6700f93c..2eb14690 100644 --- a/classes/validator/validators/Validator74.php +++ b/classes/validator/validators/Validator74.php @@ -42,8 +42,7 @@ protected function getResult() return true; } elseif (strlen(ltrim($this->account, '0')) == 6) { - $nextDecade = (int) ($this->accumulator/10) + 1; - $nextHalfDecade = $nextDecade*10 - 5; + $nextHalfDecade = round($this->accumulator/10) * 10 + 5; $check = $nextHalfDecade - $this->accumulator; return (string) $check === $this->getChecknumber(); From d555a94127729d81d5689419b94856c5997efc22 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 13 Jan 2015 01:45:30 +0100 Subject: [PATCH 260/303] [PR18] Fix Validator74 for e.g. 15 - 5 = 10. --- classes/validator/validators/Validator74.php | 2 +- docs/changelog.txt | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/classes/validator/validators/Validator74.php b/classes/validator/validators/Validator74.php index 2eb14690..2006d399 100644 --- a/classes/validator/validators/Validator74.php +++ b/classes/validator/validators/Validator74.php @@ -43,7 +43,7 @@ protected function getResult() } elseif (strlen(ltrim($this->account, '0')) == 6) { $nextHalfDecade = round($this->accumulator/10) * 10 + 5; - $check = $nextHalfDecade - $this->accumulator; + $check = ($nextHalfDecade - $this->accumulator) % 10; return (string) $check === $this->getChecknumber(); } else { diff --git a/docs/changelog.txt b/docs/changelog.txt index c631e6a0..b6ef028d 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -12,6 +12,8 @@ Version 1.1.0 - not yet released - fixed a bug in FileParser which did hide the last line in the file of the Bundesbank. + - [PR18] Fixed Validator 74. + -[TODO] add IBAN rule support -[TODO] evaluate IBAN validation support From 7e775800fdff49ccc83296809f0c90939fb0820a Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 13 Jan 2015 01:53:34 +0100 Subject: [PATCH 261/303] [PSR2] fix code style. --- bin/bav-install.php | 2 +- bin/bav-uninstall.php | 2 +- bin/bav-update.php | 2 +- classes/BAV.php | 28 +++++++++---------- classes/bank/Agency.php | 2 +- classes/configuration/Configuration.php | 14 +++++----- .../configuration/ConfigurationException.php | 2 +- .../configuration/ConfigurationLocator.php | 8 +++--- .../configuration/ConfigurationRegistry.php | 22 +++++++-------- .../configuration/DefaultConfiguration.php | 6 ++-- classes/dataBackend/DataBackendContainer.php | 6 ++-- .../exception/InvalidContextException.php | 2 +- .../file/FileDataBackendContainer.php | 4 +-- .../dataBackend/file/download/Downloader.php | 4 +-- .../file/download/uripicker/DOMURIPicker.php | 4 +-- .../download/uripicker/FallbackURIPicker.php | 4 +-- .../download/uripicker/RegExpURIPicker.php | 4 +-- .../file/download/uripicker/URIPicker.php | 4 +-- classes/dataBackend/orm/MetaData.php | 10 +++---- .../orm/doctrine/DoctrineBackendContainer.php | 14 +++++----- .../orm/doctrine/DoctrineDataBackend.php | 4 +-- classes/dataBackend/pdo/PDODataBackend.php | 1 - .../pdo/PDODataBackendContainer.php | 4 +-- .../dataBackend/pdo/StatementContainer.php | 2 +- .../update/AutomaticUpdatePlan.php | 6 ++-- classes/exception/BAVException.php | 2 +- classes/util/BICUtil.php | 2 +- classes/util/Lock.php | 6 ++-- classes/validator/ContextValidation.php | 18 ++++++------ classes/validator/Validator.php | 8 +++--- classes/validator/ValidatorFactory.php | 4 +-- classes/validator/validators/Validator87a.php | 1 - docs/example.php | 4 +-- tests/bin/test-install.php | 2 +- tests/classes/PDOFactory.php | 6 ++-- tests/classes/TimeMock.php | 4 +-- tests/classes/testAPI/BAVTestAPI.php | 2 +- tests/classes/testAPI/KontocheckTestAPI.php | 4 +-- tests/classes/testAPI/KtoblzcheckTestAPI.php | 6 ++-- tests/classes/testAPI/TestAPI.php | 4 +-- 40 files changed, 116 insertions(+), 118 deletions(-) diff --git a/bin/bav-install.php b/bin/bav-install.php index 202a17b1..918c9836 100755 --- a/bin/bav-install.php +++ b/bin/bav-install.php @@ -22,4 +22,4 @@ } catch (DataBackendException $error) { die("Installation failed: {$error->getMessage()}\n"); -} \ No newline at end of file +} diff --git a/bin/bav-uninstall.php b/bin/bav-uninstall.php index 0f68bed2..55f02cba 100755 --- a/bin/bav-uninstall.php +++ b/bin/bav-uninstall.php @@ -24,4 +24,4 @@ } catch (DataBackendException $error) { die("Deinstallation failed: {$error->getMessage()}\n"); -} \ No newline at end of file +} diff --git a/bin/bav-update.php b/bin/bav-update.php index 11c0a45a..09ec5eca 100755 --- a/bin/bav-update.php +++ b/bin/bav-update.php @@ -21,4 +21,4 @@ } catch (DataBackendException $error) { die("Installation failed: {$error->getMessage()}\n"); -} \ No newline at end of file +} diff --git a/classes/BAV.php b/classes/BAV.php index bd0fe6bb..d52e63f7 100644 --- a/classes/BAV.php +++ b/classes/BAV.php @@ -4,13 +4,13 @@ /** * Facade for BAV's API. - * + * * This class provides methods for validation of German bank accounts. - * + * * If you don't inject a {@link Configuration} the facade will use the * {@link ConfigurationRegistry}. The registry provides per default the * {@link DefaultConfiguration}. - * + * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license WTFPL @@ -37,10 +37,10 @@ class BAV /** * Inject the configuration. - * + * * If the $configuration is null the configuration from * {@link ConfigurationRegistry::getConfiguration()} will be used. - * + * * @see ConfigurationRegistry */ public function __construct(Configuration $configuration = null) @@ -69,9 +69,9 @@ public function getDataBackend() /** * Updates bav with a new bundesbank file. * - * You might consider enabling automatic update with setting + * You might consider enabling automatic update with setting * AutomaticUpdatePlan as configuration. - * + * * @see AutomaticUpdatePlan * @see Configuration::setUpdatePlan() * @throws DataBackendException @@ -106,7 +106,7 @@ public function isValidBankAccount($bankID, $account) /** * Returns true if the account is valid for the current context. - * + * * You have to have called isValidBank() before! If the current context * is no valid bank every account will validate to true. * @@ -136,7 +136,7 @@ public function isValidBank($bankID) /** * Every bank has one main agency. - * + * * This agency is not included in getAgencies(). * * @throws DataBackendException @@ -153,7 +153,7 @@ public function getMainAgency($bankID) /** * A bank may have more agencies. - * + * * The main agency is not included in this list. * * @param string $bankID Bank id (Bankleitzahl) @@ -207,9 +207,9 @@ public function isValidBIC($bic) /** * Returns the third call back parameter for filter_var() for validating * a bank. - * + * * filter_var($bankID, FILTER_CALLBACK, $bav->getValidBankFilterCallback()); - * + * * @return array * @see isValidBank() * @see filter_var() @@ -222,9 +222,9 @@ public function getValidBankFilterCallback() /** * Returns the third call back parameter for filter_var() for validating * a bank account. - * + * * filter_var($account, FILTER_CALLBACK, $bav->getValidBankFilterCallback()); - * + * * @return array * @see isValidAccount() * @see filter_var() diff --git a/classes/bank/Agency.php b/classes/bank/Agency.php index 73c79a3b..4d058eab 100644 --- a/classes/bank/Agency.php +++ b/classes/bank/Agency.php @@ -4,7 +4,7 @@ /** * The bank agency. - * + * * Every bank has one main agency and may have some more agencies * in different cities. * diff --git a/classes/configuration/Configuration.php b/classes/configuration/Configuration.php index 85fc9cd8..63023675 100644 --- a/classes/configuration/Configuration.php +++ b/classes/configuration/Configuration.php @@ -4,7 +4,7 @@ /** * Configuration - * + * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license WTFPL @@ -41,7 +41,7 @@ class Configuration /** * Sets the update plan. - * + * * Set to null if you don't want to use an update plan. */ public function setUpdatePlan(UpdatePlan $updatePlan = null) @@ -61,10 +61,10 @@ public function getUpdatePlan() /** * Turns automatic installation on or off. - * + * * If automatic installation is activated {@link DataBackendContainer} will * check if it is installed and if not install the backend. - * + * * @see DataBackend::install() * @param bool $automaticInstallation Set true to turn installation on */ @@ -121,12 +121,12 @@ public function getEncoding() /** * Sets the temporary directory. - * + * * If you set a temporary directory BAV will use this for temporary files. * This option is optional. If it is not set the system's path will be used. - * + * * The temporary directory is used for the installation and update process. - * + * * @param string $tempDirectory */ public function setTempDirectory($tempDirectory) diff --git a/classes/configuration/ConfigurationException.php b/classes/configuration/ConfigurationException.php index b3c97081..1ee97409 100644 --- a/classes/configuration/ConfigurationException.php +++ b/classes/configuration/ConfigurationException.php @@ -4,7 +4,7 @@ /** * Configuration exception - * + * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license WTFPL diff --git a/classes/configuration/ConfigurationLocator.php b/classes/configuration/ConfigurationLocator.php index 8afae40c..da1248ae 100644 --- a/classes/configuration/ConfigurationLocator.php +++ b/classes/configuration/ConfigurationLocator.php @@ -4,7 +4,7 @@ /** * Helper for locating a BAV configuration. - * + * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license WTFPL @@ -20,9 +20,9 @@ class ConfigurationLocator /** * Sets the paths where a location is expected. - * + * * Those paths may be relative to the include_path. - * + * * @param string[] $paths */ public function __construct($paths = array()) @@ -32,7 +32,7 @@ public function __construct($paths = array()) /** * Locates a configuration. - * + * * @return Configuration|null * @throws ConfigurationException */ diff --git a/classes/configuration/ConfigurationRegistry.php b/classes/configuration/ConfigurationRegistry.php index b4941094..be925e97 100644 --- a/classes/configuration/ConfigurationRegistry.php +++ b/classes/configuration/ConfigurationRegistry.php @@ -4,28 +4,28 @@ /** * Registry for the configuration - * - * BAV uses this static container for its runtime configuration. Per default the + * + * BAV uses this static container for its runtime configuration. Per default the * registry is initialized with the {@link DefaultConfiguration}. You can * set your own configuration with {@link setConfiguration()} or preferably * by providing the file bav/configuration.php. This file should return a * {@link Configuration} object: - * + * * * setDataBackendContainer(new PDODataBackendContainer($pdo)); - * + * * $configuration->setUpdatePlan(new AutomaticUpdatePlan()); * * return $configuration; * - * + * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license WTFPL @@ -46,10 +46,10 @@ class ConfigurationRegistry /** * locate a configuration or register the default configuration. - * + * * You may define the file bav/configuration.php. This file should return * a Configuration object. - * + * * @see DefaultConfiguration * @throws ConfigurationException */ @@ -69,7 +69,7 @@ public static function classConstructor() /** * Register a configuration programmatically. - * + * * Alternatively you can provide the file bav/configuration.php which * returns a {@link Configuration} object. */ diff --git a/classes/configuration/DefaultConfiguration.php b/classes/configuration/DefaultConfiguration.php index 02a4b969..52497418 100644 --- a/classes/configuration/DefaultConfiguration.php +++ b/classes/configuration/DefaultConfiguration.php @@ -5,11 +5,11 @@ /** * Default configuration uses {@link FileDataBackendContainer} * and any available UTF-8 encoder. - * + * * Automatic installation is enabled. - * + * * The update plan is set to {@link LogUpdatePlan} - * + * * If no UTF-8 encoding is supported ISO-8859-15 will be used. * * @author Markus Malkusch diff --git a/classes/dataBackend/DataBackendContainer.php b/classes/dataBackend/DataBackendContainer.php index 61de213d..19307708 100644 --- a/classes/dataBackend/DataBackendContainer.php +++ b/classes/dataBackend/DataBackendContainer.php @@ -4,7 +4,7 @@ /** * Container for DataBackend objects. - * + * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license WTFPL @@ -37,7 +37,7 @@ abstract protected function makeDataBackend(); * * If configured this method would automatically install the backend. I.e. a first * call will take some amount of time. - * + * * @return DataBackend * @throws DataBackendException */ @@ -77,7 +77,7 @@ public function applyUpdatePlan(DataBackend $backend) /** * Returns a configured data backend. * - * If configured this method would automatically install and update the backend. I.e. + * If configured this method would automatically install and update the backend. I.e. * some calls might take longer. * * @see Configuration::setAutomaticInstallation() diff --git a/classes/dataBackend/exception/InvalidContextException.php b/classes/dataBackend/exception/InvalidContextException.php index 4a9689d5..5c6a1763 100644 --- a/classes/dataBackend/exception/InvalidContextException.php +++ b/classes/dataBackend/exception/InvalidContextException.php @@ -4,7 +4,7 @@ /** * Missing context during context validation - * + * * @see ContextValidation * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations diff --git a/classes/dataBackend/file/FileDataBackendContainer.php b/classes/dataBackend/file/FileDataBackendContainer.php index 75a366aa..e6649628 100644 --- a/classes/dataBackend/file/FileDataBackendContainer.php +++ b/classes/dataBackend/file/FileDataBackendContainer.php @@ -4,7 +4,7 @@ /** * Container for FileDataBackend objects. - * + * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license WTFPL @@ -21,7 +21,7 @@ class FileDataBackendContainer extends DataBackendContainer /** * Sets the path for the backend. - * + * * @param string $file Path to the bundesbank file */ public function __construct($file = null) diff --git a/classes/dataBackend/file/download/Downloader.php b/classes/dataBackend/file/download/Downloader.php index 84a8824d..283c5e27 100644 --- a/classes/dataBackend/file/download/Downloader.php +++ b/classes/dataBackend/file/download/Downloader.php @@ -4,7 +4,7 @@ /** * Downloads an URI - * + * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license WTFPL @@ -58,7 +58,7 @@ private function download($uri) /** * Downloads the content of an URI - * + * * @param string $uri URI * @return string Content of the page * @throws DownloaderException diff --git a/classes/dataBackend/file/download/uripicker/DOMURIPicker.php b/classes/dataBackend/file/download/uripicker/DOMURIPicker.php index 7455568b..c2f5e328 100644 --- a/classes/dataBackend/file/download/uripicker/DOMURIPicker.php +++ b/classes/dataBackend/file/download/uripicker/DOMURIPicker.php @@ -4,7 +4,7 @@ /** * Finds the download URI in the Bundesbank HTML page with XPath. - * + * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license WTFPL @@ -24,7 +24,7 @@ public function isAvailable() /** * Returns the download URI from the Bundesbank html page. - * + * * @throws URIPickerException * @return string */ diff --git a/classes/dataBackend/file/download/uripicker/FallbackURIPicker.php b/classes/dataBackend/file/download/uripicker/FallbackURIPicker.php index b7067dd9..ed4235bc 100644 --- a/classes/dataBackend/file/download/uripicker/FallbackURIPicker.php +++ b/classes/dataBackend/file/download/uripicker/FallbackURIPicker.php @@ -4,7 +4,7 @@ /** * Finds the download URI in the Bundesbank HTML page with any URI picker. - * + * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license WTFPL @@ -47,7 +47,7 @@ public function isAvailable() /** * Returns the download URI from the Bundesbank html page. - * + * * @throws URIPickerException * @return string */ diff --git a/classes/dataBackend/file/download/uripicker/RegExpURIPicker.php b/classes/dataBackend/file/download/uripicker/RegExpURIPicker.php index 2be6252c..ff37473c 100644 --- a/classes/dataBackend/file/download/uripicker/RegExpURIPicker.php +++ b/classes/dataBackend/file/download/uripicker/RegExpURIPicker.php @@ -4,7 +4,7 @@ /** * Finds the download URI in the Bundesbank HTML page with a regular expression. - * + * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license WTFPL @@ -24,7 +24,7 @@ public function isAvailable() /** * Returns the download URI from the Bundesbank html page. - * + * * @throws URIPickerException * @return string */ diff --git a/classes/dataBackend/file/download/uripicker/URIPicker.php b/classes/dataBackend/file/download/uripicker/URIPicker.php index 0edf71d1..5992ad68 100644 --- a/classes/dataBackend/file/download/uripicker/URIPicker.php +++ b/classes/dataBackend/file/download/uripicker/URIPicker.php @@ -4,7 +4,7 @@ /** * Finds the download URI in the Bundesbank HTML page. - * + * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license WTFPL @@ -21,7 +21,7 @@ public function isAvailable(); /** * Returns the download URI from the Bundesbank html page. - * + * * @throws URIPickerException * @return string */ diff --git a/classes/dataBackend/orm/MetaData.php b/classes/dataBackend/orm/MetaData.php index c4275c99..b7822bfc 100644 --- a/classes/dataBackend/orm/MetaData.php +++ b/classes/dataBackend/orm/MetaData.php @@ -4,7 +4,7 @@ /** * Entity for storing metadata for an ORM backend. - * + * * @internal * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations @@ -27,7 +27,7 @@ class MetaData /** * Sets the name - * + * * @param string $name */ public function setName($name) @@ -37,7 +37,7 @@ public function setName($name) /** * Gets the name - * + * * @return string */ public function getName() @@ -47,7 +47,7 @@ public function getName() /** * Sets the value - * + * * @param string $value */ public function setValue($value) @@ -57,7 +57,7 @@ public function setValue($value) /** * Gets the value - * + * * @return string */ public function getValue() diff --git a/classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php b/classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php index e5bdc6ad..cf44694f 100644 --- a/classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php +++ b/classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php @@ -7,9 +7,9 @@ /** * Container for DoctrineDataBackend objects. - * + * * You will need Doctrine as composer dependency. - * + * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license WTFPL @@ -21,13 +21,13 @@ class DoctrineBackendContainer extends DataBackendContainer { /** - * @var EntityManager + * @var EntityManager */ private $em; /** * Return the paths to the XML-Mappings - * + * * @return string[] */ public static function getXMLMappings() @@ -37,7 +37,7 @@ public static function getXMLMappings() /** * Builds a container for a connection. - * + * * @param mixed $connection Doctrine::DBAL connection * @return DoctrineBackendContainer */ @@ -51,7 +51,7 @@ public static function buildByConnection($connection, $isDevMode = false) } /** - * Injects the EntityManager + * Injects the EntityManager */ public function __construct(EntityManager $entityManager) { @@ -60,7 +60,7 @@ public function __construct(EntityManager $entityManager) /** * Gets the EntityManager - * + * * @return EntityManager */ public function getEntityManager() diff --git a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php index d00ff958..44b013a5 100644 --- a/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php +++ b/classes/dataBackend/orm/doctrine/DoctrineDataBackend.php @@ -11,7 +11,7 @@ * Use Doctrine ORM as backend. * * You will need Doctrine as composer dependency. - * + * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license WTFPL @@ -21,7 +21,7 @@ class DoctrineDataBackend extends SQLDataBackend { /** - * @var EntityManager + * @var EntityManager */ private $em; diff --git a/classes/dataBackend/pdo/PDODataBackend.php b/classes/dataBackend/pdo/PDODataBackend.php index fec8c3bb..3155e8a0 100644 --- a/classes/dataBackend/pdo/PDODataBackend.php +++ b/classes/dataBackend/pdo/PDODataBackend.php @@ -539,7 +539,6 @@ public function getLastUpdate() public function isInstalled() { try { - switch ($this->pdo->getAttribute(\PDO::ATTR_DRIVER_NAME)) { case "sqlite": diff --git a/classes/dataBackend/pdo/PDODataBackendContainer.php b/classes/dataBackend/pdo/PDODataBackendContainer.php index 2206bca5..438bdee3 100644 --- a/classes/dataBackend/pdo/PDODataBackendContainer.php +++ b/classes/dataBackend/pdo/PDODataBackendContainer.php @@ -4,7 +4,7 @@ /** * Container for PDODataBackend objects. - * + * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license WTFPL @@ -26,7 +26,7 @@ class PDODataBackendContainer extends DataBackendContainer /** * Sets the PDO and the table prefix. - * + * * @param String $prefix the prefix of the table names. Default is 'bav_'. */ public function __construct(\PDO $pdo, $prefix = 'bav_') diff --git a/classes/dataBackend/pdo/StatementContainer.php b/classes/dataBackend/pdo/StatementContainer.php index 97a8cf20..8bf3d161 100644 --- a/classes/dataBackend/pdo/StatementContainer.php +++ b/classes/dataBackend/pdo/StatementContainer.php @@ -32,7 +32,7 @@ public function __construct(\PDO $pdo) /** * Returns a PDOStatement - * + * * This method will return the same object for equal queries. * * @param string $sql diff --git a/classes/dataBackend/update/AutomaticUpdatePlan.php b/classes/dataBackend/update/AutomaticUpdatePlan.php index b13dfe5d..3f0a237e 100644 --- a/classes/dataBackend/update/AutomaticUpdatePlan.php +++ b/classes/dataBackend/update/AutomaticUpdatePlan.php @@ -25,7 +25,7 @@ class AutomaticUpdatePlan extends UpdatePlan /** * Set to false if you don't want to see an E_USER_NOTICE about an update. - * + * * @param bool $notice */ public function setNotice($notice) @@ -35,9 +35,9 @@ public function setNotice($notice) /** * Perform an update. - * + * * If enabled (default) this method will send a E_USER_NOTICE about the update. - * + * * @see setNotice() */ public function perform(DataBackend $backend) diff --git a/classes/exception/BAVException.php b/classes/exception/BAVException.php index 2db613a7..bb8ce8c1 100644 --- a/classes/exception/BAVException.php +++ b/classes/exception/BAVException.php @@ -4,7 +4,7 @@ /** * Base exception - * + * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license WTFPL diff --git a/classes/util/BICUtil.php b/classes/util/BICUtil.php index 02b5e618..28371bce 100644 --- a/classes/util/BICUtil.php +++ b/classes/util/BICUtil.php @@ -14,7 +14,7 @@ class BICUtil /** * Extends an 8 character BIC to an 11 character BIC. - * + * * @param string $bic BIC * @return string */ diff --git a/classes/util/Lock.php b/classes/util/Lock.php index 780fdbe0..7b4cc059 100644 --- a/classes/util/Lock.php +++ b/classes/util/Lock.php @@ -4,7 +4,7 @@ /** * Helper for locking - * + * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license WTFPL @@ -46,7 +46,7 @@ public function __construct($name) * * If more processes call this method only the process which aquired the lock * will execute the task. The others will block but won't execute the task. - * + * * @throws Exception */ public function executeOnce(\Closure $task) @@ -74,7 +74,7 @@ public function executeOnce(\Closure $task) * * If more processes call this method only the process which aquired the lock * will execute the task. The others will continue execution. - * + * * @throws Exception */ public function nonblockingExecuteOnce(\Closure $task) diff --git a/classes/validator/ContextValidation.php b/classes/validator/ContextValidation.php index 1d582a57..c48709bf 100644 --- a/classes/validator/ContextValidation.php +++ b/classes/validator/ContextValidation.php @@ -4,12 +4,12 @@ /** * Context validation - * + * * You have to validate first a bank to set a context. Then you can validate * an account. - * + * * This class provides callbacks for filter validation. - * + * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license WTFPL @@ -42,7 +42,7 @@ public function __construct(DataBackend $backend) /** * Returns true if a bank exists. - * + * * This method sets the bank context and should be called first. * * @throws DataBackendException @@ -66,7 +66,7 @@ public function isValidBank($bankID) /** * Returns true if the account is valid for the current context. - * + * * You have to have called isValidBank() before! If the current context * is no valid bank every account will validate to true. * @@ -95,9 +95,9 @@ public function isValidAccount($account) /** * Returns the third call back parameter for filter_var() for validating * a bank. - * + * * filter_var($bankID, FILTER_CALLBACK, $validation->getValidBankFilterCallback()); - * + * * @return array * @see isValidBank() * @see filter_var() @@ -113,9 +113,9 @@ public function getValidBankFilterCallback() /** * Returns the third call back parameter for filter_var() for validating * a bank account. - * + * * filter_var($account, FILTER_CALLBACK, $validation->getValidBankFilterCallback()); - * + * * @return array * @see isValidAccount() * @see filter_var() diff --git a/classes/validator/Validator.php b/classes/validator/Validator.php index 8afe141c..a7ea34cf 100644 --- a/classes/validator/Validator.php +++ b/classes/validator/Validator.php @@ -67,7 +67,7 @@ public function __construct(Bank $bank) /** * Raises a E_USER_WARNING for non string accounts. - * + * * @param string $account bank account */ protected function checkType($account) @@ -85,14 +85,14 @@ protected function checkType($account) /** * Validates a bank account. - * + * * Null is considered invalid. - * + * * Note: The parameter $account should be a string. If it's not a string * an E_USER_WARNING will be raised. Bank accounts may start with leading * zeros, wich lead to unexpected results if not treated as a string ( * e.g. (int) 0020012357 evaluates to (string) '4199663'). - * + * * @param string $account bank account * @return bool */ diff --git a/classes/validator/ValidatorFactory.php b/classes/validator/ValidatorFactory.php index 9cb050c8..61267a4a 100644 --- a/classes/validator/ValidatorFactory.php +++ b/classes/validator/ValidatorFactory.php @@ -4,7 +4,7 @@ /** * Validator factory - * + * * @author Markus Malkusch * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license WTFPL @@ -14,7 +14,7 @@ class ValidatorFactory /** * Builds a validator for a bank. - * + * * @return Validator * @see Bank::getValidationType() * @see Bank::getValidator() diff --git a/classes/validator/validators/Validator87a.php b/classes/validator/validators/Validator87a.php index accd9c04..b6196d35 100644 --- a/classes/validator/validators/Validator87a.php +++ b/classes/validator/validators/Validator87a.php @@ -136,7 +136,6 @@ protected function getResult() return true; } else { if ($konto[4] == 0) { - if ($p > 4) { $p = $p - 5; } else { diff --git a/docs/example.php b/docs/example.php index 83f93ca7..b89620dd 100755 --- a/docs/example.php +++ b/docs/example.php @@ -2,7 +2,7 @@ getTraceAsString()); -} \ No newline at end of file +} diff --git a/tests/bin/test-install.php b/tests/bin/test-install.php index 11746b41..fb32fb05 100755 --- a/tests/bin/test-install.php +++ b/tests/bin/test-install.php @@ -27,4 +27,4 @@ } catch (DataBackendException $error) { die("Installation failed: {$error->getMessage()}\n"); -} \ No newline at end of file +} diff --git a/tests/classes/PDOFactory.php b/tests/classes/PDOFactory.php index ffb392a3..e811ce52 100644 --- a/tests/classes/PDOFactory.php +++ b/tests/classes/PDOFactory.php @@ -4,7 +4,7 @@ /** * PDO factory - * + * * @license WTFPL * @author Markus Malkusch * @see makePDO() @@ -29,8 +29,8 @@ class PDOFactory /** * Builds a PDO. - * - * If the environment doesn't provide the dsn, user and password + * + * If the environment doesn't provide the dsn, user and password * it uses the default mysql test database. * * @return \PDO diff --git a/tests/classes/TimeMock.php b/tests/classes/TimeMock.php index c65b77b1..bd880bc8 100644 --- a/tests/classes/TimeMock.php +++ b/tests/classes/TimeMock.php @@ -4,7 +4,7 @@ /** * time() mock. - * + * * This mock works only if the built-in wasn't used before. I.e. tests * which want to mock time() have to run before other tests which might * call somewhere in the stack an unmocked time(). If the built in was @@ -44,7 +44,7 @@ public static function disable() /** * Sets the moc time. - * + * * @param int $time moc time */ public static function setTime($time) diff --git a/tests/classes/testAPI/BAVTestAPI.php b/tests/classes/testAPI/BAVTestAPI.php index 5bf4d558..035e70d4 100644 --- a/tests/classes/testAPI/BAVTestAPI.php +++ b/tests/classes/testAPI/BAVTestAPI.php @@ -38,7 +38,7 @@ public function __construct() /** * Returns true if the API is available. - * + * * @return bool */ protected function isAvailable() diff --git a/tests/classes/testAPI/KontocheckTestAPI.php b/tests/classes/testAPI/KontocheckTestAPI.php index 5a914811..7d1d2cbf 100644 --- a/tests/classes/testAPI/KontocheckTestAPI.php +++ b/tests/classes/testAPI/KontocheckTestAPI.php @@ -48,7 +48,7 @@ public function __construct($lutFile = null, $lutVersion = null) /** * Return true for known false positives. - * + * * @return true */ public function ignoreTestCase(Bank $bank, $account) @@ -70,7 +70,7 @@ public function ignoreTestCase(Bank $bank, $account) /** * Returns true if the API is available. - * + * * @return bool */ protected function isAvailable() diff --git a/tests/classes/testAPI/KtoblzcheckTestAPI.php b/tests/classes/testAPI/KtoblzcheckTestAPI.php index 2fb469fc..e91d8bee 100644 --- a/tests/classes/testAPI/KtoblzcheckTestAPI.php +++ b/tests/classes/testAPI/KtoblzcheckTestAPI.php @@ -46,9 +46,9 @@ public function __construct($bankdata = null, $binary = null) /** * Return true for known false positives. - * + * * Version 1.45 has many false positives. - * + * * @return true */ public function ignoreTestCase(Bank $bank, $account) @@ -79,7 +79,7 @@ public function ignoreTestCase(Bank $bank, $account) /** * Returns true if the API is available. - * + * * @return bool */ protected function isAvailable() diff --git a/tests/classes/testAPI/TestAPI.php b/tests/classes/testAPI/TestAPI.php index 83a028c1..1e5a11ee 100644 --- a/tests/classes/testAPI/TestAPI.php +++ b/tests/classes/testAPI/TestAPI.php @@ -44,14 +44,14 @@ abstract protected function isValid(Bank $bank, $account); /** * Returns true if the API is available. - * + * * @return bool */ abstract protected function isAvailable(); /** * Return true for known false positives. - * + * * @return true */ public function ignoreTestCase(Bank $bank, $account) From e1fbef73823d8341e985e7777d40d544c190d474 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Tue, 13 Jan 2015 02:22:39 +0100 Subject: [PATCH 262/303] remove changelog in favor to git log --- .gitignore | 1 + docs/changelog.txt | 616 --------------------------------------------- 2 files changed, 1 insertion(+), 616 deletions(-) delete mode 100644 docs/changelog.txt diff --git a/.gitignore b/.gitignore index 681b2490..6d21cde1 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ nbproject .idea vendor composer.lock +docs/todo diff --git a/docs/changelog.txt b/docs/changelog.txt deleted file mode 100644 index b6ef028d..00000000 --- a/docs/changelog.txt +++ /dev/null @@ -1,616 +0,0 @@ -Version 1.1.0 - not yet released --------------------------------- - - configuration.php may now be either in BAV's directory (e.g. - vendor/malkusch/bav/configuration.php) or somewhere in the include path - in bav/configuration.php. - - - Validator::isValid() raises an E_USER_WARNING if the parameter $account - is no string. - - - Replaced binary search in FileDataBackend with malkusch/php-index - - - fixed a bug in FileParser which did hide the last line in the file - of the Bundesbank. - - - [PR18] Fixed Validator 74. - - -[TODO] add IBAN rule support - - -[TODO] evaluate IBAN validation support - - -[TODO] BIC index for FileDataBackend - - -Version 1.0.0 - June 25, 2014 ------------------------------ - - added BAV_DataBackend::getLastUpdate() - - - added BAV_DataBackend::isInstalled() - - - removed class BAV and BAV_Version - - - added support for automatic installation and update - - - using namespace malkusch\bav and removed the class prefix BAV_ - - - removed DataBackend::_getAgencies() and DataBackend::_getMainAgency() - - - added the API facade BAV (don't confuse with the removed class BAV). - - - renamed all classes which where not conform to PSR2 - - - Fixed Validators 68, 78, 59, 58 - - - Moved FileDatabackend::getTempDir() into new FileUtil - - - Renamed bankExists() into isValidBank() - - - added BIC support: BAV::isValidBIC($bic), BAV::getBICAgencies($bic) - - - changed format of verifiy.ini into JSON - - - added the Doctrine data backend DoctrineBackendContainer. - - - support PHP's filter validation. - - -Version 0.29 - June 1, 2014 ---------------------------- - - fixed validators: 78, 68, 59, 58 - - -Version 0.28 - May 26, 2014 ---------------------------- - - added Composer support - - - added scripts for installing and updating the bundesbank file. - - - The methods _getMainAgency() and _getAgencies() in BAV_DataBackend - became deprecated. - - - added Configuration container for BAV_Encoding and BAV_DataBackend. - - -Version 0.27 - May 22, 2014 ---------------------------- - - replaced the autoloader with http://php-autoloader.malkusch.de - - - fixed validator C5 - see https://github.com/malkusch/bav/issues/12 - - - changed download URI - see https://github.com/malkusch/bav/issues/10 - - - changed Validators: C6, D1, 51, 57, 66, 84, 90, 95 - - - added validators E0, E1 - - -Version 0.26 - June 3, 2012 ---------------------------- - - Repaired Bundesbank download - - -Version 0.25 - April 2, 2012 ------------------------------ - - New Validators: D9 - - - Changed Validators: B6, D1 - - - repaired Bundesbank download - - -Version 0.24 - March 30, 2011 ------------------------------ - - Changed Validators: B8, C6, D4 - - - New Validators: D7, D8 - - -Version 0.23 - December 31, 2010 --------------------------------- - - Changed Validators: D1 - - - New Validators: D6 - - -Version 0.22 - October 28, 2010 -------------------------------- - - Changed Validators: C6, D1 - - - New Validators: D4, D5 - - - Repaired Validators: 90 - https://sourceforge.net/projects/bav/forums/forum/405655/topic/3758753 - - - fixed shortTerm-Bug - https://sourceforge.net/projects/bav/forums/forum/405655/topic/3798274 - - -Version 0.21 - March 27, 2010 ------------------------------ - - Support for InnoDB tables. - - - blz_20100308.txt is not ordered. - see http://sourceforge.net/projects/bav/forums/forum/405655/topic/3568342 - - - filesize() in BAV_FileParser::init() returns sometimes 0. - - -Version 0.20 - September 2, 2009 --------------------------------- - - 0 is always invalid - - - fixed Validators: 16 (again) - - - removed error supressings (@) - - - ZIP-support disabled in BAV_DataBackend_File - see http://sourceforge.net/forum/message.php?msg_id=7555232 - - -Version 0.19 - March 7, 2009 ----------------------------- - - changed validator C6 - - - fixed bug in BAV_Validator_Iteration - - - fixed validators: 17, B9, D1, 23 (fixed in 16), 65 - - - BAV_DataBackend_File->getTempdir() works also if sys_get_temp_dir() - doesn't exist. - - - BAV_Autoloader works also in a Windows environment (untested) - - -Version 0.18 - October 2, 2008 ------------------------------- - - implemented validators D2, D3 - - -Version 0.17 - June 30, 2008 ----------------------------- - - https://sourceforge.net/forum/message.php?msg_id=4908493 - - - implemented validators C8, C9, D0, D1 - - -Version 0.16 - January 16, 2008 -------------------------------- - - [API 2.3] BAV_DataBackend_PDO->getAgencies($sql) - - - [API 2.3] BAV_DataBackend_PDO->getPrefix() - - - [API 2.3] BAV_Agency->isMainAgency() - - - fixed Validators 75 - - - implemented validators C5, C6, C7 - - -Version 0.15 - April 8, 2007 ----------------------------- - - [API 2.2] BAV_Encoding->__construct throws BAV_EncodingException_Unsupported - - - [API 2.2] BAV_Encoding::isSupported($encoding) - - - Default encoding is UTF-8; if wether mb_* nor iconv_* is present then it is latin9; - - - implemented validators C3, C4 - - - changed validator 74 - - -Version 0.14 - December 28, 2006 --------------------------------- - - [API 2.1] added BAV_DataBackend->bankExists($bankID); - - - [API 2.1] Encoding of BAV can be configured by BAV::setEncoding(); - - - BAV_Autoloader improved error handling when working in a stack; - - - BAV_Autoloader->loadDirectly() removes itself from the autoloader stack; - - - BAV_Autoloader uses Reflection API to decide if a class constructor is present; - - -Version 0.13 - December 18, 2006 --------------------------------- - - reimplemented all Validators; implemented missing Validators - - - [API 2.0] changed complete API to version 2.0 - - - uses PHP5 specific syntax and features - - - provide information about a bank - - - removed the CLI script bav.php - - -Version 0.12b - November 20, 2006 ---------------------------------- - - fixed Validators 07, B4 - - -Version 0.12a - November 19, 2006 ---------------------------------- - - fixed Validator C0 - - -Version 0.12 - November 17, 2006 --------------------------------- - - applied patch for new format - - - fixed Validators B6, 22 - - - [API 1.2] renamed HTTPHeader::getVersion() and setVersion() to getHTTPVersion() - and setHTTPVersion() - - - changed validator 57 - - - implemented validators B9, C0, C1, C2 - - -Version 0.11 - December 4, 2005 -------------------------------- - - added optional constant BAV_UPDATE_TMP to enter a writable directory for - temporary files. - - - Bundesbank thinks that's a good idea to terminate a line by \n *or* by \r\n. - So BAV_BUNDESBANK_LINE_LENGTH was removed, as BAV_BankFactory_BinarySearch has - to find it automatically. - - -Version 0.10 - October 5, 2005 ------------------------------- - - implemented new validators: B6, B7, B8 - - - moved test/SQL.php to test/sql/*.php - - - added BAV_Version. - - - [API 1.1] BAV::getVersion() and BAV::getAPIVersion() are returning BAV_Version objects. - - - [API 1.1] corrected the typo "weight" in validator classes. - - - BAV_BankSaver_Bundesbank::save() uses rename() which doesn't work on PHP before 4.3.3 on - different partitions. This is fixed now. - - -Version 0.9 - May 29, 2005 --------------------------- - - renamed BAV_Bank::getNewAccount() to BAV_Bank::getAccount() - - - renamed BAV_Validator::validate() to BAV_Validator::getValidatorResult() - - - renamed BAV_Account::validate() to BAV_Account::getValidatorResult() - - - renamed BAV_Controller::validate() to BAV_Controller::getValidatorResult() - - - BAV_Bank::validate() is deprecated, BAV_Bank::getValidatorResult() added - - - removed BAV_Bank::getBLZ(), which is since some versions marked as deprecated - - - added BAV::getVersion() and BAV::getAPIVersion() - - - added some more tests - - - added BAV_SQL_PearDB - - - added -v option in bav.php - - - added BAV_SQL_Connection which is the parent class for all DBS which work with connections. - So the ancient classes BAV_SQL_MySQL, BAV_SQL_Postgres and BAV_SQL_SQLite moved to - connection/BAV_SQL_Connection_*.php - - - moved sql configuration to config/sql/* - - - All BAV_SQL_Connection classes can now be initialized by an existing connection - - - the Bundesbank released a new bank file - - - added protected method BAV_Validator::isValidType() - - - changed BAV_BankSaver - - - deleted scripts/bav_install.php - - - added scripts/update.php - - - added BAV_SQL::replaceTable() - - -Version 0.8 - April 24, 2005 ----------------------------- - - Bundesbank changed validator 90 - - - Bundesbank added validator B5 - I'm not sure if it's correct, as it says that 1151043211 is valid, but the Bundesbank says - it should be wrong at the first validator. It is wrong at the first validator, but the - second validator says it's valid and so it's valid for the complete B5. - - - Added a new BankFactory which works on the Bundesbank file. The new factory is fast, as it - uses a binary search (it even may be improved by better handling of the '00000000' exception). - And it needs only an unmodified file of the Bundesbank. So it became the new default factory. - - - Changed BAV_BankFactory_File_Hashtable and BAV_BankFactory_File_Bundesbank to - BAV_BankFactory_Hashtable and BAV_BankFactory_Hashtable_Bundesbank. - - - added new directory test/ and moved scripts/checkValidators.php to it. - - -Version 0.7e - April 4, 2005 ----------------------------- - - BAV_BankFactory_File::bankExists() and BAV_BankFactory_SQL::bankExists() were overwritten. - BAV_SQL gets a getFoundRows(). - - - Repaired validators: 44, 90 - - - added test to find missing require_onces. - - - added require_once BAV_CLASS_PATH.'validator/BAV_Validator.php': - 88, A6, 93_Aux - - - My SQLite Version doesn't understand LIMIT in UPDATE. So a statement changed. - - - Implemented specification change of A8 - - - Implemented B4 - - -Version 0.7d - November 29, 2004 --------------------------------- - - Bundesbank changed 73 - - - Bundesbank specified B0 and B3. - - -Version 0.7c - October 20, 2004 -------------------------------- - - changed the shebang line from /usr/local/bin/php to /usr/bin/php. - If you use the scripts you should modify it anyway! - - - fixed validator 52 again - Thanks to Enrico Stahn - - - fixed 53, but there seems to be one bug left - - - checkValidators.php was rewritten and supports now bank IDs in the - verify.ini - - - reimplemented validators: 20 - - - reimplemented because of specification change: 51, 73, 80, 81, 84, 86, 87 - - - little change of the verify.ini: PHP5 treats text with a leading '0' like - '09' as an octal number, which we cannot use. - - -Version 0.7b - September 5, 2004 --------------------------------- - - updated bank list - - - fixed validators: 88, 52 - - - implemented validators: B1, B2 - - -Version 0.7a - August 16, 2004 ------------------------------- - - reimplemented validator: 05 - - - fixed validators: 24, 61 - - -Version 0.7 - August 2, 2004 ----------------------------- - - BAV_Bank::getBLZ() is deprecated. Use BAV_Bank::getID() instead. - - - reimplemented validator because of notices: 22 - - - dropped XML support as there is really no need at the moment - - - added PHPDoc documentation - - - added a layer for Postgresql - - - changed the implementation of BAV_BankSaver_SQL::_save(), - because Postgres doesn't know REPLACE - - - The BankID index has to be quoted, as Postgres should cast - it to fit to an index. - - - Every SQL Query uses now ' instead of " as quotes. - - - added ANALYZE and VACUUM to installation - - - README was updated. - - - added BAV_Controller::isInvalid() - - - added BAV_Bank_Extended and removed it again. I hope it has - been removed completely. - - - replaced import_* and install* with bav_install.php - - - fixed unimportant bug in BAV_Validator_KontoCheck - - - fixed BUG with static table in BAV_Validator_KontoCheck, - which affected PHP 4.3.0. - - - BAV_Validator_KontoCheck does a preNulls() on the validated IDs. This - is a workaround for the old validators, which expected to validate - normalized bank IDs. - - -Version 0.6a - July 1, 2004 ---------------------------- - - fixed Validators: 13, 50, 87 - - - added verifyImport.php - - - checkValidators.php searches also for verfahren_* calls. - There seems to be no more. - - -Version 0.6 - June 28, 2004 ---------------------------- - - fixed Validators: 93 - - - The install_* scripts don't print "#!/usr/local/bin/php" now. - - - The Factory for the file of the Bundesbank doesn't use file() anymore, - so the memory amount is still below the 8 MB limit. - - - Changed the SQL structure for the tables. - - - the install_* scripts will now print error messages from the import_* scripts - - - Because of the few changes (which aren't very serious) this release - might be one of the last beta releases. - - - update of the banklist.txt - - -Version 0.5 - May 1, 2004 -------------------------- - - bav.php reads interactively also the \n which made the bank unknown. - - - fixed Validators: 00, 10, 25, 28, 29, 32, 35, 36, 37, 38, 39, 43, 44, 47, 51, - 73, 78, 81, 88, A0, A1 - - - implemented Validators: 52, 53, 54, 58, 66, 71, 72, 74, 75, 80, 83, 84, 85, 86, 87 - 89, 90, 92, 93, 96, 97, 98, A2, A3, A4, A5, A6, A7, A8 - - - reimplemented because of Notices: 14, 16, 23, 26, 40, 64, 68, 77 - - - BAV_Validator_Waighted had a serious bug which caused wrong validation results - if a validator object is used more than once. - - - splitted BAV_Validator_Waighted into BAV_Validator_Waighted and its new - super class BAV_Validator_Iteration. BAV_Validator_Iteration can be used by other - validators like BAV_Validator_Transformation. - - - added BAV_Validator_Tranformation as new abstract super class for validators which - are using transformation tables. - - - example/full.php used the old path. - - - added BAV_Validator_Multi as abstract super class for validators which implements - several validation algorithmns. - - - BAV_Validator_06 was modified, in order to be reusable by more validators - - - BAV_Validator_02::__construct()'s parameters were modified, in order to be reusable - by more validators - - - checkValidators.php recognizes more accurant which validators are buggy. - - -Version 0.4 - April 27, 2004 ----------------------------- - - BAV_ValidationResult distinguishes betweend unknown bank - and unknown algorithm. So exit codes of bav.php and result codes of - BAV_ValidationResult have changed. - - - corrected Validators: 81 (a half). - - - checkValidators.php uses verify.txt to check the corectness of the algorithms. - This is still in Beta, because I don't know how these bank accounts should be - treated for real. - - - change of banklist.xml structure. This file is still unused, but it is prepared - to contain all the data for exporting (including test accounts). - - - BAV_BankFactory_SQL::getBank($bankID) is safer, because it escapes the bankID - with BAV_SQL::escape() - - - There is no need to define BAV_ROOT_PATH, this will be done in config/paths.php - So you have only to care about the correct include of config/paths.php. - - - config.php uses per default the hashtable, so you can use BAV without installing - any database. - - - added BAV_Controller to hide all the BAV_* classes (like BAV_Bank, BAV_Factory, - BAV_Account) and provide a more simple interface. But you can and should still - use the old way to validate an account. This class is intended for users which - are not scripting so object oriented. - - -Version 0.3a - April 22, 2004 ------------------------------ - - BAV_Validator_42 was not implemented correctly. - - -Version 0.3 - April 22, 2004 ----------------------------- - - BAV adds support for an unified standard constructor __construct() - - - New powerfull abstract class BAV_Validator_Waighted and its subclass - BAV_Validator_Waighted_Default. These classes offer support for iterating - through waighted algorithmns. - - - Implementation of Validator_56, Validator_57, Validator_91, Validator_A9. - So 34 more Bank IDs are supported. - - - Validator_01 and Validator_06 were rewritten, in order to be used by - other Validators. So these two Validators are verified. - - - Validator_08 and Validator_79 were only slightly verified by - checkValidators.php, and there were return values missing. - They've been patched, but the algorithms were not verified! - - -Version 0.2a - April 5, 2004 ----------------------------- - - BAV is inherited explictly from stdClass. - - - The Script's path is detected correctly by using __FILE__ - instead of $_SERVER['SCRIPT_FILENAME'], which is not available - on every platform. - - - BAV_Validator::crossSum() is fixed. - - - corrected and rewritten algorithm for Validator_63 - - -Version 0.2 - March 20, 2004 ----------------------------- - - The data source changed. The old text file will no more be supported. - Instead the text file of the Deutsche Bundesbank is supported. This file - is included in this package and also located in a ZIP archiv at - - - - Bank name support is completely removed (it even wasn't implemented - completely), because several banks have the same BLZ. So the datastructures - only saves the relation between BLZ and validation algorithm. - - - Class model was slightly improved (the BAV_BankFactory_File hierarchy). - - - XML support was added. This will be usefull in future releases, when - the validator is responsable for different countries. All different data - sources will be exported in one single XML document. So a user needs only the - XML document to update his validator. - - - bav.php was added. This is a command line validator. - It may operate interactively or takes the parameters from the command line. - It throws exit codes, so it may be used by other command line scripts. - - - Bug with the default bank constructor was fixed. - - - All files have a licence note. - - - This Changelog was added - - - Scripts are independent of the CWD. - - - the BAV_BankFactory gets a singleton object which will be initialized in - the central config file config/config.php. - - -Version 0.1 - March 15, 2004 ----------------------------- - - This is the first release. It comes with generated and fixed validators and - several data structures (serialized hashtable, SQLite and an import script - for MySQL). As source for the data structure a text file from the original - project (php_kontocheck) is used. - From 58af5f54422ba2566a7af92469ff8ebe7d686963 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Thu, 19 Mar 2015 22:51:56 +0100 Subject: [PATCH 263/303] Validator 08 considers accounts below 60000 as valid --- classes/validator/validators/Validator08.php | 4 ++-- tests/data/accounts.json | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/classes/validator/validators/Validator08.php b/classes/validator/validators/Validator08.php index da632e93..3adab20a 100644 --- a/classes/validator/validators/Validator08.php +++ b/classes/validator/validators/Validator08.php @@ -33,8 +33,8 @@ public function __construct(Bank $bank) protected function getResult() { - return ((int)$this->account<= 60000) - ? false + return ((int)$this->account < 60000) + ? true : parent::getResult(); } } diff --git a/tests/data/accounts.json b/tests/data/accounts.json index 12720f56..7ec2094e 100644 --- a/tests/data/accounts.json +++ b/tests/data/accounts.json @@ -1311,6 +1311,15 @@ "114082618" ] }, + { + "validator": "08", + "valid": [ + "000000001", + "000000002", + "000059998", + "000059999" + ] + }, { "validator": "09", "valid": [ From 703f1a0216e81a43910b03039e96a5e59ed7271f Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 20 Mar 2015 21:50:49 +0100 Subject: [PATCH 264/303] moved api documentation into api/ as apigen would delete everything (including .git) in the destination folder --- README.md | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 0bfd6d34..9b5111f3 100644 --- a/README.md +++ b/README.md @@ -32,11 +32,11 @@ for broken or new validation rules. # Configuration You can use BAV out of the box. BAV comes with a ready to play default -configuration ([`DefaultConfiguration`](http://bav-php.github.io/bav/class-malkusch.bav.DefaultConfiguration.html)): +configuration ([`DefaultConfiguration`](http://bav-php.github.io/bav/api/class-malkusch.bav.DefaultConfiguration.html)): * `UTF-8` encoding (if supported) -* [`FileDataBackendContainer`](http://bav-php.github.io/bav/class-malkusch.bav.FileDataBackendContainer.html). +* [`FileDataBackendContainer`](http://bav-php.github.io/bav/api/class-malkusch.bav.FileDataBackendContainer.html). I.e. it uses binary search on the file from the Bundesbank. Note that this data backend uses the directory `bav/data` for install and update operations. You have to make sure that this directory is writable. @@ -48,9 +48,9 @@ script. The container will download the Bundesbank file upon the first execution is outdated. You can define your own configuration by calling -[`ConfigurationRegistry::setConfiguration()`](http://bav-php.github.io/bav/class-malkusch.bav.ConfigurationRegistry.html#_setConfiguration) +[`ConfigurationRegistry::setConfiguration()`](http://bav-php.github.io/bav/api/class-malkusch.bav.ConfigurationRegistry.html#_setConfiguration) or preferably creating the file `bav/configuration.php` which returns a -[`Configuration`](http://bav-php.github.io/bav/class-malkusch.bav.Configuration.html) object: +[`Configuration`](http://bav-php.github.io/bav/api/class-malkusch.bav.Configuration.html) object: ```php namespace malkusch\bav; @@ -87,7 +87,7 @@ $bav->update(); ## Automatic Enable automatic updates with -[`AutomaticUpdatePlan`](http://bav-php.github.io/bav/class-malkusch.bav.AutomaticUpdatePlan.html) +[`AutomaticUpdatePlan`](http://bav-php.github.io/bav/api/class-malkusch.bav.AutomaticUpdatePlan.html) in your `bav/configuration.php`: ```php @@ -105,45 +105,45 @@ hook. I.e. it won't bother users during normal operations. # Usage You can use BAV with the api facade -[`BAV`](http://bav-php.github.io/bav/class-malkusch.bav.BAV.html): +[`BAV`](http://bav-php.github.io/bav/api/class-malkusch.bav.BAV.html): -* [`BAV::isValidBank($bankID)`](http://bav-php.github.io/bav/class-malkusch.bav.BAV.html#_isValidBank): +* [`BAV::isValidBank($bankID)`](http://bav-php.github.io/bav/api/class-malkusch.bav.BAV.html#_isValidBank): Returns true for existing bank ids. -* [`BAV::isValidBankAccount($bankID, $account)`](http://bav-php.github.io/bav/class-malkusch.bav.BAV.html#_isValidBankAccount): +* [`BAV::isValidBankAccount($bankID, $account)`](http://bav-php.github.io/bav/api/class-malkusch.bav.BAV.html#_isValidBankAccount): Returns true for existing accounts of an existing bank. -* [`BAV::isValidAccount($account)`](http://bav-php.github.io/bav/class-malkusch.bav.BAV.html#_isValidAccount): +* [`BAV::isValidAccount($account)`](http://bav-php.github.io/bav/api/class-malkusch.bav.BAV.html#_isValidAccount): This method validates an account against the bank of the last `isValidBank()` call. -* [`BAV::getValidBankFilterCallback()`](http://bav-php.github.io/bav/class-malkusch.bav.BAV.html#_getValidBankFilterCallback): +* [`BAV::getValidBankFilterCallback()`](http://bav-php.github.io/bav/api/class-malkusch.bav.BAV.html#_getValidBankFilterCallback): Returns a callback for filter bank validation. -* [`BAV::getValidAccountFilterCallback()`](http://bav-php.github.io/bav/class-malkusch.bav.BAV.html#_getValidAccountFilterCallback): +* [`BAV::getValidAccountFilterCallback()`](http://bav-php.github.io/bav/api/class-malkusch.bav.BAV.html#_getValidAccountFilterCallback): Returns a callback for filter account validation. The account filter needs to be called after the bank filter. -* [`BAV::getMainAgency()`](http://bav-php.github.io/bav/class-malkusch.bav.BAV.html#_getMainAgency): +* [`BAV::getMainAgency()`](http://bav-php.github.io/bav/api/class-malkusch.bav.BAV.html#_getMainAgency): Returns the main agency of a bank. -* [`BAV::getAgencies()`](http://bav-php.github.io/bav/class-malkusch.bav.BAV.html#_getAgencies): +* [`BAV::getAgencies()`](http://bav-php.github.io/bav/api/class-malkusch.bav.BAV.html#_getAgencies): Returns further agencies. The main agency is not included in this list. This list can be empty. -An [`Agency`](http://bav-php.github.io/bav/class-malkusch.bav.Agency.html) +An [`Agency`](http://bav-php.github.io/bav/api/class-malkusch.bav.Agency.html) object has the fields: -* [`Agency::getBIC()`](http://bav-php.github.io/bav/class-malkusch.bav.Agency.html#_getBIC) +* [`Agency::getBIC()`](http://bav-php.github.io/bav/api/class-malkusch.bav.Agency.html#_getBIC) -* [`Agency::getPostcode()`](http://bav-php.github.io/bav/class-malkusch.bav.Agency.html#_getPostcode) +* [`Agency::getPostcode()`](http://bav-php.github.io/bav/api/class-malkusch.bav.Agency.html#_getPostcode) -* [`Agency::getCity()`](http://bav-php.github.io/bav/class-malkusch.bav.Agency.html#_getCity) +* [`Agency::getCity()`](http://bav-php.github.io/bav/api/class-malkusch.bav.Agency.html#_getCity) -* [`Agency::getName()`](http://bav-php.github.io/bav/class-malkusch.bav.Agency.html#_getName) +* [`Agency::getName()`](http://bav-php.github.io/bav/api/class-malkusch.bav.Agency.html#_getName) -* [`Agency::getShortTerm()`](http://bav-php.github.io/bav/class-malkusch.bav.Agency.html#_getShortTerm) +* [`Agency::getShortTerm()`](http://bav-php.github.io/bav/api/class-malkusch.bav.Agency.html#_getShortTerm) -* [`Agency::getPAN()`](http://bav-php.github.io/bav/class-malkusch.bav.Agency.html#_getPAN) +* [`Agency::getPAN()`](http://bav-php.github.io/bav/api/class-malkusch.bav.Agency.html#_getPAN) ## Example @@ -187,11 +187,11 @@ You may have: in the `mb_*` functions. If these functions are missing BAV works only with the ISO-8859-15 encoding. * **PDO**: If you intend to use a DBS you need to use -[`PDODataBackendContainer`](http://bav-php.github.io/bav/class-malkusch.bav.PDODataBackendContainer.html). +[`PDODataBackendContainer`](http://bav-php.github.io/bav/api/class-malkusch.bav.PDODataBackendContainer.html). `PDODataBackendContainer` needs a `PDO` support compiled in PHP. * **doctrine/orm**: You can use -[`DoctrineBackendContainer`](http://bav-php.github.io/bav/class-malkusch.bav.DoctrineBackendContainer.html) +[`DoctrineBackendContainer`](http://bav-php.github.io/bav/api/class-malkusch.bav.DoctrineBackendContainer.html) which uses doctrine as data backend. From 162dbfc6dc10ace83bcc099d0a9c20145fec9384 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Wed, 25 Mar 2015 23:36:07 +0100 Subject: [PATCH 265/303] Cache composer in CI --- .travis.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 642a065f..eeeca9a6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,14 +6,16 @@ php: - 5.4 - 5.3 +cache: + directories: + - $HOME/.composer/cache + env: PDO_DSN="mysql:host=localhost;dbname=bav" PDO_USER=travis install: - - pyrus install pear/PHP_CodeSniffer - - phpenv rehash + - composer require squizlabs/php_codesniffer before_script: - - composer --prefer-source --dev install - mysql -e 'SET @@GLOBAL.wait_timeout=1200' - mysql -e 'create database bav;' - php tests/bin/test-install.php @@ -21,5 +23,5 @@ before_script: script: - phpunit tests/unit/ - phpunit --exclude-group large tests/unit-large/ - - phpcs --standard=PSR2 classes/ bin/ docs/example.php tests/classes/ tests/bin/ tests/bootstrap.php + - vendor/bin/phpcs --standard=PSR2 classes/ bin/ docs/example.php tests/classes/ tests/bin/ tests/bootstrap.php From 8e8c470d1190c14647678fac5d364db148cdc587 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Thu, 26 Mar 2015 13:55:20 +0100 Subject: [PATCH 266/303] using SPDX identifier --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index e91c929a..8fb0b630 100644 --- a/composer.json +++ b/composer.json @@ -4,7 +4,7 @@ "description": "BAV provides validation for German Bank Accounts (Konto)", "keywords": ["bank", "account", "bankaccount", "validation", "check", "konto"], "homepage": "http://bav.malkusch.de/", - "license": "WTFPL-2.0", + "license": "WTFPL", "authors": [ { "name": "Markus Malkusch", From cb2296071b9a6978f86e47e59485d857b9dacfde Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 3 Apr 2015 21:56:32 +0200 Subject: [PATCH 267/303] use travis' container infrastructure --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index eeeca9a6..4881a03a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,7 @@ language: php +sudo: false + php: - 5.6 - 5.5 From 9c3abeeb830a078fa84a3c044399a04ecddff203 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 3 Apr 2015 21:59:02 +0200 Subject: [PATCH 268/303] drop PHP-5.3 support --- .travis.yml | 1 - composer.json | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4881a03a..4221df95 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,6 @@ php: - 5.6 - 5.5 - 5.4 - - 5.3 cache: directories: diff --git a/composer.json b/composer.json index 8fb0b630..95ae25df 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,7 @@ "files": ["autoloader/autoloader.php"] }, "require": { - "php": ">=5", + "php": ">=5.4", "malkusch/php-index": "~0.1" }, "suggest": { From 433509d584004bdbd3b835479abdc2b02fdceded Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 4 Apr 2015 01:50:11 +0200 Subject: [PATCH 269/303] fix CI --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4221df95..ddead50e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,7 +22,7 @@ before_script: - php tests/bin/test-install.php script: - - phpunit tests/unit/ - - phpunit --exclude-group large tests/unit-large/ + - vendor/bin/phpunit tests/unit/ + - vendor/bin/phpunit --exclude-group large tests/unit-large/ - vendor/bin/phpcs --standard=PSR2 classes/ bin/ docs/example.php tests/classes/ tests/bin/ tests/bootstrap.php From 4dcac26193aea00afe5ffafbc851c280f92c80bb Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 4 Apr 2015 02:02:45 +0200 Subject: [PATCH 270/303] added E2 --- classes/validator/validators/ValidatorE2.php | 63 ++++++++++++++++++++ tests/data/accounts.json | 39 ++++++++++++ tests/unit/ValidatorTest.php | 4 +- 3 files changed, 104 insertions(+), 2 deletions(-) create mode 100644 classes/validator/validators/ValidatorE2.php diff --git a/classes/validator/validators/ValidatorE2.php b/classes/validator/validators/ValidatorE2.php new file mode 100644 index 00000000..b615be37 --- /dev/null +++ b/classes/validator/validators/ValidatorE2.php @@ -0,0 +1,63 @@ + + * + * 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +class ValidatorE2 extends Validator +{ + + /** + * @var int[] The addition map. + */ + private static $prefixes = [ + 0 => 4383200, + 1 => 4383201, + 2 => 4383202, + 3 => 4383203, + 4 => 4383204, + 5 => 4383205, + ]; + + /** + * @var bool The validation result. + */ + private $result; + + protected function validate() + { + if (in_array($this->account{0}, [6, 7, 8, 9])) { + $this->result = false; + return; + } + + $validator = new Validator00($this->bank); + $validator->doNormalization = false; + + $prefixedAccount = self::$prefixes[$this->account{0}] . substr($this->account, 1); + + $this->result = $validator->isValid($prefixedAccount); + } + + protected function getResult() + { + return $this->result; + } +} diff --git a/tests/data/accounts.json b/tests/data/accounts.json index 7ec2094e..14c937f2 100644 --- a/tests/data/accounts.json +++ b/tests/data/accounts.json @@ -2188,6 +2188,45 @@ "4268550840" ] }, + { + "validator": "E2", + "valid": [ + "0003831745", + "0051330335", + "1730773457", + "1987654327", + "2012345675", + "2220467998", + "3190519693", + "3011219713", + "4131220086", + "4110919419", + "5000083836", + "5069696965" + ], + "invalid": [ + "0121314151", + "0036958466", + "1000174716", + "1975312468", + "2260519349", + "2004002175", + "3780024149", + "3015024274", + "4968745438", + "4005012150", + "5000137454", + "5221398871", + "6221398879", + "6742185327", + "7793867322", + "7900695413", + "8001256238", + "8303808900", + "9703805111", + "9006126433" + ] + }, { "validator": "10", "valid": [ diff --git a/tests/unit/ValidatorTest.php b/tests/unit/ValidatorTest.php index 4b544641..e01a447d 100644 --- a/tests/unit/ValidatorTest.php +++ b/tests/unit/ValidatorTest.php @@ -174,11 +174,11 @@ public function testAccount(\stdClass $testCase) } $test = $this; - $checkAccounts = function ($account, $key, $isValid) use ($bank, $test) { + $checkAccounts = function ($account, $key, $isValid) use ($bank, $test, $testCase) { $test->assertEquals( $isValid, $bank->isValid($account), - "$account validates wrongly." + "Validator $testCase->validator validates wrongly for account $account." ); }; From 8ae35a5d017406e0c0dd78dd66619e027fab7b83 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 4 Apr 2015 02:05:08 +0200 Subject: [PATCH 271/303] update version in documentation --- README.md | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/README.md b/README.md index 9b5111f3..9677451e 100644 --- a/README.md +++ b/README.md @@ -10,25 +10,11 @@ Use [Composer](https://getcomposer.org/): ```json { "require": { - "malkusch/bav": "~1.0" + "malkusch/bav": "^1" } } ``` -## Version-0 - -The old version-0 branch (bav-0) is still maintained and will receive updates -for broken or new validation rules. - -```json -{ - "require": { - "malkusch/bav": "~0.29" - } -} -``` - - # Configuration You can use BAV out of the box. BAV comes with a ready to play default From 169b21892e1eb0b115bac7b3cf0f0e5c9bb86cca Mon Sep 17 00:00:00 2001 From: schmidex Date: Sat, 25 Apr 2015 15:50:34 +0200 Subject: [PATCH 272/303] Update Readme to use UTF8 on PDO connection --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9677451e..669f4646 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ namespace malkusch\bav; $configuration = new DefaultConfiguration(); -$pdo = new \PDO("mysql:host=localhost;dbname=test"); +$pdo = new \PDO("mysql:host=localhost;dbname=test;charset=UTF8"); $configuration->setDataBackendContainer(new PDODataBackendContainer($pdo)); $configuration->setUpdatePlan(new AutomaticUpdatePlan()); From 88417c2642a376a8de01bbf075db544ad11c97e0 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 16 May 2015 16:10:51 +0200 Subject: [PATCH 273/303] update dependencies --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 95ae25df..04eda14a 100644 --- a/composer.json +++ b/composer.json @@ -29,7 +29,7 @@ }, "require-dev": { "phpunit/phpunit": ">=4", - "doctrine/orm": "v2.4.3" + "doctrine/orm": "^2" }, "archive": { "exclude": ["/tests"] From 6de76f1524902b2d974df60d971967e24209af86 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sun, 5 Jul 2015 23:09:47 +0200 Subject: [PATCH 274/303] [#25] Implement method D for validator 87 --- classes/validator/validators/Validator87.php | 4 ++++ tests/data/accounts.json | 7 +++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/classes/validator/validators/Validator87.php b/classes/validator/validators/Validator87.php index c3e0fbcc..48dcff8d 100644 --- a/classes/validator/validators/Validator87.php +++ b/classes/validator/validators/Validator87.php @@ -46,6 +46,10 @@ public function __construct(Bank $bank) $this->defaultValidators[] = new Validator87c($bank); + // Method D + $this->defaultValidators[3] = new Validator06($bank); + $this->defaultValidators[3]->setEnd(3); + $this->exceptionValidators = Validator51::getExceptionValidators($bank); } diff --git a/tests/data/accounts.json b/tests/data/accounts.json index 14c937f2..625f03e6 100644 --- a/tests/data/accounts.json +++ b/tests/data/accounts.json @@ -4311,12 +4311,15 @@ "2599100002", "2599100003", "3199204090", - "3199500501" + "3199500501", + "1975641", + "1988654" ], "invalid": [ "0099100110", "0099345678", - "0199100040" + "0199100040", + "0001924592" ] }, { From 2ad288cfc065d5c1ce31184de05aa0693e94bdb9 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sun, 5 Jul 2015 23:29:36 +0200 Subject: [PATCH 275/303] fix new PSR-2 coding standards --- classes/dataBackend/pdo/PDODataBackend.php | 2 -- classes/validator/validators/Validator25.php | 1 - classes/validator/validators/Validator68.php | 1 - classes/validator/validators/Validator87a.php | 12 ++++++++---- classes/validator/validators/ValidatorC5.php | 1 - tests/classes/testAPI/KontocheckTestAPI.php | 1 - tests/classes/testAPI/KtoblzcheckTestAPI.php | 1 - 7 files changed, 8 insertions(+), 11 deletions(-) diff --git a/classes/dataBackend/pdo/PDODataBackend.php b/classes/dataBackend/pdo/PDODataBackend.php index 3155e8a0..72bfb833 100644 --- a/classes/dataBackend/pdo/PDODataBackend.php +++ b/classes/dataBackend/pdo/PDODataBackend.php @@ -232,7 +232,6 @@ public function install() try { $createOptions = ''; switch ($this->pdo->getAttribute(\PDO::ATTR_DRIVER_NAME)) { - case 'mysql': $createOptions .= " engine=InnoDB"; break; @@ -540,7 +539,6 @@ public function isInstalled() { try { switch ($this->pdo->getAttribute(\PDO::ATTR_DRIVER_NAME)) { - case "sqlite": $query = "SELECT count(*) FROM sqlite_master diff --git a/classes/validator/validators/Validator25.php b/classes/validator/validators/Validator25.php index 579c9153..6e9bbc71 100644 --- a/classes/validator/validators/Validator25.php +++ b/classes/validator/validators/Validator25.php @@ -40,7 +40,6 @@ protected function getResult() { $result = 11 - ($this->accumulator % 11); switch ($result) { - case 10: $result = 0; if ($this->account{1} != 8 && $this->account{1} != 9) { diff --git a/classes/validator/validators/Validator68.php b/classes/validator/validators/Validator68.php index c40f622d..05245d51 100644 --- a/classes/validator/validators/Validator68.php +++ b/classes/validator/validators/Validator68.php @@ -60,7 +60,6 @@ protected function init($account) protected function getResult() { switch (strlen($this->account)) { - case 10: return $this->account{3} == 9 && $this->validator10->isValid($this->account); diff --git a/classes/validator/validators/Validator87a.php b/classes/validator/validators/Validator87a.php index b6196d35..1790aabd 100644 --- a/classes/validator/validators/Validator87a.php +++ b/classes/validator/validators/Validator87a.php @@ -63,13 +63,17 @@ protected function getResult() while ($i < 10) { switch ($konto[$i]) { - case 0: $konto[$i] = 5; + case 0: + $konto[$i] = 5; break; - case 1: $konto[$i] = 6; + case 1: + $konto[$i] = 6; break; - case 5: $konto[$i] = 10; + case 5: + $konto[$i] = 10; break; - case 6: $konto[$i] = 1; + case 6: + $konto[$i] = 1; break; } diff --git a/classes/validator/validators/ValidatorC5.php b/classes/validator/validators/ValidatorC5.php index 570ad133..7fba7905 100644 --- a/classes/validator/validators/ValidatorC5.php +++ b/classes/validator/validators/ValidatorC5.php @@ -70,7 +70,6 @@ protected function validate() $length = strlen($account); switch ($length) { - case 6: case 9: if ($account{0} < 9) { diff --git a/tests/classes/testAPI/KontocheckTestAPI.php b/tests/classes/testAPI/KontocheckTestAPI.php index 7d1d2cbf..7c81e0a8 100644 --- a/tests/classes/testAPI/KontocheckTestAPI.php +++ b/tests/classes/testAPI/KontocheckTestAPI.php @@ -91,7 +91,6 @@ protected function isValid(Bank $bank, $account) $isValid = kto_check_blz($bank->getBankID(), $account); switch ($isValid) { - case self::NOT_INITIALIZED: throw new NotInitializedTestAPIException("LUT not initialized"); diff --git a/tests/classes/testAPI/KtoblzcheckTestAPI.php b/tests/classes/testAPI/KtoblzcheckTestAPI.php index e91d8bee..3963d2a2 100644 --- a/tests/classes/testAPI/KtoblzcheckTestAPI.php +++ b/tests/classes/testAPI/KtoblzcheckTestAPI.php @@ -102,7 +102,6 @@ protected function isValid(Bank $bank, $account) exec($cmd, $out, $result); switch ($result) { - case self::VALID: return true; From 8950e87f9f4f72901f17ded65370ab6195c4edac Mon Sep 17 00:00:00 2001 From: Pierre Dedy Date: Tue, 15 Dec 2015 15:16:02 +0100 Subject: [PATCH 276/303] fix bav autoloading --- autoloader/InstantAutoloader.php | 348 +++++++++++++++---------------- autoloader/autoloader.php | 2 +- 2 files changed, 171 insertions(+), 179 deletions(-) diff --git a/autoloader/InstantAutoloader.php b/autoloader/InstantAutoloader.php index d597906e..b1232c79 100644 --- a/autoloader/InstantAutoloader.php +++ b/autoloader/InstantAutoloader.php @@ -30,219 +30,211 @@ * @link http://php-autoloader.malkusch.de/en/ */ -namespace malkusch\autoloader; +namespace malkusch\bav\autoloader; /** - * There might be several InstantAutoloaders deployed in a project. - * One is enough. + * An instant autoloader for shipping with project builds + * + * You can build a complete index of your project (by calling + * Autoloader::buildIndex()). If you use AutoloaderIndex_PHPArrayCode as + * index you can only use this instant autoloader for your project. This class + * has no further dependency on any other class. Just copy this class and the + * generated index anywhere into your project. + * + * Consider setting the AutoloaderIndexFilter_RelativePath filter. + * + * @category PHP + * @package Autoloader + * @author Markus Malkusch + * @license http://php-autoloader.malkusch.de/en/license/ GPL 3 + * @version Release: 1.12 + * @link http://php-autoloader.malkusch.de/en/ + * @see Autoloader::buildIndex() + * @see AutoloaderIndex_PHPArrayCode() + * @see AutoloaderIndexFilter_RelativePath() */ -if (! class_exists("malkusch\autoloader\InstantAutoloader", false)) { +class InstantAutoloader +{ + + const + /** + * The name of the class constructor is classConstructor(). + */ + CLASS_CONSTRUCTOR = 'classConstructor'; + + private + /** + * @var string + */ + $_basePath = "", + /** + * @var array + */ + $_index = array(); /** - * An instant autoloader for shipping with project builds - * - * You can build a complete index of your project (by calling - * Autoloader::buildIndex()). If you use AutoloaderIndex_PHPArrayCode as - * index you can only use this instant autoloader for your project. This class - * has no further dependency on any other class. Just copy this class and the - * generated index anywhere into your project. - * - * Consider setting the AutoloaderIndexFilter_RelativePath filter. - * - * @category PHP - * @package Autoloader - * @author Markus Malkusch - * @license http://php-autoloader.malkusch.de/en/license/ GPL 3 - * @version Release: 1.12 - * @link http://php-autoloader.malkusch.de/en/ - * @see Autoloader::buildIndex() - * @see AutoloaderIndex_PHPArrayCode() - * @see AutoloaderIndexFilter_RelativePath() + * Loads the generated index array + * + * The index must be a generated AutoloaderIndex_PHPArrayCode index. + * + * @param string $indexPath Path to the generated index */ - class InstantAutoloader + public function __construct($indexPath) { + $this->_index = require $indexPath; + } - const - /** - * The name of the class constructor is classConstructor(). - */ - CLASS_CONSTRUCTOR = 'classConstructor'; - - private - /** - * @var string - */ - $_basePath = "", - /** - * @var array - */ - $_index = array(); + /** + * Registers this autoloader at the autoloader stack + * + * @return void + */ + public function register() + { + // spl_autoload_register() disables __autoload(). This might be unwanted. + if (\function_exists("__autoload")) { + \spl_autoload_register("__autoload"); - /** - * Loads the generated index array - * - * The index must be a generated AutoloaderIndex_PHPArrayCode index. - * - * @param string $indexPath Path to the generated index - */ - public function __construct($indexPath) - { - $this->_index = require $indexPath; } + \spl_autoload_register(array($this, "__autoload")); + } + + /** + * Includes all class paths + * + * You can use this as an alternative to the autoload mechanism. This + * simply includes all classes without any autoloader. + * + * @return void + */ + public function requireAll() + { + foreach ($this->_index as $classPath) { + $this->_requirePath($classPath); - /** - * Registers this autoloader at the autoloader stack - * - * @return void - */ - public function register() - { - // spl_autoload_register() disables __autoload(). This might be unwanted. - if (\function_exists("__autoload")) { - \spl_autoload_register("__autoload"); - - } - \spl_autoload_register(array($this, "__autoload")); } + } - /** - * Includes all class paths - * - * You can use this as an alternative to the autoload mechanism. This - * simply includes all classes without any autoloader. - * - * @return void + /** + * Sets the base path for the class paths in the index + * + * @param string $basePath Base path for the class paths in the index + * + * @return void + */ + public function setBasePath($basePath) + { + $this->_basePath = $basePath; + } + + /** + * Autoloader callback + * + * @param string $class Class name + * + * @return void + */ + public function __autoload($class) + { + $this->_normalizeClass($class); + + /* + * spl_autoload_call() runs the complete stack, + * even though the class is already defined by + * a previously registered method. */ - public function requireAll() - { - foreach ($this->_index as $classPath) { - $this->_requirePath($classPath); + if ( + \class_exists($class, false) + || \interface_exists($class, false) + ) { + return; - } } + if ( + \version_compare(PHP_VERSION, "5.4", '>=') + && \trait_exists($class, false) + ) { + return; - /** - * Sets the base path for the class paths in the index - * - * @param string $basePath Base path for the class paths in the index - * - * @return void - */ - public function setBasePath($basePath) - { - $this->_basePath = $basePath; } + if (!\array_key_exists($class, $this->_index)) { + return; - /** - * Autoloader callback - * - * @param string $class Class name - * - * @return void - */ - public function __autoload($class) - { - $this->_normalizeClass($class); - - /* - * spl_autoload_call() runs the complete stack, - * even though the class is already defined by - * a previously registered method. - */ - if ( - \class_exists($class, false) - || \interface_exists($class, false) - ) { - return; - - } - if ( - \version_compare(PHP_VERSION, "5.4", '>=') - && \trait_exists($class, false) - ) { - return; - - } - if (!\array_key_exists($class, $this->_index)) { - return; - - } - - $this->_requirePath($this->_index[$class]); - - $this->_callClassConstructor($class, self::CLASS_CONSTRUCTOR); } - /** - * Requires a class path - * - * @param string $path Class path - * - * @return void - */ - private function _requirePath($path) - { - if (!empty($this->_basePath)) { - $path = $this->_basePath . DIRECTORY_SEPARATOR . $path; + $this->_requirePath($this->_index[$class]); - } - require_once $path; - } + $this->_callClassConstructor($class, self::CLASS_CONSTRUCTOR); + } + + /** + * Requires a class path + * + * @param string $path Class path + * + * @return void + */ + private function _requirePath($path) + { + if (!empty($this->_basePath)) { + $path = $this->_basePath . DIRECTORY_SEPARATOR . $path; - /** - * Normalizes the reference of a class name with strtolower() - * - * Normalizing is needed as PHP is case insensitive. - * - * @param String &$class The reference of a class name - * - * @see strtolower(). - * @return void - */ - private function _normalizeClass(&$class) - { - $class = \strtolower($class); } + require_once $path; + } - /** - * Calls the class constructor - * - * If the class $class has the method public static $constructor, it - * will be called. - * - * @param String $class A class which might have a class constructor - * @param String $constructorName the method name of the class constructor - * - * @return bool true if the class constructor was called - */ - public static function _callClassConstructor($class, $constructorName) - { - $reflectionClass = new \ReflectionClass($class); - if (!$reflectionClass->hasMethod($constructorName)) { - return false; + /** + * Normalizes the reference of a class name with strtolower() + * + * Normalizing is needed as PHP is case insensitive. + * + * @param String &$class The reference of a class name + * + * @see strtolower(). + * @return void + */ + private function _normalizeClass(&$class) + { + $class = \strtolower($class); + } - } + /** + * Calls the class constructor + * + * If the class $class has the method public static $constructor, it + * will be called. + * + * @param String $class A class which might have a class constructor + * @param String $constructorName the method name of the class constructor + * + * @return bool true if the class constructor was called + */ + public static function _callClassConstructor($class, $constructorName) + { + $reflectionClass = new \ReflectionClass($class); + if (!$reflectionClass->hasMethod($constructorName)) { + return false; - $constructor = $reflectionClass->getMethod($constructorName); - if (!$constructor->isStatic()) { - return false; + } - } + $constructor = $reflectionClass->getMethod($constructorName); + if (!$constructor->isStatic()) { + return false; - if (\version_compare(PHP_VERSION, "5.4", '>=') && $reflectionClass->isTrait()) { - return false; + } - } + if (\version_compare(PHP_VERSION, "5.4", '>=') && $reflectionClass->isTrait()) { + return false; - if ($constructor->getDeclaringClass()->getName() != $reflectionClass->getName()) { - return false; + } - } + if ($constructor->getDeclaringClass()->getName() != $reflectionClass->getName()) { + return false; - $constructor->invoke(null); - return true; } + $constructor->invoke(null); + return true; } } \ No newline at end of file diff --git a/autoloader/autoloader.php b/autoloader/autoloader.php index f2164d81..83c01be8 100644 --- a/autoloader/autoloader.php +++ b/autoloader/autoloader.php @@ -13,7 +13,7 @@ * @link http://php-autoloader.malkusch.de/en/ */ -namespace malkusch\autoloader; +namespace malkusch\bav\autoloader; require_once __DIR__ . '/InstantAutoloader.php'; From e676c56cefcef0acab34ba1d03775cd03d04ef73 Mon Sep 17 00:00:00 2001 From: Pierre Dedy Date: Tue, 15 Dec 2015 15:17:46 +0100 Subject: [PATCH 277/303] rename package --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 04eda14a..37fedb36 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "malkusch/bav", + "name": "bmdevel/bav", "type": "library", "description": "BAV provides validation for German Bank Accounts (Konto)", "keywords": ["bank", "account", "bankaccount", "validation", "check", "konto"], From d50a38e7710366f9a2d1ffd88fbfc335b3c5b8ac Mon Sep 17 00:00:00 2001 From: Johannes Jambor Date: Tue, 26 Apr 2016 15:22:27 +0200 Subject: [PATCH 278/303] fixed URIPicker --- classes/dataBackend/file/FileDataBackend.php | 5 +- .../file/download/uripicker/DOMURIPicker.php | 30 +- .../download/uripicker/FallbackURIPicker.php | 68 - .../download/uripicker/RegExpURIPicker.php | 44 - .../file/download/uripicker/URIPicker.php | 7 +- composer.json | 2 +- tests/data/bankleitzahlen_download.html | 1752 ++++++++--------- tests/unit/URIPickerTest.php | 47 +- 8 files changed, 921 insertions(+), 1034 deletions(-) delete mode 100644 classes/dataBackend/file/download/uripicker/FallbackURIPicker.php delete mode 100644 classes/dataBackend/file/download/uripicker/RegExpURIPicker.php diff --git a/classes/dataBackend/file/FileDataBackend.php b/classes/dataBackend/file/FileDataBackend.php index 4be6d60d..610cf611 100644 --- a/classes/dataBackend/file/FileDataBackend.php +++ b/classes/dataBackend/file/FileDataBackend.php @@ -155,14 +155,15 @@ public function install() * @throws DataBackendIOException * @throws FileException * @throws DownloaderException + * @throws URIPickerException */ public function update() { $downloader = new Downloader(); $content = $downloader->downloadContent(self::DOWNLOAD_URI); - $uriPicker = new FallbackURIPicker(); - $path = $uriPicker->pickURI($content); + $uriPicker = new DOMURIPicker(); + $path = $uriPicker->pickURI($content, new \DateTime()); if (strlen($path) > 0 && $path{0} != "/") { $path = sprintf("/%s/%s", dirname(self::DOWNLOAD_URI), $path); diff --git a/classes/dataBackend/file/download/uripicker/DOMURIPicker.php b/classes/dataBackend/file/download/uripicker/DOMURIPicker.php index c2f5e328..b5c8d792 100644 --- a/classes/dataBackend/file/download/uripicker/DOMURIPicker.php +++ b/classes/dataBackend/file/download/uripicker/DOMURIPicker.php @@ -25,10 +25,14 @@ public function isAvailable() /** * Returns the download URI from the Bundesbank html page. * + * @param string $html + * @param \DateTime $currentDate + * * @throws URIPickerException + * * @return string */ - public function pickURI($html) + public function pickURI($html, \DateTime $currentDate) { $doc = new \DOMDocument(); libxml_use_internal_errors(true); @@ -37,12 +41,28 @@ public function pickURI($html) $xpath = new \DOMXpath($doc); $result = $xpath->query( - "(//a[contains(text(), 'Bankleitzahlendateien') and contains(@href, '.txt')]/@href)[1]" + "(//a[contains(text(), 'Bankleitzahlendateien') and contains(@href, '.txt')]/@href)" ); - if ($result->length != 1) { - throw new URIPickerException("Did not find download URI"); + $currentDateInt = (int) $currentDate->format('Ymd'); + + foreach ($result as $item) { + $link = $item->value; + + $matchCount = preg_match_all('/\d{4}_\d{2}_\d{2}/', $link, $matches); + + if ($matchCount !== 2) { + continue; + } + + $minDateInt = (int) str_replace('_', '', $matches[0][1]); + $maxDateInt = (int) str_replace('_', '', $matches[0][0]); + + if ($minDateInt <= $currentDateInt && $currentDateInt <= $maxDateInt) { + return $link; + } } - return $result->item(0)->value; + + throw new URIPickerException("Did not find download URI"); } } diff --git a/classes/dataBackend/file/download/uripicker/FallbackURIPicker.php b/classes/dataBackend/file/download/uripicker/FallbackURIPicker.php deleted file mode 100644 index ed4235bc..00000000 --- a/classes/dataBackend/file/download/uripicker/FallbackURIPicker.php +++ /dev/null @@ -1,68 +0,0 @@ - - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license WTFPL - */ -class FallbackURIPicker implements URIPicker -{ - - /** - * @var URIPicker[] - */ - private $pickers = array(); - - /** - * Construct available pickers. - */ - public function __construct() - { - $domPicker = new DOMURIPicker(); - if ($domPicker->isAvailable()) { - $this->pickers[] = $domPicker; - - } - - $regExpPicker = new RegExpURIPicker(); - if ($regExpPicker->isAvailable()) { - $this->pickers[] = $regExpPicker; - - } - } - - /** - * Returns true if this implementation is available on this platform. - * - * @return bool - */ - public function isAvailable() - { - return ! empty($this->pickers); - } - - /** - * Returns the download URI from the Bundesbank html page. - * - * @throws URIPickerException - * @return string - */ - public function pickURI($html) - { - $exception = null; - foreach ($this->pickers as $picker) { - try { - return $picker->pickURI($html); - - } catch (URIPickerException $e) { - $exception = $e; - - } - } - throw $exception; - } -} diff --git a/classes/dataBackend/file/download/uripicker/RegExpURIPicker.php b/classes/dataBackend/file/download/uripicker/RegExpURIPicker.php deleted file mode 100644 index ff37473c..00000000 --- a/classes/dataBackend/file/download/uripicker/RegExpURIPicker.php +++ /dev/null @@ -1,44 +0,0 @@ - - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @license WTFPL - */ -class RegExpURIPicker implements URIPicker -{ - - /** - * Returns true if this implementation is available on this platform. - * - * @return bool - */ - public function isAvailable() - { - return function_exists("preg_match"); - } - - /** - * Returns the download URI from the Bundesbank html page. - * - * @throws URIPickerException - * @return string - */ - public function pickURI($html) - { - $isMatch = preg_match( - '/Bankleitzahlendateien ungepackt.+href *= *"([^"]+\.txt[^"]*)"/sU', - $html, - $txtMatches - ); - if (! $isMatch) { - throw new URIPickerException("Did not find download URI"); - - } - return $txtMatches[1]; - } -} diff --git a/classes/dataBackend/file/download/uripicker/URIPicker.php b/classes/dataBackend/file/download/uripicker/URIPicker.php index 5992ad68..003707e8 100644 --- a/classes/dataBackend/file/download/uripicker/URIPicker.php +++ b/classes/dataBackend/file/download/uripicker/URIPicker.php @@ -11,7 +11,6 @@ */ interface URIPicker { - /** * Returns true if this implementation is available on this platform. * @@ -22,8 +21,10 @@ public function isAvailable(); /** * Returns the download URI from the Bundesbank html page. * - * @throws URIPickerException + * @param string $html + * @param \DateTime $currentDate + * * @return string */ - public function pickURI($html); + public function pickURI($html, \DateTime $currentDate); } diff --git a/composer.json b/composer.json index 37fedb36..8a9f9f71 100644 --- a/composer.json +++ b/composer.json @@ -28,7 +28,7 @@ "doctrine/orm": "Support for Doctrine ORM data backend" }, "require-dev": { - "phpunit/phpunit": ">=4", + "phpunit/phpunit": "^4.8", "doctrine/orm": "^2" }, "archive": { diff --git a/tests/data/bankleitzahlen_download.html b/tests/data/bankleitzahlen_download.html index b23b3099..e9e956e8 100644 --- a/tests/data/bankleitzahlen_download.html +++ b/tests/data/bankleitzahlen_download.html @@ -1,903 +1,903 @@ + - - -Deutsche Bundesbank - Bankleitzahlen - Download - Bankleitzahlen - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Deutsche Bundesbank - Bankleitzahlen - Download - Bankleitzahlen + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
-
-
-
- -

Navigation und Service

- - -
-

Deutsche Bundesbank (zur Startseite)

- -
- - -
- -
-
- -
-
-
-

-Download - Bankleitzahlen -

-

Löschung von Bankleitzahlen

-

Zur Feststellung von Bankleitzahllöschungen können die unten stehenden Listen "BLZ-Löschungen zum (Gültigkeitstermin)" verwendet werden, in denen alle Bankleitzahllöschungen - gegebenenfalls mit Angabe der entsprechenden Nachfolge-Bankleitzahl - zu diesem sowie dem vorhergehenden Aktualisierungstermin verzeichnet wurden.

-

Diese Informationen können auch direkt der Bankleitzahlendatei entnommen werden (Feld 11 „Änderungskennzeichen“ = „D“ in Verbindung mit Feld 2 „Merkmal, ob bankleitzahlführender Zahlungsdienstleister („1“) oder nicht („2“)“ = „1“, bzw. Feld 13 „Hinweis auf Nachfolge-Bankleitzahl“).

-

Hinweis: Eine Bankleitzahl wird nur dann gelöscht, wenn der mit dem „Änderungskennzeichen“ = „D“ gekennzeichnete Datensatz im Feld 2 mit „1“ belegt ist. Die Löschung eines Datensatzes mit dem Merkmal „2“ im Feld 2 bedeutet nicht die Löschung der Bankleitzahl selbst, sondern nur die Löschung dieses Datensatzes.

-

Informationen über die beabsichtigte Löschung von Bankleitzahlen können den Feldern 12 „Hinweis auf beabsichtigte Bankleitzahllöschung“ sowie ggf. Feld 13 „Hinweis auf Nachfolge-Bankleitzahl“ entnommen werden.

-

Download der Bankleitzahlendateien

-

Im Folgenden finden Sie die Bankleitzahlen-Dateien zum Download im ASCII-Format als PC-Text, PC-Excel und Lotus Notes. Die Dateien sind jeweils in den zwei letzten Versionen verfügbar. Die aktuellen Dateien werden zum 9. Juni 2014 gültig (und dürfen vorher im Zahlungsverkehr nicht verwendet werden). Die Bereitstellung der Dateien für die nächste Aktualisierung per 8. September 2014 wird voraussichtlich im August 2014 erfolgen.

-

Über die Bereitstellung neuer Bankleitzahlendateien sowie weiterer Informationen zu Bankleitzahlen, die für die reibungslose Abwicklung des Zahlungsverkehrs von großer Bedeutung sind, informieren wir Sie über unseren Newsletter. Sofern Sie Interesse haben, bitten wir Sie, sich zu registrieren.

-
-
-

Bankleitzahlen-Löschungen

-
- +
+
+
+ +
+
+
+
+
+

Zusatzinformationen

+
+ +
+
+ + + +
+ +
+
+
+ + +
+
+

Hinweis 

+
+

Der verbindliche Bankleitzahlen-Änderungsdienst erfolgt für Zahlungsdienstleister durch einen gesicherten Download aus dem ExtraNet der Deutschen Bundesbank. Ergänzend stellt die Deutsche Bundesbank die Bankleitzahlendatei unverbindlich ins Internet ein. Bitte beachten Sie bei der Verwendung der Bankleitzahlendatei die Hinweise im Disclaimer.

+
+
+
+

+ Newsletter abonnieren +   +

+
+

+ Zeitung -

-

Erhalten Sie regelmäßig Informationen zu Bankleitzahlen und Prüfziffer-Berechnungsmethoden für Kontonummern, TARGET2 oder allgemein zu Zahlungsverkehr und Wertpapierabwicklung.

-Weiter -
-
-
-
-
-
-
 
-
- -
-
-
-
-
-
-
-
- -
- +

+

Erhalten Sie regelmäßig Informationen zu Bankleitzahlen und Prüfziffer-Berechnungsmethoden für Kontonummern, TARGET2 oder allgemein zu Zahlungsverkehr und Wertpapierabwicklung.

+ Weiter +
+ + + +
+ + +
+ + +
+ +
+ - - \ No newline at end of file diff --git a/tests/unit/URIPickerTest.php b/tests/unit/URIPickerTest.php index dfa111a7..47a69caf 100644 --- a/tests/unit/URIPickerTest.php +++ b/tests/unit/URIPickerTest.php @@ -21,47 +21,23 @@ class URIPickerTest extends \PHPUnit_Framework_TestCase public function provideURIPicker() { return array( - array(new RegExpURIPicker()), array(new DOMURIPicker()), - array(new FallbackURIPicker()), ); } - /** - * All picker return the same result. - * - * @medium - */ - public function testSameResults() - { - $lastResult = null; - $html = file_get_contents(FileDataBackend::DOWNLOAD_URI); - foreach ($this->provideURIPicker() as $picker) { - $picker = $picker[0]; - $result = $picker->pickURI($html); - if (is_null($lastResult)) { - $lastResult = $result; - continue; - - } - - $this->assertEquals($lastResult, $result); - } - } - /** * Tests pickURI() - * - * @dataProvider provideURIPicker */ - public function testPickURI(URIPicker $picker) + public function testPickURI() { + $picker = new DOMURIPicker(); + $html = file_get_contents(__DIR__ . "/../data/bankleitzahlen_download.html"); - $uri = $picker->pickURI($html); + $uri = $picker->pickURI($html, new \DateTime('2016-04-26 00:00:00')); $this->assertEquals( // @codingStandardsIgnoreStart - "/Redaktion/DE/Downloads/Aufgaben/Unbarer_Zahlungsverkehr/Bankleitzahlen/2014_09_07/blz_2014_06_09_txt.txt?__blob=publicationFile", + "/Redaktion/DE/Downloads/Aufgaben/Unbarer_Zahlungsverkehr/Bankleitzahlen/2016_06_05/blz_2016_03_07_txt.txt?__blob=publicationFile", // @codingStandardsIgnoreEnd $uri ); @@ -70,22 +46,23 @@ public function testPickURI(URIPicker $picker) /** * Tests pickURI() * - * @dataProvider provideURIPicker * @expectedException malkusch\bav\URIPickerException */ - public function testFailPickURI(URIPicker $picker) + public function testFailPickURI() { + $picker = new DOMURIPicker(); + $html = "XXX"; - $uri = $picker->pickURI($html); + $picker->pickURI($html, new \DateTime()); } /** * All pickers are available on this platform. - * - * @dataProvider provideURIPicker */ - public function testIsAvailable(URIPicker $picker) + public function testIsAvailable() { + $picker = new DOMURIPicker(); + $this->assertTrue($picker->isAvailable()); } } From 588a4865e7b8bd10d57b74ab89269d92bf9e9c41 Mon Sep 17 00:00:00 2001 From: bmdevel Date: Thu, 22 Dec 2016 14:14:25 +0100 Subject: [PATCH 279/303] Fix DOMURIPicker Text 'Bankleitzahlendateien' move into a
. --- classes/dataBackend/file/download/uripicker/DOMURIPicker.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/dataBackend/file/download/uripicker/DOMURIPicker.php b/classes/dataBackend/file/download/uripicker/DOMURIPicker.php index b5c8d792..bc10e81c 100644 --- a/classes/dataBackend/file/download/uripicker/DOMURIPicker.php +++ b/classes/dataBackend/file/download/uripicker/DOMURIPicker.php @@ -41,7 +41,7 @@ public function pickURI($html, \DateTime $currentDate) $xpath = new \DOMXpath($doc); $result = $xpath->query( - "(//a[contains(text(), 'Bankleitzahlendateien') and contains(@href, '.txt')]/@href)" + "(//a[contains(*/text(), 'Bankleitzahlendateien') and contains(@href, '.txt')]/@href)" ); $currentDateInt = (int) $currentDate->format('Ymd'); From 3cb519b878e84bc39b58640dbd37f768ad8d36a9 Mon Sep 17 00:00:00 2001 From: Sebastian Detert Date: Fri, 19 Jan 2018 10:38:08 +0100 Subject: [PATCH 280/303] moved php-index dependency --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 8a9f9f71..01fff9ad 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,7 @@ }, "require": { "php": ">=5.4", - "malkusch/php-index": "~0.1" + "bmdevel/php-index": "~0.1" }, "suggest": { "ext-PDO": "Allows storing bank information in a database", From 158da0b68e56ae0cf645f83d51037f6d0ca7e277 Mon Sep 17 00:00:00 2001 From: Sebastian Detert Date: Fri, 19 Jan 2018 11:06:47 +0100 Subject: [PATCH 281/303] fix: use bmdevel/php-index 0.2 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 01fff9ad..82d43f20 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,7 @@ }, "require": { "php": ">=5.4", - "bmdevel/php-index": "~0.1" + "bmdevel/php-index": "~0.2" }, "suggest": { "ext-PDO": "Allows storing bank information in a database", From 0b5a696de85a658476706eacb2c7b98e4ec05969 Mon Sep 17 00:00:00 2001 From: bmdevel Date: Wed, 13 Jun 2018 14:38:44 +0200 Subject: [PATCH 282/303] updates bundesbank file uri --- classes/dataBackend/file/FileDataBackend.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/dataBackend/file/FileDataBackend.php b/classes/dataBackend/file/FileDataBackend.php index 610cf611..b3087aa1 100644 --- a/classes/dataBackend/file/FileDataBackend.php +++ b/classes/dataBackend/file/FileDataBackend.php @@ -18,7 +18,7 @@ class FileDataBackend extends DataBackend { // @codingStandardsIgnoreStart - const DOWNLOAD_URI = "http://www.bundesbank.de/Redaktion/DE/Standardartikel/Aufgaben/Unbarer_Zahlungsverkehr/bankleitzahlen_download.html"; + const DOWNLOAD_URI = "https://www.bundesbank.de/Redaktion/DE/Standardartikel/Aufgaben/Unbarer_Zahlungsverkehr/bankleitzahlen_download.html"; // @codingStandardsIgnoreEnd /** From 90781e67634e7eebefe0e0f88e2a1591b633b468 Mon Sep 17 00:00:00 2001 From: christiani Date: Thu, 26 Jul 2018 14:46:27 +0200 Subject: [PATCH 283/303] BM-87689 [feat]: E3 and E4 validator --- LICENSE | 23 +++----- README.md | 2 +- autoloader/index/0.php | 2 + classes/validator/validators/ValidatorE3.php | 34 +++++++++++ classes/validator/validators/ValidatorE4.php | 36 +++++++++++ docs/pruefzifferberechnungsmethoden.pdf | Bin 0 -> 275165 bytes tests/unit/ValidatorE3Test.php | 59 +++++++++++++++++++ tests/unit/ValidatorE4Test.php | 53 +++++++++++++++++ 8 files changed, 194 insertions(+), 15 deletions(-) create mode 100644 classes/validator/validators/ValidatorE3.php create mode 100644 classes/validator/validators/ValidatorE4.php create mode 100644 docs/pruefzifferberechnungsmethoden.pdf create mode 100644 tests/unit/ValidatorE3Test.php create mode 100644 tests/unit/ValidatorE4Test.php diff --git a/LICENSE b/LICENSE index ee7d6a54..4446eab2 100644 --- a/LICENSE +++ b/LICENSE @@ -1,14 +1,9 @@ - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - Version 2, December 2004 - - Copyright (C) 2004 Sam Hocevar - - Everyone is permitted to copy and distribute verbatim or modified - copies of this license document, and changing it is allowed as long - as the name is changed. - - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. You just DO WHAT THE FUCK YOU WANT TO. - +The MIT License + +Copyright 2018 SilverTours GmbH + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md index 669f4646..bedd52b8 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # About BAV -BAV (bank account validator) is a validation library for German bank accounts. +BAV (bank account validator) is a validation library for German bank accounts. Its based among other things on https://www.bundesbank.de/Redaktion/DE/Downloads/Aufgaben/Unbarer_Zahlungsverkehr/pruefzifferberechnungsmethoden.pdf?__blob=publicationFile # Installation diff --git a/autoloader/index/0.php b/autoloader/index/0.php index e7b8cf51..f5bb7f0c 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -171,6 +171,8 @@ 'malkusch\bav\validatord9' => '../classes/validator/validators/ValidatorD9.php', 'malkusch\bav\validatore0' => '../classes/validator/validators/ValidatorE0.php', 'malkusch\bav\validatore1' => '../classes/validator/validators/ValidatorE1.php', + 'malkusch\bav\validatore3' => '../classes/validator/validators/ValidatorE3.php', + 'malkusch\bav\validatore4' => '../classes/validator/validators/ValidatorE4.php', 'malkusch\bav\domuripicker' => '../classes/dataBackend/file/download/uripicker/DOMURIPicker.php', 'malkusch\bav\bavexception' => '../classes/exception/BAVException.php', 'malkusch\bav\validator51x' => '../classes/validator/validators/Validator51x.php', diff --git a/classes/validator/validators/ValidatorE3.php b/classes/validator/validators/ValidatorE3.php new file mode 100644 index 00000000..b4636e95 --- /dev/null +++ b/classes/validator/validators/ValidatorE3.php @@ -0,0 +1,34 @@ +bank); + $this->result = $validator->isValid($this->account); + + if(!$this->result) { + $validator = new Validator21($this->bank); + $this->result = $validator->isValid($this->account); + } + } + + protected function getResult() + { + return $this->result; + } +} diff --git a/classes/validator/validators/ValidatorE4.php b/classes/validator/validators/ValidatorE4.php new file mode 100644 index 00000000..8326fb84 --- /dev/null +++ b/classes/validator/validators/ValidatorE4.php @@ -0,0 +1,36 @@ +bank); + $validator->setWeights([2, 3, 4, 5, 6, 7, 8, 9, 2]); + $validator->setDivisor(11); + + $this->result = $validator->isValid($this->account); + + if(!$this->result) { + $validator = new Validator00($this->bank); + $this->result = $validator->isValid($this->account); + } + } + + protected function getResult() + { + return $this->result; + } +} diff --git a/docs/pruefzifferberechnungsmethoden.pdf b/docs/pruefzifferberechnungsmethoden.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f1c4ada5ad21d23e6c6403e8c6270d9b92512419 GIT binary patch literal 275165 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 LU(Ay<(=q=6f-Vsy literal 0 HcmV?d00001 diff --git a/tests/unit/ValidatorE3Test.php b/tests/unit/ValidatorE3Test.php new file mode 100644 index 00000000..5e694fdb --- /dev/null +++ b/tests/unit/ValidatorE3Test.php @@ -0,0 +1,59 @@ +getMock('malkusch\bav\FileDataBackend'); + $bank = $this->getMock('malkusch\bav\Bank', [], [$backend, 1, 1]); + + $validator = new ValidatorE3($bank); + $this->assertEquals($expected, $validator->isValid($account)); + } + + /** + * Returns Deutsche Bundesbank E3 test accounts, see + * https://www.bundesbank.de/Redaktion/DE/Downloads/Aufgaben/Unbarer_Zahlungsverkehr/pruefzifferberechnungsmethoden.pdf?__blob=publicationFile + * + * @return array Test cases. + */ + public function getE3TestAccounts() + { + //['2345678909', false], ['5678901237', false] are not used, as those numbers result to true via alternative method + return [ + ['9290701', true], + ['539290858', true], + ['1501824', true], + ['1501832', true], + ['0123456789', false], + ['7414398260', false], + ['9290708', true], + ['539290854', true], + ['1501823', true], + ['1501831', true], + ['2345678909', true], + ['5678901237', true], + ['0123456789', false], + ['2345678901', false], + ['5678901234', false], + ['7414398260', false], + ]; + } +} diff --git a/tests/unit/ValidatorE4Test.php b/tests/unit/ValidatorE4Test.php new file mode 100644 index 00000000..99fb2f5d --- /dev/null +++ b/tests/unit/ValidatorE4Test.php @@ -0,0 +1,53 @@ +getMock('malkusch\bav\FileDataBackend'); + $bank = $this->getMock('malkusch\bav\Bank', [], [$backend, 1, 1]); + + $validator = new ValidatorE4($bank); + $this->assertEquals($expected, $validator->isValid($account)); + } + + /** + * Returns Deutsche Bundesbank E4 test accounts, see + * https://www.bundesbank.de/Redaktion/DE/Downloads/Aufgaben/Unbarer_Zahlungsverkehr/pruefzifferberechnungsmethoden.pdf?__blob=publicationFile + * + * @return array Test cases. + */ + public function getE4TestAccounts() + { + //['1501824', false], ['1501832', false], ['9290701', false] are not used, as those numbers result to true via alternative method + return [ + ['1501836', true], + ['9290702', true], + ['539290858', true], + ['12345007', false], + ['87654005', false], + ['1501824', true], + ['1501832', true], + ['9290701', true], + ['12345007', false], + ['87654005', false], + ]; + } +} From c263ab95341ebdd428b51b0bf167394c5e421fdc Mon Sep 17 00:00:00 2001 From: christiani Date: Thu, 26 Jul 2018 15:01:30 +0200 Subject: [PATCH 284/303] BM-87689 [feat]: link travis bmdevel --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bedd52b8..288b6784 100644 --- a/README.md +++ b/README.md @@ -195,4 +195,4 @@ Björn Wilmsmann. Responsable for this project is Markus Malkusch Date: Wed, 19 Sep 2018 10:53:37 +0200 Subject: [PATCH 285/303] PMG-84 [fix] rename method name; remove double underscore to avoid issues in future use --- autoloader/InstantAutoloader.php | 5 ++--- tests/autoloader/InstantAutoloader.php | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/autoloader/InstantAutoloader.php b/autoloader/InstantAutoloader.php index b1232c79..f2e72558 100644 --- a/autoloader/InstantAutoloader.php +++ b/autoloader/InstantAutoloader.php @@ -94,9 +94,8 @@ public function register() // spl_autoload_register() disables __autoload(). This might be unwanted. if (\function_exists("__autoload")) { \spl_autoload_register("__autoload"); - } - \spl_autoload_register(array($this, "__autoload")); + \spl_autoload_register([$this, "autoload"]); } /** @@ -134,7 +133,7 @@ public function setBasePath($basePath) * * @return void */ - public function __autoload($class) + public function autoload($class) { $this->_normalizeClass($class); diff --git a/tests/autoloader/InstantAutoloader.php b/tests/autoloader/InstantAutoloader.php index d597906e..e3147af3 100644 --- a/tests/autoloader/InstantAutoloader.php +++ b/tests/autoloader/InstantAutoloader.php @@ -102,7 +102,7 @@ public function register() \spl_autoload_register("__autoload"); } - \spl_autoload_register(array($this, "__autoload")); + \spl_autoload_register(array($this, "autoload")); } /** @@ -140,7 +140,7 @@ public function setBasePath($basePath) * * @return void */ - public function __autoload($class) + public function autoload($class) { $this->_normalizeClass($class); From 5c03586610deeec360130051eace0a1d5de36ce9 Mon Sep 17 00:00:00 2001 From: Andreas Kralik Date: Wed, 19 Sep 2018 12:01:38 +0200 Subject: [PATCH 286/303] PMG-86 [fix] update composer dependencies --- .gitignore | 1 - composer.json | 2 +- composer.lock | 2177 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 2178 insertions(+), 2 deletions(-) create mode 100644 composer.lock diff --git a/.gitignore b/.gitignore index 6d21cde1..fa001321 100644 --- a/.gitignore +++ b/.gitignore @@ -4,5 +4,4 @@ nbproject .project .idea vendor -composer.lock docs/todo diff --git a/composer.json b/composer.json index 82d43f20..bde4ba28 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,7 @@ }, "require": { "php": ">=5.4", - "bmdevel/php-index": "~0.2" + "bmdevel/php-index": "~0.3" }, "suggest": { "ext-PDO": "Allows storing bank information in a database", diff --git a/composer.lock b/composer.lock new file mode 100644 index 00000000..14349dc3 --- /dev/null +++ b/composer.lock @@ -0,0 +1,2177 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "content-hash": "23db0f75d1a2cf57bc89af32ce85a589", + "packages": [ + { + "name": "bmdevel/php-index", + "version": "0.3", + "source": { + "type": "git", + "url": "https://github.com/bmdevel/php-index.git", + "reference": "6a6b476f1706b9524bfb34f6ce0963b1aea91259" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bmdevel/php-index/zipball/6a6b476f1706b9524bfb34f6ce0963b1aea91259", + "reference": "6a6b476f1706b9524bfb34f6ce0963b1aea91259", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "autoload": { + "files": [ + "autoloader/autoloader.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "WTFPL" + ], + "authors": [ + { + "name": "Markus Malkusch", + "email": "markus@malkusch.de", + "homepage": "http://markus.malkusch.de", + "role": "Developer" + } + ], + "description": "This library provides an API to perform binary search operations on a sorted index. The index can be a XML document, a CSV document, or an arbitrary text file where the key has a fixed position. You can easily implement your own index. This API comes handy on any sorted data structure where realtime search operations are necessary without the detour of a DBS import.", + "homepage": "https://github.com/bmdevel/php-index", + "keywords": [ + "binary search", + "index" + ], + "time": "2018-09-19T09:54:10+00:00" + } + ], + "packages-dev": [ + { + "name": "doctrine/annotations", + "version": "v1.6.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", + "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "php": "^7.1" + }, + "require-dev": { + "doctrine/cache": "1.*", + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "time": "2017-12-06T07:11:42+00:00" + }, + { + "name": "doctrine/cache", + "version": "v1.8.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/cache.git", + "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/cache/zipball/d768d58baee9a4862ca783840eca1b9add7a7f57", + "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57", + "shasum": "" + }, + "require": { + "php": "~7.1" + }, + "conflict": { + "doctrine/common": ">2.2,<2.4" + }, + "require-dev": { + "alcaeus/mongo-php-adapter": "^1.1", + "doctrine/coding-standard": "^4.0", + "mongodb/mongodb": "^1.1", + "phpunit/phpunit": "^7.0", + "predis/predis": "~1.0" + }, + "suggest": { + "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Caching library offering an object-oriented API for many cache backends", + "homepage": "https://www.doctrine-project.org", + "keywords": [ + "cache", + "caching" + ], + "time": "2018-08-21T18:01:43+00:00" + }, + { + "name": "doctrine/collections", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/collections.git", + "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/collections/zipball/a01ee38fcd999f34d9bfbcee59dbda5105449cbf", + "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "doctrine/coding-standard": "~0.1@dev", + "phpunit/phpunit": "^5.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Collections\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Collections Abstraction library", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "array", + "collections", + "iterator" + ], + "time": "2017-07-22T10:37:32+00:00" + }, + { + "name": "doctrine/common", + "version": "v2.9.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/common.git", + "reference": "a210246d286c77d2b89040f8691ba7b3a713d2c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/common/zipball/a210246d286c77d2b89040f8691ba7b3a713d2c1", + "reference": "a210246d286c77d2b89040f8691ba7b3a713d2c1", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.0", + "doctrine/cache": "^1.0", + "doctrine/collections": "^1.0", + "doctrine/event-manager": "^1.0", + "doctrine/inflector": "^1.0", + "doctrine/lexer": "^1.0", + "doctrine/persistence": "^1.0", + "doctrine/reflection": "^1.0", + "php": "^7.1" + }, + "require-dev": { + "doctrine/coding-standard": "^1.0", + "phpunit/phpunit": "^6.3", + "squizlabs/php_codesniffer": "^3.0", + "symfony/phpunit-bridge": "^4.0.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.9.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "Common Library for Doctrine projects", + "homepage": "https://www.doctrine-project.org", + "keywords": [ + "annotations", + "collections", + "eventmanager", + "persistence", + "spl" + ], + "time": "2018-07-12T21:16:12+00:00" + }, + { + "name": "doctrine/dbal", + "version": "v2.8.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/dbal.git", + "reference": "5140a64c08b4b607b9bedaae0cedd26f04a0e621" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/5140a64c08b4b607b9bedaae0cedd26f04a0e621", + "reference": "5140a64c08b4b607b9bedaae0cedd26f04a0e621", + "shasum": "" + }, + "require": { + "doctrine/cache": "^1.0", + "doctrine/event-manager": "^1.0", + "ext-pdo": "*", + "php": "^7.1" + }, + "require-dev": { + "doctrine/coding-standard": "^4.0", + "jetbrains/phpstorm-stubs": "^2018.1.2", + "phpstan/phpstan": "^0.10.1", + "phpunit/phpunit": "^7.1.2", + "phpunit/phpunit-mock-objects": "!=3.2.4,!=3.2.5", + "symfony/console": "^2.0.5|^3.0|^4.0", + "symfony/phpunit-bridge": "^3.4.5|^4.0.5" + }, + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." + }, + "bin": [ + "bin/doctrine-dbal" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8.x-dev", + "dev-develop": "3.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\DBAL\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Database Abstraction Layer", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database", + "dbal", + "persistence", + "queryobject" + ], + "time": "2018-07-13T03:16:35+00:00" + }, + { + "name": "doctrine/event-manager", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/event-manager.git", + "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/a520bc093a0170feeb6b14e9d83f3a14452e64b3", + "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "conflict": { + "doctrine/common": "<2.9@dev" + }, + "require-dev": { + "doctrine/coding-standard": "^4.0", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "Doctrine Event Manager component", + "homepage": "https://www.doctrine-project.org/projects/event-manager.html", + "keywords": [ + "event", + "eventdispatcher", + "eventmanager" + ], + "time": "2018-06-11T11:59:03+00:00" + }, + { + "name": "doctrine/inflector", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "5527a48b7313d15261292c149e55e26eae771b0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", + "reference": "5527a48b7313d15261292c149e55e26eae771b0a", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Common String Manipulations with regard to casing and singular/plural rules.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "inflection", + "pluralize", + "singularize", + "string" + ], + "time": "2018-01-09T20:05:19+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "^6.2.3", + "squizlabs/php_codesniffer": "^3.0.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2017-07-22T11:58:36+00:00" + }, + { + "name": "doctrine/lexer", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Lexer\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "lexer", + "parser" + ], + "time": "2014-09-09T13:34:57+00:00" + }, + { + "name": "doctrine/orm", + "version": "v2.6.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/doctrine2.git", + "reference": "d2b4dd71d2a276edd65d0c170375b445f8a4a4a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/d2b4dd71d2a276edd65d0c170375b445f8a4a4a8", + "reference": "d2b4dd71d2a276edd65d0c170375b445f8a4a4a8", + "shasum": "" + }, + "require": { + "doctrine/annotations": "~1.5", + "doctrine/cache": "~1.6", + "doctrine/collections": "^1.4", + "doctrine/common": "^2.7.1", + "doctrine/dbal": "^2.6", + "doctrine/instantiator": "~1.1", + "ext-pdo": "*", + "php": "^7.1", + "symfony/console": "~3.0|~4.0" + }, + "require-dev": { + "doctrine/coding-standard": "^1.0", + "phpunit/phpunit": "^6.5", + "squizlabs/php_codesniffer": "^3.2", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" + }, + "bin": [ + "bin/doctrine" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\ORM\\": "lib/Doctrine/ORM" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "Object-Relational-Mapper for PHP", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database", + "orm" + ], + "time": "2018-07-12T20:47:13+00:00" + }, + { + "name": "doctrine/persistence", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/persistence.git", + "reference": "af1ec238659a83e320f03e0e454e200f689b4b97" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/af1ec238659a83e320f03e0e454e200f689b4b97", + "reference": "af1ec238659a83e320f03e0e454e200f689b4b97", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.0", + "doctrine/cache": "^1.0", + "doctrine/collections": "^1.0", + "doctrine/event-manager": "^1.0", + "doctrine/reflection": "^1.0", + "php": "^7.1" + }, + "conflict": { + "doctrine/common": "<2.9@dev" + }, + "require-dev": { + "doctrine/coding-standard": "^4.0", + "phpstan/phpstan": "^0.8", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "Doctrine Persistence abstractions.", + "homepage": "https://doctrine-project.org/projects/persistence.html", + "keywords": [ + "persistence" + ], + "time": "2018-07-12T12:37:50+00:00" + }, + { + "name": "doctrine/reflection", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/reflection.git", + "reference": "02538d3f95e88eb397a5f86274deb2c6175c2ab6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/reflection/zipball/02538d3f95e88eb397a5f86274deb2c6175c2ab6", + "reference": "02538d3f95e88eb397a5f86274deb2c6175c2ab6", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.0", + "ext-tokenizer": "*", + "php": "^7.1" + }, + "require-dev": { + "doctrine/coding-standard": "^4.0", + "doctrine/common": "^2.8", + "phpstan/phpstan": "^0.9.2", + "phpstan/phpstan-phpunit": "^0.9.4", + "phpunit/phpunit": "^7.0", + "squizlabs/php_codesniffer": "^3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "Doctrine Reflection component", + "homepage": "https://www.doctrine-project.org/projects/reflection.html", + "keywords": [ + "reflection" + ], + "time": "2018-06-14T14:45:07+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2017-09-11T18:02:19+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "4.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08", + "shasum": "" + }, + "require": { + "php": "^7.0", + "phpdocumentor/reflection-common": "^1.0.0", + "phpdocumentor/type-resolver": "^0.4.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "doctrine/instantiator": "~1.0.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2017-11-30T07:14:17+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.4.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "shasum": "" + }, + "require": { + "php": "^5.5 || ^7.0", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "time": "2017-07-14T14:27:02+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", + "sebastian/comparator": "^1.1|^2.0|^3.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2018-08-05T17:53:17+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "2.2.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979", + "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "phpunit/php-file-iterator": "~1.3", + "phpunit/php-text-template": "~1.2", + "phpunit/php-token-stream": "~1.3", + "sebastian/environment": "^1.3.2", + "sebastian/version": "~1.0" + }, + "require-dev": { + "ext-xdebug": ">=2.1.4", + "phpunit/phpunit": "~4" + }, + "suggest": { + "ext-dom": "*", + "ext-xdebug": ">=2.2.1", + "ext-xmlwriter": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2015-10-06T15:47:00+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2017-11-27T13:52:08+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21T13:50:34+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.9", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2017-02-26T11:10:40+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "1.4.12", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16", + "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2017-12-04T08:55:13+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "4.8.36", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "46023de9a91eec7dfb06cc56cb4e260017298517" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/46023de9a91eec7dfb06cc56cb4e260017298517", + "reference": "46023de9a91eec7dfb06cc56cb4e260017298517", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=5.3.3", + "phpspec/prophecy": "^1.3.1", + "phpunit/php-code-coverage": "~2.1", + "phpunit/php-file-iterator": "~1.4", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "^1.0.6", + "phpunit/phpunit-mock-objects": "~2.3", + "sebastian/comparator": "~1.2.2", + "sebastian/diff": "~1.2", + "sebastian/environment": "~1.3", + "sebastian/exporter": "~1.2", + "sebastian/global-state": "~1.0", + "sebastian/version": "~1.0", + "symfony/yaml": "~2.1|~3.0" + }, + "suggest": { + "phpunit/php-invoker": "~1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.8.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2017-06-21T08:07:12+00:00" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "2.3.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983", + "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": ">=5.3.3", + "phpunit/php-text-template": "~1.2", + "sebastian/exporter": "~1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "time": "2015-10-02T06:51:40+00:00" + }, + { + "name": "sebastian/comparator", + "version": "1.2.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2 || ~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2017-01-29T09:50:25+00:00" + }, + { + "name": "sebastian/diff", + "version": "1.4.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "time": "2017-05-22T07:24:03+00:00" + }, + { + "name": "sebastian/environment", + "version": "1.3.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea", + "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8 || ^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2016-08-18T05:49:44+00:00" + }, + { + "name": "sebastian/exporter", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", + "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/recursion-context": "~1.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2016-06-17T09:04:28+00:00" + }, + { + "name": "sebastian/global-state", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2015-10-12T03:26:01+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7", + "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2016-10-03T07:41:43+00:00" + }, + { + "name": "sebastian/version", + "version": "1.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "shasum": "" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2015-06-21T13:59:46+00:00" + }, + { + "name": "symfony/console", + "version": "v4.1.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "ca80b8ced97cf07390078b29773dc384c39eee1f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/ca80b8ced97cf07390078b29773dc384c39eee1f", + "reference": "ca80b8ced97cf07390078b29773dc384c39eee1f", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/dependency-injection": "<3.4", + "symfony/process": "<3.3" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0" + }, + "suggest": { + "psr/log-implementation": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "time": "2018-07-26T11:24:31+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.9.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2018-08-06T14:22:27+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.9.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d0cd638f4634c16d8df4508e847f14e9e43168b8", + "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "time": "2018-08-06T14:22:27+00:00" + }, + { + "name": "symfony/yaml", + "version": "v3.4.15", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "c2f4812ead9f847cb69e90917ca7502e6892d6b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/c2f4812ead9f847cb69e90917ca7502e6892d6b8", + "reference": "c2f4812ead9f847cb69e90917ca7502e6892d6b8", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<3.4" + }, + "require-dev": { + "symfony/console": "~3.4|~4.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2018-08-10T07:34:36+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "0df1908962e7a3071564e857d86874dad1ef204a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", + "reference": "0df1908962e7a3071564e857d86874dad1ef204a", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2018-01-29T19:49:41+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=5.4" + }, + "platform-dev": [] +} From 62c9b3921b9bb105350bdea7961031321e488c63 Mon Sep 17 00:00:00 2001 From: christiani Date: Tue, 30 Oct 2018 17:00:36 +0100 Subject: [PATCH 287/303] BM-88487 [fix] update Bundesbank uri and parsing. --- classes/dataBackend/file/FileDataBackend.php | 2 +- .../file/download/uripicker/DOMURIPicker.php | 16 +++++++--------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/classes/dataBackend/file/FileDataBackend.php b/classes/dataBackend/file/FileDataBackend.php index b3087aa1..af829c4d 100644 --- a/classes/dataBackend/file/FileDataBackend.php +++ b/classes/dataBackend/file/FileDataBackend.php @@ -18,7 +18,7 @@ class FileDataBackend extends DataBackend { // @codingStandardsIgnoreStart - const DOWNLOAD_URI = "https://www.bundesbank.de/Redaktion/DE/Standardartikel/Aufgaben/Unbarer_Zahlungsverkehr/bankleitzahlen_download.html"; + const DOWNLOAD_URI = "https://www.bundesbank.de/de/aufgaben/unbarer-zahlungsverkehr/serviceangebot/bankleitzahlen/download---bankleitzahlen-602592"; // @codingStandardsIgnoreEnd /** diff --git a/classes/dataBackend/file/download/uripicker/DOMURIPicker.php b/classes/dataBackend/file/download/uripicker/DOMURIPicker.php index bc10e81c..ca4ef33a 100644 --- a/classes/dataBackend/file/download/uripicker/DOMURIPicker.php +++ b/classes/dataBackend/file/download/uripicker/DOMURIPicker.php @@ -40,25 +40,23 @@ public function pickURI($html, \DateTime $currentDate) $xpath = new \DOMXpath($doc); - $result = $xpath->query( - "(//a[contains(*/text(), 'Bankleitzahlendateien') and contains(@href, '.txt')]/@href)" - ); - - $currentDateInt = (int) $currentDate->format('Ymd'); + $result = $xpath->query("(//a[contains(@href, '.txt')]/@href)"); foreach ($result as $item) { $link = $item->value; + $dateResult = $xpath->query("(//a[contains(@href, '".$link."')])"); + $dateRange= $dateResult->item(0)->nodeValue??null; - $matchCount = preg_match_all('/\d{4}_\d{2}_\d{2}/', $link, $matches); + $matchCount = preg_match_all('/\d{2}\.\d{2}\.\d{4}/', $dateRange, $matches); if ($matchCount !== 2) { continue; } - $minDateInt = (int) str_replace('_', '', $matches[0][1]); - $maxDateInt = (int) str_replace('_', '', $matches[0][0]); + $minDate = new \DateTime($matches[0][0]); + $maxDate = new \DateTime($matches[0][1]); - if ($minDateInt <= $currentDateInt && $currentDateInt <= $maxDateInt) { + if ($minDate <= $currentDate && $currentDate <= $maxDate) { return $link; } } From 2b253887f50b46328eac74a2a4fd00c6b4591349 Mon Sep 17 00:00:00 2001 From: Jerome Wolff Date: Fri, 17 May 2019 15:44:54 +0200 Subject: [PATCH 288/303] NO-TICKET: update url and follow redirects --- classes/dataBackend/file/FileDataBackend.php | 2 +- classes/dataBackend/file/download/Downloader.php | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/classes/dataBackend/file/FileDataBackend.php b/classes/dataBackend/file/FileDataBackend.php index af829c4d..d6451f03 100644 --- a/classes/dataBackend/file/FileDataBackend.php +++ b/classes/dataBackend/file/FileDataBackend.php @@ -18,7 +18,7 @@ class FileDataBackend extends DataBackend { // @codingStandardsIgnoreStart - const DOWNLOAD_URI = "https://www.bundesbank.de/de/aufgaben/unbarer-zahlungsverkehr/serviceangebot/bankleitzahlen/download---bankleitzahlen-602592"; + const DOWNLOAD_URI = 'https://www.bundesbank.de/de/aufgaben/unbarer-zahlungsverkehr/serviceangebot/bankleitzahlen/download-bankleitzahlen-602592'; // @codingStandardsIgnoreEnd /** diff --git a/classes/dataBackend/file/download/Downloader.php b/classes/dataBackend/file/download/Downloader.php index 283c5e27..055979aa 100644 --- a/classes/dataBackend/file/download/Downloader.php +++ b/classes/dataBackend/file/download/Downloader.php @@ -30,6 +30,7 @@ public function __construct() } curl_setopt($this->handle, CURLOPT_RETURNTRANSFER, true); + curl_setopt($this->handle, CURLOPT_FOLLOWLOCATION, true); } /** From 388ab1764ff082de237a62d5a93d2afd555f60de Mon Sep 17 00:00:00 2001 From: bmdevel Date: Thu, 14 Nov 2019 14:01:48 +0100 Subject: [PATCH 289/303] Update .travis.yml removes obsolete php versions and add used ones --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index ddead50e..d3d4531e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,9 +3,9 @@ language: php sudo: false php: + - 7.3 + - 7.2 - 5.6 - - 5.5 - - 5.4 cache: directories: From f0934285f50432b65b7e0c15b2d6e3bb796b3f16 Mon Sep 17 00:00:00 2001 From: bmdevel Date: Thu, 14 Nov 2019 14:10:43 +0100 Subject: [PATCH 290/303] Update .travis.yml remove unused PHP Version 5.6 --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index d3d4531e..7b25db85 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,6 @@ sudo: false php: - 7.3 - 7.2 - - 5.6 cache: directories: From 7bf58efa6d082eccaa4a3c05314dd87cf1f38cfa Mon Sep 17 00:00:00 2001 From: bmdevel Date: Thu, 14 Nov 2019 14:15:54 +0100 Subject: [PATCH 291/303] Update .travis.yml uses mysql service --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index 7b25db85..d026ff25 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,6 +5,9 @@ sudo: false php: - 7.3 - 7.2 + +services: + - mysql cache: directories: From 340e758ecd39e42a7f8a7ec3fe30ef90a29c50f7 Mon Sep 17 00:00:00 2001 From: bmdevel Date: Thu, 14 Nov 2019 14:19:37 +0100 Subject: [PATCH 292/303] Update ValidatorE4Test.php fixes copypasta --- tests/unit/ValidatorE4Test.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/ValidatorE4Test.php b/tests/unit/ValidatorE4Test.php index 99fb2f5d..751aeb17 100644 --- a/tests/unit/ValidatorE4Test.php +++ b/tests/unit/ValidatorE4Test.php @@ -8,7 +8,7 @@ * Test for E4. * */ -class ValidatorE3Test extends \PHPUnit_Framework_TestCase +class ValidatorE4Test extends \PHPUnit_Framework_TestCase { /** From 1a30ec3da3978b01fc0710100a2a4f568bb110de Mon Sep 17 00:00:00 2001 From: bmdevel Date: Thu, 14 Nov 2019 14:21:43 +0100 Subject: [PATCH 293/303] Update composer.json --- composer.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index bde4ba28..2ebf03d3 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,7 @@ "files": ["autoloader/autoloader.php"] }, "require": { - "php": ">=5.4", + "php": ">=7.2", "bmdevel/php-index": "~0.3" }, "suggest": { @@ -28,7 +28,7 @@ "doctrine/orm": "Support for Doctrine ORM data backend" }, "require-dev": { - "phpunit/phpunit": "^4.8", + "phpunit/phpunit": "^8.4", "doctrine/orm": "^2" }, "archive": { From 915ab5e71b6a1cfb81e347b092f8aca96594f2a9 Mon Sep 17 00:00:00 2001 From: Pierre Dedy Date: Thu, 14 Nov 2019 14:27:38 +0100 Subject: [PATCH 294/303] updates composer.lock --- composer.lock | 1378 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 960 insertions(+), 418 deletions(-) diff --git a/composer.lock b/composer.lock index 14349dc3..2c72e923 100644 --- a/composer.lock +++ b/composer.lock @@ -1,10 +1,10 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "23db0f75d1a2cf57bc89af32ce85a589", + "content-hash": "d1a2c31ad119c57bd1db4c9a5150e252", "packages": [ { "name": "bmdevel/php-index", @@ -53,16 +53,16 @@ "packages-dev": [ { "name": "doctrine/annotations", - "version": "v1.6.0", + "version": "v1.8.0", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5" + "reference": "904dca4eb10715b92569fbcd79e201d5c349b6bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", - "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/904dca4eb10715b92569fbcd79e201d5c349b6bc", + "reference": "904dca4eb10715b92569fbcd79e201d5c349b6bc", "shasum": "" }, "require": { @@ -71,12 +71,12 @@ }, "require-dev": { "doctrine/cache": "1.*", - "phpunit/phpunit": "^6.4" + "phpunit/phpunit": "^7.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6.x-dev" + "dev-master": "1.7.x-dev" } }, "autoload": { @@ -89,6 +89,10 @@ "MIT" ], "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -97,10 +101,6 @@ "name": "Benjamin Eberlei", "email": "kontakt@beberlei.de" }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, { "name": "Jonathan Wage", "email": "jonwage@gmail.com" @@ -117,20 +117,20 @@ "docblock", "parser" ], - "time": "2017-12-06T07:11:42+00:00" + "time": "2019-10-01T18:55:10+00:00" }, { "name": "doctrine/cache", - "version": "v1.8.0", + "version": "1.9.0", "source": { "type": "git", "url": "https://github.com/doctrine/cache.git", - "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57" + "reference": "c15dcd24b756f9e52ea7c3ae8227354f3628f11a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/d768d58baee9a4862ca783840eca1b9add7a7f57", - "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57", + "url": "https://api.github.com/repos/doctrine/cache/zipball/c15dcd24b756f9e52ea7c3ae8227354f3628f11a", + "reference": "c15dcd24b756f9e52ea7c3ae8227354f3628f11a", "shasum": "" }, "require": { @@ -141,7 +141,7 @@ }, "require-dev": { "alcaeus/mongo-php-adapter": "^1.1", - "doctrine/coding-standard": "^4.0", + "doctrine/coding-standard": "^6.0", "mongodb/mongodb": "^1.1", "phpunit/phpunit": "^7.0", "predis/predis": "~1.0" @@ -152,7 +152,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8.x-dev" + "dev-master": "1.9.x-dev" } }, "autoload": { @@ -165,6 +165,10 @@ "MIT" ], "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -173,10 +177,6 @@ "name": "Benjamin Eberlei", "email": "kontakt@beberlei.de" }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, { "name": "Jonathan Wage", "email": "jonwage@gmail.com" @@ -186,44 +186,54 @@ "email": "schmittjoh@gmail.com" } ], - "description": "Caching library offering an object-oriented API for many cache backends", - "homepage": "https://www.doctrine-project.org", + "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", + "homepage": "https://www.doctrine-project.org/projects/cache.html", "keywords": [ + "abstraction", + "apcu", "cache", - "caching" - ], - "time": "2018-08-21T18:01:43+00:00" + "caching", + "couchdb", + "memcached", + "php", + "redis", + "riak", + "xcache" + ], + "time": "2019-11-11T10:31:52+00:00" }, { "name": "doctrine/collections", - "version": "v1.5.0", + "version": "1.6.4", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf" + "reference": "6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/a01ee38fcd999f34d9bfbcee59dbda5105449cbf", - "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf", + "url": "https://api.github.com/repos/doctrine/collections/zipball/6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7", + "reference": "6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.1.3" }, "require-dev": { - "doctrine/coding-standard": "~0.1@dev", - "phpunit/phpunit": "^5.7" + "doctrine/coding-standard": "^6.0", + "phpstan/phpstan-shim": "^0.9.2", + "phpunit/phpunit": "^7.0", + "vimeo/psalm": "^3.2.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "1.6.x-dev" } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Collections\\": "lib/" + "psr-4": { + "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" } }, "notification-url": "https://packagist.org/downloads/", @@ -231,6 +241,10 @@ "MIT" ], "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -239,10 +253,6 @@ "name": "Benjamin Eberlei", "email": "kontakt@beberlei.de" }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, { "name": "Jonathan Wage", "email": "jonwage@gmail.com" @@ -252,27 +262,28 @@ "email": "schmittjoh@gmail.com" } ], - "description": "Collections Abstraction library", - "homepage": "http://www.doctrine-project.org", + "description": "PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.", + "homepage": "https://www.doctrine-project.org/projects/collections.html", "keywords": [ "array", "collections", - "iterator" + "iterators", + "php" ], - "time": "2017-07-22T10:37:32+00:00" + "time": "2019-11-13T13:07:11+00:00" }, { "name": "doctrine/common", - "version": "v2.9.0", + "version": "v2.11.0", "source": { "type": "git", "url": "https://github.com/doctrine/common.git", - "reference": "a210246d286c77d2b89040f8691ba7b3a713d2c1" + "reference": "b8ca1dcf6b0dc8a2af7a09baac8d0c48345df4ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/a210246d286c77d2b89040f8691ba7b3a713d2c1", - "reference": "a210246d286c77d2b89040f8691ba7b3a713d2c1", + "url": "https://api.github.com/repos/doctrine/common/zipball/b8ca1dcf6b0dc8a2af7a09baac8d0c48345df4ff", + "reference": "b8ca1dcf6b0dc8a2af7a09baac8d0c48345df4ff", "shasum": "" }, "require": { @@ -282,20 +293,22 @@ "doctrine/event-manager": "^1.0", "doctrine/inflector": "^1.0", "doctrine/lexer": "^1.0", - "doctrine/persistence": "^1.0", + "doctrine/persistence": "^1.1", "doctrine/reflection": "^1.0", "php": "^7.1" }, "require-dev": { "doctrine/coding-standard": "^1.0", - "phpunit/phpunit": "^6.3", + "phpstan/phpstan": "^0.11", + "phpstan/phpstan-phpunit": "^0.11", + "phpunit/phpunit": "^7.0", "squizlabs/php_codesniffer": "^3.0", "symfony/phpunit-bridge": "^4.0.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.9.x-dev" + "dev-master": "2.11.x-dev" } }, "autoload": { @@ -308,6 +321,10 @@ "MIT" ], "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -316,10 +333,6 @@ "name": "Benjamin Eberlei", "email": "kontakt@beberlei.de" }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, { "name": "Jonathan Wage", "email": "jonwage@gmail.com" @@ -333,45 +346,41 @@ "email": "ocramius@gmail.com" } ], - "description": "Common Library for Doctrine projects", - "homepage": "https://www.doctrine-project.org", + "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, persistence interfaces, proxies, event system and much more.", + "homepage": "https://www.doctrine-project.org/projects/common.html", "keywords": [ - "annotations", - "collections", - "eventmanager", - "persistence", - "spl" + "common", + "doctrine", + "php" ], - "time": "2018-07-12T21:16:12+00:00" + "time": "2019-09-10T10:10:14+00:00" }, { "name": "doctrine/dbal", - "version": "v2.8.0", + "version": "v2.10.0", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "5140a64c08b4b607b9bedaae0cedd26f04a0e621" + "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/5140a64c08b4b607b9bedaae0cedd26f04a0e621", - "reference": "5140a64c08b4b607b9bedaae0cedd26f04a0e621", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/0c9a646775ef549eb0a213a4f9bd4381d9b4d934", + "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934", "shasum": "" }, "require": { "doctrine/cache": "^1.0", "doctrine/event-manager": "^1.0", "ext-pdo": "*", - "php": "^7.1" + "php": "^7.2" }, "require-dev": { - "doctrine/coding-standard": "^4.0", - "jetbrains/phpstorm-stubs": "^2018.1.2", - "phpstan/phpstan": "^0.10.1", - "phpunit/phpunit": "^7.1.2", - "phpunit/phpunit-mock-objects": "!=3.2.4,!=3.2.5", - "symfony/console": "^2.0.5|^3.0|^4.0", - "symfony/phpunit-bridge": "^3.4.5|^4.0.5" + "doctrine/coding-standard": "^6.0", + "jetbrains/phpstorm-stubs": "^2019.1", + "phpstan/phpstan": "^0.11.3", + "phpunit/phpunit": "^8.4.1", + "symfony/console": "^2.0.5|^3.0|^4.0|^5.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -382,13 +391,13 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8.x-dev", + "dev-master": "2.10.x-dev", "dev-develop": "3.0.x-dev" } }, "autoload": { - "psr-0": { - "Doctrine\\DBAL\\": "lib/" + "psr-4": { + "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" } }, "notification-url": "https://packagist.org/downloads/", @@ -396,6 +405,10 @@ "MIT" ], "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -404,37 +417,48 @@ "name": "Benjamin Eberlei", "email": "kontakt@beberlei.de" }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, { "name": "Jonathan Wage", "email": "jonwage@gmail.com" } ], - "description": "Database Abstraction Layer", - "homepage": "http://www.doctrine-project.org", + "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", + "homepage": "https://www.doctrine-project.org/projects/dbal.html", "keywords": [ + "abstraction", "database", + "db2", "dbal", - "persistence", - "queryobject" - ], - "time": "2018-07-13T03:16:35+00:00" + "mariadb", + "mssql", + "mysql", + "oci8", + "oracle", + "pdo", + "pgsql", + "postgresql", + "queryobject", + "sasql", + "sql", + "sqlanywhere", + "sqlite", + "sqlserver", + "sqlsrv" + ], + "time": "2019-11-03T16:50:43+00:00" }, { "name": "doctrine/event-manager", - "version": "v1.0.0", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3" + "reference": "629572819973f13486371cb611386eb17851e85c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/a520bc093a0170feeb6b14e9d83f3a14452e64b3", - "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/629572819973f13486371cb611386eb17851e85c", + "reference": "629572819973f13486371cb611386eb17851e85c", "shasum": "" }, "require": { @@ -444,7 +468,7 @@ "doctrine/common": "<2.9@dev" }, "require-dev": { - "doctrine/coding-standard": "^4.0", + "doctrine/coding-standard": "^6.0", "phpunit/phpunit": "^7.0" }, "type": "library", @@ -463,6 +487,10 @@ "MIT" ], "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -471,10 +499,6 @@ "name": "Benjamin Eberlei", "email": "kontakt@beberlei.de" }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, { "name": "Jonathan Wage", "email": "jonwage@gmail.com" @@ -488,27 +512,29 @@ "email": "ocramius@gmail.com" } ], - "description": "Doctrine Event Manager component", + "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", "homepage": "https://www.doctrine-project.org/projects/event-manager.html", "keywords": [ "event", - "eventdispatcher", - "eventmanager" + "event dispatcher", + "event manager", + "event system", + "events" ], - "time": "2018-06-11T11:59:03+00:00" + "time": "2019-11-10T09:48:07+00:00" }, { "name": "doctrine/inflector", - "version": "v1.3.0", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "5527a48b7313d15261292c149e55e26eae771b0a" + "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", - "reference": "5527a48b7313d15261292c149e55e26eae771b0a", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/ec3a55242203ffa6a4b27c58176da97ff0a7aec1", + "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1", "shasum": "" }, "require": { @@ -533,6 +559,10 @@ "MIT" ], "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -541,10 +571,6 @@ "name": "Benjamin Eberlei", "email": "kontakt@beberlei.de" }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, { "name": "Jonathan Wage", "email": "jonwage@gmail.com" @@ -562,31 +588,33 @@ "singularize", "string" ], - "time": "2018-01-09T20:05:19+00:00" + "time": "2019-10-30T19:59:35+00:00" }, { "name": "doctrine/instantiator", - "version": "1.1.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + "reference": "ae466f726242e637cebdd526a7d991b9433bacf1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1", + "reference": "ae466f726242e637cebdd526a7d991b9433bacf1", "shasum": "" }, "require": { "php": "^7.1" }, "require-dev": { - "athletic/athletic": "~0.1.8", + "doctrine/coding-standard": "^6.0", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "^6.2.3", - "squizlabs/php_codesniffer": "^3.0.2" + "phpbench/phpbench": "^0.13", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-shim": "^0.11", + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { @@ -611,39 +639,44 @@ } ], "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", "keywords": [ "constructor", "instantiate" ], - "time": "2017-07-22T11:58:36+00:00" + "time": "2019-10-21T16:45:58+00:00" }, { "name": "doctrine/lexer", - "version": "v1.0.1", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", + "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": "^7.2" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "phpstan/phpstan": "^0.11.8", + "phpunit/phpunit": "^8.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Lexer\\": "lib/" + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" } }, "notification-url": "https://packagist.org/downloads/", @@ -651,39 +684,42 @@ "MIT" ], "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, { "name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com" }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, { "name": "Johannes Schmitt", "email": "schmittjoh@gmail.com" } ], - "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "http://www.doctrine-project.org", + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", "keywords": [ + "annotations", + "docblock", "lexer", - "parser" + "parser", + "php" ], - "time": "2014-09-09T13:34:57+00:00" + "time": "2019-10-30T14:39:59+00:00" }, { "name": "doctrine/orm", - "version": "v2.6.2", + "version": "v2.6.4", "source": { "type": "git", - "url": "https://github.com/doctrine/doctrine2.git", - "reference": "d2b4dd71d2a276edd65d0c170375b445f8a4a4a8" + "url": "https://github.com/doctrine/orm.git", + "reference": "b52ef5a1002f99ab506a5a2d6dba5a2c236c5f43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/d2b4dd71d2a276edd65d0c170375b445f8a4a4a8", - "reference": "d2b4dd71d2a276edd65d0c170375b445f8a4a4a8", + "url": "https://api.github.com/repos/doctrine/orm/zipball/b52ef5a1002f99ab506a5a2d6dba5a2c236c5f43", + "reference": "b52ef5a1002f99ab506a5a2d6dba5a2c236c5f43", "shasum": "" }, "require": { @@ -698,9 +734,8 @@ "symfony/console": "~3.0|~4.0" }, "require-dev": { - "doctrine/coding-standard": "^1.0", - "phpunit/phpunit": "^6.5", - "squizlabs/php_codesniffer": "^3.2", + "doctrine/coding-standard": "^5.0", + "phpunit/phpunit": "^7.5", "symfony/yaml": "~3.4|~4.0" }, "suggest": { @@ -725,6 +760,10 @@ "MIT" ], "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -733,10 +772,6 @@ "name": "Benjamin Eberlei", "email": "kontakt@beberlei.de" }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, { "name": "Jonathan Wage", "email": "jonwage@gmail.com" @@ -752,20 +787,20 @@ "database", "orm" ], - "time": "2018-07-12T20:47:13+00:00" + "time": "2019-09-20T14:30:26+00:00" }, { "name": "doctrine/persistence", - "version": "v1.0.1", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "af1ec238659a83e320f03e0e454e200f689b4b97" + "reference": "43526ae63312942e5316100bb3ed589ba1aba491" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/af1ec238659a83e320f03e0e454e200f689b4b97", - "reference": "af1ec238659a83e320f03e0e454e200f689b4b97", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/43526ae63312942e5316100bb3ed589ba1aba491", + "reference": "43526ae63312942e5316100bb3ed589ba1aba491", "shasum": "" }, "require": { @@ -777,17 +812,17 @@ "php": "^7.1" }, "conflict": { - "doctrine/common": "<2.9@dev" + "doctrine/common": "<2.10@dev" }, "require-dev": { - "doctrine/coding-standard": "^4.0", + "doctrine/coding-standard": "^5.0", "phpstan/phpstan": "^0.8", "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -800,6 +835,10 @@ "MIT" ], "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -808,10 +847,6 @@ "name": "Benjamin Eberlei", "email": "kontakt@beberlei.de" }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, { "name": "Jonathan Wage", "email": "jonwage@gmail.com" @@ -825,12 +860,16 @@ "email": "ocramius@gmail.com" } ], - "description": "Doctrine Persistence abstractions.", + "description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.", "homepage": "https://doctrine-project.org/projects/persistence.html", "keywords": [ + "mapper", + "object", + "odm", + "orm", "persistence" ], - "time": "2018-07-12T12:37:50+00:00" + "time": "2019-04-23T12:39:21+00:00" }, { "name": "doctrine/reflection", @@ -907,37 +946,185 @@ ], "time": "2018-06-14T14:45:07+00:00" }, + { + "name": "myclabs/deep-copy", + "version": "1.9.3", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/007c053ae6f31bba39dfa19a7726f56e9763bbea", + "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2019-08-09T12:45:53+00:00" + }, + { + "name": "phar-io/manifest", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^2.0", + "php": "^5.6 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2018-07-08T19:23:20+00:00" + }, + { + "name": "phar-io/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "time": "2018-07-08T19:19:57+00:00" + }, { "name": "phpdocumentor/reflection-common", - "version": "1.0.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a", + "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a", "shasum": "" }, "require": { - "php": ">=5.5" + "php": ">=7.1" }, "require-dev": { - "phpunit/phpunit": "^4.6" + "phpunit/phpunit": "~6" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] + "phpDocumentor\\Reflection\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -959,30 +1146,30 @@ "reflection", "static analysis" ], - "time": "2017-09-11T18:02:19+00:00" + "time": "2018-08-07T13:53:10+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.0", + "version": "4.3.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08" + "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/b83ff7cfcfee7827e1e78b637a5904fe6a96698e", + "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e", "shasum": "" }, "require": { "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0", - "phpdocumentor/type-resolver": "^0.4.0", + "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0", + "phpdocumentor/type-resolver": "~0.4 || ^1.0.0", "webmozart/assert": "^1.0" }, "require-dev": { - "doctrine/instantiator": "~1.0.5", + "doctrine/instantiator": "^1.0.5", "mockery/mockery": "^1.0", "phpunit/phpunit": "^6.4" }, @@ -1010,41 +1197,40 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-11-30T07:14:17+00:00" + "time": "2019-09-12T14:27:41+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "0.4.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", + "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0", - "phpdocumentor/reflection-common": "^1.0" + "php": "^7.1", + "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" + "ext-tokenizer": "^7.1", + "mockery/mockery": "~1", + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1057,26 +1243,27 @@ "email": "me@mikevanriel.com" } ], - "time": "2017-07-14T14:27:02+00:00" + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "time": "2019-08-22T18:11:29+00:00" }, { "name": "phpspec/prophecy", - "version": "1.8.0", + "version": "1.9.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" + "reference": "f6811d96d97bdf400077a0cc100ae56aa32b9203" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/f6811d96d97bdf400077a0cc100ae56aa32b9203", + "reference": "f6811d96d97bdf400077a0cc100ae56aa32b9203", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", "sebastian/comparator": "^1.1|^2.0|^3.0", "sebastian/recursion-context": "^1.0|^2.0|^3.0" }, @@ -1091,8 +1278,8 @@ } }, "autoload": { - "psr-0": { - "Prophecy\\": "src/" + "psr-4": { + "Prophecy\\": "src/Prophecy" } }, "notification-url": "https://packagist.org/downloads/", @@ -1120,43 +1307,44 @@ "spy", "stub" ], - "time": "2018-08-05T17:53:17+00:00" + "time": "2019-10-03T11:07:50+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "2.2.4", + "version": "7.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979" + "reference": "aa0d179a13284c7420fc281fc32750e6cc7c9e2f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979", - "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/aa0d179a13284c7420fc281fc32750e6cc7c9e2f", + "reference": "aa0d179a13284c7420fc281fc32750e6cc7c9e2f", "shasum": "" }, "require": { - "php": ">=5.3.3", - "phpunit/php-file-iterator": "~1.3", - "phpunit/php-text-template": "~1.2", - "phpunit/php-token-stream": "~1.3", - "sebastian/environment": "^1.3.2", - "sebastian/version": "~1.0" + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^7.2", + "phpunit/php-file-iterator": "^2.0.2", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^3.1.1", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^4.2.2", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1.3" }, "require-dev": { - "ext-xdebug": ">=2.1.4", - "phpunit/phpunit": "~4" + "phpunit/phpunit": "^8.2.2" }, "suggest": { - "ext-dom": "*", - "ext-xdebug": ">=2.2.1", - "ext-xmlwriter": "*" + "ext-xdebug": "^2.7.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2.x-dev" + "dev-master": "7.0-dev" } }, "autoload": { @@ -1171,7 +1359,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -1182,29 +1370,32 @@ "testing", "xunit" ], - "time": "2015-10-06T15:47:00+00:00" + "time": "2019-09-17T06:24:36+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.5", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + "reference": "050bedf145a257b1ff02746c31894800e5122946" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", + "reference": "050bedf145a257b1ff02746c31894800e5122946", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -1219,7 +1410,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -1229,7 +1420,7 @@ "filesystem", "iterator" ], - "time": "2017-11-27T13:52:08+00:00" + "time": "2018-09-13T20:33:42+00:00" }, { "name": "phpunit/php-text-template", @@ -1274,28 +1465,28 @@ }, { "name": "phpunit/php-timer", - "version": "1.0.9", + "version": "2.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.1-dev" } }, "autoload": { @@ -1310,7 +1501,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -1319,33 +1510,33 @@ "keywords": [ "timer" ], - "time": "2017-02-26T11:10:40+00:00" + "time": "2019-06-07T04:22:29+00:00" }, { "name": "phpunit/php-token-stream", - "version": "1.4.12", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16" + "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16", - "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", + "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=5.3.3" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -1368,45 +1559,56 @@ "keywords": [ "tokenizer" ], - "time": "2017-12-04T08:55:13+00:00" + "time": "2019-09-17T06:23:10+00:00" }, { "name": "phpunit/phpunit", - "version": "4.8.36", + "version": "8.4.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "46023de9a91eec7dfb06cc56cb4e260017298517" + "reference": "67f9e35bffc0dd52d55d565ddbe4230454fd6a4e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/46023de9a91eec7dfb06cc56cb4e260017298517", - "reference": "46023de9a91eec7dfb06cc56cb4e260017298517", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/67f9e35bffc0dd52d55d565ddbe4230454fd6a4e", + "reference": "67f9e35bffc0dd52d55d565ddbe4230454fd6a4e", "shasum": "" }, "require": { + "doctrine/instantiator": "^1.2.0", "ext-dom": "*", "ext-json": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "php": ">=5.3.3", - "phpspec/prophecy": "^1.3.1", - "phpunit/php-code-coverage": "~2.1", - "phpunit/php-file-iterator": "~1.4", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "^1.0.6", - "phpunit/phpunit-mock-objects": "~2.3", - "sebastian/comparator": "~1.2.2", - "sebastian/diff": "~1.2", - "sebastian/environment": "~1.3", - "sebastian/exporter": "~1.2", - "sebastian/global-state": "~1.0", - "sebastian/version": "~1.0", - "symfony/yaml": "~2.1|~3.0" + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.9.1", + "phar-io/manifest": "^1.0.3", + "phar-io/version": "^2.0.1", + "php": "^7.2", + "phpspec/prophecy": "^1.8.1", + "phpunit/php-code-coverage": "^7.0.7", + "phpunit/php-file-iterator": "^2.0.2", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^2.1.2", + "sebastian/comparator": "^3.0.2", + "sebastian/diff": "^3.0.2", + "sebastian/environment": "^4.2.2", + "sebastian/exporter": "^3.1.1", + "sebastian/global-state": "^3.0.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^2.0.1", + "sebastian/type": "^1.1.3", + "sebastian/version": "^2.0.1" + }, + "require-dev": { + "ext-pdo": "*" }, "suggest": { - "phpunit/php-invoker": "~1.1" + "ext-soap": "*", + "ext-xdebug": "*", + "phpunit/php-invoker": "^2.0.0" }, "bin": [ "phpunit" @@ -1414,7 +1616,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.8.x-dev" + "dev-master": "8.4-dev" } }, "autoload": { @@ -1440,38 +1642,81 @@ "testing", "xunit" ], - "time": "2017-06-21T08:07:12+00:00" + "time": "2019-11-06T09:42:23+00:00" }, { - "name": "phpunit/phpunit-mock-objects", - "version": "2.3.8", + "name": "psr/container", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983" + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983", - "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": ">=5.3.3", - "phpunit/php-text-template": "~1.2", - "sebastian/exporter": "~1.2" + "php": ">=5.3.0" }, - "require-dev": { - "phpunit/phpunit": "~4.4" + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } }, - "suggest": { - "ext-soap": "*" + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2017-02-14T16:28:37+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { @@ -1486,44 +1731,39 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "time": "2015-10-02T06:51:40+00:00" + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2017-03-04T06:30:41+00:00" }, { "name": "sebastian/comparator", - "version": "1.2.4", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2 || ~2.0" + "php": "^7.1", + "sebastian/diff": "^3.0", + "sebastian/exporter": "^3.1" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -1554,38 +1794,39 @@ } ], "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", + "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ "comparator", "compare", "equality" ], - "time": "2017-01-29T09:50:25+00:00" + "time": "2018-07-12T15:12:46+00:00" }, { "name": "sebastian/diff", - "version": "1.4.3", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^7.5 || ^8.0", + "symfony/process": "^2 || ^3.3 || ^4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -1610,34 +1851,40 @@ "description": "Diff implementation", "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "diff" + "diff", + "udiff", + "unidiff", + "unified diff" ], - "time": "2017-05-22T07:24:03+00:00" + "time": "2019-02-04T06:01:07+00:00" }, { "name": "sebastian/environment", - "version": "1.3.8", + "version": "4.2.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea" + "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea", - "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/f2a2c8e1c97c11ace607a7a667d73d47c19fe404", + "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8 || ^5.0" + "phpunit/phpunit": "^7.5" + }, + "suggest": { + "ext-posix": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "4.2-dev" } }, "autoload": { @@ -1662,34 +1909,34 @@ "environment", "hhvm" ], - "time": "2016-08-18T05:49:44+00:00" + "time": "2019-05-05T09:05:15+00:00" }, { "name": "sebastian/exporter", - "version": "1.2.2", + "version": "3.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" + "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", - "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", + "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~1.0" + "php": "^7.0", + "sebastian/recursion-context": "^3.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "3.1.x-dev" } }, "autoload": { @@ -1702,6 +1949,10 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -1710,17 +1961,13 @@ "name": "Volker Dusch", "email": "github@wallbash.com" }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, { "name": "Adam Harvey", "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], "description": "Provides the functionality to export PHP variables for visualization", @@ -1729,27 +1976,30 @@ "export", "exporter" ], - "time": "2016-06-17T09:04:28+00:00" + "time": "2019-09-14T09:02:43+00:00" }, { "name": "sebastian/global-state", - "version": "1.1.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", + "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.2", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "ext-dom": "*", + "phpunit/phpunit": "^8.0" }, "suggest": { "ext-uopz": "*" @@ -1757,7 +2007,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -1780,32 +2030,124 @@ "keywords": [ "global state" ], - "time": "2015-10-12T03:26:01+00:00" + "time": "2019-02-01T05:30:01+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2017-08-03T12:35:26+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "773f97c67f28de00d397be301821b06708fca0be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", + "reference": "773f97c67f28de00d397be301821b06708fca0be", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "time": "2017-03-29T09:07:27+00:00" }, { "name": "sebastian/recursion-context", - "version": "1.0.5", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7" + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7", - "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -1833,23 +2175,119 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2016-10-03T07:41:43+00:00" + "time": "2017-03-03T06:23:57+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2018-10-04T04:07:39+00:00" + }, + { + "name": "sebastian/type", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/3aaaa15fa71d27650d62a948be022fe3b48541a3", + "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3", + "shasum": "" + }, + "require": { + "php": "^7.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "time": "2019-07-02T08:10:15+00:00" }, { "name": "sebastian/version", - "version": "1.0.6", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", - "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", "shasum": "" }, + "require": { + "php": ">=5.6" + }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -1868,40 +2306,47 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2015-06-21T13:59:46+00:00" + "time": "2016-10-03T07:35:21+00:00" }, { "name": "symfony/console", - "version": "v4.1.4", + "version": "v4.3.8", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "ca80b8ced97cf07390078b29773dc384c39eee1f" + "reference": "831424efae0a1fe6642784bd52aae14ece6538e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/ca80b8ced97cf07390078b29773dc384c39eee1f", - "reference": "ca80b8ced97cf07390078b29773dc384c39eee1f", + "url": "https://api.github.com/repos/symfony/console/zipball/831424efae0a1fe6642784bd52aae14ece6538e6", + "reference": "831424efae0a1fe6642784bd52aae14ece6538e6", "shasum": "" }, "require": { "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0" + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/service-contracts": "^1.1" }, "conflict": { "symfony/dependency-injection": "<3.4", + "symfony/event-dispatcher": "<4.3", "symfony/process": "<3.3" }, + "provide": { + "psr/log-implementation": "1.0" + }, "require-dev": { "psr/log": "~1.0", "symfony/config": "~3.4|~4.0", "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/event-dispatcher": "^4.3", "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0" + "symfony/process": "~3.4|~4.0", + "symfony/var-dumper": "^4.3" }, "suggest": { - "psr/log-implementation": "For using the console logger", + "psr/log": "For using the console logger", "symfony/event-dispatcher": "", "symfony/lock": "", "symfony/process": "" @@ -1909,7 +2354,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.1-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -1936,20 +2381,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2018-07-26T11:24:31+00:00" + "time": "2019-11-13T07:29:07+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.9.0", + "version": "v1.12.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" + "reference": "550ebaac289296ce228a706d0867afc34687e3f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4", + "reference": "550ebaac289296ce228a706d0867afc34687e3f4", "shasum": "" }, "require": { @@ -1961,7 +2406,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.12-dev" } }, "autoload": { @@ -1977,13 +2422,13 @@ "MIT" ], "authors": [ - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - }, { "name": "Gert de Pagter", "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony polyfill for ctype functions", @@ -1994,20 +2439,20 @@ "polyfill", "portable" ], - "time": "2018-08-06T14:22:27+00:00" + "time": "2019-08-06T08:03:45+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.9.0", + "version": "v1.12.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8" + "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d0cd638f4634c16d8df4508e847f14e9e43168b8", - "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17", + "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17", "shasum": "" }, "require": { @@ -2019,7 +2464,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.12-dev" } }, "autoload": { @@ -2053,48 +2498,97 @@ "portable", "shim" ], - "time": "2018-08-06T14:22:27+00:00" + "time": "2019-08-06T08:03:45+00:00" }, { - "name": "symfony/yaml", - "version": "v3.4.15", + "name": "symfony/polyfill-php73", + "version": "v1.12.0", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "c2f4812ead9f847cb69e90917ca7502e6892d6b8" + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/c2f4812ead9f847cb69e90917ca7502e6892d6b8", - "reference": "c2f4812ead9f847cb69e90917ca7502e6892d6b8", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/2ceb49eaccb9352bff54d22570276bb75ba4a188", + "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-ctype": "~1.8" + "php": ">=5.3.3" }, - "conflict": { - "symfony/console": "<3.4" + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.12-dev" + } }, - "require-dev": { - "symfony/console": "~3.4|~4.0" + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2019-08-06T08:03:45+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v1.1.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "ffc7f5692092df31515df2a5ecf3b7302b3ddacf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/ffc7f5692092df31515df2a5ecf3b7302b3ddacf", + "reference": "ffc7f5692092df31515df2a5ecf3b7302b3ddacf", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "psr/container": "^1.0" }, "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "symfony/service-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "1.1-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Contracts\\Service\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2102,38 +2596,86 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Yaml Component", + "description": "Generic abstractions related to writing services", "homepage": "https://symfony.com", - "time": "2018-08-10T07:34:36+00:00" + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-10-14T12:27:06+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "time": "2019-06-13T22:48:21+00:00" }, { "name": "webmozart/assert", - "version": "1.3.0", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "0df1908962e7a3071564e857d86874dad1ef204a" + "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", - "reference": "0df1908962e7a3071564e857d86874dad1ef204a", + "url": "https://api.github.com/repos/webmozart/assert/zipball/88e6d84706d09a236046d686bbea96f07b3a34f4", + "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^5.3.3 || ^7.0", + "symfony/polyfill-ctype": "^1.8" }, "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" + "phpunit/phpunit": "^4.8.36 || ^7.5.13" }, "type": "library", "extra": { @@ -2162,7 +2704,7 @@ "check", "validate" ], - "time": "2018-01-29T19:49:41+00:00" + "time": "2019-08-24T08:43:50+00:00" } ], "aliases": [], @@ -2171,7 +2713,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=5.4" + "php": ">=7.2" }, "platform-dev": [] } From d1edab32e5fdc76458e62f7b08ceabd6846c173c Mon Sep 17 00:00:00 2001 From: Pierre Dedy Date: Thu, 14 Nov 2019 14:48:02 +0100 Subject: [PATCH 295/303] upgrades phpunit --- tests/unit-large/BackendTest.php | 4 +++- tests/unit-large/CrossProjectTest.php | 6 ++++-- tests/unit/00UpdatePlanTest.php | 10 ++++++---- tests/unit/AgencyQueryTest.php | 4 +++- tests/unit/BAVFacadeTest.php | 4 +++- tests/unit/BICUtilTest.php | 4 +++- tests/unit/BackendContainerTest.php | 4 +++- tests/unit/ConfigurationLocatorTest.php | 4 +++- tests/unit/ConfigurationRegistryTest.php | 6 ++++-- tests/unit/ContextValidationTest.php | 6 ++++-- tests/unit/DataConstraintTest.php | 6 ++++-- tests/unit/DownloaderTest.php | 4 +++- tests/unit/FileParserTest.php | 4 +++- tests/unit/FileUtilTest.php | 4 +++- tests/unit/FileValidatorTest.php | 4 +++- tests/unit/LockTest.php | 4 +++- tests/unit/StatementContainerTest.php | 6 ++++-- tests/unit/URIPickerTest.php | 4 +++- tests/unit/Validator66_PR18_Test.php | 4 +++- tests/unit/Validator74_PR18_Test.php | 4 +++- tests/unit/ValidatorE3Test.php | 4 +++- tests/unit/ValidatorE4Test.php | 4 +++- tests/unit/ValidatorFactoryTest.php | 6 ++++-- tests/unit/ValidatorTest.php | 8 +++++--- 24 files changed, 83 insertions(+), 35 deletions(-) diff --git a/tests/unit-large/BackendTest.php b/tests/unit-large/BackendTest.php index 436c7994..9aafecbb 100644 --- a/tests/unit-large/BackendTest.php +++ b/tests/unit-large/BackendTest.php @@ -2,6 +2,8 @@ namespace malkusch\bav; +use PHPUnit\Framework\TestCase; + require_once __DIR__ . "/../bootstrap.php"; /** @@ -11,7 +13,7 @@ * @license WTFPL * @author Markus Malkusch */ -class BackendTest extends \PHPUnit_Framework_TestCase +class BackendTest extends TestCase { /** diff --git a/tests/unit-large/CrossProjectTest.php b/tests/unit-large/CrossProjectTest.php index e2d9d021..23cd1849 100644 --- a/tests/unit-large/CrossProjectTest.php +++ b/tests/unit-large/CrossProjectTest.php @@ -2,6 +2,8 @@ namespace malkusch\bav; +use PHPUnit\Framework\TestCase; + require_once __DIR__ . "/../bootstrap.php"; /** @@ -18,7 +20,7 @@ * @license WTFPL * @large */ -class CrossProjectTest extends \PHPUnit_Framework_TestCase +class CrossProjectTest extends TestCase { /** @@ -67,7 +69,7 @@ class CrossProjectTest extends \PHPUnit_Framework_TestCase */ private static $testAPIs = array(); - public static function setUpBeforeClass() + public static function setUpBeforeClass(): void { self::$testAPIs = array(new BAVTestAPI()); diff --git a/tests/unit/00UpdatePlanTest.php b/tests/unit/00UpdatePlanTest.php index 49ae3560..dc6bc26c 100644 --- a/tests/unit/00UpdatePlanTest.php +++ b/tests/unit/00UpdatePlanTest.php @@ -2,6 +2,8 @@ namespace malkusch\bav; +use PHPUnit\Framework\TestCase; + require_once __DIR__ . "/../bootstrap.php"; /** @@ -14,7 +16,7 @@ * @license WTFPL * @author Markus Malkusch */ -class UpdatePlanTest extends \PHPUnit_Framework_TestCase +class UpdatePlanTest extends TestCase { /** @@ -65,7 +67,7 @@ public function testIsOutdated($mtime, $time, $expectedIsOutdated) } /** - * @expectedException \PHPUnit_Framework_Error_Warning + * @expectedException \PHPUnit\Framework\Error\Warning */ public function testLogUpdatePlan() { @@ -74,7 +76,7 @@ public function testLogUpdatePlan() } /** - * @expectedException \PHPUnit_Framework_Error_Notice + * @expectedException \PHPUnit\Framework\Error\Notice * @medium */ public function testAutomaticUpdatePlanNotice() @@ -86,7 +88,7 @@ public function testAutomaticUpdatePlanNotice() } /** - * @expectedException \PHPUnit_Framework_Error_Notice + * @expectedException \PHPUnit\Framework\Error\Notice * @medium */ public function testAutomaticUpdatePlan() diff --git a/tests/unit/AgencyQueryTest.php b/tests/unit/AgencyQueryTest.php index b8632729..17abc7bd 100644 --- a/tests/unit/AgencyQueryTest.php +++ b/tests/unit/AgencyQueryTest.php @@ -2,6 +2,8 @@ namespace malkusch\bav; +use PHPUnit\Framework\TestCase; + require_once __DIR__ . "/../bootstrap.php"; /** @@ -10,7 +12,7 @@ * @author Markus Malkusch * @licends GPL */ -class AgencyQueryTest extends \PHPUnit_Framework_TestCase +class AgencyQueryTest extends TestCase { /** diff --git a/tests/unit/BAVFacadeTest.php b/tests/unit/BAVFacadeTest.php index 7fc6287f..4625144c 100644 --- a/tests/unit/BAVFacadeTest.php +++ b/tests/unit/BAVFacadeTest.php @@ -2,6 +2,8 @@ namespace malkusch\bav; +use PHPUnit\Framework\TestCase; + require_once __DIR__ . "/../bootstrap.php"; /** @@ -11,7 +13,7 @@ * @author Markus Malkusch * @see BAV */ -class BAVFacadeTest extends \PHPUnit_Framework_TestCase +class BAVFacadeTest extends TestCase { /** diff --git a/tests/unit/BICUtilTest.php b/tests/unit/BICUtilTest.php index 0d08775e..5ff42ddf 100644 --- a/tests/unit/BICUtilTest.php +++ b/tests/unit/BICUtilTest.php @@ -2,6 +2,8 @@ namespace malkusch\bav; +use PHPUnit\Framework\TestCase; + require_once __DIR__ . "/../bootstrap.php"; /** @@ -11,7 +13,7 @@ * @see BICUtil * @author Markus Malkusch */ -class BICUtilTest extends \PHPUnit_Framework_TestCase +class BICUtilTest extends TestCase { /** diff --git a/tests/unit/BackendContainerTest.php b/tests/unit/BackendContainerTest.php index 012682e1..993077a9 100644 --- a/tests/unit/BackendContainerTest.php +++ b/tests/unit/BackendContainerTest.php @@ -2,6 +2,8 @@ namespace malkusch\bav; +use PHPUnit\Framework\TestCase; + require_once __DIR__ . "/../bootstrap.php"; /** @@ -10,7 +12,7 @@ * @license WTFPL * @author Markus Malkusch */ -class BackendContainerTest extends \PHPUnit_Framework_TestCase +class BackendContainerTest extends TestCase { /** diff --git a/tests/unit/ConfigurationLocatorTest.php b/tests/unit/ConfigurationLocatorTest.php index 349ec9f7..db4564a1 100644 --- a/tests/unit/ConfigurationLocatorTest.php +++ b/tests/unit/ConfigurationLocatorTest.php @@ -2,6 +2,8 @@ namespace malkusch\bav; +use PHPUnit\Framework\TestCase; + require_once __DIR__ . "/../bootstrap.php"; /** @@ -11,7 +13,7 @@ * @licends GPL * @see ConfigurationLocator */ -class ConfigurationLocatorTest extends \PHPUnit_Framework_TestCase +class ConfigurationLocatorTest extends TestCase { /** diff --git a/tests/unit/ConfigurationRegistryTest.php b/tests/unit/ConfigurationRegistryTest.php index 67ad5d75..74e8ced1 100644 --- a/tests/unit/ConfigurationRegistryTest.php +++ b/tests/unit/ConfigurationRegistryTest.php @@ -2,6 +2,8 @@ namespace malkusch\bav; +use PHPUnit\Framework\TestCase; + require_once __DIR__ . "/../bootstrap.php"; /** @@ -11,13 +13,13 @@ * @licends GPL * @see ConfigurationRegistry */ -class ConfigurationRegistryTest extends \PHPUnit_Framework_TestCase +class ConfigurationRegistryTest extends TestCase { /** * Disable update hook */ - protected function tearDown() + protected function tearDown(): void { ConfigurationRegistry::getConfiguration()->setUpdatePlan(null); } diff --git a/tests/unit/ContextValidationTest.php b/tests/unit/ContextValidationTest.php index 3f743c0f..54f9a1b9 100644 --- a/tests/unit/ContextValidationTest.php +++ b/tests/unit/ContextValidationTest.php @@ -2,6 +2,8 @@ namespace malkusch\bav; +use PHPUnit\Framework\TestCase; + require_once __DIR__ . "/../bootstrap.php"; /** @@ -11,7 +13,7 @@ * @see ContextValidation * @author Markus Malkusch */ -class ContextValidationTest extends \PHPUnit_Framework_TestCase +class ContextValidationTest extends TestCase { /** @@ -19,7 +21,7 @@ class ContextValidationTest extends \PHPUnit_Framework_TestCase */ private $validation; - protected function setUp() + protected function setUp(): void { $bav = new BAV(); $this->validation = new ContextValidation($bav->getDataBackend()); diff --git a/tests/unit/DataConstraintTest.php b/tests/unit/DataConstraintTest.php index 4dba2d12..b70bfe57 100644 --- a/tests/unit/DataConstraintTest.php +++ b/tests/unit/DataConstraintTest.php @@ -2,12 +2,14 @@ namespace malkusch\bav; +use PHPUnit\Framework\TestCase; + require_once __DIR__ . "/../bootstrap.php"; /** * Test if the banklist.txt fits into the model. */ -class DataConstraintTest extends \PHPUnit_Framework_TestCase +class DataConstraintTest extends TestCase { /** @@ -15,7 +17,7 @@ class DataConstraintTest extends \PHPUnit_Framework_TestCase */ private static $pdo; - public static function setUpBeforeClass() + public static function setUpBeforeClass(): void { self::$pdo = PDOFactory::makePDO(); diff --git a/tests/unit/DownloaderTest.php b/tests/unit/DownloaderTest.php index c1a18d93..5e637cd9 100644 --- a/tests/unit/DownloaderTest.php +++ b/tests/unit/DownloaderTest.php @@ -2,6 +2,8 @@ namespace malkusch\bav; +use PHPUnit\Framework\TestCase; + require_once __DIR__ . "/../bootstrap.php"; /** @@ -10,7 +12,7 @@ * @license WTFPL * @author Markus Malkusch */ -class DownloaderTest extends \PHPUnit_Framework_TestCase +class DownloaderTest extends TestCase { /** diff --git a/tests/unit/FileParserTest.php b/tests/unit/FileParserTest.php index 2af92da9..e6432f78 100644 --- a/tests/unit/FileParserTest.php +++ b/tests/unit/FileParserTest.php @@ -2,6 +2,8 @@ namespace malkusch\bav; +use PHPUnit\Framework\TestCase; + require_once __DIR__ . "/../bootstrap.php"; /** @@ -12,7 +14,7 @@ * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @see FileParser */ -class FileParserTest extends \PHPUnit_Framework_TestCase +class FileParserTest extends TestCase { /** diff --git a/tests/unit/FileUtilTest.php b/tests/unit/FileUtilTest.php index c8255f0d..1b1a5bdd 100644 --- a/tests/unit/FileUtilTest.php +++ b/tests/unit/FileUtilTest.php @@ -2,6 +2,8 @@ namespace malkusch\bav; +use PHPUnit\Framework\TestCase; + require_once __DIR__ . "/../bootstrap.php"; /** @@ -11,7 +13,7 @@ * @author Markus Malkusch * @license WTFPL */ -class FileUtilTest extends \PHPUnit_Framework_TestCase +class FileUtilTest extends TestCase { /** diff --git a/tests/unit/FileValidatorTest.php b/tests/unit/FileValidatorTest.php index 5c7ce730..ef8885c1 100644 --- a/tests/unit/FileValidatorTest.php +++ b/tests/unit/FileValidatorTest.php @@ -2,6 +2,8 @@ namespace malkusch\bav; +use PHPUnit\Framework\TestCase; + require_once __DIR__ . "/../bootstrap.php"; /** @@ -11,7 +13,7 @@ * @author Markus Malkusch * @see BAV */ -class FileValidatorTest extends \PHPUnit_Framework_TestCase +class FileValidatorTest extends TestCase { public function testValidate() diff --git a/tests/unit/LockTest.php b/tests/unit/LockTest.php index 3e2ec2b1..4cbfe718 100644 --- a/tests/unit/LockTest.php +++ b/tests/unit/LockTest.php @@ -2,6 +2,8 @@ namespace malkusch\bav; +use PHPUnit\Framework\TestCase; + require_once __DIR__ . "/../bootstrap.php"; /** @@ -11,7 +13,7 @@ * @author Markus Malkusch * @see Lock */ -class LockTest extends \PHPUnit_Framework_TestCase +class LockTest extends TestCase { /** diff --git a/tests/unit/StatementContainerTest.php b/tests/unit/StatementContainerTest.php index 57a3aa96..ea124052 100644 --- a/tests/unit/StatementContainerTest.php +++ b/tests/unit/StatementContainerTest.php @@ -2,6 +2,8 @@ namespace malkusch\bav; +use PHPUnit\Framework\TestCase; + require_once __DIR__ . "/../bootstrap.php"; /** @@ -11,7 +13,7 @@ * @author Markus Malkusch * @see StatementContainer */ -class StatementContainerTest extends \PHPUnit_Framework_TestCase +class StatementContainerTest extends TestCase { /** @@ -19,7 +21,7 @@ class StatementContainerTest extends \PHPUnit_Framework_TestCase */ private $statementContainer; - public function setUp() + public function setUp(): void { $this->statementContainer = new StatementContainer(PDOFactory::makePDO()); } diff --git a/tests/unit/URIPickerTest.php b/tests/unit/URIPickerTest.php index 47a69caf..b9888c2f 100644 --- a/tests/unit/URIPickerTest.php +++ b/tests/unit/URIPickerTest.php @@ -2,6 +2,8 @@ namespace malkusch\bav; +use PHPUnit\Framework\TestCase; + require_once __DIR__ . "/../bootstrap.php"; /** @@ -10,7 +12,7 @@ * @license WTFPL * @author Markus Malkusch */ -class URIPickerTest extends \PHPUnit_Framework_TestCase +class URIPickerTest extends TestCase { /** diff --git a/tests/unit/Validator66_PR18_Test.php b/tests/unit/Validator66_PR18_Test.php index e864f688..af5c820d 100644 --- a/tests/unit/Validator66_PR18_Test.php +++ b/tests/unit/Validator66_PR18_Test.php @@ -2,6 +2,8 @@ namespace malkusch\bav; +use PHPUnit\Framework\TestCase; + require_once __DIR__ . "/../bootstrap.php"; /** @@ -11,7 +13,7 @@ * @license WTFPL * @link https://github.com/bav-php/bav/pull/18 */ -class Validator66_PR18_Test extends \PHPUnit_Framework_TestCase +class Validator66_PR18_Test extends TestCase { /** diff --git a/tests/unit/Validator74_PR18_Test.php b/tests/unit/Validator74_PR18_Test.php index a59d7720..a0a1b24f 100644 --- a/tests/unit/Validator74_PR18_Test.php +++ b/tests/unit/Validator74_PR18_Test.php @@ -2,6 +2,8 @@ namespace malkusch\bav; +use PHPUnit\Framework\TestCase; + require_once __DIR__ . "/../bootstrap.php"; /** @@ -11,7 +13,7 @@ * @license WTFPL * @link https://github.com/bav-php/bav/pull/18 */ -class Validator74_PR18_Test extends \PHPUnit_Framework_TestCase +class Validator74_PR18_Test extends TestCase { /** diff --git a/tests/unit/ValidatorE3Test.php b/tests/unit/ValidatorE3Test.php index 5e694fdb..97bb6f53 100644 --- a/tests/unit/ValidatorE3Test.php +++ b/tests/unit/ValidatorE3Test.php @@ -2,13 +2,15 @@ namespace malkusch\bav; +use PHPUnit\Framework\TestCase; + require_once __DIR__ . '/../bootstrap.php'; /** * Test for E3. * */ -class ValidatorE3Test extends \PHPUnit_Framework_TestCase +class ValidatorE3Test extends TestCase { /** diff --git a/tests/unit/ValidatorE4Test.php b/tests/unit/ValidatorE4Test.php index 751aeb17..e8a1908a 100644 --- a/tests/unit/ValidatorE4Test.php +++ b/tests/unit/ValidatorE4Test.php @@ -2,13 +2,15 @@ namespace malkusch\bav; +use PHPUnit\Framework\TestCase; + require_once __DIR__ . '/../bootstrap.php'; /** * Test for E4. * */ -class ValidatorE4Test extends \PHPUnit_Framework_TestCase +class ValidatorE4Test extends TestCase { /** diff --git a/tests/unit/ValidatorFactoryTest.php b/tests/unit/ValidatorFactoryTest.php index 0d6c63be..a3046e64 100644 --- a/tests/unit/ValidatorFactoryTest.php +++ b/tests/unit/ValidatorFactoryTest.php @@ -2,6 +2,8 @@ namespace malkusch\bav; +use PHPUnit\Framework\TestCase; + require_once __DIR__ . "/../bootstrap.php"; /** @@ -11,7 +13,7 @@ * @license WTFPL * @see ValidatorFactory */ -class ValidatorFactoryTest extends \PHPUnit_Framework_TestCase +class ValidatorFactoryTest extends TestCase { /** @@ -19,7 +21,7 @@ class ValidatorFactoryTest extends \PHPUnit_Framework_TestCase */ private $factory; - protected function setUp() + protected function setUp(): void { $this->factory = new ValidatorFactory(); } diff --git a/tests/unit/ValidatorTest.php b/tests/unit/ValidatorTest.php index e01a447d..d709b142 100644 --- a/tests/unit/ValidatorTest.php +++ b/tests/unit/ValidatorTest.php @@ -2,6 +2,8 @@ namespace malkusch\bav; +use PHPUnit\Framework\TestCase; + require_once __DIR__ . "/../bootstrap.php"; /** @@ -10,7 +12,7 @@ * @author Markus Malkusch * @license WTFPL */ -class ValidatorTest extends \PHPUnit_Framework_TestCase +class ValidatorTest extends TestCase { /** @@ -32,7 +34,7 @@ class ValidatorTest extends \PHPUnit_Framework_TestCase * @throws FileParserIOException * @throws FileParserNotExistsException */ - protected function setUp() + protected function setUp(): void { if (! empty(self::$dataBackend)) { return; @@ -149,7 +151,7 @@ function (&$item) { * * @see Validator::isValid() * @dataProvider provideBanks - * @expectedException PHPUnit_Framework_Error_Warning + * @expectedException \PHPUnit\Framework\Error\Warning */ public function testWarningForIsValidWithInt(Bank $bank) { From 07d7cf4049d9399b72aad62020549f6a85555f9e Mon Sep 17 00:00:00 2001 From: Andre Fenske Date: Wed, 26 Aug 2020 10:56:27 +0200 Subject: [PATCH 296/303] Fixed all automatically fixable PHP7.4 errors with phpcbf --- classes/dataBackend/file/FileDataBackend.php | 40 +++--- classes/encoding/IconvEncoding.php | 22 ++-- classes/validator/Validator.php | 35 +++--- classes/validator/ValidatorIteration.php | 11 +- classes/validator/validators/Validator16.php | 2 +- classes/validator/validators/Validator25.php | 18 +-- classes/validator/validators/Validator35.php | 2 +- classes/validator/validators/Validator41.php | 2 +- classes/validator/validators/Validator45.php | 4 +- classes/validator/validators/Validator51.php | 27 ++-- classes/validator/validators/Validator52.php | 2 +- classes/validator/validators/Validator56.php | 2 +- classes/validator/validators/Validator61.php | 2 +- classes/validator/validators/Validator63.php | 2 +- classes/validator/validators/Validator65.php | 2 +- classes/validator/validators/Validator66.php | 4 +- classes/validator/validators/Validator68.php | 35 +++--- classes/validator/validators/Validator70.php | 2 +- classes/validator/validators/Validator73.php | 2 +- classes/validator/validators/Validator75.php | 2 +- classes/validator/validators/Validator76.php | 2 +- classes/validator/validators/Validator79.php | 13 +- classes/validator/validators/Validator80.php | 2 +- classes/validator/validators/Validator81.php | 2 +- classes/validator/validators/Validator83.php | 2 +- classes/validator/validators/Validator84.php | 2 +- classes/validator/validators/Validator85.php | 2 +- classes/validator/validators/Validator86.php | 2 +- classes/validator/validators/Validator87.php | 2 +- classes/validator/validators/Validator87a.php | 39 +++--- classes/validator/validators/Validator88.php | 2 +- classes/validator/validators/Validator90.php | 2 +- classes/validator/validators/Validator90c.php | 2 +- classes/validator/validators/Validator90d.php | 2 +- classes/validator/validators/ValidatorA5.php | 2 +- classes/validator/validators/ValidatorA6.php | 11 +- classes/validator/validators/ValidatorA8.php | 11 +- classes/validator/validators/ValidatorB0.php | 13 +- classes/validator/validators/ValidatorB2.php | 11 +- classes/validator/validators/ValidatorB3.php | 11 +- classes/validator/validators/ValidatorB4.php | 11 +- classes/validator/validators/ValidatorB5.php | 2 +- classes/validator/validators/ValidatorB6.php | 11 +- classes/validator/validators/ValidatorC1.php | 11 +- classes/validator/validators/ValidatorC3.php | 11 +- classes/validator/validators/ValidatorC4.php | 11 +- classes/validator/validators/ValidatorC5.php | 67 +++++----- classes/validator/validators/ValidatorC6.php | 15 ++- classes/validator/validators/ValidatorD1.php | 11 +- classes/validator/validators/ValidatorD4.php | 11 +- classes/validator/validators/ValidatorD8.php | 11 +- classes/validator/validators/ValidatorE2.php | 4 +- composer.json | 3 +- composer.lock | 115 +++++++++++++++++- tests/unit/ConfigurationLocatorTest.php | 24 ++-- tests/unit/ConfigurationRegistryTest.php | 4 +- tests/unit/DataConstraintTest.php | 2 +- 57 files changed, 384 insertions(+), 293 deletions(-) diff --git a/classes/dataBackend/file/FileDataBackend.php b/classes/dataBackend/file/FileDataBackend.php index d6451f03..6b53a1a9 100644 --- a/classes/dataBackend/file/FileDataBackend.php +++ b/classes/dataBackend/file/FileDataBackend.php @@ -10,8 +10,8 @@ * This is the easiest way to use BAV. BAV can work as a standalone application without * any DBS. * - * @author Markus Malkusch - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations * @license WTFPL */ class FileDataBackend extends DataBackend @@ -84,7 +84,7 @@ public function getFile() * * Be aware that this needs some amount of memory. * - * @param String $file + * @param String $file * @throws DataBackendIOException * @throws FileException */ @@ -128,7 +128,7 @@ private function sortFile($file) } /** - * @see DataBackend::uninstall() + * @see DataBackend::uninstall() * @throws DataBackendIOException */ public function uninstall() @@ -140,7 +140,7 @@ public function uninstall() } /** - * @see DataBackend::install() + * @see DataBackend::install() * @throws DataBackendIOException */ public function install() @@ -151,7 +151,7 @@ public function install() /** * This method works only if your PHP is compiled with cURL. * - * @see DataBackend::update() + * @see DataBackend::update() * @throws DataBackendIOException * @throws FileException * @throws DownloaderException @@ -165,20 +165,20 @@ public function update() $uriPicker = new DOMURIPicker(); $path = $uriPicker->pickURI($content, new \DateTime()); - if (strlen($path) > 0 && $path{0} != "/") { + if (strlen($path) > 0 && $path[0] != "/") { $path = sprintf("/%s/%s", dirname(self::DOWNLOAD_URI), $path); } $pathParts = explode('/', $path); foreach ($pathParts as $i => $part) { switch ($part) { - case '..': - unset($pathParts[$i-1]); - // fall-through as the current part ("..") should be removed as well. + case '..': + unset($pathParts[$i-1]); + // fall-through as the current part ("..") should be removed as well. - case '.': - unset($pathParts[$i]); - break; + case '.': + unset($pathParts[$i]); + break; } } @@ -209,7 +209,7 @@ public function update() * @throws DataBackendIOException * @throws DataBackendException * @return Bank[] - * @see DataBackend::getAllBanks() + * @see DataBackend::getAllBanks() */ public function getAllBanks() { @@ -238,8 +238,8 @@ public function getAllBanks() /** * @throws DataBackendIOException * @throws BankNotFoundException - * @param String $bankID - * @see DataBackend::getNewBank() + * @param String $bankID + * @see DataBackend::getNewBank() * @return Bank */ public function getNewBank($bankID) @@ -267,7 +267,7 @@ public function getNewBank($bankID) } /** - * @see DataBackend::getMainAgency() + * @see DataBackend::getMainAgency() * @throws DataBackendException * @throws NoMainAgencyException * @return Agency @@ -299,7 +299,7 @@ public function getMainAgency(Bank $bank) } /** - * @see DataBackend::getAgenciesForBank() + * @see DataBackend::getAgenciesForBank() * @throws DataBackendIOException * @throws DataBackendException * @return Agency[] @@ -401,8 +401,8 @@ public function isInstalled() /** * Returns bank agencies for a given BIC. * - * @todo This method is inefficient. Add index based implementation. - * @param string $bic BIC + * @todo This method is inefficient. Add index based implementation. + * @param string $bic BIC * @return Agency[] */ public function getBICAgencies($bic) diff --git a/classes/encoding/IconvEncoding.php b/classes/encoding/IconvEncoding.php index 247afd8a..a3c9aee1 100644 --- a/classes/encoding/IconvEncoding.php +++ b/classes/encoding/IconvEncoding.php @@ -6,7 +6,6 @@ * Wrapper for the iconv Functions. If you use this wrapper * PHP must be compiled with these functions. * - * * Copyright (C) 2006 Markus Malkusch * * This program is free software; you can redistribute it and/or modify @@ -23,12 +22,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * - * @package classes + * @package classes * @subpackage dataBackend - * @author Markus Malkusch - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @copyright Copyright (C) 2006 Markus Malkusch + * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @copyright Copyright (C) 2006 Markus Malkusch * @deprecated 1.0.1 PHP 5.6.0 deprecated the iconv_* methods */ class IconvEncoding extends Encoding @@ -44,7 +42,7 @@ public static function isSupported($encoding) /** * @throws UnsupportedEncodingException - * @param String $encoding + * @param String $encoding */ public function __construct($encoding = 'UTF-8') { @@ -62,9 +60,9 @@ public function strlen($string) } /** - * @param String $string - * @param int $offset - * @param int $length + * @param String $string + * @param int $offset + * @param int $length * @return String */ public function substr($string, $offset, $length = null) @@ -76,8 +74,8 @@ public function substr($string, $offset, $length = null) /** * @throws EncodingException - * @param String $string - * @param String $from_encoding + * @param String $string + * @param String $from_encoding * @return $string the encoded string */ public function convert($string, $from_encoding) diff --git a/classes/validator/Validator.php b/classes/validator/Validator.php index a7ea34cf..d058f42e 100644 --- a/classes/validator/Validator.php +++ b/classes/validator/Validator.php @@ -19,12 +19,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * - * @package classes + * @package classes * @subpackage validator - * @author Markus Malkusch - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @copyright Copyright (C) 2006 Markus Malkusch + * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @copyright Copyright (C) 2006 Markus Malkusch */ abstract class Validator { @@ -93,7 +92,7 @@ protected function checkType($account) * zeros, wich lead to unexpected results if not treated as a string ( * e.g. (int) 0020012357 evaluates to (string) '4199663'). * - * @param string $account bank account + * @param string $account bank account * @return bool */ public function isValid($account) @@ -148,13 +147,13 @@ abstract protected function getResult(); */ protected function getChecknumber() { - return $this->account{$this->getNormalizedPosition($this->checknumberPosition)}; + return $this->account[$this->getNormalizedPosition($this->checknumberPosition)]; } /** * converts negative positions. * - * @param int $pos + * @param int $pos * @return int * @throws ValidatorOutOfBoundsException */ @@ -175,7 +174,7 @@ protected function getNormalizedPosition($pos) /** * Some validators need this * - * @param int $int + * @param int $int * @return int */ protected function crossSum($int) @@ -184,7 +183,7 @@ protected function crossSum($int) $str_int = (string) $int; for ($i = 0; $i < strlen($str_int); $i++) { //$sum = bcadd($str_int{$i}, $sum); - $sum += $str_int{$i}; + $sum += $str_int[$i]; } return $sum; @@ -192,7 +191,7 @@ protected function crossSum($int) /** * @throws ValidatorOutOfBoundsException - * @param int $int + * @param int $int */ protected function normalizeAccount($size) { @@ -217,7 +216,7 @@ protected function getESER8() } $bankID = $this->bank->getBankID(); - if ($bankID{3} != 5) { + if ($bankID[3] != 5) { throw new ValidatorESERException(); } @@ -230,7 +229,7 @@ protected function getESER8() } $accountPart = ltrim(substr($account, 2), '0'); - $eser = $blzPart.$account{0}.$account{1}.$accountPart; + $eser = $blzPart.$account[0].$account[1].$accountPart; return $eser; } @@ -249,7 +248,7 @@ protected function getESER9() throw new ValidatorESERException(); } - if ($bankID{3} != 5) { + if ($bankID[3] != 5) { throw new ValidatorESERException(); } @@ -257,9 +256,9 @@ protected function getESER9() $blzPart0 = substr($bankID, -4, 2); $blzPart1 = substr($bankID, -1); - $accountPart0 = $account{0}; - $t = $account{1}; - $p = $account{2}; + $accountPart0 = $account[0]; + $t = $account[1]; + $p = $account[2]; $accountTail = ltrim(substr($account, 3), '0'); $eser = $blzPart0.$t.$blzPart1.$accountPart0.$p.$accountTail; @@ -273,7 +272,7 @@ protected function getEserChecknumberPosition() protected function getEserChecknumber() { - return $this->account{$this->getEserChecknumberPosition()}; + return $this->account[$this->getEserChecknumberPosition()]; } protected function isBetween($a, $b) diff --git a/classes/validator/ValidatorIteration.php b/classes/validator/ValidatorIteration.php index 20832d2d..39c0ef51 100644 --- a/classes/validator/ValidatorIteration.php +++ b/classes/validator/ValidatorIteration.php @@ -19,12 +19,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * - * @package classes + * @package classes * @subpackage validator - * @author Markus Malkusch - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @copyright Copyright (C) 2006 Markus Malkusch + * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @copyright Copyright (C) 2006 Markus Malkusch */ abstract class ValidatorIteration extends Validator { @@ -104,7 +103,7 @@ protected function validate() for ($this->i = 0; $this->i < $length; $this->i++) { - $this->number = (int)$this->account{$this->position}; + $this->number = (int)$this->account[$this->position]; $this->iterationStep(); $this->position += $stepping; diff --git a/classes/validator/validators/Validator16.php b/classes/validator/validators/Validator16.php index e7b47e37..3a8d551e 100644 --- a/classes/validator/validators/Validator16.php +++ b/classes/validator/validators/Validator16.php @@ -34,7 +34,7 @@ public function __construct(Bank $bank) protected function getResult() { return $this->accumulator % 11 === 1 - ? $this->getChecknumber() === $this->account{$this->getNormalizedPosition($this->checknumberPosition) - 1} + ? $this->getChecknumber() === $this->account[$this->getNormalizedPosition($this->checknumberPosition) - 1] : parent::getResult(); } } diff --git a/classes/validator/validators/Validator25.php b/classes/validator/validators/Validator25.php index 6e9bbc71..41ca737f 100644 --- a/classes/validator/validators/Validator25.php +++ b/classes/validator/validators/Validator25.php @@ -40,17 +40,17 @@ protected function getResult() { $result = 11 - ($this->accumulator % 11); switch ($result) { - case 10: - $result = 0; - if ($this->account{1} != 8 && $this->account{1} != 9) { - return false; + case 10: + $result = 0; + if ($this->account[1] != 8 && $this->account[1] != 9) { + return false; - } - break; + } + break; - case 11: - $result = 0; - break; + case 11: + $result = 0; + break; } diff --git a/classes/validator/validators/Validator35.php b/classes/validator/validators/Validator35.php index 261dd3ea..c2185e64 100644 --- a/classes/validator/validators/Validator35.php +++ b/classes/validator/validators/Validator35.php @@ -40,7 +40,7 @@ protected function getResult() { $result = $this->accumulator % 11; if ($result === 10) { - return $this->account{9} === $this->account{8}; + return $this->account[9] === $this->account[8]; } return (string)$result === $this->getCheckNumber(); diff --git a/classes/validator/validators/Validator41.php b/classes/validator/validators/Validator41.php index 728330e7..ad03dec9 100644 --- a/classes/validator/validators/Validator41.php +++ b/classes/validator/validators/Validator41.php @@ -35,7 +35,7 @@ protected function init($account) { parent::init($account); - if ($this->account{3} == 9) { + if ($this->account[3] == 9) { $this->setEnd(3); } else { diff --git a/classes/validator/validators/Validator45.php b/classes/validator/validators/Validator45.php index faf778aa..0bf4bed3 100644 --- a/classes/validator/validators/Validator45.php +++ b/classes/validator/validators/Validator45.php @@ -36,8 +36,8 @@ public function __construct(Bank $bank) */ protected function getResult() { - return $this->account{0} === '0' - || $this->account{4} === '1' + return $this->account[0] === '0' + || $this->account[4] === '1' || parent::getResult(); } } diff --git a/classes/validator/validators/Validator51.php b/classes/validator/validators/Validator51.php index 3f0e2a91..6250d767 100644 --- a/classes/validator/validators/Validator51.php +++ b/classes/validator/validators/Validator51.php @@ -21,12 +21,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * - * @package classes + * @package classes * @subpackage validator - * @author Markus Malkusch - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @copyright Copyright (C) 2006 Markus Malkusch + * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @copyright Copyright (C) 2006 Markus Malkusch */ class Validator51 extends ValidatorChain { @@ -93,7 +92,7 @@ protected function init($account) { parent::init($account); - $this->validators = $this->account{2} == 9 + $this->validators = $this->account[2] == 9 ? $this->exceptionValidators : $this->defaultValidators; } @@ -104,14 +103,14 @@ protected function continueValidation(Validator $validator) return true; } - switch ($this->account{9}) { - case 7: - case 8: - case 9: - return false; - - default: - return true; + switch ($this->account[9]) { + case 7: + case 8: + case 9: + return false; + + default: + return true; } } diff --git a/classes/validator/validators/Validator52.php b/classes/validator/validators/Validator52.php index 346ed29b..ca552f54 100644 --- a/classes/validator/validators/Validator52.php +++ b/classes/validator/validators/Validator52.php @@ -49,7 +49,7 @@ public function __construct(Bank $bank) public function isValid($account) { try { - return strlen($account) == 10 && $account{0} == 9 + return strlen($account) == 10 && $account[0] == 9 ? $this->validator20->isValid($account) : parent::isValid($account); diff --git a/classes/validator/validators/Validator56.php b/classes/validator/validators/Validator56.php index a6a1a99f..654bd778 100644 --- a/classes/validator/validators/Validator56.php +++ b/classes/validator/validators/Validator56.php @@ -39,7 +39,7 @@ protected function iterationStep() protected function getResult() { $result = 11 - ($this->accumulator % 11); - if ($this->account{0} == 9 && $result >= 10) { + if ($this->account[0] == 9 && $result >= 10) { $result -= 3; } diff --git a/classes/validator/validators/Validator61.php b/classes/validator/validators/Validator61.php index ffe562c7..c9f4322f 100644 --- a/classes/validator/validators/Validator61.php +++ b/classes/validator/validators/Validator61.php @@ -37,7 +37,7 @@ public function init($account) parent::init($account); - if ($this->account{8} == 8) { + if ($this->account[8] == 8) { $this->setWeights(array(2, 1, 2, 1, 2, 1, 2, 0, 1, 2)); $this->setEnd(-1); diff --git a/classes/validator/validators/Validator63.php b/classes/validator/validators/Validator63.php index 2900ef57..c916b9ab 100644 --- a/classes/validator/validators/Validator63.php +++ b/classes/validator/validators/Validator63.php @@ -55,6 +55,6 @@ protected function iterationStep() protected function getResult() { $result = (10 - ($this->accumulator % 10)) % 10; - return $this->account{0} == '0' && (string)$result === $this->getCheckNumber(); + return $this->account[0] == '0' && (string)$result === $this->getCheckNumber(); } } diff --git a/classes/validator/validators/Validator65.php b/classes/validator/validators/Validator65.php index 14c10247..8080e97a 100644 --- a/classes/validator/validators/Validator65.php +++ b/classes/validator/validators/Validator65.php @@ -37,7 +37,7 @@ protected function init($account) { parent::init($account); - if ($this->account{8} == 9) { + if ($this->account[8] == 9) { $this->setEnd(-1); } else { diff --git a/classes/validator/validators/Validator66.php b/classes/validator/validators/Validator66.php index 742d27f8..91054bf9 100644 --- a/classes/validator/validators/Validator66.php +++ b/classes/validator/validators/Validator66.php @@ -41,11 +41,11 @@ protected function iterationStep() protected function getResult() { // update 2014-03-03 - if ($this->account{1} == '9') { + if ($this->account[1] == '9') { return true; } $result = (11 - $this->accumulator % 11) % 10; - return $this->account{0} == '0' && (string)$result === $this->getCheckNumber(); + return $this->account[0] == '0' && (string)$result === $this->getCheckNumber(); } } diff --git a/classes/validator/validators/Validator68.php b/classes/validator/validators/Validator68.php index 05245d51..792f721b 100644 --- a/classes/validator/validators/Validator68.php +++ b/classes/validator/validators/Validator68.php @@ -21,12 +21,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * - * @package classes + * @package classes * @subpackage validator - * @author Markus Malkusch - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @copyright Copyright (C) 2006 Markus Malkusch + * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @copyright Copyright (C) 2006 Markus Malkusch */ class Validator68 extends ValidatorChain { @@ -60,23 +59,23 @@ protected function init($account) protected function getResult() { switch (strlen($this->account)) { - case 10: - return $this->account{3} == 9 && $this->validator10->isValid($this->account); + case 10: + return $this->account[3] == 9 && $this->validator10->isValid($this->account); - case 9: - if ($this->account >= 400000000 && $this->account <= 499999999) { - return false; + case 9: + if ($this->account >= 400000000 && $this->account <= 499999999) { + return false; - } - return parent::getResult(); + } + return parent::getResult(); - case 6: - case 7: - case 8: - return parent::getResult(); + case 6: + case 7: + case 8: + return parent::getResult(); - default: - return false; + default: + return false; } } diff --git a/classes/validator/validators/Validator70.php b/classes/validator/validators/Validator70.php index b55d4fb7..412ab28e 100644 --- a/classes/validator/validators/Validator70.php +++ b/classes/validator/validators/Validator70.php @@ -33,7 +33,7 @@ public function __construct(Bank $bank) protected function iterationStep() { - if ($this->position <= 2 && ($this->account{3} == 5 || substr($this->account, 3, 2) == 69)) { + if ($this->position <= 2 && ($this->account[3] == 5 || substr($this->account, 3, 2) == 69)) { return; } diff --git a/classes/validator/validators/Validator73.php b/classes/validator/validators/Validator73.php index 82a46c49..e0306b31 100644 --- a/classes/validator/validators/Validator73.php +++ b/classes/validator/validators/Validator73.php @@ -59,7 +59,7 @@ protected function init($account) { parent::init($account); - if ($this->account{2} == 9) { + if ($this->account[2] == 9) { $this->validators = $this->exceptionValidators; } else { diff --git a/classes/validator/validators/Validator75.php b/classes/validator/validators/Validator75.php index 1231341b..fa279722 100644 --- a/classes/validator/validators/Validator75.php +++ b/classes/validator/validators/Validator75.php @@ -45,7 +45,7 @@ public function isValid($account) } if ($length == 9) { - if ($account{0} == 9) { + if ($account[0] == 9) { $account = substr($account, 1, 6); } else { diff --git a/classes/validator/validators/Validator76.php b/classes/validator/validators/Validator76.php index 6f84846b..f4d68012 100644 --- a/classes/validator/validators/Validator76.php +++ b/classes/validator/validators/Validator76.php @@ -57,7 +57,7 @@ protected function iterationStep() protected function getResult() { $result = $this->accumulator % 11; - return array_search((int)$this->account{0}, array(0, 4, 6, 7, 8, 9)) !== false + return array_search((int)$this->account[0], array(0, 4, 6, 7, 8, 9)) !== false && $result != 10 && (string)$result === $this->getCheckNumber(); } diff --git a/classes/validator/validators/Validator79.php b/classes/validator/validators/Validator79.php index 09316247..3b03ba0c 100644 --- a/classes/validator/validators/Validator79.php +++ b/classes/validator/validators/Validator79.php @@ -19,12 +19,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * - * @package classes + * @package classes * @subpackage validator - * @author Markus Malkusch - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @copyright Copyright (C) 2006 Markus Malkusch + * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @copyright Copyright (C) 2006 Markus Malkusch */ class Validator79 extends Validator { @@ -63,10 +62,10 @@ protected function init($account) protected function validate() { - if (array_search($this->account{0}, array(1, 2, 9)) !== false) { + if (array_search($this->account[0], array(1, 2, 9)) !== false) { $this->validator = $this->mode2; - } elseif ($this->account{0} == 0) { + } elseif ($this->account[0] == 0) { $this->validator = null; } else { diff --git a/classes/validator/validators/Validator80.php b/classes/validator/validators/Validator80.php index e852e934..16f4e7be 100644 --- a/classes/validator/validators/Validator80.php +++ b/classes/validator/validators/Validator80.php @@ -54,7 +54,7 @@ protected function init($account) { parent::init($account); - $this->validators = $this->account{2} == 9 + $this->validators = $this->account[2] == 9 ? $this->exceptionValidators : $this->defaultValidators; } diff --git a/classes/validator/validators/Validator81.php b/classes/validator/validators/Validator81.php index fd4ae39d..3e8663a3 100644 --- a/classes/validator/validators/Validator81.php +++ b/classes/validator/validators/Validator81.php @@ -50,7 +50,7 @@ protected function init($account) { parent::init($account); - $this->validators = $this->account{2} == 9 + $this->validators = $this->account[2] == 9 ? $this->exceptionValidators : $this->defaultValidators; } diff --git a/classes/validator/validators/Validator83.php b/classes/validator/validators/Validator83.php index 1fd435c2..c76b3876 100644 --- a/classes/validator/validators/Validator83.php +++ b/classes/validator/validators/Validator83.php @@ -73,6 +73,6 @@ protected function init($account) protected function continueValidation(Validator $validator) { - return $validator !== $this->modeC || $this->account{9} < 7; + return $validator !== $this->modeC || $this->account[9] < 7; } } diff --git a/classes/validator/validators/Validator84.php b/classes/validator/validators/Validator84.php index 4824949d..f69c0c9e 100644 --- a/classes/validator/validators/Validator84.php +++ b/classes/validator/validators/Validator84.php @@ -59,7 +59,7 @@ protected function init($account) { parent::init($account); - $this->validators = $this->account{2} == 9 + $this->validators = $this->account[2] == 9 ? $this->exceptionValidators : $this->defaultValidators; } diff --git a/classes/validator/validators/Validator85.php b/classes/validator/validators/Validator85.php index 69b8d44a..42f89a0a 100644 --- a/classes/validator/validators/Validator85.php +++ b/classes/validator/validators/Validator85.php @@ -75,6 +75,6 @@ protected function init($account) protected function continueValidation(Validator $validator) { - return $validator !== $this->modeC || $this->account{9} < 7; + return $validator !== $this->modeC || $this->account[9] < 7; } } diff --git a/classes/validator/validators/Validator86.php b/classes/validator/validators/Validator86.php index 082518bb..a6ef0286 100644 --- a/classes/validator/validators/Validator86.php +++ b/classes/validator/validators/Validator86.php @@ -55,7 +55,7 @@ protected function init($account) { parent::init($account); - $this->validators = $this->account{2} == 9 + $this->validators = $this->account[2] == 9 ? $this->exceptionValidators : $this->defaultValidators; } diff --git a/classes/validator/validators/Validator87.php b/classes/validator/validators/Validator87.php index 48dcff8d..3cbd8a0f 100644 --- a/classes/validator/validators/Validator87.php +++ b/classes/validator/validators/Validator87.php @@ -59,7 +59,7 @@ protected function init($account) { parent::init($account); - $this->validators = $this->account{2} == 9 + $this->validators = $this->account[2] == 9 ? $this->exceptionValidators : $this->defaultValidators; } diff --git a/classes/validator/validators/Validator87a.php b/classes/validator/validators/Validator87a.php index 1790aabd..673e160e 100644 --- a/classes/validator/validators/Validator87a.php +++ b/classes/validator/validators/Validator87a.php @@ -21,12 +21,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * - * @package classes + * @package classes * @subpackage validator - * @author Markus Malkusch - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @copyright Copyright (C) 2006 Markus Malkusch + * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @copyright Copyright (C) 2006 Markus Malkusch */ class Validator87a extends Validator { @@ -36,8 +35,8 @@ protected function validate() } /** - * @return bool - */ + * @return bool + */ protected function getResult() { $accountID = $this->account; @@ -51,7 +50,7 @@ protected function getResult() $konto = array(); for ($i = 0; $i < strlen($accountID); $i++) { - $konto[$i+1] = $accountID{$i}; + $konto[$i+1] = $accountID[$i]; } $i = 4; @@ -63,18 +62,18 @@ protected function getResult() while ($i < 10) { switch ($konto[$i]) { - case 0: - $konto[$i] = 5; - break; - case 1: - $konto[$i] = 6; - break; - case 5: - $konto[$i] = 10; - break; - case 6: - $konto[$i] = 1; - break; + case 0: + $konto[$i] = 5; + break; + case 1: + $konto[$i] = 6; + break; + case 5: + $konto[$i] = 10; + break; + case 6: + $konto[$i] = 1; + break; } if ($c2 == $d2) { diff --git a/classes/validator/validators/Validator88.php b/classes/validator/validators/Validator88.php index 19f4bc33..180bd38a 100644 --- a/classes/validator/validators/Validator88.php +++ b/classes/validator/validators/Validator88.php @@ -36,6 +36,6 @@ protected function init($account) { parent::init($account); - $this->setEnd($this->account{2} == 9 ? 2: 3); + $this->setEnd($this->account[2] == 9 ? 2: 3); } } diff --git a/classes/validator/validators/Validator90.php b/classes/validator/validators/Validator90.php index 5ca298c7..e10c46b4 100644 --- a/classes/validator/validators/Validator90.php +++ b/classes/validator/validators/Validator90.php @@ -63,7 +63,7 @@ protected function init($account) { parent::init($account); - $this->validators = $this->account{2} == 9 + $this->validators = $this->account[2] == 9 ? array($this->modeF) : $this->defaultValidators; } diff --git a/classes/validator/validators/Validator90c.php b/classes/validator/validators/Validator90c.php index c39acbe4..a9f6f7d3 100644 --- a/classes/validator/validators/Validator90c.php +++ b/classes/validator/validators/Validator90c.php @@ -43,6 +43,6 @@ protected function getResult() $result = $result == 7 ? 0 : $result % 10; - return $this->account{9} < 7 && (string)$result === $this->getCheckNumber(); + return $this->account[9] < 7 && (string)$result === $this->getCheckNumber(); } } diff --git a/classes/validator/validators/Validator90d.php b/classes/validator/validators/Validator90d.php index 3d6227ab..f1868eb0 100644 --- a/classes/validator/validators/Validator90d.php +++ b/classes/validator/validators/Validator90d.php @@ -43,6 +43,6 @@ protected function getResult() $result = $result == 9 ? 0 : $result % 10; - return $this->account{9} != 9 && (string)$result === $this->getCheckNumber(); + return $this->account[9] != 9 && (string)$result === $this->getCheckNumber(); } } diff --git a/classes/validator/validators/ValidatorA5.php b/classes/validator/validators/ValidatorA5.php index 7e71356a..4ee2e283 100644 --- a/classes/validator/validators/ValidatorA5.php +++ b/classes/validator/validators/ValidatorA5.php @@ -38,7 +38,7 @@ public function __construct(Bank $bank) protected function continueValidation(Validator $validator) { if ($validator === $this->validators[1]) { - return $this->account{0} !== '9'; + return $this->account[0] !== '9'; } return true; diff --git a/classes/validator/validators/ValidatorA6.php b/classes/validator/validators/ValidatorA6.php index e33d914e..84787eed 100644 --- a/classes/validator/validators/ValidatorA6.php +++ b/classes/validator/validators/ValidatorA6.php @@ -19,12 +19,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * - * @package classes + * @package classes * @subpackage validator - * @author Markus Malkusch - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @copyright Copyright (C) 2006 Markus Malkusch + * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @copyright Copyright (C) 2006 Markus Malkusch */ class ValidatorA6 extends Validator { @@ -57,7 +56,7 @@ public function __construct(Bank $bank) protected function validate() { - $this->validator = $this->account{1} === '8' + $this->validator = $this->account[1] === '8' ? $this->mode1 : $this->mode2; } diff --git a/classes/validator/validators/ValidatorA8.php b/classes/validator/validators/ValidatorA8.php index 815303fe..3eb79fa5 100644 --- a/classes/validator/validators/ValidatorA8.php +++ b/classes/validator/validators/ValidatorA8.php @@ -21,12 +21,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * - * @package classes + * @package classes * @subpackage validator - * @author Markus Malkusch - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @copyright Copyright (C) 2006 Markus Malkusch + * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @copyright Copyright (C) 2006 Markus Malkusch */ class ValidatorA8 extends ValidatorChain { @@ -63,7 +62,7 @@ protected function init($account) { parent::init($account); - $this->validators = $this->account{2} == 9 + $this->validators = $this->account[2] == 9 ? $this->exceptionValidators : $this->defaultValidators; } diff --git a/classes/validator/validators/ValidatorB0.php b/classes/validator/validators/ValidatorB0.php index 03aad10e..3681cfd0 100644 --- a/classes/validator/validators/ValidatorB0.php +++ b/classes/validator/validators/ValidatorB0.php @@ -19,12 +19,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * - * @package classes + * @package classes * @subpackage validator - * @author Markus Malkusch - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @copyright Copyright (C) 2006 Markus Malkusch + * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @copyright Copyright (C) 2006 Markus Malkusch */ class ValidatorB0 extends Validator { @@ -56,7 +55,7 @@ public function __construct(Bank $bank) protected function validate() { - $this->validator = array_search($this->account{7}, array(1, 2, 3, 6)) !== false + $this->validator = array_search($this->account[7], array(1, 2, 3, 6)) !== false ? $this->mode1 : $this->mode2; } @@ -67,7 +66,7 @@ protected function validate() protected function getResult() { return strlen(ltrim($this->account, '0')) === 10 - && $this->account{0} !== '8' + && $this->account[0] !== '8' && $this->validator->isValid($this->account); } } diff --git a/classes/validator/validators/ValidatorB2.php b/classes/validator/validators/ValidatorB2.php index f81deee0..315c532c 100644 --- a/classes/validator/validators/ValidatorB2.php +++ b/classes/validator/validators/ValidatorB2.php @@ -19,12 +19,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * - * @package classes + * @package classes * @subpackage validator - * @author Markus Malkusch - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @copyright Copyright (C) 2006 Markus Malkusch + * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @copyright Copyright (C) 2006 Markus Malkusch */ class ValidatorB2 extends Validator { @@ -57,7 +56,7 @@ public function __construct(Bank $bank) protected function validate() { - $this->validator = $this->account{0} <= 7 + $this->validator = $this->account[0] <= 7 ? $this->mode1 : $this->mode2; } diff --git a/classes/validator/validators/ValidatorB3.php b/classes/validator/validators/ValidatorB3.php index 36fe3c8f..7bf5e5d5 100644 --- a/classes/validator/validators/ValidatorB3.php +++ b/classes/validator/validators/ValidatorB3.php @@ -19,12 +19,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * - * @package classes + * @package classes * @subpackage validator - * @author Markus Malkusch - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @copyright Copyright (C) 2006 Markus Malkusch + * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @copyright Copyright (C) 2006 Markus Malkusch */ class ValidatorB3 extends Validator { @@ -57,7 +56,7 @@ public function __construct(Bank $bank) protected function validate() { - $this->validator = $this->account{0} != 9 + $this->validator = $this->account[0] != 9 ? $this->mode1 : $this->mode2; } diff --git a/classes/validator/validators/ValidatorB4.php b/classes/validator/validators/ValidatorB4.php index ac2418f0..a508173b 100644 --- a/classes/validator/validators/ValidatorB4.php +++ b/classes/validator/validators/ValidatorB4.php @@ -19,12 +19,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * - * @package classes + * @package classes * @subpackage validator - * @author Markus Malkusch - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @copyright Copyright (C) 2006 Markus Malkusch + * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @copyright Copyright (C) 2006 Markus Malkusch */ class ValidatorB4 extends Validator { @@ -57,7 +56,7 @@ public function __construct(Bank $bank) protected function validate() { - $this->validator = $this->account{0} == 9 + $this->validator = $this->account[0] == 9 ? $this->mode1 : $this->mode2; } diff --git a/classes/validator/validators/ValidatorB5.php b/classes/validator/validators/ValidatorB5.php index cc6c4e41..1f56eca8 100644 --- a/classes/validator/validators/ValidatorB5.php +++ b/classes/validator/validators/ValidatorB5.php @@ -41,7 +41,7 @@ public function __construct(Bank $bank) protected function continueValidation(Validator $validator) { if ($validator === $this->validators[1]) { - return $this->account{0} < 8; + return $this->account[0] < 8; } return true; diff --git a/classes/validator/validators/ValidatorB6.php b/classes/validator/validators/ValidatorB6.php index 025cc550..f4dcbeb5 100644 --- a/classes/validator/validators/ValidatorB6.php +++ b/classes/validator/validators/ValidatorB6.php @@ -19,12 +19,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * - * @package classes + * @package classes * @subpackage validator - * @author Markus Malkusch - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @copyright Copyright (C) 2006 Markus Malkusch + * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @copyright Copyright (C) 2006 Markus Malkusch */ class ValidatorB6 extends Validator implements ValidatorBankDependent { @@ -57,7 +56,7 @@ public function __construct(Bank $bank) protected function validate() { - if ($this->account{0} !== '0' || preg_match("/^0269[1-9]/", $this->account)) { + if ($this->account[0] !== '0' || preg_match("/^0269[1-9]/", $this->account)) { $this->validator = $this->mode1; } else { diff --git a/classes/validator/validators/ValidatorC1.php b/classes/validator/validators/ValidatorC1.php index 2e1d7f69..4855b0a5 100644 --- a/classes/validator/validators/ValidatorC1.php +++ b/classes/validator/validators/ValidatorC1.php @@ -19,12 +19,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * - * @package classes + * @package classes * @subpackage validator - * @author Markus Malkusch - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @copyright Copyright (C) 2006 Markus Malkusch + * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @copyright Copyright (C) 2006 Markus Malkusch */ class ValidatorC1 extends Validator { @@ -56,7 +55,7 @@ public function __construct(Bank $bank) protected function validate() { - $this->validator = $this->account{0} != '5' + $this->validator = $this->account[0] != '5' ? $this->mode1 : $this->mode2; } diff --git a/classes/validator/validators/ValidatorC3.php b/classes/validator/validators/ValidatorC3.php index bf312f54..78a8bc78 100644 --- a/classes/validator/validators/ValidatorC3.php +++ b/classes/validator/validators/ValidatorC3.php @@ -19,12 +19,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * - * @package classes + * @package classes * @subpackage validator - * @author Markus Malkusch - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @copyright Copyright (C) 2007 Markus Malkusch + * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @copyright Copyright (C) 2007 Markus Malkusch */ class ValidatorC3 extends Validator { @@ -57,7 +56,7 @@ public function __construct(Bank $bank) protected function validate() { - $this->validator = $this->account{0} != '9' + $this->validator = $this->account[0] != '9' ? $this->mode1 : $this->mode2; } diff --git a/classes/validator/validators/ValidatorC4.php b/classes/validator/validators/ValidatorC4.php index bea79ded..072ad121 100644 --- a/classes/validator/validators/ValidatorC4.php +++ b/classes/validator/validators/ValidatorC4.php @@ -19,12 +19,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * - * @package classes + * @package classes * @subpackage validator - * @author Markus Malkusch - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @copyright Copyright (C) 2007 Markus Malkusch + * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @copyright Copyright (C) 2007 Markus Malkusch */ class ValidatorC4 extends Validator { @@ -57,7 +56,7 @@ public function __construct(Bank $bank) protected function validate() { - $this->validator = $this->account{0} != '9' + $this->validator = $this->account[0] != '9' ? $this->mode1 : $this->mode2; } diff --git a/classes/validator/validators/ValidatorC5.php b/classes/validator/validators/ValidatorC5.php index 7fba7905..726c02c2 100644 --- a/classes/validator/validators/ValidatorC5.php +++ b/classes/validator/validators/ValidatorC5.php @@ -19,12 +19,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * - * @package classes + * @package classes * @subpackage validator - * @author Markus Malkusch - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @copyright Copyright (C) 2007 Markus Malkusch + * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @copyright Copyright (C) 2007 Markus Malkusch */ class ValidatorC5 extends Validator { @@ -70,39 +69,39 @@ protected function validate() $length = strlen($account); switch ($length) { - case 6: - case 9: - if ($account{0} < 9) { - $this->validator = $this->mode1; - } - break; - - case 8: - if ($account{0} >= 3 && $account{0} <= 5) { + case 6: + case 9: + if ($account[0] < 9) { + $this->validator = $this->mode1; + } + break; + + case 8: + if ($account[0] >= 3 && $account[0] <= 5) { + $this->validator = $this->mode4; + + } + break; + + case 10: + if ($account[0] == 1 || $account[0] >= 4 && $account[0] <= 6 || $account[0] == 9) { + $this->validator = $this->mode2; + + } elseif ($account[0] == 3) { + $this->validator = $this->mode3; + + } else { + $circle = substr($account, 0, 2); + if ($circle == 70 || $circle == 85) { $this->validator = $this->mode4; } - break; - - case 10: - if ($account{0} == 1 || $account{0} >= 4 && $account{0} <= 6 || $account{0} == 9) { - $this->validator = $this->mode2; - - } elseif ($account{0} == 3) { - $this->validator = $this->mode3; - - } else { - $circle = substr($account, 0, 2); - if ($circle == 70 || $circle == 85) { - $this->validator = $this->mode4; - - } - } - break; + } + break; - default: - $this->validator = null; - break; + default: + $this->validator = null; + break; } } diff --git a/classes/validator/validators/ValidatorC6.php b/classes/validator/validators/ValidatorC6.php index bf6253a1..bedd6886 100644 --- a/classes/validator/validators/ValidatorC6.php +++ b/classes/validator/validators/ValidatorC6.php @@ -19,12 +19,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * - * @package classes + * @package classes * @subpackage validator - * @author Markus Malkusch - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @copyright Copyright (C) 2007 Markus Malkusch + * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @copyright Copyright (C) 2007 Markus Malkusch */ class ValidatorC6 extends Validator { @@ -64,8 +63,8 @@ public function __construct(Bank $bank) protected function validate() { - $transformation = array_key_exists($this->account{0}, self::$transformation) - ? self::$transformation[$this->account{0}] + $transformation = array_key_exists($this->account[0], self::$transformation) + ? self::$transformation[$this->account[0]] : ''; $this->transformedAccount = $transformation . substr($this->account, 1); $this->validator->setNormalizedSize(9 + strlen($transformation)); @@ -76,7 +75,7 @@ protected function validate() */ protected function getResult() { - return in_array($this->account{0}, array_keys(self::$transformation)) + return in_array($this->account[0], array_keys(self::$transformation)) ? $this->validator->isValid($this->transformedAccount) : false; } diff --git a/classes/validator/validators/ValidatorD1.php b/classes/validator/validators/ValidatorD1.php index 9d7d9648..a6b1c8d8 100644 --- a/classes/validator/validators/ValidatorD1.php +++ b/classes/validator/validators/ValidatorD1.php @@ -19,12 +19,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * - * @package classes + * @package classes * @subpackage validator - * @author Markus Malkusch - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @copyright Copyright (C) 2010 Markus Malkusch + * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @copyright Copyright (C) 2010 Markus Malkusch */ class ValidatorD1 extends Validator { @@ -93,6 +92,6 @@ protected function getResult() */ private function getTransformationIndex() { - return $this->account{0}; + return $this->account[0]; } } diff --git a/classes/validator/validators/ValidatorD4.php b/classes/validator/validators/ValidatorD4.php index ebc328f9..36201af7 100644 --- a/classes/validator/validators/ValidatorD4.php +++ b/classes/validator/validators/ValidatorD4.php @@ -21,12 +21,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * - * @package classes + * @package classes * @subpackage validator - * @author Markus Malkusch - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @copyright Copyright (C) 2010 Markus Malkusch + * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @copyright Copyright (C) 2010 Markus Malkusch */ class ValidatorD4 extends Validator { @@ -61,7 +60,7 @@ protected function validate() */ protected function getResult() { - return $this->account{0} != 0 + return $this->account[0] != 0 && $this->validator->isValid($this->transformedAccount); } } diff --git a/classes/validator/validators/ValidatorD8.php b/classes/validator/validators/ValidatorD8.php index 0b2b6e54..032d2d22 100644 --- a/classes/validator/validators/ValidatorD8.php +++ b/classes/validator/validators/ValidatorD8.php @@ -21,12 +21,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * - * @package classes + * @package classes * @subpackage validator - * @author Markus Malkusch - * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations - * @copyright Copyright (C) 2011 Markus Malkusch + * @author Markus Malkusch + * @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations + * @copyright Copyright (C) 2011 Markus Malkusch */ class ValidatorD8 extends Validator { @@ -53,7 +52,7 @@ protected function validate() */ protected function getResult() { - if ($this->account{0} != 0) { + if ($this->account[0] != 0) { return $this->validator->isValid($this->account); } diff --git a/classes/validator/validators/ValidatorE2.php b/classes/validator/validators/ValidatorE2.php index b615be37..8fc16d53 100644 --- a/classes/validator/validators/ValidatorE2.php +++ b/classes/validator/validators/ValidatorE2.php @@ -43,7 +43,7 @@ class ValidatorE2 extends Validator protected function validate() { - if (in_array($this->account{0}, [6, 7, 8, 9])) { + if (in_array($this->account[0], [6, 7, 8, 9])) { $this->result = false; return; } @@ -51,7 +51,7 @@ protected function validate() $validator = new Validator00($this->bank); $validator->doNormalization = false; - $prefixedAccount = self::$prefixes[$this->account{0}] . substr($this->account, 1); + $prefixedAccount = self::$prefixes[$this->account[0]] . substr($this->account, 1); $this->result = $validator->isValid($prefixedAccount); } diff --git a/composer.json b/composer.json index 2ebf03d3..c75ea6ba 100644 --- a/composer.json +++ b/composer.json @@ -29,7 +29,8 @@ }, "require-dev": { "phpunit/phpunit": "^8.4", - "doctrine/orm": "^2" + "doctrine/orm": "^2", + "phpcompatibility/php-compatibility": "^9.3" }, "archive": { "exclude": ["/tests"] diff --git a/composer.lock b/composer.lock index 2c72e923..dd731f87 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d1a2c31ad119c57bd1db4c9a5150e252", + "content-hash": "c1a122894cb268152f5e2a6c51cee137", "packages": [ { "name": "bmdevel/php-index", @@ -1096,6 +1096,64 @@ "description": "Library for handling version information and constraints", "time": "2018-07-08T19:19:57+00:00" }, + { + "name": "phpcompatibility/php-compatibility", + "version": "9.3.5", + "source": { + "type": "git", + "url": "https://github.com/PHPCompatibility/PHPCompatibility.git", + "reference": "9fb324479acf6f39452e0655d2429cc0d3914243" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243", + "reference": "9fb324479acf6f39452e0655d2429cc0d3914243", + "shasum": "" + }, + "require": { + "php": ">=5.3", + "squizlabs/php_codesniffer": "^2.3 || ^3.0.2" + }, + "conflict": { + "squizlabs/php_codesniffer": "2.6.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0" + }, + "suggest": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.", + "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Wim Godden", + "homepage": "https://github.com/wimg", + "role": "lead" + }, + { + "name": "Juliette Reinders Folmer", + "homepage": "https://github.com/jrfnl", + "role": "lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors" + } + ], + "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.", + "homepage": "http://techblog.wimgodden.be/tag/codesniffer/", + "keywords": [ + "compatibility", + "phpcs", + "standards" + ], + "time": "2019-12-27T09:44:58+00:00" + }, { "name": "phpdocumentor/reflection-common", "version": "2.0.0", @@ -1559,6 +1617,7 @@ "keywords": [ "tokenizer" ], + "abandoned": true, "time": "2019-09-17T06:23:10+00:00" }, { @@ -2308,6 +2367,57 @@ "homepage": "https://github.com/sebastianbergmann/version", "time": "2016-10-03T07:35:21+00:00" }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.5.6", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "e97627871a7eab2f70e59166072a6b767d5834e0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/e97627871a7eab2f70e59166072a6b767d5834e0", + "reference": "e97627871a7eab2f70e59166072a6b767d5834e0", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards" + ], + "time": "2020-08-10T04:50:15+00:00" + }, { "name": "symfony/console", "version": "v4.3.8", @@ -2715,5 +2825,6 @@ "platform": { "php": ">=7.2" }, - "platform-dev": [] + "platform-dev": [], + "plugin-api-version": "1.1.0" } diff --git a/tests/unit/ConfigurationLocatorTest.php b/tests/unit/ConfigurationLocatorTest.php index db4564a1..0506c158 100644 --- a/tests/unit/ConfigurationLocatorTest.php +++ b/tests/unit/ConfigurationLocatorTest.php @@ -9,9 +9,9 @@ /** * Tests ConfigurationLocator * - * @author Markus Malkusch + * @author Markus Malkusch * @licends GPL - * @see ConfigurationLocator + * @see ConfigurationLocator */ class ConfigurationLocatorTest extends TestCase { @@ -30,23 +30,25 @@ public function testlocateReturnsNull() /** * locate() should throw an exception * - * @see ConfigurationLocator::locate(); + * @see ConfigurationLocator::locate(); * @expectedException malkusch\bav\ConfigurationException */ public function testlocateThrowsException() { - $locator = new ConfigurationLocator(array( + $locator = new ConfigurationLocator( + array( __DIR__ . "/../data/no_configuration.php" - )); + ) + ); $locator->locate(); } /** * locate() should find absolute paths * - * @param string[] $paths + * @param string[] $paths * @dataProvider provideTestLocateFindsAbsolutePath - * @see ConfigurationLocator::locate(); + * @see ConfigurationLocator::locate(); */ public function testLocateFindsAbsolutePath(array $paths) { @@ -61,7 +63,7 @@ public function testLocateFindsAbsolutePath(array $paths) * Test cases for testLocateFindsAbsolutePath(). * * @return string[][][] - * @see testLocateFindsAbsolutePath() + * @see testLocateFindsAbsolutePath() */ public function provideTestLocateFindsAbsolutePath() { @@ -78,9 +80,9 @@ public function provideTestLocateFindsAbsolutePath() /** * locate() should find paths from the include path * - * @param string[] $paths + * @param string[] $paths * @dataProvider provideTestLocateFindsIncludePath - * @see ConfigurationLocator::locate(); + * @see ConfigurationLocator::locate(); */ public function testLocateFindsIncludePath($includePath, array $paths) { @@ -99,7 +101,7 @@ public function testLocateFindsIncludePath($includePath, array $paths) * Test cases for testLocateFindsIncludePath(). * * @return string[][][] - * @see testLocateFindsIncludePath() + * @see testLocateFindsIncludePath() */ public function provideTestLocateFindsIncludePath() { diff --git a/tests/unit/ConfigurationRegistryTest.php b/tests/unit/ConfigurationRegistryTest.php index 74e8ced1..46c03cc4 100644 --- a/tests/unit/ConfigurationRegistryTest.php +++ b/tests/unit/ConfigurationRegistryTest.php @@ -9,9 +9,9 @@ /** * Tests ConfigurationRegistryTest * - * @author Markus Malkusch + * @author Markus Malkusch * @licends GPL - * @see ConfigurationRegistry + * @see ConfigurationRegistry */ class ConfigurationRegistryTest extends TestCase { diff --git a/tests/unit/DataConstraintTest.php b/tests/unit/DataConstraintTest.php index b70bfe57..03cf81f1 100644 --- a/tests/unit/DataConstraintTest.php +++ b/tests/unit/DataConstraintTest.php @@ -68,7 +68,7 @@ public static function setUpBeforeClass(): void while ($line = fgets($fp)) { $blz = substr($line, 0, 8); - $isMain = ($line{8} === '1') ? 1 : 0; + $isMain = ($line[8] === '1') ? 1 : 0; $name = trim(substr($line, 9, 58)); $plz = trim(substr($line, 67, 5)); $city = trim(substr($line, 72, 35)); From 03c66084bcc6b87ad9b7c2c0104dfbcbf1643ffc Mon Sep 17 00:00:00 2001 From: Sebastian Detert Date: Thu, 9 Mar 2023 15:53:13 +0100 Subject: [PATCH 297/303] chore: provide php8 compatibility, curl_init returns CurlHandle instead or resource --- classes/dataBackend/file/download/Downloader.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/dataBackend/file/download/Downloader.php b/classes/dataBackend/file/download/Downloader.php index 055979aa..269d3ff4 100644 --- a/classes/dataBackend/file/download/Downloader.php +++ b/classes/dataBackend/file/download/Downloader.php @@ -25,7 +25,7 @@ class Downloader public function __construct() { $this->handle = curl_init(); - if (! is_resource($this->handle)) { + if (!$this->handle) { throw new DownloaderException("Failed initializing curl"); } From 245f5ea2837f4706a60f72ffae9e6b7acba556b0 Mon Sep 17 00:00:00 2001 From: bmdevel Date: Mon, 21 Aug 2023 08:24:12 +0200 Subject: [PATCH 298/303] fix: select download uri by name as date formats might be dynamic --- .../file/download/uripicker/DOMURIPicker.php | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/classes/dataBackend/file/download/uripicker/DOMURIPicker.php b/classes/dataBackend/file/download/uripicker/DOMURIPicker.php index ca4ef33a..2342b436 100644 --- a/classes/dataBackend/file/download/uripicker/DOMURIPicker.php +++ b/classes/dataBackend/file/download/uripicker/DOMURIPicker.php @@ -40,23 +40,11 @@ public function pickURI($html, \DateTime $currentDate) $xpath = new \DOMXpath($doc); - $result = $xpath->query("(//a[contains(@href, '.txt')]/@href)"); + $result = $xpath->query("(//a[contains(@href, 'blz-aktuell-txt-data.txt')]/@href)"); foreach ($result as $item) { $link = $item->value; - $dateResult = $xpath->query("(//a[contains(@href, '".$link."')])"); - $dateRange= $dateResult->item(0)->nodeValue??null; - - $matchCount = preg_match_all('/\d{2}\.\d{2}\.\d{4}/', $dateRange, $matches); - - if ($matchCount !== 2) { - continue; - } - - $minDate = new \DateTime($matches[0][0]); - $maxDate = new \DateTime($matches[0][1]); - - if ($minDate <= $currentDate && $currentDate <= $maxDate) { + if (!empty($link)) { return $link; } } From 818c35db4031fa8caecdf9f05e5dc117dacb8f55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20G=C3=B6rtz?= Date: Mon, 28 Aug 2023 16:32:46 +0200 Subject: [PATCH 299/303] Revert to the original license which is WTFPL. --- LICENSE | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/LICENSE b/LICENSE index 4446eab2..5c93f456 100644 --- a/LICENSE +++ b/LICENSE @@ -1,9 +1,13 @@ -The MIT License + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 -Copyright 2018 SilverTours GmbH + Copyright (C) 2004 Sam Hocevar -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file + 0. You just DO WHAT THE FUCK YOU WANT TO. From 5e16e4f1475be4510c5b2da6aa4e17f29d1220f9 Mon Sep 17 00:00:00 2001 From: George Constantinou Date: Wed, 28 Feb 2024 19:54:31 +0200 Subject: [PATCH 300/303] Fix class names casing --- autoloader/index/0.php | 464 ++++++++++++++++++++--------------------- 1 file changed, 232 insertions(+), 232 deletions(-) diff --git a/autoloader/index/0.php b/autoloader/index/0.php index f5bb7f0c..0656b47b 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -15,236 +15,236 @@ */ return array( - 'malkusch\bav\bav' => '../classes/BAV.php', - 'malkusch\bav\bank' => '../classes/bank/Bank.php', - 'malkusch\bav\lock' => '../classes/util/Lock.php', - 'malkusch\bav\agency' => '../classes/bank/Agency.php', - 'malkusch\bav\bicutil' => '../classes/util/BICUtil.php', - 'malkusch\bav\metadata' => '../classes/dataBackend/orm/MetaData.php', - 'malkusch\bav\encoding' => '../classes/encoding/Encoding.php', - 'malkusch\bav\fileutil' => '../classes/util/FileUtil.php', - 'malkusch\bav\uripicker' => '../classes/dataBackend/file/download/uripicker/URIPicker.php', - 'malkusch\bav\validator' => '../classes/validator/Validator.php', - 'malkusch\bav\downloader' => '../classes/dataBackend/file/download/Downloader.php', - 'malkusch\bav\fileparser' => '../classes/dataBackend/file/fileParser/FileParser.php', - 'malkusch\bav\updateplan' => '../classes/dataBackend/update/UpdatePlan.php', - 'malkusch\bav\mbencoding' => '../classes/encoding/MBEncoding.php', - 'malkusch\bav\databackend' => '../classes/dataBackend/DataBackend.php', - 'malkusch\bav\validator00' => '../classes/validator/validators/Validator00.php', - 'malkusch\bav\validator01' => '../classes/validator/validators/Validator01.php', - 'malkusch\bav\validator02' => '../classes/validator/validators/Validator02.php', - 'malkusch\bav\validator03' => '../classes/validator/validators/Validator03.php', - 'malkusch\bav\validator04' => '../classes/validator/validators/Validator04.php', - 'malkusch\bav\validator05' => '../classes/validator/validators/Validator05.php', - 'malkusch\bav\validator06' => '../classes/validator/validators/Validator06.php', - 'malkusch\bav\validator07' => '../classes/validator/validators/Validator07.php', - 'malkusch\bav\validator08' => '../classes/validator/validators/Validator08.php', - 'malkusch\bav\validator09' => '../classes/validator/validators/Validator09.php', - 'malkusch\bav\validator10' => '../classes/validator/validators/Validator10.php', - 'malkusch\bav\validator11' => '../classes/validator/validators/Validator11.php', - 'malkusch\bav\validator13' => '../classes/validator/validators/Validator13.php', - 'malkusch\bav\validator14' => '../classes/validator/validators/Validator14.php', - 'malkusch\bav\validator15' => '../classes/validator/validators/Validator15.php', - 'malkusch\bav\validator16' => '../classes/validator/validators/Validator16.php', - 'malkusch\bav\validator17' => '../classes/validator/validators/Validator17.php', - 'malkusch\bav\validator18' => '../classes/validator/validators/Validator18.php', - 'malkusch\bav\validator19' => '../classes/validator/validators/Validator19.php', - 'malkusch\bav\validator20' => '../classes/validator/validators/Validator20.php', - 'malkusch\bav\validator21' => '../classes/validator/validators/Validator21.php', - 'malkusch\bav\validator22' => '../classes/validator/validators/Validator22.php', - 'malkusch\bav\validator23' => '../classes/validator/validators/Validator23.php', - 'malkusch\bav\validator24' => '../classes/validator/validators/Validator24.php', - 'malkusch\bav\validator25' => '../classes/validator/validators/Validator25.php', - 'malkusch\bav\validator26' => '../classes/validator/validators/Validator26.php', - 'malkusch\bav\validator27' => '../classes/validator/validators/Validator27.php', - 'malkusch\bav\validator28' => '../classes/validator/validators/Validator28.php', - 'malkusch\bav\validator29' => '../classes/validator/validators/Validator29.php', - 'malkusch\bav\validator30' => '../classes/validator/validators/Validator30.php', - 'malkusch\bav\validator31' => '../classes/validator/validators/Validator31.php', - 'malkusch\bav\validator32' => '../classes/validator/validators/Validator32.php', - 'malkusch\bav\validator33' => '../classes/validator/validators/Validator33.php', - 'malkusch\bav\validator34' => '../classes/validator/validators/Validator34.php', - 'malkusch\bav\validator35' => '../classes/validator/validators/Validator35.php', - 'malkusch\bav\validator36' => '../classes/validator/validators/Validator36.php', - 'malkusch\bav\validator37' => '../classes/validator/validators/Validator37.php', - 'malkusch\bav\validator38' => '../classes/validator/validators/Validator38.php', - 'malkusch\bav\validator39' => '../classes/validator/validators/Validator39.php', - 'malkusch\bav\validator40' => '../classes/validator/validators/Validator40.php', - 'malkusch\bav\validator41' => '../classes/validator/validators/Validator41.php', - 'malkusch\bav\validator42' => '../classes/validator/validators/Validator42.php', - 'malkusch\bav\validator43' => '../classes/validator/validators/Validator43.php', - 'malkusch\bav\validator44' => '../classes/validator/validators/Validator44.php', - 'malkusch\bav\validator45' => '../classes/validator/validators/Validator45.php', - 'malkusch\bav\validator46' => '../classes/validator/validators/Validator46.php', - 'malkusch\bav\validator47' => '../classes/validator/validators/Validator47.php', - 'malkusch\bav\validator48' => '../classes/validator/validators/Validator48.php', - 'malkusch\bav\validator49' => '../classes/validator/validators/Validator49.php', - 'malkusch\bav\validator50' => '../classes/validator/validators/Validator50.php', - 'malkusch\bav\validator51' => '../classes/validator/validators/Validator51.php', - 'malkusch\bav\validator52' => '../classes/validator/validators/Validator52.php', - 'malkusch\bav\validator53' => '../classes/validator/validators/Validator53.php', - 'malkusch\bav\validator54' => '../classes/validator/validators/Validator54.php', - 'malkusch\bav\validator55' => '../classes/validator/validators/Validator55.php', - 'malkusch\bav\validator56' => '../classes/validator/validators/Validator56.php', - 'malkusch\bav\validator57' => '../classes/validator/validators/Validator57.php', - 'malkusch\bav\validator58' => '../classes/validator/validators/Validator58.php', - 'malkusch\bav\validator59' => '../classes/validator/validators/Validator59.php', - 'malkusch\bav\validator60' => '../classes/validator/validators/Validator60.php', - 'malkusch\bav\validator61' => '../classes/validator/validators/Validator61.php', - 'malkusch\bav\validator62' => '../classes/validator/validators/Validator62.php', - 'malkusch\bav\validator63' => '../classes/validator/validators/Validator63.php', - 'malkusch\bav\validator64' => '../classes/validator/validators/Validator64.php', - 'malkusch\bav\validator65' => '../classes/validator/validators/Validator65.php', - 'malkusch\bav\validator66' => '../classes/validator/validators/Validator66.php', - 'malkusch\bav\validator67' => '../classes/validator/validators/Validator67.php', - 'malkusch\bav\validator68' => '../classes/validator/validators/Validator68.php', - 'malkusch\bav\validator69' => '../classes/validator/validators/Validator69.php', - 'malkusch\bav\validator70' => '../classes/validator/validators/Validator70.php', - 'malkusch\bav\validator71' => '../classes/validator/validators/Validator71.php', - 'malkusch\bav\validator72' => '../classes/validator/validators/Validator72.php', - 'malkusch\bav\validator73' => '../classes/validator/validators/Validator73.php', - 'malkusch\bav\validator74' => '../classes/validator/validators/Validator74.php', - 'malkusch\bav\validator75' => '../classes/validator/validators/Validator75.php', - 'malkusch\bav\validator76' => '../classes/validator/validators/Validator76.php', - 'malkusch\bav\validator77' => '../classes/validator/validators/Validator77.php', - 'malkusch\bav\validator78' => '../classes/validator/validators/Validator78.php', - 'malkusch\bav\validator79' => '../classes/validator/validators/Validator79.php', - 'malkusch\bav\validator80' => '../classes/validator/validators/Validator80.php', - 'malkusch\bav\validator81' => '../classes/validator/validators/Validator81.php', - 'malkusch\bav\validator82' => '../classes/validator/validators/Validator82.php', - 'malkusch\bav\validator83' => '../classes/validator/validators/Validator83.php', - 'malkusch\bav\validator84' => '../classes/validator/validators/Validator84.php', - 'malkusch\bav\validator85' => '../classes/validator/validators/Validator85.php', - 'malkusch\bav\validator86' => '../classes/validator/validators/Validator86.php', - 'malkusch\bav\validator87' => '../classes/validator/validators/Validator87.php', - 'malkusch\bav\validator88' => '../classes/validator/validators/Validator88.php', - 'malkusch\bav\validator89' => '../classes/validator/validators/Validator89.php', - 'malkusch\bav\validator90' => '../classes/validator/validators/Validator90.php', - 'malkusch\bav\validator91' => '../classes/validator/validators/Validator91.php', - 'malkusch\bav\validator92' => '../classes/validator/validators/Validator92.php', - 'malkusch\bav\validator93' => '../classes/validator/validators/Validator93.php', - 'malkusch\bav\validator94' => '../classes/validator/validators/Validator94.php', - 'malkusch\bav\validator95' => '../classes/validator/validators/Validator95.php', - 'malkusch\bav\validator96' => '../classes/validator/validators/Validator96.php', - 'malkusch\bav\validator97' => '../classes/validator/validators/Validator97.php', - 'malkusch\bav\validator98' => '../classes/validator/validators/Validator98.php', - 'malkusch\bav\validator99' => '../classes/validator/validators/Validator99.php', - 'malkusch\bav\validatora0' => '../classes/validator/validators/ValidatorA0.php', - 'malkusch\bav\validatora1' => '../classes/validator/validators/ValidatorA1.php', - 'malkusch\bav\validatora2' => '../classes/validator/validators/ValidatorA2.php', - 'malkusch\bav\validatora3' => '../classes/validator/validators/ValidatorA3.php', - 'malkusch\bav\validatora4' => '../classes/validator/validators/ValidatorA4.php', - 'malkusch\bav\validatora5' => '../classes/validator/validators/ValidatorA5.php', - 'malkusch\bav\validatora6' => '../classes/validator/validators/ValidatorA6.php', - 'malkusch\bav\validatora7' => '../classes/validator/validators/ValidatorA7.php', - 'malkusch\bav\validatora8' => '../classes/validator/validators/ValidatorA8.php', - 'malkusch\bav\validatora9' => '../classes/validator/validators/ValidatorA9.php', - 'malkusch\bav\validatorb0' => '../classes/validator/validators/ValidatorB0.php', - 'malkusch\bav\validatorb1' => '../classes/validator/validators/ValidatorB1.php', - 'malkusch\bav\validatorb2' => '../classes/validator/validators/ValidatorB2.php', - 'malkusch\bav\validatorb3' => '../classes/validator/validators/ValidatorB3.php', - 'malkusch\bav\validatorb4' => '../classes/validator/validators/ValidatorB4.php', - 'malkusch\bav\validatorb5' => '../classes/validator/validators/ValidatorB5.php', - 'malkusch\bav\validatorb6' => '../classes/validator/validators/ValidatorB6.php', - 'malkusch\bav\validatorb7' => '../classes/validator/validators/ValidatorB7.php', - 'malkusch\bav\validatorb8' => '../classes/validator/validators/ValidatorB8.php', - 'malkusch\bav\validatorb9' => '../classes/validator/validators/ValidatorB9.php', - 'malkusch\bav\validatorc0' => '../classes/validator/validators/ValidatorC0.php', - 'malkusch\bav\validatorc1' => '../classes/validator/validators/ValidatorC1.php', - 'malkusch\bav\validatorc2' => '../classes/validator/validators/ValidatorC2.php', - 'malkusch\bav\validatorc3' => '../classes/validator/validators/ValidatorC3.php', - 'malkusch\bav\validatorc4' => '../classes/validator/validators/ValidatorC4.php', - 'malkusch\bav\validatorc5' => '../classes/validator/validators/ValidatorC5.php', - 'malkusch\bav\validatorc6' => '../classes/validator/validators/ValidatorC6.php', - 'malkusch\bav\validatorc7' => '../classes/validator/validators/ValidatorC7.php', - 'malkusch\bav\validatorc8' => '../classes/validator/validators/ValidatorC8.php', - 'malkusch\bav\validatorc9' => '../classes/validator/validators/ValidatorC9.php', - 'malkusch\bav\validatord0' => '../classes/validator/validators/ValidatorD0.php', - 'malkusch\bav\validatord1' => '../classes/validator/validators/ValidatorD1.php', - 'malkusch\bav\validatord2' => '../classes/validator/validators/ValidatorD2.php', - 'malkusch\bav\validatord3' => '../classes/validator/validators/ValidatorD3.php', - 'malkusch\bav\validatord4' => '../classes/validator/validators/ValidatorD4.php', - 'malkusch\bav\validatord5' => '../classes/validator/validators/ValidatorD5.php', - 'malkusch\bav\validatord6' => '../classes/validator/validators/ValidatorD6.php', - 'malkusch\bav\validatord7' => '../classes/validator/validators/ValidatorD7.php', - 'malkusch\bav\validatord8' => '../classes/validator/validators/ValidatorD8.php', - 'malkusch\bav\validatord9' => '../classes/validator/validators/ValidatorD9.php', - 'malkusch\bav\validatore0' => '../classes/validator/validators/ValidatorE0.php', - 'malkusch\bav\validatore1' => '../classes/validator/validators/ValidatorE1.php', - 'malkusch\bav\validatore3' => '../classes/validator/validators/ValidatorE3.php', - 'malkusch\bav\validatore4' => '../classes/validator/validators/ValidatorE4.php', - 'malkusch\bav\domuripicker' => '../classes/dataBackend/file/download/uripicker/DOMURIPicker.php', - 'malkusch\bav\bavexception' => '../classes/exception/BAVException.php', - 'malkusch\bav\validator51x' => '../classes/validator/validators/Validator51x.php', - 'malkusch\bav\validator69b' => '../classes/validator/validators/Validator69b.php', - 'malkusch\bav\validator77a' => '../classes/validator/validators/Validator77a.php', - 'malkusch\bav\validator83x' => '../classes/validator/validators/Validator83x.php', - 'malkusch\bav\validator84b' => '../classes/validator/validators/Validator84b.php', - 'malkusch\bav\validator87a' => '../classes/validator/validators/Validator87a.php', - 'malkusch\bav\validator87c' => '../classes/validator/validators/Validator87c.php', - 'malkusch\bav\validator90c' => '../classes/validator/validators/Validator90c.php', - 'malkusch\bav\validator90d' => '../classes/validator/validators/Validator90d.php', - 'malkusch\bav\validator90e' => '../classes/validator/validators/Validator90e.php', - 'malkusch\bav\validator90g' => '../classes/validator/validators/Validator90g.php', - 'malkusch\bav\validatora4b' => '../classes/validator/validators/ValidatorA4b.php', - 'malkusch\bav\validatorb9a' => '../classes/validator/validators/ValidatorB9a.php', - 'malkusch\bav\validatorb9b' => '../classes/validator/validators/ValidatorB9b.php', - 'malkusch\bav\validatorc1b' => '../classes/validator/validators/ValidatorC1b.php', - 'malkusch\bav\configuration' => '../classes/configuration/Configuration.php', - 'malkusch\bav\filevalidator' => '../classes/dataBackend/file/validator/FileValidator.php', - 'malkusch\bav\logupdateplan' => '../classes/dataBackend/update/LogUpdatePlan.php', - 'malkusch\bav\iconvencoding' => '../classes/encoding/IconvEncoding.php', - 'malkusch\bav\fileexception' => '../classes/util/exception/FileException.php', - 'malkusch\bav\lockexception' => '../classes/util/exception/LockException.php', - 'malkusch\bav\sqldatabackend' => '../classes/dataBackend/SQLDataBackend.php', - 'malkusch\bav\fieldexception' => '../classes/dataBackend/file/validator/exception/FieldException.php', - 'malkusch\bav\pdodatabackend' => '../classes/dataBackend/pdo/PDODataBackend.php', - 'malkusch\bav\validatorchain' => '../classes/validator/ValidatorChain.php', - 'malkusch\bav\agencyexception' => '../classes/bank/exception/AgencyException.php', - 'malkusch\bav\filedatabackend' => '../classes/dataBackend/file/FileDataBackend.php', - 'malkusch\bav\regexpuripicker' => '../classes/dataBackend/file/download/uripicker/RegExpURIPicker.php', - 'malkusch\bav\iso8859encoding' => '../classes/encoding/ISO8859Encoding.php', - 'malkusch\bav\validatorfactory' => '../classes/validator/ValidatorFactory.php', - 'malkusch\bav\fallbackuripicker' => '../classes/dataBackend/file/download/uripicker/FallbackURIPicker.php', - 'malkusch\bav\fileparsercontext' => '../classes/dataBackend/file/fileParser/FileParserContext.php', - 'malkusch\bav\encodingexception' => '../classes/encoding/exception/EncodingException.php', - 'malkusch\bav\contextvalidation' => '../classes/validator/ContextValidation.php', - 'malkusch\bav\uripickerexception' => '../classes/dataBackend/file/download/uripicker/exception/URIPickerException.php', - 'malkusch\bav\statementcontainer' => '../classes/dataBackend/pdo/StatementContainer.php', - 'malkusch\bav\validatoriteration' => '../classes/validator/ValidatorIteration.php', - 'malkusch\bav\validatorexception' => '../classes/validator/exception/ValidatorException.php', - 'malkusch\bav\downloaderexception' => '../classes/dataBackend/file/download/exception/DownloaderException.php', - 'malkusch\bav\fileparserexception' => '../classes/dataBackend/file/fileParser/exception/FileParserException.php', - 'malkusch\bav\doctrinedatabackend' => '../classes/dataBackend/orm/doctrine/DoctrineDataBackend.php', - 'malkusch\bav\automaticupdateplan' => '../classes/dataBackend/update/AutomaticUpdatePlan.php', - 'malkusch\bav\configurationlocator' => '../classes/configuration/ConfigurationLocator.php', - 'malkusch\bav\defaultconfiguration' => '../classes/configuration/DefaultConfiguration.php', - 'malkusch\bav\databackendcontainer' => '../classes/dataBackend/DataBackendContainer.php', - 'malkusch\bav\databackendexception' => '../classes/dataBackend/exception/DataBackendException.php', - 'malkusch\bav\configurationregistry' => '../classes/configuration/ConfigurationRegistry.php', - 'malkusch\bav\banknotfoundexception' => '../classes/dataBackend/exception/BankNotFoundException.php', - 'malkusch\bav\nomainagencyexception' => '../classes/dataBackend/exception/NoMainAgencyException.php', - 'malkusch\bav\configurationexception' => '../classes/configuration/ConfigurationException.php', - 'malkusch\bav\databackendioexception' => '../classes/dataBackend/exception/DataBackendIOException.php', - 'malkusch\bav\filevalidatorexception' => '../classes/dataBackend/file/validator/exception/FileValidatorException.php', - 'malkusch\bav\validatorbankdependent' => '../classes/validator/ValidatorBankDependent.php', - 'malkusch\bav\validatoreserexception' => '../classes/validator/exception/ValidatorESERException.php', - 'malkusch\bav\invalidcontextexception' => '../classes/dataBackend/exception/InvalidContextException.php', - 'malkusch\bav\pdodatabackendcontainer' => '../classes/dataBackend/pdo/PDODataBackendContainer.php', - 'malkusch\bav\filedatabackendcontainer' => '../classes/dataBackend/file/FileDataBackendContainer.php', - 'malkusch\bav\invalidfilesizeexception' => '../classes/dataBackend/file/validator/exception/InvalidFilesizeException.php', - 'malkusch\bav\doctrinebackendcontainer' => '../classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php', - 'malkusch\bav\notempdirectoryexception' => '../classes/util/exception/NoTempDirectoryException.php', - 'malkusch\bav\fileparsercontextexception' => '../classes/dataBackend/file/fileParser/exception/FileParserContextException.php', - 'malkusch\bav\invalidlinelengthexception' => '../classes/dataBackend/file/validator/exception/InvalidLineLengthException.php', - 'malkusch\bav\weightediterationvalidator' => '../classes/validator/WeightedIterationValidator.php', - 'malkusch\bav\fileparsernotexistsexception' => '../classes/dataBackend/file/fileParser/exception/FileParserNotExistsException.php', - 'malkusch\bav\unsupportedencodingexception' => '../classes/encoding/exception/UnsupportedEncodingException.php', - 'malkusch\bav\validatoroutofboundsexception' => '../classes/validator/exception/ValidatorOutOfBoundsException.php', - 'malkusch\bav\transformationiterationvalidator' => '../classes/validator/TransformationIterationValidator.php', - 'malkusch\bav\undefinedattributeagencyexception' => '../classes/bank/exception/UndefinedAttributeAgencyException.php', - 'malkusch\bav\undefinedfileparsercontextexception' => '../classes/dataBackend/file/fileParser/exception/UndefinedFileParserContextException.php', - 'malkusch\bav\missingattributesdatabackendioexception' => '../classes/dataBackend/exception/MissingAttributesDataBackendIOException.php', - 'malkusch\bav\fileparserioexception' => '../classes/dataBackend/file/fileParser/exception/FileParserIOException', - 'malkusch\bav\parseexception' => '../classes/dataBackend/file/fileParser/exception/ParseException', + 'malkusch\bav\BAV' => '../classes/BAV.php', + 'malkusch\bav\Bank' => '../classes/bank/Bank.php', + 'malkusch\bav\Lock' => '../classes/util/Lock.php', + 'malkusch\bav\Agency' => '../classes/bank/Agency.php', + 'malkusch\bav\BICUtil' => '../classes/util/BICUtil.php', + 'malkusch\bav\MetaData' => '../classes/dataBackend/orm/MetaData.php', + 'malkusch\bav\Encoding' => '../classes/encoding/Encoding.php', + 'malkusch\bav\FileUtil' => '../classes/util/FileUtil.php', + 'malkusch\bav\URIPicker' => '../classes/dataBackend/file/download/uripicker/URIPicker.php', + 'malkusch\bav\Validator' => '../classes/validator/Validator.php', + 'malkusch\bav\Downloader' => '../classes/dataBackend/file/download/Downloader.php', + 'malkusch\bav\FileParser' => '../classes/dataBackend/file/fileParser/FileParser.php', + 'malkusch\bav\UpdatePlan' => '../classes/dataBackend/update/UpdatePlan.php', + 'malkusch\bav\MBEncoding' => '../classes/encoding/MBEncoding.php', + 'malkusch\bav\DataBackend' => '../classes/dataBackend/DataBackend.php', + 'malkusch\bav\Validator00' => '../classes/validator/validators/Validator00.php', + 'malkusch\bav\Validator01' => '../classes/validator/validators/Validator01.php', + 'malkusch\bav\Validator02' => '../classes/validator/validators/Validator02.php', + 'malkusch\bav\Validator03' => '../classes/validator/validators/Validator03.php', + 'malkusch\bav\Validator04' => '../classes/validator/validators/Validator04.php', + 'malkusch\bav\Validator05' => '../classes/validator/validators/Validator05.php', + 'malkusch\bav\Validator06' => '../classes/validator/validators/Validator06.php', + 'malkusch\bav\Validator07' => '../classes/validator/validators/Validator07.php', + 'malkusch\bav\Validator08' => '../classes/validator/validators/Validator08.php', + 'malkusch\bav\Validator09' => '../classes/validator/validators/Validator09.php', + 'malkusch\bav\Validator10' => '../classes/validator/validators/Validator10.php', + 'malkusch\bav\Validator11' => '../classes/validator/validators/Validator11.php', + 'malkusch\bav\Validator13' => '../classes/validator/validators/Validator13.php', + 'malkusch\bav\Validator14' => '../classes/validator/validators/Validator14.php', + 'malkusch\bav\Validator15' => '../classes/validator/validators/Validator15.php', + 'malkusch\bav\Validator16' => '../classes/validator/validators/Validator16.php', + 'malkusch\bav\Validator17' => '../classes/validator/validators/Validator17.php', + 'malkusch\bav\Validator18' => '../classes/validator/validators/Validator18.php', + 'malkusch\bav\Validator19' => '../classes/validator/validators/Validator19.php', + 'malkusch\bav\Validator20' => '../classes/validator/validators/Validator20.php', + 'malkusch\bav\Validator21' => '../classes/validator/validators/Validator21.php', + 'malkusch\bav\Validator22' => '../classes/validator/validators/Validator22.php', + 'malkusch\bav\Validator23' => '../classes/validator/validators/Validator23.php', + 'malkusch\bav\Validator24' => '../classes/validator/validators/Validator24.php', + 'malkusch\bav\Validator25' => '../classes/validator/validators/Validator25.php', + 'malkusch\bav\Validator26' => '../classes/validator/validators/Validator26.php', + 'malkusch\bav\Validator27' => '../classes/validator/validators/Validator27.php', + 'malkusch\bav\Validator28' => '../classes/validator/validators/Validator28.php', + 'malkusch\bav\Validator29' => '../classes/validator/validators/Validator29.php', + 'malkusch\bav\Validator30' => '../classes/validator/validators/Validator30.php', + 'malkusch\bav\Validator31' => '../classes/validator/validators/Validator31.php', + 'malkusch\bav\Validator32' => '../classes/validator/validators/Validator32.php', + 'malkusch\bav\Validator33' => '../classes/validator/validators/Validator33.php', + 'malkusch\bav\Validator34' => '../classes/validator/validators/Validator34.php', + 'malkusch\bav\Validator35' => '../classes/validator/validators/Validator35.php', + 'malkusch\bav\Validator36' => '../classes/validator/validators/Validator36.php', + 'malkusch\bav\Validator37' => '../classes/validator/validators/Validator37.php', + 'malkusch\bav\Validator38' => '../classes/validator/validators/Validator38.php', + 'malkusch\bav\Validator39' => '../classes/validator/validators/Validator39.php', + 'malkusch\bav\Validator40' => '../classes/validator/validators/Validator40.php', + 'malkusch\bav\Validator41' => '../classes/validator/validators/Validator41.php', + 'malkusch\bav\Validator42' => '../classes/validator/validators/Validator42.php', + 'malkusch\bav\Validator43' => '../classes/validator/validators/Validator43.php', + 'malkusch\bav\Validator44' => '../classes/validator/validators/Validator44.php', + 'malkusch\bav\Validator45' => '../classes/validator/validators/Validator45.php', + 'malkusch\bav\Validator46' => '../classes/validator/validators/Validator46.php', + 'malkusch\bav\Validator47' => '../classes/validator/validators/Validator47.php', + 'malkusch\bav\Validator48' => '../classes/validator/validators/Validator48.php', + 'malkusch\bav\Validator49' => '../classes/validator/validators/Validator49.php', + 'malkusch\bav\Validator50' => '../classes/validator/validators/Validator50.php', + 'malkusch\bav\Validator51' => '../classes/validator/validators/Validator51.php', + 'malkusch\bav\Validator52' => '../classes/validator/validators/Validator52.php', + 'malkusch\bav\Validator53' => '../classes/validator/validators/Validator53.php', + 'malkusch\bav\Validator54' => '../classes/validator/validators/Validator54.php', + 'malkusch\bav\Validator55' => '../classes/validator/validators/Validator55.php', + 'malkusch\bav\Validator56' => '../classes/validator/validators/Validator56.php', + 'malkusch\bav\Validator57' => '../classes/validator/validators/Validator57.php', + 'malkusch\bav\Validator58' => '../classes/validator/validators/Validator58.php', + 'malkusch\bav\Validator59' => '../classes/validator/validators/Validator59.php', + 'malkusch\bav\Validator60' => '../classes/validator/validators/Validator60.php', + 'malkusch\bav\Validator61' => '../classes/validator/validators/Validator61.php', + 'malkusch\bav\Validator62' => '../classes/validator/validators/Validator62.php', + 'malkusch\bav\Validator63' => '../classes/validator/validators/Validator63.php', + 'malkusch\bav\Validator64' => '../classes/validator/validators/Validator64.php', + 'malkusch\bav\Validator65' => '../classes/validator/validators/Validator65.php', + 'malkusch\bav\Validator66' => '../classes/validator/validators/Validator66.php', + 'malkusch\bav\Validator67' => '../classes/validator/validators/Validator67.php', + 'malkusch\bav\Validator68' => '../classes/validator/validators/Validator68.php', + 'malkusch\bav\Validator69' => '../classes/validator/validators/Validator69.php', + 'malkusch\bav\Validator70' => '../classes/validator/validators/Validator70.php', + 'malkusch\bav\Validator71' => '../classes/validator/validators/Validator71.php', + 'malkusch\bav\Validator72' => '../classes/validator/validators/Validator72.php', + 'malkusch\bav\Validator73' => '../classes/validator/validators/Validator73.php', + 'malkusch\bav\Validator74' => '../classes/validator/validators/Validator74.php', + 'malkusch\bav\Validator75' => '../classes/validator/validators/Validator75.php', + 'malkusch\bav\Validator76' => '../classes/validator/validators/Validator76.php', + 'malkusch\bav\Validator77' => '../classes/validator/validators/Validator77.php', + 'malkusch\bav\Validator78' => '../classes/validator/validators/Validator78.php', + 'malkusch\bav\Validator79' => '../classes/validator/validators/Validator79.php', + 'malkusch\bav\Validator80' => '../classes/validator/validators/Validator80.php', + 'malkusch\bav\Validator81' => '../classes/validator/validators/Validator81.php', + 'malkusch\bav\Validator82' => '../classes/validator/validators/Validator82.php', + 'malkusch\bav\Validator83' => '../classes/validator/validators/Validator83.php', + 'malkusch\bav\Validator84' => '../classes/validator/validators/Validator84.php', + 'malkusch\bav\Validator85' => '../classes/validator/validators/Validator85.php', + 'malkusch\bav\Validator86' => '../classes/validator/validators/Validator86.php', + 'malkusch\bav\Validator87' => '../classes/validator/validators/Validator87.php', + 'malkusch\bav\Validator88' => '../classes/validator/validators/Validator88.php', + 'malkusch\bav\Validator89' => '../classes/validator/validators/Validator89.php', + 'malkusch\bav\Validator90' => '../classes/validator/validators/Validator90.php', + 'malkusch\bav\Validator91' => '../classes/validator/validators/Validator91.php', + 'malkusch\bav\Validator92' => '../classes/validator/validators/Validator92.php', + 'malkusch\bav\Validator93' => '../classes/validator/validators/Validator93.php', + 'malkusch\bav\Validator94' => '../classes/validator/validators/Validator94.php', + 'malkusch\bav\Validator95' => '../classes/validator/validators/Validator95.php', + 'malkusch\bav\Validator96' => '../classes/validator/validators/Validator96.php', + 'malkusch\bav\Validator97' => '../classes/validator/validators/Validator97.php', + 'malkusch\bav\Validator98' => '../classes/validator/validators/Validator98.php', + 'malkusch\bav\Validator99' => '../classes/validator/validators/Validator99.php', + 'malkusch\bav\ValidatorA0' => '../classes/validator/validators/ValidatorA0.php', + 'malkusch\bav\ValidatorA1' => '../classes/validator/validators/ValidatorA1.php', + 'malkusch\bav\ValidatorA2' => '../classes/validator/validators/ValidatorA2.php', + 'malkusch\bav\ValidatorA3' => '../classes/validator/validators/ValidatorA3.php', + 'malkusch\bav\ValidatorA4' => '../classes/validator/validators/ValidatorA4.php', + 'malkusch\bav\ValidatorA5' => '../classes/validator/validators/ValidatorA5.php', + 'malkusch\bav\ValidatorA6' => '../classes/validator/validators/ValidatorA6.php', + 'malkusch\bav\ValidatorA7' => '../classes/validator/validators/ValidatorA7.php', + 'malkusch\bav\ValidatorA8' => '../classes/validator/validators/ValidatorA8.php', + 'malkusch\bav\ValidatorA9' => '../classes/validator/validators/ValidatorA9.php', + 'malkusch\bav\ValidatorB0' => '../classes/validator/validators/ValidatorB0.php', + 'malkusch\bav\ValidatorB1' => '../classes/validator/validators/ValidatorB1.php', + 'malkusch\bav\ValidatorB2' => '../classes/validator/validators/ValidatorB2.php', + 'malkusch\bav\ValidatorB3' => '../classes/validator/validators/ValidatorB3.php', + 'malkusch\bav\ValidatorB4' => '../classes/validator/validators/ValidatorB4.php', + 'malkusch\bav\ValidatorB5' => '../classes/validator/validators/ValidatorB5.php', + 'malkusch\bav\ValidatorB6' => '../classes/validator/validators/ValidatorB6.php', + 'malkusch\bav\ValidatorB7' => '../classes/validator/validators/ValidatorB7.php', + 'malkusch\bav\ValidatorB8' => '../classes/validator/validators/ValidatorB8.php', + 'malkusch\bav\ValidatorB9' => '../classes/validator/validators/ValidatorB9.php', + 'malkusch\bav\ValidatorC0' => '../classes/validator/validators/ValidatorC0.php', + 'malkusch\bav\ValidatorC1' => '../classes/validator/validators/ValidatorC1.php', + 'malkusch\bav\ValidatorC2' => '../classes/validator/validators/ValidatorC2.php', + 'malkusch\bav\ValidatorC3' => '../classes/validator/validators/ValidatorC3.php', + 'malkusch\bav\ValidatorC4' => '../classes/validator/validators/ValidatorC4.php', + 'malkusch\bav\ValidatorC5' => '../classes/validator/validators/ValidatorC5.php', + 'malkusch\bav\ValidatorC6' => '../classes/validator/validators/ValidatorC6.php', + 'malkusch\bav\ValidatorC7' => '../classes/validator/validators/ValidatorC7.php', + 'malkusch\bav\ValidatorC8' => '../classes/validator/validators/ValidatorC8.php', + 'malkusch\bav\ValidatorC9' => '../classes/validator/validators/ValidatorC9.php', + 'malkusch\bav\ValidatorD0' => '../classes/validator/validators/ValidatorD0.php', + 'malkusch\bav\ValidatorD1' => '../classes/validator/validators/ValidatorD1.php', + 'malkusch\bav\ValidatorD2' => '../classes/validator/validators/ValidatorD2.php', + 'malkusch\bav\ValidatorD3' => '../classes/validator/validators/ValidatorD3.php', + 'malkusch\bav\ValidatorD4' => '../classes/validator/validators/ValidatorD4.php', + 'malkusch\bav\ValidatorD5' => '../classes/validator/validators/ValidatorD5.php', + 'malkusch\bav\ValidatorD6' => '../classes/validator/validators/ValidatorD6.php', + 'malkusch\bav\ValidatorD7' => '../classes/validator/validators/ValidatorD7.php', + 'malkusch\bav\ValidatorD8' => '../classes/validator/validators/ValidatorD8.php', + 'malkusch\bav\ValidatorD9' => '../classes/validator/validators/ValidatorD9.php', + 'malkusch\bav\ValidatorE0' => '../classes/validator/validators/ValidatorE0.php', + 'malkusch\bav\ValidatorE1' => '../classes/validator/validators/ValidatorE1.php', + 'malkusch\bav\ValidatorE3' => '../classes/validator/validators/ValidatorE3.php', + 'malkusch\bav\ValidatorE4' => '../classes/validator/validators/ValidatorE4.php', + 'malkusch\bav\DOMURIPicker' => '../classes/dataBackend/file/download/uripicker/DOMURIPicker.php', + 'malkusch\bav\BAVException' => '../classes/exception/BAVException.php', + 'malkusch\bav\Validator51x' => '../classes/validator/validators/Validator51x.php', + 'malkusch\bav\Validator69b' => '../classes/validator/validators/Validator69b.php', + 'malkusch\bav\Validator77a' => '../classes/validator/validators/Validator77a.php', + 'malkusch\bav\Validator83x' => '../classes/validator/validators/Validator83x.php', + 'malkusch\bav\Validator84b' => '../classes/validator/validators/Validator84b.php', + 'malkusch\bav\Validator87a' => '../classes/validator/validators/Validator87a.php', + 'malkusch\bav\Validator87c' => '../classes/validator/validators/Validator87c.php', + 'malkusch\bav\Validator90c' => '../classes/validator/validators/Validator90c.php', + 'malkusch\bav\Validator90d' => '../classes/validator/validators/Validator90d.php', + 'malkusch\bav\Validator90e' => '../classes/validator/validators/Validator90e.php', + 'malkusch\bav\Validator90g' => '../classes/validator/validators/Validator90g.php', + 'malkusch\bav\ValidatorA4b' => '../classes/validator/validators/ValidatorA4b.php', + 'malkusch\bav\ValidatorB9a' => '../classes/validator/validators/ValidatorB9a.php', + 'malkusch\bav\ValidatorB9b' => '../classes/validator/validators/ValidatorB9b.php', + 'malkusch\bav\ValidatorC1b' => '../classes/validator/validators/ValidatorC1b.php', + 'malkusch\bav\Configuration' => '../classes/configuration/Configuration.php', + 'malkusch\bav\FileValidator' => '../classes/dataBackend/file/validator/FileValidator.php', + 'malkusch\bav\LogUpdatePlan' => '../classes/dataBackend/update/LogUpdatePlan.php', + 'malkusch\bav\IconvEncoding' => '../classes/encoding/IconvEncoding.php', + 'malkusch\bav\FileException' => '../classes/util/exception/FileException.php', + 'malkusch\bav\LockException' => '../classes/util/exception/LockException.php', + 'malkusch\bav\SQLDataBackend' => '../classes/dataBackend/SQLDataBackend.php', + 'malkusch\bav\FieldException' => '../classes/dataBackend/file/validator/exception/FieldException.php', + 'malkusch\bav\PDODataBackend' => '../classes/dataBackend/pdo/PDODataBackend.php', + 'malkusch\bav\ValidatorChain' => '../classes/validator/ValidatorChain.php', + 'malkusch\bav\AgencyException' => '../classes/bank/exception/AgencyException.php', + 'malkusch\bav\FileDataBackend' => '../classes/dataBackend/file/FileDataBackend.php', + 'malkusch\bav\RegExpURIPicker' => '../classes/dataBackend/file/download/uripicker/RegExpURIPicker.php', + 'malkusch\bav\ISO8859Encoding' => '../classes/encoding/ISO8859Encoding.php', + 'malkusch\bav\ValidatorFactory' => '../classes/validator/ValidatorFactory.php', + 'malkusch\bav\FallbackURIPicker' => '../classes/dataBackend/file/download/uripicker/FallbackURIPicker.php', + 'malkusch\bav\FileParserContext' => '../classes/dataBackend/file/fileParser/FileParserContext.php', + 'malkusch\bav\EncodingException' => '../classes/encoding/exception/EncodingException.php', + 'malkusch\bav\ContextValidation' => '../classes/validator/ContextValidation.php', + 'malkusch\bav\URIPickerException' => '../classes/dataBackend/file/download/uripicker/exception/URIPickerException.php', + 'malkusch\bav\StatementContainer' => '../classes/dataBackend/pdo/StatementContainer.php', + 'malkusch\bav\ValidatorIteration' => '../classes/validator/ValidatorIteration.php', + 'malkusch\bav\ValidatorException' => '../classes/validator/exception/ValidatorException.php', + 'malkusch\bav\DownloaderException' => '../classes/dataBackend/file/download/exception/DownloaderException.php', + 'malkusch\bav\FileParserException' => '../classes/dataBackend/file/fileParser/exception/FileParserException.php', + 'malkusch\bav\DoctrineDataBackend' => '../classes/dataBackend/orm/doctrine/DoctrineDataBackend.php', + 'malkusch\bav\AutomaticUpdatePlan' => '../classes/dataBackend/update/AutomaticUpdatePlan.php', + 'malkusch\bav\ConfigurationLocator' => '../classes/configuration/ConfigurationLocator.php', + 'malkusch\bav\DefaultConfiguration' => '../classes/configuration/DefaultConfiguration.php', + 'malkusch\bav\DataBackendContainer' => '../classes/dataBackend/DataBackendContainer.php', + 'malkusch\bav\DataBackendException' => '../classes/dataBackend/exception/DataBackendException.php', + 'malkusch\bav\ConfigurationRegistry' => '../classes/configuration/ConfigurationRegistry.php', + 'malkusch\bav\BankNotFoundException' => '../classes/dataBackend/exception/BankNotFoundException.php', + 'malkusch\bav\NoMainAgencyException' => '../classes/dataBackend/exception/NoMainAgencyException.php', + 'malkusch\bav\ConfigurationException' => '../classes/configuration/ConfigurationException.php', + 'malkusch\bav\DataBackendIOException' => '../classes/dataBackend/exception/DataBackendIOException.php', + 'malkusch\bav\FileValidatorException' => '../classes/dataBackend/file/validator/exception/FileValidatorException.php', + 'malkusch\bav\ValidatorBankDependent' => '../classes/validator/ValidatorBankDependent.php', + 'malkusch\bav\ValidatorESERException' => '../classes/validator/exception/ValidatorESERException.php', + 'malkusch\bav\InvalidContextException' => '../classes/dataBackend/exception/InvalidContextException.php', + 'malkusch\bav\PDODataBackendContainer' => '../classes/dataBackend/pdo/PDODataBackendContainer.php', + 'malkusch\bav\FileDataBackendContainer' => '../classes/dataBackend/file/FileDataBackendContainer.php', + 'malkusch\bav\InvalidFilesizeException' => '../classes/dataBackend/file/validator/exception/InvalidFilesizeException.php', + 'malkusch\bav\DoctrineBackendContainer' => '../classes/dataBackend/orm/doctrine/DoctrineBackendContainer.php', + 'malkusch\bav\NoTempDirectoryException' => '../classes/util/exception/NoTempDirectoryException.php', + 'malkusch\bav\FileParserContextException' => '../classes/dataBackend/file/fileParser/exception/FileParserContextException.php', + 'malkusch\bav\InvalidLineLengthException' => '../classes/dataBackend/file/validator/exception/InvalidLineLengthException.php', + 'malkusch\bav\WeightedIterationValidator' => '../classes/validator/WeightedIterationValidator.php', + 'malkusch\bav\FileParserNotExistsException' => '../classes/dataBackend/file/fileParser/exception/FileParserNotExistsException.php', + 'malkusch\bav\UnsupportedEncodingException' => '../classes/encoding/exception/UnsupportedEncodingException.php', + 'malkusch\bav\ValidatorOutOfBoundsException' => '../classes/validator/exception/ValidatorOutOfBoundsException.php', + 'malkusch\bav\TransformationIterationValidator' => '../classes/validator/TransformationIterationValidator.php', + 'malkusch\bav\UndefinedAttributeAgencyException' => '../classes/bank/exception/UndefinedAttributeAgencyException.php', + 'malkusch\bav\UndefinedFileParserContextException' => '../classes/dataBackend/file/fileParser/exception/UndefinedFileParserContextException.php', + 'malkusch\bav\MissingAttributesDataBackendIOException' => '../classes/dataBackend/exception/MissingAttributesDataBackendIOException.php', + 'malkusch\bav\FileParserIOException' => '../classes/dataBackend/file/fileParser/exception/FileParserIOException', + 'malkusch\bav\ParseException' => '../classes/dataBackend/file/fileParser/exception/ParseException', ); From bf601a0305dee5288a994e44b0333bcb58b1d2b3 Mon Sep 17 00:00:00 2001 From: George Constantinou Date: Wed, 28 Feb 2024 19:55:36 +0200 Subject: [PATCH 301/303] Added missing file extension --- autoloader/index/0.php | 4 ++-- .../{FileParserIOException => FileParserIOException.php} | 0 .../exception/{ParseException => ParseException.php} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename classes/dataBackend/file/fileParser/exception/{FileParserIOException => FileParserIOException.php} (100%) rename classes/dataBackend/file/fileParser/exception/{ParseException => ParseException.php} (100%) diff --git a/autoloader/index/0.php b/autoloader/index/0.php index 0656b47b..a75f7466 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -245,6 +245,6 @@ 'malkusch\bav\UndefinedAttributeAgencyException' => '../classes/bank/exception/UndefinedAttributeAgencyException.php', 'malkusch\bav\UndefinedFileParserContextException' => '../classes/dataBackend/file/fileParser/exception/UndefinedFileParserContextException.php', 'malkusch\bav\MissingAttributesDataBackendIOException' => '../classes/dataBackend/exception/MissingAttributesDataBackendIOException.php', - 'malkusch\bav\FileParserIOException' => '../classes/dataBackend/file/fileParser/exception/FileParserIOException', - 'malkusch\bav\ParseException' => '../classes/dataBackend/file/fileParser/exception/ParseException', + 'malkusch\bav\FileParserIOException' => '../classes/dataBackend/file/fileParser/exception/FileParserIOException.php', + 'malkusch\bav\ParseException' => '../classes/dataBackend/file/fileParser/exception/ParseException.php', ); diff --git a/classes/dataBackend/file/fileParser/exception/FileParserIOException b/classes/dataBackend/file/fileParser/exception/FileParserIOException.php similarity index 100% rename from classes/dataBackend/file/fileParser/exception/FileParserIOException rename to classes/dataBackend/file/fileParser/exception/FileParserIOException.php diff --git a/classes/dataBackend/file/fileParser/exception/ParseException b/classes/dataBackend/file/fileParser/exception/ParseException.php similarity index 100% rename from classes/dataBackend/file/fileParser/exception/ParseException rename to classes/dataBackend/file/fileParser/exception/ParseException.php From 08a56b9f9c3eeb89650af5985bffed5dd6627558 Mon Sep 17 00:00:00 2001 From: bmdevel Date: Wed, 28 Feb 2024 20:54:48 +0100 Subject: [PATCH 302/303] Update InstantAutoloader.php fix: do not lowercase class for autoloading --- autoloader/InstantAutoloader.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/autoloader/InstantAutoloader.php b/autoloader/InstantAutoloader.php index f2e72558..77ab34ab 100644 --- a/autoloader/InstantAutoloader.php +++ b/autoloader/InstantAutoloader.php @@ -135,8 +135,6 @@ public function setBasePath($basePath) */ public function autoload($class) { - $this->_normalizeClass($class); - /* * spl_autoload_call() runs the complete stack, * even though the class is already defined by @@ -236,4 +234,4 @@ public static function _callClassConstructor($class, $constructorName) return true; } -} \ No newline at end of file +} From aaa9bb2b03da6ca89dbd7c3da716a8aab79f7ab1 Mon Sep 17 00:00:00 2001 From: George Constantinou Date: Thu, 29 Feb 2024 11:22:14 +0200 Subject: [PATCH 303/303] Skip calling custom constructor if class does not exist --- autoloader/InstantAutoloader.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/autoloader/InstantAutoloader.php b/autoloader/InstantAutoloader.php index 77ab34ab..2733cbd9 100644 --- a/autoloader/InstantAutoloader.php +++ b/autoloader/InstantAutoloader.php @@ -208,6 +208,10 @@ private function _normalizeClass(&$class) */ public static function _callClassConstructor($class, $constructorName) { + if (!\class_exists($class)) { + return false; + } + $reflectionClass = new \ReflectionClass($class); if (!$reflectionClass->hasMethod($constructorName)) { return false;

QT* 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%0Dm=@F%BT9ibx7f*L{ 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 Pk$wPC9B#PZw=n+&g5g`V literal 0 HcmV?d00001 From 317ff921d20deb69d5d9ed7bf85ae74c96751a74 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 14:44:58 +0200 Subject: [PATCH 112/303] narrowed false positive --- tests/classes/testAPI/KontocheckTestAPI.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tests/classes/testAPI/KontocheckTestAPI.php b/tests/classes/testAPI/KontocheckTestAPI.php index ab480fe6..2ec728ee 100644 --- a/tests/classes/testAPI/KontocheckTestAPI.php +++ b/tests/classes/testAPI/KontocheckTestAPI.php @@ -53,10 +53,18 @@ public function __construct($lutFile = null, $lutVersion = null) */ public function ignoreTestCase(Bank $bank, $account) { - if ($bank->getValidator() instanceof Validator09) { + // http://sourceforge.net/p/kontocheck/bugs/11/ + if ($bank->getBankID() == "80063508") { return true; } + + // http://sourceforge.net/p/kontocheck/bugs/12/ + if ($bank->getValidationType() == "90") { + return true; + + } + return parent::ignoreTestCase($bank, $account); } From eac532a2c88b55778285dc416878390a03298880 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 14:57:04 +0200 Subject: [PATCH 113/303] disable unreliable ktocheck api --- tests/CrossProjectTest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/CrossProjectTest.php b/tests/CrossProjectTest.php index 8ed283e0..0594ca47 100644 --- a/tests/CrossProjectTest.php +++ b/tests/CrossProjectTest.php @@ -63,7 +63,8 @@ public static function setUpBeforeClass() } try { - self::$testAPIs[] = new KtoblzcheckTestAPI(); + //Too slow and version 1.45 has many false positives + //self::$testAPIs[] = new KtoblzcheckTestAPI(); } catch (TestAPIUnavailableException $e) { trigger_error("KtoblzcheckTestAPI unavailable", E_USER_WARNING); From 99f6ca3355fd4ed787ccabc80a38fc7c0bda1cd5 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 15:26:16 +0200 Subject: [PATCH 114/303] added concurrency support for CrossProjectTest --- tests/CrossProjectTest.php | 68 ++++++++---- tests/checkAgainstTestAPIs.php | 190 --------------------------------- 2 files changed, 48 insertions(+), 210 deletions(-) delete mode 100755 tests/checkAgainstTestAPIs.php diff --git a/tests/CrossProjectTest.php b/tests/CrossProjectTest.php index 0594ca47..cd6fc098 100644 --- a/tests/CrossProjectTest.php +++ b/tests/CrossProjectTest.php @@ -5,30 +5,32 @@ require_once __DIR__ . "/../autoloader/autoloader.php"; /** - * Copyright (C) 2009 Markus Malkusch + * Tests the values between different projects. + * + * This test takes a very long time (days!). You should split it on several + * machines. You can therefore set the environment variables NODE_NUMBER, which + * starts with 0 and NODE_COUNT. Two cores would run with: + * + * $ NODE_NUMBER=0 NODE_COUNT=2 phpunit CrossProjectTest.php + * $ NODE_NUMBER=1 NODE_COUNT=2 phpunit CrossProjectTest.php * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * @package test * @author Markus Malkusch - * @copyright Copyright (C) 2009 Markus Malkusch + * @license GPL * @large */ class CrossProjectTest extends \PHPUnit_Framework_TestCase { + /** + * name of environment variable for setting this node number. + */ + const ENV_NODE_NUMBER = "NODE_NUMBER"; + + /** + * name of environment variable for setting the node count. + */ + const ENV_NODE_COUNT = "NODE_COUNT"; + /** * @var int */ @@ -44,6 +46,16 @@ class CrossProjectTest extends \PHPUnit_Framework_TestCase * @var Array */ private $failedBankDependentValidators = array(); + + /** + * @var int + */ + private static $nodeNumber = 0; + + /** + * @var int + */ + private static $nodeCount = 1; /** * @var TestAPI[] @@ -77,14 +89,30 @@ public static function setUpBeforeClass() */ public function provideBanks() { + $nodeNumber = getenv(self::ENV_NODE_NUMBER); + if ($nodeNumber) { + self::$nodeNumber = (int) $nodeNumber; + + } + $nodeCount = getenv(self::ENV_NODE_COUNT); + if ($nodeCount) { + self::$nodeCount = (int) $nodeCount; + + } + self::assertGreaterThan(self::$nodeNumber, self::$nodeCount); + $banks = array(); $backend = new PDODataBackend(new \PDO('mysql:host=localhost;dbname=test', 'test')); + $i = 0; foreach ($backend->getAllBanks() as $bank) { - $banks[] = array($bank); + // only pick banks for this node. + if ($i % self::$nodeCount == self::$nodeNumber) { + $banks[] = array($bank); + + } + $i++; } - - // $banks = array_slice($banks, 0, 60); return $banks; } diff --git a/tests/checkAgainstTestAPIs.php b/tests/checkAgainstTestAPIs.php deleted file mode 100755 index 03bc3184..00000000 --- a/tests/checkAgainstTestAPIs.php +++ /dev/null @@ -1,190 +0,0 @@ -#!/usr/bin/php - - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * @package scripts - * @subpackage test - * @author Markus Malkusch - * @copyright Copyright (C) 2009 Markus Malkusch - */ -class CheckAgainstTestAPIs -{ - - const VALID = 1; - const INVALID = 2; - const BANK_NOT_FOUND = 3; - const ERROR = 4; - - /** - * @var int - */ - #private $firstAccount = 9999999999, - private $firstAccount = 999; - - /** - * @var int - */ - private $lastAccount = 1; - - /** - * @var Array - */ - private $testedValidators = array(); - - /** - * @var Array - */ - private $differences = array(); - - /** - * @var Array - */ - private $testAPIs = array(); - - public function __construct() - { - $this->testAPIs[] = new BAVTestAPI(); - $this->testAPIs[] = new KontocheckTestAPI(); - $this->testAPIs[] = new KtoblzcheckTestAPI(); - - - #$backend = new FileDataBackend(); - $backend = new PDODataBackend(new \PDO('mysql:host=localhost;dbname=test', 'test')); - - - if (! empty($GLOBALS['argv'][1])) { - $nodeNumber = $GLOBALS['argv'][1]; - $nodeCount = @$GLOBALS['argv'][2]; - - if ($nodeNumber * $nodeCount == 0 || min($nodeNumber, $nodeCount) < 0) { - trigger_error( - 'Expect two numeric arguments > 0: $nodeNumber $nodeCount', - E_USER_ERROR - ); - - } - - if ($nodeNumber > $nodeCount) { - trigger_error( - 'Expect first argument ($nodeNumber) <= second argument ($nodeCount)', - E_USER_ERROR - ); - - } - - } else { - $nodeNumber = 1; - $nodeCount = 1; - - } - - $increment = $this->lastAccount > $this->firstAccount ? 1 : -1; - $padLength = strlen(max($this->lastAccount, $this->firstAccount)); - - $count = ceil(abs($this->lastAccount - $this->firstAccount) / $nodeCount); - $firstAccount = $this->firstAccount + $increment * ($nodeNumber - 1) * ($count + 1); - - if ($nodeCount == $nodeNumber) { - $afterLastAccount = $this->lastAccount + $increment; - - } else { - $afterLastAccount = $firstAccount + $increment * ($count + 1); - - } - - foreach ($backend->getAllBanks() as $bank) { - try { - if (array_key_exists($bank->getValidationType(), $this->testedValidators) - && ! $bank->getValidator() instanceof Validator_BankDependent) { - - continue; - - } - - for ($account = $firstAccount; $account != $afterLastAccount; $account += $increment) { - for ($pad = strlen($account); $pad <= $padLength; $pad++) { - $paddedAccount = str_pad($account, $pad, "0", STR_PAD_LEFT); - $differences = count($this->differences); - $this->testAccount($bank, $paddedAccount); - if (count($this->differences) > $differences) { - break 2; - - } - } - } - - $this->testedValidators[$bank->getValidationType()] = true; - - } catch (BankNotFoundTestAPIException $e) { - continue; - - } - } - } - - private function testAccount(Bank $bank, $account) - { - $results = array(); - $resultValues = array(); - foreach ($this->testAPIs as $key => $testAPI) { - $result = $testAPI->getResult($bank, $account); - $results[] = $result; - $resultValues[] = $result->getResult(); - - } - - if (count(array_unique($resultValues)) == 1) { - return; - - } - - - $resultTranslation = array( - TestAPIResult::VALID => "valid", - TestAPIResult::INVALID => "invalid", - TestAPIResult::ERROR => "error" - ); - - echo "{$bank->getBankID()}/{$bank->getValidationType()}\t", - str_pad($account, strlen($this->lastAccount)), "\t"; - - foreach ($results as $result) { - echo "{$result->getTestAPI()->getName()}: ", - str_pad($resultTranslation[$result->getResult()], 8); - if ($result instanceof TestAPIErrorResult) { - echo " {$result->getMessage()}"; - - } - echo "\t"; - - } - echo "\n"; - - $this->differences[] = array($bank, $account, $results); - } -} - -new CheckAgainstTestAPIs(); From 8b0e8c3345baadcec2c2bd0158a9e0d85517ef3e Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 15:58:01 +0200 Subject: [PATCH 115/303] removed done TODO --- classes/dataBackend/DataBackend.php | 2 -- tests/classes/testAPI/KontocheckTestAPI.php | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/classes/dataBackend/DataBackend.php b/classes/dataBackend/DataBackend.php index ba342b57..83cc628c 100644 --- a/classes/dataBackend/DataBackend.php +++ b/classes/dataBackend/DataBackend.php @@ -132,7 +132,6 @@ abstract protected function getNewBank($bankID); * method is called by Bank->getMainAgency(), if the Bank object doesn't know its * main agency. * - * @todo remove _getMainAgency() and make getMainAgency() abstract. * @throws DataBackendException * @return Agency * @see Bank::getMainAgency() @@ -145,7 +144,6 @@ abstract public function getMainAgency(Bank $bank); * objects. This method is called by Bank->getAgencies(), if the Bank object doesn't * know its agencies. A bank may have no agencies and will return an empty array. * - * @todo remove _getAgencies() and make getAgenciesForBank() abstract. * @throws DataBackendException * @see Bank::getAgencies() * @return Agency[] diff --git a/tests/classes/testAPI/KontocheckTestAPI.php b/tests/classes/testAPI/KontocheckTestAPI.php index 2ec728ee..319d62c7 100644 --- a/tests/classes/testAPI/KontocheckTestAPI.php +++ b/tests/classes/testAPI/KontocheckTestAPI.php @@ -3,7 +3,7 @@ namespace malkusch\bav; /** - * The API for Michael Plugge's kontocheck. + * The API for Michael Plugge's kontocheck. * * @license GPL * @author Markus Malkusch From 7e407693627ccb8bade1df4f82a3a62f3b180187 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 16:41:15 +0200 Subject: [PATCH 116/303] fixed IBAN offsets --- classes/dataBackend/file/fileParser/FileParser.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/classes/dataBackend/file/fileParser/FileParser.php b/classes/dataBackend/file/fileParser/FileParser.php index c040a6f0..49ba0975 100644 --- a/classes/dataBackend/file/fileParser/FileParser.php +++ b/classes/dataBackend/file/fileParser/FileParser.php @@ -63,8 +63,10 @@ class FileParser * This field is only accessible from a new version of the file. * The new version is only accessible from the Bundesbank ExtraNet. */ - const IBAN_RULE_OFFSET = 168; // field 14 - const IBAN_RULE_LENGTH = 8; + const IBAN_RULE_OFFSET = 168; // field 14 Rule + const IBAN_RULE_LENGTH = 4; + const IBAN_VERSION_OFFSET = 172; // field 14 Version + const IBAN_VERSION_LENGTH = 2; /** * @var resource From 13e3cecc9f5379e00c00f6b89f9da4cbb4a3fed1 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 17:02:35 +0200 Subject: [PATCH 117/303] removed VerifyImport --- autoloader/index/0.php | 3 - autoloader/index/1.php | 2 - classes/verify/VerifyImport.php | 217 ------------------ classes/verify/exception/VerifyException.php | 31 --- .../verify/exception/VerifyIOException.php | 31 --- tests/VerifyImportTest.php | 149 ------------ 6 files changed, 433 deletions(-) delete mode 100644 classes/verify/VerifyImport.php delete mode 100644 classes/verify/exception/VerifyException.php delete mode 100644 classes/verify/exception/VerifyIOException.php delete mode 100644 tests/VerifyImportTest.php diff --git a/autoloader/index/0.php b/autoloader/index/0.php index 24219e01..968d5b07 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -181,7 +181,6 @@ 'malkusch\bav\validatorb9a' => '../classes/validator/validators/ValidatorB9a.php', 'malkusch\bav\validatorb9b' => '../classes/validator/validators/ValidatorB9b.php', 'malkusch\bav\validatorc1b' => '../classes/validator/validators/ValidatorC1b.php', - 'malkusch\bav\verifyimport' => '../classes/verify/VerifyImport.php', 'malkusch\bav\configuration' => '../classes/configuration/Configuration.php', 'malkusch\bav\logupdateplan' => '../classes/dataBackend/update/LogUpdatePlan.php', 'malkusch\bav\iconvencoding' => '../classes/encoding/IconvEncoding.php', @@ -190,10 +189,8 @@ 'malkusch\bav\agencyexception' => '../classes/bank/exception/AgencyException.php', 'malkusch\bav\filedatabackend' => '../classes/dataBackend/file/FileDataBackend.php', 'malkusch\bav\iso8859encoding' => '../classes/encoding/ISO8859Encoding.php', - 'malkusch\bav\verifyexception' => '../classes/verify/exception/VerifyException.php', 'malkusch\bav\fileparsercontext' => '../classes/dataBackend/file/fileParser/FileParserContext.php', 'malkusch\bav\encodingexception' => '../classes/encoding/exception/EncodingException.php', - 'malkusch\bav\verifyioexception' => '../classes/verify/exception/VerifyIOException.php', 'malkusch\bav\validatoriteration' => '../classes/validator/ValidatorIteration.php', 'malkusch\bav\validatorexception' => '../classes/validator/exception/ValidatorException.php', 'malkusch\bav\fileparserexception' => '../classes/dataBackend/file/fileParser/exception/FileParserException.php', diff --git a/autoloader/index/1.php b/autoloader/index/1.php index edc108f8..98c2d9c5 100644 --- a/autoloader/index/1.php +++ b/autoloader/index/1.php @@ -26,7 +26,6 @@ 'malkusch\bav\updateplantest' => '../tests/UpdatePlanTest.php', 'malkusch\bav\agencyquerytest' => '../tests/AgencyQueryTest.php', 'malkusch\bav\crossprojecttest' => '../tests/CrossProjectTest.php', - 'malkusch\bav\verifyimporttest' => '../tests/VerifyImportTest.php', 'malkusch\bav\testapiexception' => '../tests/classes/testAPI/exception/TestAPIException.php', 'malkusch\bav\kontochecktestapi' => '../tests/classes/testAPI/KontocheckTestAPI.php', 'malkusch\bav\dataconstrainttest' => '../tests/DataConstraintTest.php', @@ -34,7 +33,6 @@ 'malkusch\bav\ktoblzchecktestapi' => '../tests/classes/testAPI/KtoblzcheckTestAPI.php', 'malkusch\bav\testapierrorresult' => '../tests/classes/testAPI/TestAPIErrorResult.php', 'malkusch\bav\backendcontainertest' => '../tests/BackendContainerTest.php', - 'malkusch\bav\checkagainsttestapis' => '../tests/checkAgainstTestAPIs.php', 'malkusch\bav\classfileioexception' => '../tests/classes/class/exception/ClassFileIOException.php', 'malkusch\bav\missingclassexception' => '../tests/classes/class/exception/MissingClassException.php', 'malkusch\bav\validationtestapiexception' => '../tests/classes/testAPI/exception/ValidationTestAPIException.php', diff --git a/classes/verify/VerifyImport.php b/classes/verify/VerifyImport.php deleted file mode 100644 index f27674a1..00000000 --- a/classes/verify/VerifyImport.php +++ /dev/null @@ -1,217 +0,0 @@ -. - * - * Copyright (C) 2006 Markus Malkusch - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * DataBackend - * - * @package classes - * @subpackage verify - * @author Markus Malkusch - * @copyright Copyright (C) 2006 Markus Malkusch - */ -class VerifyImport -{ - - /** - * @var Array Numbers which are valid - */ - private $validNumbers = array(); - - /** - * @var Array Numbers which aren't valid - */ - private $invalidNumbers = array(); - - /** - * @var DataBackend - */ - private $dataBackend; - - /** - * @param DataBackend $dataBackend The backend is needed to get the validation algorithm. - */ - public function __construct(DataBackend $dataBackend) - { - $this->dataBackend = $dataBackend; - } - - /** - * @return String - */ - private function getFile($file) - { - return is_null($file) - ? __DIR__.'/../../data/verify.ini' - : $file; - } - - /** - * Imports an existing verify.ini. - * - * @param string $file - * @throws VerifyException - */ - public function importVerifyFile($file = null) - { - $file = $this->getFile($file); - $verify = parse_ini_file($file, true); - if (! $verify) { - throw new VerifyException("couldn't parse $file"); - - } - - $this->mergeVerifyArray($verify['valid'], $this->validNumbers); - $this->mergeVerifyArray($verify['invalid'], $this->invalidNumbers); - } - - /** - * Merges a string array of an existing verify.ini - */ - private function mergeVerifyArray($verifyArray, & $targetArray) - { - if (! is_array($verifyArray)) { - return; - - } - foreach ($verifyArray as $type => $string) { - $type = (strlen($type) < 2 ? '0' : '').$type; - $accountIDs = preg_split('~\D+~', $string); - foreach ($accountIDs as $accountID) { - $accountID = $this->normalize($accountID); - $targetArray[$type][] = $accountID; - - } - - } - } - - /** - * @param string $bankID - * @param string $accountID - * @param bool $isValid if $accountID should be valid or not. Defaults to TRUE for valid. - * @throws BankNotFoundException - * @throws DataBackendException - */ - public function import($bankID, $accountID, $isValid = true) - { - $bankID = $this->normalize($bankID); - $accountID = $this->normalize($accountID); - $bank = $this->dataBackend->getBank($bankID); - $type = $bank->getValidator() instanceof Validator_BankDependent - ? $bankID - : $bank->getValidationType(); - if ($isValid) { - $this->validNumbers[$type][] = $accountID; - - } else { - $this->invalidNumbers[$type][] = $accountID; - - } - } - - /** - * Removes all none numeric characters from $id. - * - * @param string $id - * @return string - */ - private function normalize($id) - { - return (string) preg_replace('~\D+~', '', $id); - } - - /** - * @param string $filePath The file where the arrays are saved (default's to ../../data/verify.ini) - * @throws VerifyIOException - */ - public function save($file = null) - { - $file = $this->getFile($file); - $fp = fopen($file, 'w'); - if (! is_resource($fp)) { - throw new VerifyIOException("Could not open $file."); - - } - try { - $this->saveArray($fp, $this->invalidNumbers, 'invalid'); - $this->saveArray($fp, $this->validNumbers, 'valid'); - fclose($fp); - - } catch (VerifyIOException $e) { - fclose($fp); - throw $e; - - } - } - - /** - * @param Resource $fp Filepointer - * @param Array $array Array with bank IDs - * @param String $name Name of the section - * @throws VerifyIOException - */ - private function saveArray($fp, Array $array, $name) - { - if (! fwrite($fp, "\n\n".'['.$name.']')) { - throw new VerifyIOException(); - - } - ksort($array); - foreach ($array as $type => $numbers) { - $type = ltrim($type, '0'); - if (empty($type)) { - $type = '0'; - - } - if (! fwrite($fp, "\n".' '.$type.' = ')) { - throw new VerifyIOException(); - - } - $line = implode(', ', array_unique($numbers)); - if (fwrite($fp, $line, strlen($line)) !== strlen($line)) { - throw new VerifyIOException(); - - } - - } - } - - /** - * @param String $bankID - * @return String - * @throws BankNotFoundException - * @throws DataBackendException - */ - private function bankIDToType($bankID) - { - return $this->dataBackend->getBank($bankID)->getValidationType(); - } -} diff --git a/classes/verify/exception/VerifyException.php b/classes/verify/exception/VerifyException.php deleted file mode 100644 index 4f13d4ca..00000000 --- a/classes/verify/exception/VerifyException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * - * @package classes - * @subpackage verify - * @author Markus Malkusch - * @copyright Copyright (C) 2006 Markus Malkusch - */ -class VerifyException extends BAVException -{ - -} diff --git a/classes/verify/exception/VerifyIOException.php b/classes/verify/exception/VerifyIOException.php deleted file mode 100644 index b7ef50ba..00000000 --- a/classes/verify/exception/VerifyIOException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * - * @package classes - * @subpackage verify - * @author Markus Malkusch - * @copyright Copyright (C) 2006 Markus Malkusch - */ -class VerifyIOException extends VerifyException -{ - -} diff --git a/tests/VerifyImportTest.php b/tests/VerifyImportTest.php deleted file mode 100644 index 5a66f676..00000000 --- a/tests/VerifyImportTest.php +++ /dev/null @@ -1,149 +0,0 @@ - - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * @package test - * @author Markus Malkusch - * @copyright Copyright (C) 2009 Markus Malkusch - * @see VerifyImport - */ -class VerifyImportTest extends \PHPUnit_Framework_TestCase -{ - - /** - * @var array - */ - private $validationMap = array(); - - /** - * @var array - */ - private $verifyArray = array(); - - /** - * @var FileDataBackend - */ - private $databack; - - protected function setUp() - { - $this->databack = new FileDataBackend(); - $this->verifyArray = parse_ini_file(__DIR__.'/../data/verify.ini', true); - - $this->assertInternalType( - "array", - $this->verifyArray, - "Could not parse verify.ini" - ); - - foreach ($this->databack->getAllBanks() as $bank) { - $this->validationMap[$bank->getValidationType()] = $bank; - - } - } - - public function testFileImport() - { - $importer = new VerifyImport($this->databack); - $importer->importVerifyFile(); - $this->assertImporter($importer); - } - - public function testSequentialImport() - { - $importer = new VerifyImport($this->databack); - $notSupported = array(); - foreach ($this->verifyArray as $expect => $array) { - foreach ($array as $type => $accounts) { - try { - $type = (strlen($type) < 2 ? '0' : '').$type; - $accounts = preg_split('~\D+~', $accounts); - $bankID = strlen($type) === 2 ? $this->getBank($type)->getBankID() : $type; - foreach ($accounts as $account) { - $importer->import($bankID, $account, $expect === 'valid' ? true : false); - - } - - } catch (BankNotFoundException $e) { - $notSupported[] = $type; - - } - - } - - } - $this->assertImporter($importer, $notSupported); - } - - private function assertImporter(VerifyImport $importer, Array $notSupported = array()) - { - $file = tempnam('/tmp', 'BAV'); - $this->assertFileExists($file); - - $importer->save($file); - $checkArray = parse_ini_file($file, true); - unlink($file); - - $this->assertInternalType( - "array", - $checkArray, - "Could not parse temporary file $file." - ); - - foreach ($this->verifyArray as $expect => $array) { - foreach ($array as $type => $accounts) { - $actualAccounts = @$checkArray[$expect][$type]; - unset($checkArray[$expect][$type]); - if (array_search($type, $notSupported) !== false) { - continue; - - } - $this->assertEquals( - preg_replace('~\D~', '', $accounts), - preg_replace('~\D~', '', $actualAccounts), - "[$expect]$type is not equal!" - ); - - } - - } - - $this->assertEquals(0, count($checkArray['valid'])); - $this->assertEquals(0, count($checkArray['invalid'])); - } - - /** - * @param String $validationType - * @return Bank - */ - private function getBank($validationType) - { - if (! isset($this->validationMap[$validationType])) { - throw new BankNotFoundException($validationType); - - } - return $this->validationMap[$validationType]; - } -} From a1669782bc7babf22bf1fc455601d67d1435ca22 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 19:19:23 +0200 Subject: [PATCH 118/303] exclude bogus validators from ktoblzcheck --- tests/CrossProjectTest.php | 8 ++------ tests/classes/testAPI/KtoblzcheckTestAPI.php | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/tests/CrossProjectTest.php b/tests/CrossProjectTest.php index cd6fc098..bb14e9f2 100644 --- a/tests/CrossProjectTest.php +++ b/tests/CrossProjectTest.php @@ -190,18 +190,14 @@ private function getErrorMessage(Bank $bank, $account, Array $results) TestAPIResult::ERROR => "error" ); - $message = "{$bank->getBankID()}/{$bank->getValidationType()}\t" - . str_pad($account, strlen($this->lastAccount)) . "\t"; + $message = "bank: {$bank->getBankID()} method: {$bank->getValidationType()} account: $account"; foreach ($results as $result) { - $message .= "{$result->getTestAPI()->getName()}: " - . str_pad($resultTranslation[$result->getResult()], 8); + $message .= " {$result->getTestAPI()->getName()}: ". $resultTranslation[$result->getResult()]; if ($result instanceof TestAPIErrorResult) { $message .= " {$result->getMessage()}"; } - $message .= "\t"; - } return $message; diff --git a/tests/classes/testAPI/KtoblzcheckTestAPI.php b/tests/classes/testAPI/KtoblzcheckTestAPI.php index 7fe4af16..5781e901 100644 --- a/tests/classes/testAPI/KtoblzcheckTestAPI.php +++ b/tests/classes/testAPI/KtoblzcheckTestAPI.php @@ -47,6 +47,8 @@ public function __construct($bankdata = null, $binary = null) /** * Return true for known false positives. * + * Version 1.45 has many false positives. + * * @return true */ public function ignoreTestCase(Bank $bank, $account) @@ -55,6 +57,23 @@ public function ignoreTestCase(Bank $bank, $account) return true; } + + /* In version 1.45 those do differ: + * + * bank: 28570092 method: 63 account: 5 bav: valid kc: valid ktoblzcheck: invalid + * bank: 76026000 method: C7 account: 5 bav: valid kc: valid ktoblzcheck: invalid + * bank: 30022000 method: 08 account: 5 bav: invalid kc: invalid ktoblzcheck: valid + * bank: 80063508 method: 09 account: 30 bav: valid ktoblzcheck: invalid + * bank: 22230023 method: 68 account: 26 bav: invalid kc: invalid ktoblzcheck: valid + * AccountNumberCheck::check: Specified method 'E1' is unknown + * bank: 36050105 method: 78 account: 30 bav: invalid kc: invalid ktoblzcheck: valid + */ + $falsePositives = array("63", "C7", "08", "09", "68", "E1", "78"); + if (in_array($bank->getValidationType(), array($falsePositives))) { + return true; + + } + return parent::ignoreTestCase($bank, $account); } From 49477207e2e4f09a2020881f5bf15f325d801d4e Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 19:55:45 +0200 Subject: [PATCH 119/303] fixed validator 68 --- classes/validator/validators/Validator68.php | 3 +++ docs/changelog.txt | 2 ++ 2 files changed, 5 insertions(+) diff --git a/classes/validator/validators/Validator68.php b/classes/validator/validators/Validator68.php index 779052b3..5149986a 100644 --- a/classes/validator/validators/Validator68.php +++ b/classes/validator/validators/Validator68.php @@ -50,6 +50,9 @@ public function __construct(Bank $bank) public function isValid($account) { + // Die Kontonummern [..] enthalten keine führenden Nullen. + $account = ltrim($account, "0"); + switch (strlen($account)) { case 10: diff --git a/docs/changelog.txt b/docs/changelog.txt index d47a3834..e09b412f 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -16,6 +16,8 @@ Version 1.0.0 - not yet released - renamed all classes which where not conform to PSR2 + - Fixed Validator 68 + Version 0.28 - May 26, 2014 --------------------------- From e0a496e9f4429333d480e503d3bc7c776109fc0d Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 20:07:22 +0200 Subject: [PATCH 120/303] fixed validator 78 --- classes/validator/validators/Validator78.php | 7 ++++++- docs/changelog.txt | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/classes/validator/validators/Validator78.php b/classes/validator/validators/Validator78.php index ff5027c7..acae5ea3 100644 --- a/classes/validator/validators/Validator78.php +++ b/classes/validator/validators/Validator78.php @@ -33,6 +33,11 @@ public function __construct(Bank $bank) public function isValid($account) { - return strlen($account) !== 8 && parent::isValid($account); + // 8-stellige Kontonummern sind nicht prüfbar + if (strlen($account) === 8) { + return true; + + } + return parent::isValid($account); } } diff --git a/docs/changelog.txt b/docs/changelog.txt index e09b412f..8a5dd11a 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -16,7 +16,7 @@ Version 1.0.0 - not yet released - renamed all classes which where not conform to PSR2 - - Fixed Validator 68 + - Fixed Validators 68, 78 Version 0.28 - May 26, 2014 From f8002cef1c0525fba63066784e64c5649a855d41 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 20:09:48 +0200 Subject: [PATCH 121/303] testing on zero padded accounts --- tests/CrossProjectTest.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tests/CrossProjectTest.php b/tests/CrossProjectTest.php index bb14e9f2..5ecaa6e4 100644 --- a/tests/CrossProjectTest.php +++ b/tests/CrossProjectTest.php @@ -37,6 +37,11 @@ class CrossProjectTest extends \PHPUnit_Framework_TestCase #private $lastAccount = 9999999999, private $lastAccount = 99999; + /** + * @var int + */ + private $accountPadSize = 10; + /** * @var Array */ @@ -123,6 +128,7 @@ public function provideBanks() public function testCrossProjects(Bank $bank) { try { + // Skip failed bank dependend validators or valid independend validators. $isSkip = $bank->getValidator() instanceof Validator_BankDependent ? array_key_exists($bank->getValidationType(), $this->failedBankDependentValidators) : array_key_exists($bank->getValidationType(), $this->testedValidators); @@ -132,8 +138,11 @@ public function testCrossProjects(Bank $bank) } + // Generate accounts from $this->lastAccount until 0. for ($account = $this->lastAccount; $account >= 0; $account--) { - for ($pad = strlen($account); $pad <= strlen($this->lastAccount); $pad++) { + + // Generate accounts with padded zeros up to $this->accountPadSize + for ($pad = strlen($account); $pad <= $this->accountPadSize; $pad++) { $paddedAccount = str_pad($account, $pad, "0", STR_PAD_LEFT); $this->assertSameResult($bank, $paddedAccount); From e644afcef03dce81c130ab2986e8d1243a5e0234 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 20:18:19 +0200 Subject: [PATCH 122/303] fixed validator 59 --- classes/validator/validators/Validator59.php | 13 ++++++++++--- docs/changelog.txt | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/classes/validator/validators/Validator59.php b/classes/validator/validators/Validator59.php index f4c1803a..da707bba 100644 --- a/classes/validator/validators/Validator59.php +++ b/classes/validator/validators/Validator59.php @@ -33,8 +33,15 @@ public function __construct(Bank $bank) public function isValid($account) { - return ltrim($account, "0") != "" - && strlen($account) < 9 - || parent::isValid($account); + /* Es ist jedoch zu beachten, dass Kontonummern, die + * kleiner als 9-stellig sind,[…] als richtig behandelt werden. + */ + $trimedAccount = ltrim($account, "0"); + if (strlen($trimedAccount) < 9) { + return ! empty($trimedAccount) && true; + + } + + return parent::isValid($account); } } diff --git a/docs/changelog.txt b/docs/changelog.txt index 8a5dd11a..809cbc0c 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -16,7 +16,7 @@ Version 1.0.0 - not yet released - renamed all classes which where not conform to PSR2 - - Fixed Validators 68, 78 + - Fixed Validators 68, 78, 59 Version 0.28 - May 26, 2014 From 150fa37ed6fa5c3848e47b5136bfa8020368b2cb Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 20:21:25 +0200 Subject: [PATCH 123/303] fixed validator 78 --- classes/validator/validators/Validator78.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/classes/validator/validators/Validator78.php b/classes/validator/validators/Validator78.php index acae5ea3..a1ff47ee 100644 --- a/classes/validator/validators/Validator78.php +++ b/classes/validator/validators/Validator78.php @@ -34,7 +34,8 @@ public function __construct(Bank $bank) public function isValid($account) { // 8-stellige Kontonummern sind nicht prüfbar - if (strlen($account) === 8) { + $trimedAccount = ltrim($account, "0"); + if (strlen($trimedAccount) === 8) { return true; } From 900b946b76974342f350f96e7ef12851716f7193 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 20:26:04 +0200 Subject: [PATCH 124/303] fixed validator 58 --- classes/validator/validators/Validator58.php | 2 +- docs/changelog.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/validator/validators/Validator58.php b/classes/validator/validators/Validator58.php index ad1d5fb2..dfb0358d 100644 --- a/classes/validator/validators/Validator58.php +++ b/classes/validator/validators/Validator58.php @@ -34,6 +34,6 @@ public function __construct(Bank $bank) public function isValid($account) { - return strlen($account) >= 6 && parent::isValid($account); + return strlen(ltrim($account, "0")) >= 6 && parent::isValid($account); } } diff --git a/docs/changelog.txt b/docs/changelog.txt index 809cbc0c..5fd59c24 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -16,7 +16,7 @@ Version 1.0.0 - not yet released - renamed all classes which where not conform to PSR2 - - Fixed Validators 68, 78, 59 + - Fixed Validators 68, 78, 59, 58 Version 0.28 - May 26, 2014 From 874dbcdae5e482241d2aba9a28f800a7752546ea Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 21:05:26 +0200 Subject: [PATCH 125/303] added travis ci --- .travis.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..e8e9a41f --- /dev/null +++ b/.travis.yml @@ -0,0 +1,11 @@ +language: php + +php: + - 5 + - 5.3 + +before_script: + - composer --prefer-source --dev install + +script: + - phpunit tests/ValidatorTest.php \ No newline at end of file From bc35a7db51f71f22b1cc070848705153e423e92e Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 21:13:13 +0200 Subject: [PATCH 126/303] using backend container for automatic installation --- tests/ValidatorTest.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/ValidatorTest.php b/tests/ValidatorTest.php index c1468bae..8af4b41b 100644 --- a/tests/ValidatorTest.php +++ b/tests/ValidatorTest.php @@ -55,8 +55,10 @@ protected function setUp() return; } + $container = new FileDataBackendContainer(); + #self::$dataBackend = new PDODataBackend(new \PDO('mysql:host=localhost;dbname=test', 'test')); - self::$dataBackend = new FileDataBackend(); + self::$dataBackend = $container->getDataBackend(); foreach (self::$dataBackend->getAllBanks() as $bank) { From b9e7d8911c5d4d1ac9bb9b88c95af92c79241d8f Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 21:17:52 +0200 Subject: [PATCH 127/303] added minor version --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index e8e9a41f..a252b2ec 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,8 @@ language: php php: - - 5 + - 5.5 + - 5.4 - 5.3 before_script: From 52ea1b0cd6a0bf1d6bc47fbd0ea2aeb513178550 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 21:23:35 +0200 Subject: [PATCH 128/303] added UpdatePlanTest into ci --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index a252b2ec..20fb30de 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,4 +9,5 @@ before_script: - composer --prefer-source --dev install script: - - phpunit tests/ValidatorTest.php \ No newline at end of file + - phpunit tests/ValidatorTest.php + - phpunit tests/UpdatePlanTest.php \ No newline at end of file From bd86da6a0eeab7a35bbbb952f00ad7ac7a1e0f61 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 21:58:48 +0200 Subject: [PATCH 129/303] PDO can be configured by the environment --- autoloader/index/1.php | 2 ++ tests/AgencyQueryTest.php | 2 +- tests/BackendTest.php | 4 +-- tests/CrossProjectTest.php | 2 +- tests/DataConstraintTest.php | 2 +- tests/ValidatorTest.php | 2 +- tests/classes/PDOFactory.php | 62 ++++++++++++++++++++++++++++++++++++ 7 files changed, 70 insertions(+), 6 deletions(-) create mode 100644 tests/classes/PDOFactory.php diff --git a/autoloader/index/1.php b/autoloader/index/1.php index 98c2d9c5..73f75383 100644 --- a/autoloader/index/1.php +++ b/autoloader/index/1.php @@ -17,7 +17,9 @@ return array( 'malkusch\bav\testapi' => '../tests/classes/testAPI/TestAPI.php', 'malkusch\bav\timemock' => '../tests/classes/TimeMock.php', + 'malkusch\bav\issuetest' => '../tests/IssueTest.php', 'malkusch\bav\classfile' => '../tests/classes/class/ClassFile.php', + 'malkusch\bav\pdofactory' => '../tests/classes/PDOFactory.php', 'malkusch\bav\bavtestapi' => '../tests/classes/testAPI/BAVTestAPI.php', 'malkusch\bav\backendtest' => '../tests/BackendTest.php', 'malkusch\bav\bavfacadetest' => '../tests/BAVFacadeTest.php', diff --git a/tests/AgencyQueryTest.php b/tests/AgencyQueryTest.php index 82f7f05a..69ab039b 100644 --- a/tests/AgencyQueryTest.php +++ b/tests/AgencyQueryTest.php @@ -39,7 +39,7 @@ class AgencyQueryTest extends \PHPUnit_Framework_TestCase */ protected function setUp() { - $this->backend = new PDODataBackend(new \PDO('mysql:host=localhost;dbname=test', 'test')); + $this->backend = new PDODataBackend(PDOFactory::makePDO()); } public function testOnlyID() diff --git a/tests/BackendTest.php b/tests/BackendTest.php index 64942456..3523e53c 100644 --- a/tests/BackendTest.php +++ b/tests/BackendTest.php @@ -32,7 +32,7 @@ public static function classConstructor() */ public function provideBackends() { - $pdoBackend = new PDODataBackend(new \PDO('mysql:host=localhost;dbname=test', 'test')); + $pdoBackend = new PDODataBackend(PDOFactory::makePDO()); $this->setupBackend($pdoBackend); $fileBackend = new FileDataBackend(); @@ -57,7 +57,7 @@ private function setupBackend(DataBackend $backend) */ public function provideInstallationBackends() { - $pdoBackend = new PDODataBackend(new \PDO('mysql:host=localhost;dbname=test', 'test'), 'bavtest_'); + $pdoBackend = new PDODataBackend(PDOFactory::makePDO(), 'bavtest_'); $this->setupInstallationBackends($pdoBackend); $fileBackend = new FileDataBackend(tempnam(FileDataBackend::getTempdir(), 'bavtest')); diff --git a/tests/CrossProjectTest.php b/tests/CrossProjectTest.php index 5ecaa6e4..ef523832 100644 --- a/tests/CrossProjectTest.php +++ b/tests/CrossProjectTest.php @@ -107,7 +107,7 @@ public function provideBanks() self::assertGreaterThan(self::$nodeNumber, self::$nodeCount); $banks = array(); - $backend = new PDODataBackend(new \PDO('mysql:host=localhost;dbname=test', 'test')); + $backend = new PDODataBackend(PDOFactory::makePDO()); $i = 0; foreach ($backend->getAllBanks() as $bank) { // only pick banks for this node. diff --git a/tests/DataConstraintTest.php b/tests/DataConstraintTest.php index c2171841..3290a1bc 100644 --- a/tests/DataConstraintTest.php +++ b/tests/DataConstraintTest.php @@ -18,7 +18,7 @@ class DataConstraintTest extends \PHPUnit_Framework_TestCase public static function setUpBeforeClass() { - self::$pdo = new \PDO('mysql:host=localhost;dbname=test', 'test'); + self::$pdo = PDOFactory::makePDO(); self::$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); self::$pdo->exec("DROP TABLE IF EXISTS bank"); diff --git a/tests/ValidatorTest.php b/tests/ValidatorTest.php index 8af4b41b..3ed3be39 100644 --- a/tests/ValidatorTest.php +++ b/tests/ValidatorTest.php @@ -57,7 +57,7 @@ protected function setUp() } $container = new FileDataBackendContainer(); - #self::$dataBackend = new PDODataBackend(new \PDO('mysql:host=localhost;dbname=test', 'test')); + #self::$dataBackend = new PDODataBackend(PDOFactory::makePDO()); self::$dataBackend = $container->getDataBackend(); diff --git a/tests/classes/PDOFactory.php b/tests/classes/PDOFactory.php new file mode 100644 index 00000000..4c4a9d5d --- /dev/null +++ b/tests/classes/PDOFactory.php @@ -0,0 +1,62 @@ + + * @see makePDO() + */ +class PDOFactory +{ + + /** + * Environment variable for a Data Source Name + */ + const ENV_DSN = "PDO_DSN"; + + /** + * Environment variable for the database user + */ + const ENV_USER = "PDO_USER"; + + /** + * Environment variable for the database password + */ + const ENV_PASSWORD = "PDO_PASSWORD"; + + /** + * Builds a PDO. + * + * If the environment doesn't provide the dsn, user and password + * it uses the default mysql test database. + * + * @return \PDO + */ + public static function makePDO() + { + $dsn = getenv(self::ENV_DSN); + if (! $dsn) { + $dsn = "mysql:host=localhost;dbname=test"; + + } + + $user = getenv(self::ENV_USER); + if (! $user) { + $user = "test"; + + } + + $password = getenv(self::ENV_PASSWORD); + if (! $password) { + $password = null; + + } + + $pdo = new \PDO($dsn, $user, $password); + + return $pdo; + } +} From 6395181a5cc5eb02d3451c8cfc710837f5b89949 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 22:22:05 +0200 Subject: [PATCH 130/303] travis PDO environment --- .travis.yml | 8 +++++++- tests/bin/test-install.php | 30 ++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100755 tests/bin/test-install.php diff --git a/.travis.yml b/.travis.yml index 20fb30de..9a01c0ec 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,9 +5,15 @@ php: - 5.4 - 5.3 +env: PDO_DSN="mysql:host=localhost;dbname=bav" PDO_USER=travis + before_script: - composer --prefer-source --dev install + - mysql -e 'create database bav;' + - php tests/bin/bav-install.php script: - phpunit tests/ValidatorTest.php - - phpunit tests/UpdatePlanTest.php \ No newline at end of file + - phpunit tests/UpdatePlanTest.php + - phpunit tests/BAVFacadeTest.php + - phpunit tests/AgencyQueryTest.php \ No newline at end of file diff --git a/tests/bin/test-install.php b/tests/bin/test-install.php new file mode 100755 index 00000000..57dbf2bd --- /dev/null +++ b/tests/bin/test-install.php @@ -0,0 +1,30 @@ +#!/bin/env php + + * @license GPL + */ + +namespace malkusch\bav; + +require_once __DIR__ . "/../../autoloader/autoloader.php"; + +try { + ConfigurationRegistry::getConfiguration()->setAutomaticInstallation(false); + $databack = ConfigurationRegistry::getConfiguration()->getDatabackendContainer()->getDataBackend(); + + // install file + $databack->install(); + echo "Bundesbank file downloaded.\n"; + + // install PDO + $pdoContainer = new PDODataBackendContainer(PDOFactory::makePDO()); + $pdoContainer->getDataBackend()->install(); + echo "PDO installed.\n"; + +} catch (DataBackendException $error) { + die("Installation failed: {$error->getMessage()}\n"); + +} \ No newline at end of file From fcc451c26f2b6c31e2a258e25767fa7c68081d28 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 22:24:20 +0200 Subject: [PATCH 131/303] fixed wrong script --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9a01c0ec..287a9a30 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,10 +10,10 @@ env: PDO_DSN="mysql:host=localhost;dbname=bav" PDO_USER=travis before_script: - composer --prefer-source --dev install - mysql -e 'create database bav;' - - php tests/bin/bav-install.php + - php tests/bin/test-install.php script: - phpunit tests/ValidatorTest.php - phpunit tests/UpdatePlanTest.php - phpunit tests/BAVFacadeTest.php - - phpunit tests/AgencyQueryTest.php \ No newline at end of file + - phpunit tests/AgencyQueryTest.php From 6330d4fb343f5575f2547803f1d60c6dc307c55c Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 22:38:16 +0200 Subject: [PATCH 132/303] fixing cs notices --- classes/dataBackend/file/FileDataBackend.php | 4 +++- classes/validator/validators/Validator68.php | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/classes/dataBackend/file/FileDataBackend.php b/classes/dataBackend/file/FileDataBackend.php index 2fc8a454..09a90e93 100644 --- a/classes/dataBackend/file/FileDataBackend.php +++ b/classes/dataBackend/file/FileDataBackend.php @@ -12,8 +12,10 @@ */ class FileDataBackend extends DataBackend { - + + // @codingStandardsIgnoreStart const DOWNLOAD_URI = "http://www.bundesbank.de/Redaktion/DE/Standardartikel/Aufgaben/Unbarer_Zahlungsverkehr/bankleitzahlen_download.html"; + // @codingStandardsIgnoreEnd /** * @var array diff --git a/classes/validator/validators/Validator68.php b/classes/validator/validators/Validator68.php index 5149986a..19e0d48d 100644 --- a/classes/validator/validators/Validator68.php +++ b/classes/validator/validators/Validator68.php @@ -50,7 +50,7 @@ public function __construct(Bank $bank) public function isValid($account) { - // Die Kontonummern [..] enthalten keine führenden Nullen. + // Die Kontonummern [..] enthalten keine führenden Nullen. $account = ltrim($account, "0"); switch (strlen($account)) { From a4336a339e7c538625164d44265c2f7beb43f886 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 22:45:20 +0200 Subject: [PATCH 133/303] CI with CS --- .travis.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 287a9a30..55a63798 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,13 +7,16 @@ php: env: PDO_DSN="mysql:host=localhost;dbname=bav" PDO_USER=travis +install: + - pyrus install pear/PHP_CodeSniffer + - phpenv rehash + before_script: - composer --prefer-source --dev install - mysql -e 'create database bav;' - php tests/bin/test-install.php script: - - phpunit tests/ValidatorTest.php - - phpunit tests/UpdatePlanTest.php - phpunit tests/BAVFacadeTest.php - phpunit tests/AgencyQueryTest.php + - phpcs --standard=PSR2 classes/ bin/ docs/example.php tests/classes/ tests/bin/ From 85f563d1fa5d653b319a1238c9f2705d10bdea00 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Fri, 30 May 2014 23:50:06 +0200 Subject: [PATCH 134/303] fixed the order of the tests to allow mocking of time() --- .travis.yml | 3 +-- tests/{UpdatePlanTest.php => 00UpdatePlanTest.php} | 4 ++++ tests/classes/TimeMock.php | 5 +++++ 3 files changed, 10 insertions(+), 2 deletions(-) rename tests/{UpdatePlanTest.php => 00UpdatePlanTest.php} (95%) diff --git a/.travis.yml b/.travis.yml index 55a63798..f4d31fff 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,6 +17,5 @@ before_script: - php tests/bin/test-install.php script: - - phpunit tests/BAVFacadeTest.php - - phpunit tests/AgencyQueryTest.php + - phpunit --exclude-group large tests/ - phpcs --standard=PSR2 classes/ bin/ docs/example.php tests/classes/ tests/bin/ diff --git a/tests/UpdatePlanTest.php b/tests/00UpdatePlanTest.php similarity index 95% rename from tests/UpdatePlanTest.php rename to tests/00UpdatePlanTest.php index 1a565aa8..2db5f7b2 100644 --- a/tests/UpdatePlanTest.php +++ b/tests/00UpdatePlanTest.php @@ -7,6 +7,10 @@ /** * Tests UpdatePlan * + * This dates uses a mock for time(). Therefore this test must run before + * any unmocked call to time(). + * + * @see TimeMock * @license GPL * @author Markus Malkusch */ diff --git a/tests/classes/TimeMock.php b/tests/classes/TimeMock.php index 1b5c5f9b..a7855a3b 100644 --- a/tests/classes/TimeMock.php +++ b/tests/classes/TimeMock.php @@ -4,6 +4,11 @@ /** * time() mock. + * + * This mock works only if the built-in wasn't used before. I.e. tests + * which want to mock time() have to run before other tests which might + * call somewhere in the stack an unmocked time(). If the built in was + * called before there is no chance to mock time() anymore. */ function time() { From 1429fa4f1c0a92ffcea1d3afab84b4c9b15d5545 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 31 May 2014 00:06:41 +0200 Subject: [PATCH 135/303] more informative exception --- classes/dataBackend/pdo/PDODataBackend.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/dataBackend/pdo/PDODataBackend.php b/classes/dataBackend/pdo/PDODataBackend.php index 6737852c..e263b4db 100644 --- a/classes/dataBackend/pdo/PDODataBackend.php +++ b/classes/dataBackend/pdo/PDODataBackend.php @@ -504,7 +504,7 @@ public function getMainAgency(Bank $bank) } catch (\PDOException $e) { $this->selectMainAgency->closeCursor(); - throw new DataBackendIOException(); + throw new DataBackendIOException($e->getMessage(), $e->getCode(), $e); } catch (MissingAttributesDataBackendIOException $e) { $this->selectMainAgency->closeCursor(); From c1c10df25aa965c163239fcb49c1311e493c7a1f Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 31 May 2014 00:26:45 +0200 Subject: [PATCH 136/303] fixed exception parameters and error handling in DDL statements --- .../exception/DataBackendException.php | 7 +++++ .../exception/DataBackendIOException.php | 7 +++++ classes/dataBackend/pdo/PDODataBackend.php | 27 ++++++++++++++++--- classes/exception/BAVException.php | 7 +++++ 4 files changed, 45 insertions(+), 3 deletions(-) diff --git a/classes/dataBackend/exception/DataBackendException.php b/classes/dataBackend/exception/DataBackendException.php index 2e0d4ca3..f6d4f331 100644 --- a/classes/dataBackend/exception/DataBackendException.php +++ b/classes/dataBackend/exception/DataBackendException.php @@ -28,4 +28,11 @@ class DataBackendException extends BAVException { + /** + * Constructs the exception + */ + public function __construct($message = "", $code = 0, Exception $previous = null) + { + parent::__construct($message, $code, $previous); + } } diff --git a/classes/dataBackend/exception/DataBackendIOException.php b/classes/dataBackend/exception/DataBackendIOException.php index 23359444..a61cdecb 100644 --- a/classes/dataBackend/exception/DataBackendIOException.php +++ b/classes/dataBackend/exception/DataBackendIOException.php @@ -28,4 +28,11 @@ class DataBackendIOException extends DataBackendException { + /** + * Constructs the exception + */ + public function __construct($message = "", $code = 0, Exception $previous = null) + { + parent::__construct($message, $code, $previous); + } } diff --git a/classes/dataBackend/pdo/PDODataBackend.php b/classes/dataBackend/pdo/PDODataBackend.php index e263b4db..92e5a2ff 100644 --- a/classes/dataBackend/pdo/PDODataBackend.php +++ b/classes/dataBackend/pdo/PDODataBackend.php @@ -283,6 +283,23 @@ public function update() } } + /** + * Query DDL statements and support error handling. + * + * @param String $query + * @see \PDO::exec() + * @throws DataBackendIOException + */ + private function execDDL($query) + { + $success = $this->pdo->exec($query); + if ($success === false) { + $errorInfo = $this->pdo->errorInfo(); + throw new DataBackendIOException(print_r($errorInfo, true)); + + } + } + /** * @see DataBackend::install() * @throws DataBackendIOException @@ -298,7 +315,7 @@ public function install() break; } - $this->pdo->exec( + $this->execDDL( "CREATE TABLE {$this->prefix}bank( id int primary key, validator char(2) NOT NULL, @@ -307,7 +324,8 @@ public function install() /* FOREIGN KEY (mainAgency) REFERENCES {$this->prefix}agency(id) */ )$createOptions" ); - $this->pdo->exec( + + $this->execDDL( "CREATE TABLE {$this->prefix}agency( id int primary key, name varchar(".FileParser::NAME_LENGTH.") NOT NULL, @@ -321,12 +339,14 @@ public function install() FOREIGN KEY (bank) REFERENCES {$this->prefix}bank(id) )$createOptions" ); - $this->pdo->exec( + + $this->execDDL( "CREATE TABLE {$this->prefix}meta( name char(32) NOT NULL primary key, value varchar(128) )$createOptions" ); + $insertMetaStmt = $this->pdo->prepare( "INSERT INTO {$this->prefix}meta SET name = :name, @@ -336,6 +356,7 @@ public function install() ":name" => self::META_MODIFICATION, ":value" => null )); + $this->update(); } catch (\PDOException $e) { diff --git a/classes/exception/BAVException.php b/classes/exception/BAVException.php index c0f8762b..792ba3ca 100644 --- a/classes/exception/BAVException.php +++ b/classes/exception/BAVException.php @@ -11,4 +11,11 @@ class BAVException extends \Exception { + /** + * Constructs the exception + */ + public function __construct($message = "", $code = 0, Exception $previous = null) + { + parent::__construct($message, $code, $previous); + } } From 754a52427fb1f44729e440aa9b4fa10c4848593a Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 31 May 2014 00:33:47 +0200 Subject: [PATCH 137/303] ignore composer files --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 876d4e6f..f78579ff 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ nbproject .settings .buildpath .project +vendor +composer.lock From 765630ed24dea953bca8f06ffb1930c4c03fd596 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 31 May 2014 00:43:27 +0200 Subject: [PATCH 138/303] fixed missing namespace --- classes/dataBackend/exception/DataBackendException.php | 2 +- classes/dataBackend/exception/DataBackendIOException.php | 2 +- classes/exception/BAVException.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/classes/dataBackend/exception/DataBackendException.php b/classes/dataBackend/exception/DataBackendException.php index f6d4f331..bd45f426 100644 --- a/classes/dataBackend/exception/DataBackendException.php +++ b/classes/dataBackend/exception/DataBackendException.php @@ -31,7 +31,7 @@ class DataBackendException extends BAVException /** * Constructs the exception */ - public function __construct($message = "", $code = 0, Exception $previous = null) + public function __construct($message = "", $code = 0, \Exception $previous = null) { parent::__construct($message, $code, $previous); } diff --git a/classes/dataBackend/exception/DataBackendIOException.php b/classes/dataBackend/exception/DataBackendIOException.php index a61cdecb..9397770f 100644 --- a/classes/dataBackend/exception/DataBackendIOException.php +++ b/classes/dataBackend/exception/DataBackendIOException.php @@ -31,7 +31,7 @@ class DataBackendIOException extends DataBackendException /** * Constructs the exception */ - public function __construct($message = "", $code = 0, Exception $previous = null) + public function __construct($message = "", $code = 0, \Exception $previous = null) { parent::__construct($message, $code, $previous); } diff --git a/classes/exception/BAVException.php b/classes/exception/BAVException.php index 792ba3ca..17118d69 100644 --- a/classes/exception/BAVException.php +++ b/classes/exception/BAVException.php @@ -14,7 +14,7 @@ class BAVException extends \Exception /** * Constructs the exception */ - public function __construct($message = "", $code = 0, Exception $previous = null) + public function __construct($message = "", $code = 0, \Exception $previous = null) { parent::__construct($message, $code, $previous); } From deaef512c02341b8e79d4c168171ac15f3aba853 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 31 May 2014 00:49:13 +0200 Subject: [PATCH 139/303] run tests separately --- .travis.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index f4d31fff..46355968 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,5 +17,12 @@ before_script: - php tests/bin/test-install.php script: - - phpunit --exclude-group large tests/ + #- phpunit --exclude-group large tests/ - phpcs --standard=PSR2 classes/ bin/ docs/example.php tests/classes/ tests/bin/ + - phpunit tests/AgencyQueryTest.php + - phpunit tests/BAVFacadeTest.php + - phpunit tests/ValidatorTest.php + - phpunit tests/00UpdatePlanTest.php + - phpunit tests/BackendContainerTest.php + - phpunit tests/DataConstraintTest.php + - phpunit tests/BackendTest.php From 26e329dd5e37ed4217c7f5d2aaae65d72bd309fa Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 31 May 2014 00:59:16 +0200 Subject: [PATCH 140/303] Revert "fixed missing namespace" This reverts commit 765630ed24dea953bca8f06ffb1930c4c03fd596. Revert "fixed exception parameters and error handling in DDL statements" This reverts commit c1c10df25aa965c163239fcb49c1311e493c7a1f. --- .../exception/DataBackendException.php | 7 ----- .../exception/DataBackendIOException.php | 7 ----- classes/dataBackend/pdo/PDODataBackend.php | 27 +++---------------- classes/exception/BAVException.php | 7 ----- 4 files changed, 3 insertions(+), 45 deletions(-) diff --git a/classes/dataBackend/exception/DataBackendException.php b/classes/dataBackend/exception/DataBackendException.php index bd45f426..2e0d4ca3 100644 --- a/classes/dataBackend/exception/DataBackendException.php +++ b/classes/dataBackend/exception/DataBackendException.php @@ -28,11 +28,4 @@ class DataBackendException extends BAVException { - /** - * Constructs the exception - */ - public function __construct($message = "", $code = 0, \Exception $previous = null) - { - parent::__construct($message, $code, $previous); - } } diff --git a/classes/dataBackend/exception/DataBackendIOException.php b/classes/dataBackend/exception/DataBackendIOException.php index 9397770f..23359444 100644 --- a/classes/dataBackend/exception/DataBackendIOException.php +++ b/classes/dataBackend/exception/DataBackendIOException.php @@ -28,11 +28,4 @@ class DataBackendIOException extends DataBackendException { - /** - * Constructs the exception - */ - public function __construct($message = "", $code = 0, \Exception $previous = null) - { - parent::__construct($message, $code, $previous); - } } diff --git a/classes/dataBackend/pdo/PDODataBackend.php b/classes/dataBackend/pdo/PDODataBackend.php index 92e5a2ff..e263b4db 100644 --- a/classes/dataBackend/pdo/PDODataBackend.php +++ b/classes/dataBackend/pdo/PDODataBackend.php @@ -283,23 +283,6 @@ public function update() } } - /** - * Query DDL statements and support error handling. - * - * @param String $query - * @see \PDO::exec() - * @throws DataBackendIOException - */ - private function execDDL($query) - { - $success = $this->pdo->exec($query); - if ($success === false) { - $errorInfo = $this->pdo->errorInfo(); - throw new DataBackendIOException(print_r($errorInfo, true)); - - } - } - /** * @see DataBackend::install() * @throws DataBackendIOException @@ -315,7 +298,7 @@ public function install() break; } - $this->execDDL( + $this->pdo->exec( "CREATE TABLE {$this->prefix}bank( id int primary key, validator char(2) NOT NULL, @@ -324,8 +307,7 @@ public function install() /* FOREIGN KEY (mainAgency) REFERENCES {$this->prefix}agency(id) */ )$createOptions" ); - - $this->execDDL( + $this->pdo->exec( "CREATE TABLE {$this->prefix}agency( id int primary key, name varchar(".FileParser::NAME_LENGTH.") NOT NULL, @@ -339,14 +321,12 @@ public function install() FOREIGN KEY (bank) REFERENCES {$this->prefix}bank(id) )$createOptions" ); - - $this->execDDL( + $this->pdo->exec( "CREATE TABLE {$this->prefix}meta( name char(32) NOT NULL primary key, value varchar(128) )$createOptions" ); - $insertMetaStmt = $this->pdo->prepare( "INSERT INTO {$this->prefix}meta SET name = :name, @@ -356,7 +336,6 @@ public function install() ":name" => self::META_MODIFICATION, ":value" => null )); - $this->update(); } catch (\PDOException $e) { diff --git a/classes/exception/BAVException.php b/classes/exception/BAVException.php index 17118d69..c0f8762b 100644 --- a/classes/exception/BAVException.php +++ b/classes/exception/BAVException.php @@ -11,11 +11,4 @@ class BAVException extends \Exception { - /** - * Constructs the exception - */ - public function __construct($message = "", $code = 0, \Exception $previous = null) - { - parent::__construct($message, $code, $previous); - } } From 968862d6c59b8f38b88a42712039694d6cc7140e Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 31 May 2014 01:01:08 +0200 Subject: [PATCH 141/303] no DB tests --- .travis.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 46355968..ca1ad0e2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,10 +19,10 @@ before_script: script: #- phpunit --exclude-group large tests/ - phpcs --standard=PSR2 classes/ bin/ docs/example.php tests/classes/ tests/bin/ - - phpunit tests/AgencyQueryTest.php + #- phpunit tests/AgencyQueryTest.php - phpunit tests/BAVFacadeTest.php - phpunit tests/ValidatorTest.php - phpunit tests/00UpdatePlanTest.php - - phpunit tests/BackendContainerTest.php - - phpunit tests/DataConstraintTest.php - - phpunit tests/BackendTest.php + #- phpunit tests/BackendContainerTest.php + #- phpunit tests/DataConstraintTest.php + #- phpunit tests/BackendTest.php From e3237a2bca0a0b8e84da50ad0b815580652da624 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 31 May 2014 01:08:49 +0200 Subject: [PATCH 142/303] run only backendtest --- .travis.yml | 8 ++++---- classes/dataBackend/pdo/PDODataBackend.php | 2 +- tests/classes/PDOFactory.php | 1 + 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index ca1ad0e2..debec157 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,9 +20,9 @@ script: #- phpunit --exclude-group large tests/ - phpcs --standard=PSR2 classes/ bin/ docs/example.php tests/classes/ tests/bin/ #- phpunit tests/AgencyQueryTest.php - - phpunit tests/BAVFacadeTest.php - - phpunit tests/ValidatorTest.php - - phpunit tests/00UpdatePlanTest.php + #- phpunit tests/BAVFacadeTest.php + #- phpunit tests/ValidatorTest.php + #- phpunit tests/00UpdatePlanTest.php #- phpunit tests/BackendContainerTest.php #- phpunit tests/DataConstraintTest.php - #- phpunit tests/BackendTest.php + - phpunit tests/BackendTest.php diff --git a/classes/dataBackend/pdo/PDODataBackend.php b/classes/dataBackend/pdo/PDODataBackend.php index e263b4db..dd7d955d 100644 --- a/classes/dataBackend/pdo/PDODataBackend.php +++ b/classes/dataBackend/pdo/PDODataBackend.php @@ -535,7 +535,7 @@ public function getAgenciesForBank(Bank $bank) } catch (\PDOException $e) { $this->selectAgencies->closeCursor(); - throw new DataBackendIOException(); + throw new DataBackendIOException($e->getMessage(), 0, $e); } catch (MissingAttributesDataBackendIOException $e) { $this->selectAgencies->closeCursor(); diff --git a/tests/classes/PDOFactory.php b/tests/classes/PDOFactory.php index 4c4a9d5d..31db47dd 100644 --- a/tests/classes/PDOFactory.php +++ b/tests/classes/PDOFactory.php @@ -56,6 +56,7 @@ public static function makePDO() } $pdo = new \PDO($dsn, $user, $password); + $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); return $pdo; } From 8fda6ef7513e0c640b3b81ee65d9a02ba39d2971 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 31 May 2014 01:13:13 +0200 Subject: [PATCH 143/303] fixed travis.yml --- .travis.yml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index debec157..4b2a7090 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,12 +17,7 @@ before_script: - php tests/bin/test-install.php script: - #- phpunit --exclude-group large tests/ + # - phpunit --exclude-group large tests/ - phpcs --standard=PSR2 classes/ bin/ docs/example.php tests/classes/ tests/bin/ - #- phpunit tests/AgencyQueryTest.php - #- phpunit tests/BAVFacadeTest.php - #- phpunit tests/ValidatorTest.php - #- phpunit tests/00UpdatePlanTest.php - #- phpunit tests/BackendContainerTest.php - #- phpunit tests/DataConstraintTest.php - - phpunit tests/BackendTest.php + - phpunit tests/BackendTest.php + From 75fa4788de8a6c5450eb021e911f247c708daffc Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 31 May 2014 01:27:30 +0200 Subject: [PATCH 144/303] debugging commit for this annoying ci environmane --- classes/dataBackend/pdo/PDODataBackend.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/classes/dataBackend/pdo/PDODataBackend.php b/classes/dataBackend/pdo/PDODataBackend.php index dd7d955d..5f159c83 100644 --- a/classes/dataBackend/pdo/PDODataBackend.php +++ b/classes/dataBackend/pdo/PDODataBackend.php @@ -504,7 +504,11 @@ public function getMainAgency(Bank $bank) } catch (\PDOException $e) { $this->selectMainAgency->closeCursor(); - throw new DataBackendIOException($e->getMessage(), $e->getCode(), $e); + var_dump( + $e->getMessage(), + $e->getCode() + ); + throw new DataBackendIOException("XXX", 0, $e); } catch (MissingAttributesDataBackendIOException $e) { $this->selectMainAgency->closeCursor(); From e4345561412bbcec1477a99343527bfdc073f72f Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 31 May 2014 01:36:58 +0200 Subject: [PATCH 145/303] remove var_dump --- classes/dataBackend/pdo/PDODataBackend.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/classes/dataBackend/pdo/PDODataBackend.php b/classes/dataBackend/pdo/PDODataBackend.php index 5f159c83..3f1b48e3 100644 --- a/classes/dataBackend/pdo/PDODataBackend.php +++ b/classes/dataBackend/pdo/PDODataBackend.php @@ -504,11 +504,7 @@ public function getMainAgency(Bank $bank) } catch (\PDOException $e) { $this->selectMainAgency->closeCursor(); - var_dump( - $e->getMessage(), - $e->getCode() - ); - throw new DataBackendIOException("XXX", 0, $e); + throw new DataBackendIOException($e->getMessage(), 0, $e); } catch (MissingAttributesDataBackendIOException $e) { $this->selectMainAgency->closeCursor(); From cad52c0c32e49e971e592a6377f93731c4cf87ff Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 31 May 2014 01:47:40 +0200 Subject: [PATCH 146/303] exclude BackendTest from ci as mysql seems to go away --- .travis.yml | 3 +-- tests/BackendTest.php | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4b2a7090..43cab93c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,7 +17,6 @@ before_script: - php tests/bin/test-install.php script: - # - phpunit --exclude-group large tests/ + - phpunit --exclude-group large tests/ - phpcs --standard=PSR2 classes/ bin/ docs/example.php tests/classes/ tests/bin/ - - phpunit tests/BackendTest.php diff --git a/tests/BackendTest.php b/tests/BackendTest.php index 3523e53c..ef5dfa24 100644 --- a/tests/BackendTest.php +++ b/tests/BackendTest.php @@ -10,6 +10,7 @@ * * @license GPL * @author Markus Malkusch + * @large */ class BackendTest extends \PHPUnit_Framework_TestCase { From 8483dafb5c0d73077f2a6e522abacc4ce5ad7d9b Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 31 May 2014 02:07:15 +0200 Subject: [PATCH 147/303] get mysql info --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 43cab93c..009d9277 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,6 +15,7 @@ before_script: - composer --prefer-source --dev install - mysql -e 'create database bav;' - php tests/bin/test-install.php + - echo 'show variables where Variable_name IN ("max_connections", "max_delayed_threads", "wait_timeout")' | mysql -utravis script: - phpunit --exclude-group large tests/ From 18ae66c0432bf22ee623fbb0d854eea5b8aa7f78 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 31 May 2014 02:24:02 +0200 Subject: [PATCH 148/303] try again the longer test with a tuned mysql --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 009d9277..2dbccc65 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,9 +15,11 @@ before_script: - composer --prefer-source --dev install - mysql -e 'create database bav;' - php tests/bin/test-install.php + - echo 'SET @@GLOBAL.wait_timeout=600' | mysql -uroot - echo 'show variables where Variable_name IN ("max_connections", "max_delayed_threads", "wait_timeout")' | mysql -utravis script: - phpunit --exclude-group large tests/ - phpcs --standard=PSR2 classes/ bin/ docs/example.php tests/classes/ tests/bin/ + - phpunit tests/BackendTest.php From b2db2603f6c62bcbfdc766d129dc9b9b625eb57c Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 31 May 2014 02:39:01 +0200 Subject: [PATCH 149/303] run all tests in the directory --- .travis.yml | 2 -- tests/BackendTest.php | 1 - 2 files changed, 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2dbccc65..59b4b3a4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,10 +16,8 @@ before_script: - mysql -e 'create database bav;' - php tests/bin/test-install.php - echo 'SET @@GLOBAL.wait_timeout=600' | mysql -uroot - - echo 'show variables where Variable_name IN ("max_connections", "max_delayed_threads", "wait_timeout")' | mysql -utravis script: - phpunit --exclude-group large tests/ - phpcs --standard=PSR2 classes/ bin/ docs/example.php tests/classes/ tests/bin/ - - phpunit tests/BackendTest.php diff --git a/tests/BackendTest.php b/tests/BackendTest.php index ef5dfa24..3523e53c 100644 --- a/tests/BackendTest.php +++ b/tests/BackendTest.php @@ -10,7 +10,6 @@ * * @license GPL * @author Markus Malkusch - * @large */ class BackendTest extends \PHPUnit_Framework_TestCase { From 6299a0aeb8e82790c34a738ba13809c3558382c3 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 31 May 2014 11:35:17 +0200 Subject: [PATCH 150/303] added FileUtil --- autoloader/index/0.php | 3 + autoloader/index/1.php | 9 -- classes/configuration/Configuration.php | 28 ++++++ classes/dataBackend/file/FileDataBackend.php | 45 ++-------- classes/dataBackend/file/FileUtil.php | 89 +++++++++++++++++++ .../file/exception/FileException.php | 14 +++ .../exception/NoTempDirectoryException.php | 14 +++ classes/dataBackend/pdo/PDODataBackend.php | 3 +- composer.json | 2 +- docs/changelog.txt | 2 + tests/00UpdatePlanTest.php | 9 +- tests/BackendContainerTest.php | 6 +- tests/BackendTest.php | 4 +- tests/FileUtilTest.php | 50 +++++++++++ 14 files changed, 225 insertions(+), 53 deletions(-) create mode 100644 classes/dataBackend/file/FileUtil.php create mode 100644 classes/dataBackend/file/exception/FileException.php create mode 100644 classes/dataBackend/file/exception/NoTempDirectoryException.php create mode 100644 tests/FileUtilTest.php diff --git a/autoloader/index/0.php b/autoloader/index/0.php index 968d5b07..89416fbb 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -18,6 +18,7 @@ 'malkusch\bav\bav' => '../classes/BAV.php', 'malkusch\bav\bank' => '../classes/bank/Bank.php', 'malkusch\bav\agency' => '../classes/bank/Agency.php', + 'malkusch\bav\fileutil' => '../classes/dataBackend/file/FileUtil.php', 'malkusch\bav\encoding' => '../classes/encoding/Encoding.php', 'malkusch\bav\validator' => '../classes/validator/Validator.php', 'malkusch\bav\fileparser' => '../classes/dataBackend/file/fileParser/FileParser.php', @@ -182,6 +183,7 @@ 'malkusch\bav\validatorb9b' => '../classes/validator/validators/ValidatorB9b.php', 'malkusch\bav\validatorc1b' => '../classes/validator/validators/ValidatorC1b.php', 'malkusch\bav\configuration' => '../classes/configuration/Configuration.php', + 'malkusch\bav\fileexception' => '../classes/dataBackend/file/exception/FileException.php', 'malkusch\bav\logupdateplan' => '../classes/dataBackend/update/LogUpdatePlan.php', 'malkusch\bav\iconvencoding' => '../classes/encoding/IconvEncoding.php', 'malkusch\bav\pdodatabackend' => '../classes/dataBackend/pdo/PDODataBackend.php', @@ -207,6 +209,7 @@ 'malkusch\bav\validatoreserexception' => '../classes/validator/exception/ValidatorESERException.php', 'malkusch\bav\pdodatabackendcontainer' => '../classes/dataBackend/pdo/PDODataBackendContainer.php', 'malkusch\bav\filedatabackendcontainer' => '../classes/dataBackend/file/FileDataBackendContainer.php', + 'malkusch\bav\notempdirectoryexception' => '../classes/dataBackend/file/exception/NoTempDirectoryException.php', 'malkusch\bav\fileparsercontextexception' => '../classes/dataBackend/file/fileParser/exception/FileParserContextException.php', 'malkusch\bav\weightediterationvalidator' => '../classes/validator/WeightedIterationValidator.php', 'malkusch\bav\validatornotexistsexception' => '../classes/validator/exception/ValidatorNotExistsException.php', diff --git a/autoloader/index/1.php b/autoloader/index/1.php index 73f75383..06d23b42 100644 --- a/autoloader/index/1.php +++ b/autoloader/index/1.php @@ -17,24 +17,15 @@ return array( 'malkusch\bav\testapi' => '../tests/classes/testAPI/TestAPI.php', 'malkusch\bav\timemock' => '../tests/classes/TimeMock.php', - 'malkusch\bav\issuetest' => '../tests/IssueTest.php', 'malkusch\bav\classfile' => '../tests/classes/class/ClassFile.php', 'malkusch\bav\pdofactory' => '../tests/classes/PDOFactory.php', 'malkusch\bav\bavtestapi' => '../tests/classes/testAPI/BAVTestAPI.php', - 'malkusch\bav\backendtest' => '../tests/BackendTest.php', - 'malkusch\bav\bavfacadetest' => '../tests/BAVFacadeTest.php', - 'malkusch\bav\validatortest' => '../tests/ValidatorTest.php', 'malkusch\bav\testapiresult' => '../tests/classes/testAPI/TestAPIResult.php', - 'malkusch\bav\updateplantest' => '../tests/UpdatePlanTest.php', - 'malkusch\bav\agencyquerytest' => '../tests/AgencyQueryTest.php', - 'malkusch\bav\crossprojecttest' => '../tests/CrossProjectTest.php', 'malkusch\bav\testapiexception' => '../tests/classes/testAPI/exception/TestAPIException.php', 'malkusch\bav\kontochecktestapi' => '../tests/classes/testAPI/KontocheckTestAPI.php', - 'malkusch\bav\dataconstrainttest' => '../tests/DataConstraintTest.php', 'malkusch\bav\classfileexception' => '../tests/classes/class/exception/ClassFileException.php', 'malkusch\bav\ktoblzchecktestapi' => '../tests/classes/testAPI/KtoblzcheckTestAPI.php', 'malkusch\bav\testapierrorresult' => '../tests/classes/testAPI/TestAPIErrorResult.php', - 'malkusch\bav\backendcontainertest' => '../tests/BackendContainerTest.php', 'malkusch\bav\classfileioexception' => '../tests/classes/class/exception/ClassFileIOException.php', 'malkusch\bav\missingclassexception' => '../tests/classes/class/exception/MissingClassException.php', 'malkusch\bav\validationtestapiexception' => '../tests/classes/testAPI/exception/ValidationTestAPIException.php', diff --git a/classes/configuration/Configuration.php b/classes/configuration/Configuration.php index 1183d853..33a8cc57 100644 --- a/classes/configuration/Configuration.php +++ b/classes/configuration/Configuration.php @@ -31,6 +31,11 @@ class Configuration */ private $updatePlan; + /** + * @var string + */ + private $tempDirectory; + /** * Sets the update plan. * @@ -110,4 +115,27 @@ public function getEncoding() { return $this->encoding; } + + /** + * Sets the temporary directory. + * + * If you set a temporary directory BAV will use this for temporary files. + * This option is optional. If it is not set the system's path will be used. + * + * @param string $tempDirectory + */ + public function setTempDirectory($tempDirectory) + { + $this->tempDirectory = $tempDirectory; + } + + /** + * Returns the optional configured temporary directory. + * + * @return string + */ + public function getTempDirectory() + { + return $this->tempDirectory; + } } diff --git a/classes/dataBackend/file/FileDataBackend.php b/classes/dataBackend/file/FileDataBackend.php index 09a90e93..a2b33f20 100644 --- a/classes/dataBackend/file/FileDataBackend.php +++ b/classes/dataBackend/file/FileDataBackend.php @@ -27,12 +27,18 @@ class FileDataBackend extends DataBackend */ private $parser; + /** + * @var FileUtil + */ + private $fileUtil; + /** * @param String $file The data source */ public function __construct($file = null) { $this->parser = new FileParser($file); + $this->fileUtil = new FileUtil(); } /** @@ -75,7 +81,7 @@ private function sortFile($file) asort($index); //write a sorted bank file atomically - $temp = tempnam(self::getTempdir(), ""); + $temp = tempnam($this->fileUtil->getTempDirectory(), ""); $tempH = fopen($temp, 'w'); if (! ($temp && $tempH)) { throw new DataBackendIOException("Could not open a temporary file."); @@ -167,7 +173,7 @@ public function update() } - $temp = tempnam(self::getTempdir(), ""); + $temp = tempnam($this->fileUtil->getTempDirectory(), ""); $tempH = fopen($temp, 'w'); if (! ($temp && $tempH)) { throw new DataBackendIOException(); @@ -207,7 +213,7 @@ public function update() curl_close($ch); if ($isZIP) { - $file = tempnam(self::getTempdir(), ""); + $file = tempnam($this->fileUtil->getTempDirectory(), ""); if (! $file) { unlink($temp); throw new DataBackendIOException(); @@ -491,39 +497,6 @@ private function defineContextInterval($bankID) return $context; } - /** - * @throws DataBackendIOException - * @return String a writable directory for temporary files - */ - public static function getTempdir() - { - $tmpDirs = array( - function_exists('sys_get_temp_dir') ? sys_get_temp_dir() : false, - empty($_ENV['TMP']) ? false : $_ENV['TMP'], - empty($_ENV['TMPDIR']) ? false : $_ENV['TMPDIR'], - empty($_ENV['TEMP']) ? false : $_ENV['TEMP'], - ini_get('upload_tmp_dir'), - '/tmp' - ); - - foreach ($tmpDirs as $tmpDir) { - if ($tmpDir && is_writable($tmpDir)) { - return realpath($tmpDir); - - } - - } - - $tempfile = tempnam(uniqid(mt_rand(), true), ''); - if (file_exists($tempfile)) { - unlink($tempfile); - return realpath(dirname($tempfile)); - - } - - throw new DataBackendIOException(); - } - /** * Returns the timestamp of the last update. * diff --git a/classes/dataBackend/file/FileUtil.php b/classes/dataBackend/file/FileUtil.php new file mode 100644 index 00000000..992ec737 --- /dev/null +++ b/classes/dataBackend/file/FileUtil.php @@ -0,0 +1,89 @@ + + * @license GPL + */ +class FileUtil +{ + + /** + * @var Configuration + */ + private $configuration; + + /** + * @var string + */ + private $cachedTempDirectory = null; + + /** + * Inject the configuration. + */ + public function __construct(Configuration $configuration = null) + { + if (is_null($configuration)) { + $configuration = ConfigurationRegistry::getConfiguration(); + + } + $this->configuration = $configuration; + } + + /** + * Returns a writable directory for temporary files + * + * @return String + * @see Configuration::setTempDirectory() + * @throws NoTempDirectoryException + */ + public function getTempDirectory() + { + if (! is_null($this->configuration->getTempDirectory())) { + return $this->configuration->getTempDirectory(); + + } + + if (is_null($this->cachedTempDirectory)) { + $this->cachedTempDirectory = $this->findTempDirectory(); + + } + return $this->cachedTempDirectory; + } + + /** + * @return string + * @throws NoTempDirectoryException + */ + private function findTempDirectory() + { + $tmpDirs = array( + function_exists('sys_get_temp_dir') ? sys_get_temp_dir() : false, + empty($_ENV['TMP']) ? false : $_ENV['TMP'], + empty($_ENV['TMPDIR']) ? false : $_ENV['TMPDIR'], + empty($_ENV['TEMP']) ? false : $_ENV['TEMP'], + ini_get('upload_tmp_dir'), + '/tmp', + __DIR__ . "/../../../data/" + ); + + foreach ($tmpDirs as $tmpDir) { + if ($tmpDir && is_writable($tmpDir)) { + return realpath($tmpDir); + + } + } + + $tempfile = tempnam(uniqid(mt_rand(), true), ''); + if (file_exists($tempfile)) { + unlink($tempfile); + return realpath(dirname($tempfile)); + + } + + throw new NoTempDirectoryException(); + } +} diff --git a/classes/dataBackend/file/exception/FileException.php b/classes/dataBackend/file/exception/FileException.php new file mode 100644 index 00000000..07ba7613 --- /dev/null +++ b/classes/dataBackend/file/exception/FileException.php @@ -0,0 +1,14 @@ + + * @license GPL + */ +class FileException extends BAVException +{ + +} diff --git a/classes/dataBackend/file/exception/NoTempDirectoryException.php b/classes/dataBackend/file/exception/NoTempDirectoryException.php new file mode 100644 index 00000000..e379aef5 --- /dev/null +++ b/classes/dataBackend/file/exception/NoTempDirectoryException.php @@ -0,0 +1,14 @@ + + * @license GPL + */ +class NoTempDirectoryException extends FileException +{ + +} diff --git a/classes/dataBackend/pdo/PDODataBackend.php b/classes/dataBackend/pdo/PDODataBackend.php index 3f1b48e3..3441bbe2 100644 --- a/classes/dataBackend/pdo/PDODataBackend.php +++ b/classes/dataBackend/pdo/PDODataBackend.php @@ -194,7 +194,8 @@ public function update() { $useTA = false; try { - $fileBackend = new FileDataBackend(tempnam(FileDataBackend::getTempdir(), 'bav')); + $fileUtil = new fileUtil(); + $fileBackend = new FileDataBackend(tempnam($fileUtil->getTempDirectory(), 'bav')); $fileBackend->install(); $insertBank = $this->pdo->prepare( diff --git a/composer.json b/composer.json index 4a72aa76..197823d1 100644 --- a/composer.json +++ b/composer.json @@ -26,7 +26,7 @@ "lib-iconv": "Enables UTF-8 support" }, "require-dev": { - "phpunit/phpunit": ">=3.6" + "phpunit/phpunit": ">=4" }, "archive": { "exclude": ["/tests/"] diff --git a/docs/changelog.txt b/docs/changelog.txt index 5fd59c24..100a5004 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -17,6 +17,8 @@ Version 1.0.0 - not yet released - renamed all classes which where not conform to PSR2 - Fixed Validators 68, 78, 59, 58 + + - Moved FileDatabackend::getTempDir() into new FileUtil Version 0.28 - May 26, 2014 diff --git a/tests/00UpdatePlanTest.php b/tests/00UpdatePlanTest.php index 2db5f7b2..ce296e5c 100644 --- a/tests/00UpdatePlanTest.php +++ b/tests/00UpdatePlanTest.php @@ -51,7 +51,8 @@ public function provideTestIsOutdated() */ public function testIsOutdated($mtime, $time, $expectedIsOutdated) { - $file = tempnam(FileDataBackend::getTempdir(), 'bavtest'); + $fileUtil = new FileUtil(); + $file = tempnam($fileUtil->getTempDirectory(), 'bavtest'); touch($file, strtotime($mtime)); $backend = new FileDataBackend($file); @@ -78,7 +79,8 @@ public function testLogUpdatePlan() */ public function testAutomaticUpdatePlanNotice() { - $file = tempnam(FileDataBackend::getTempdir(), 'bavtest'); + $fileUtil = new FileUtil(); + $file = tempnam($fileUtil->getTempDirectory(), 'bavtest'); $updatePlan = new AutomaticUpdatePlan(); $updatePlan->perform(new FileDataBackend($file)); } @@ -89,7 +91,8 @@ public function testAutomaticUpdatePlanNotice() */ public function testAutomaticUpdatePlan() { - $file = tempnam(FileDataBackend::getTempdir(), 'bavtest'); + $fileUtil = new FileUtil(); + $file = tempnam($fileUtil->getTempDirectory(), 'bavtest'); touch($file, strtotime("-1 year")); $backend = new FileDataBackend($file); diff --git a/tests/BackendContainerTest.php b/tests/BackendContainerTest.php index 5e2a14f9..8def1d07 100644 --- a/tests/BackendContainerTest.php +++ b/tests/BackendContainerTest.php @@ -19,7 +19,8 @@ class BackendContainerTest extends \PHPUnit_Framework_TestCase public function testAutomaticInstallation() { ConfigurationRegistry::getConfiguration()->setUpdatePlan(null); - $container = new FileDataBackendContainer(tempnam(FileDataBackend::getTempdir(), 'bavtest')); + $fileUtil = new FileUtil(); + $container = new FileDataBackendContainer(tempnam($fileUtil->getTempDirectory(), 'bavtest')); $this->assertTrue(ConfigurationRegistry::getConfiguration()->isAutomaticInstallation()); @@ -38,7 +39,8 @@ public function testAutomaticUpdate() $updatePlan->setNotice(false); ConfigurationRegistry::getConfiguration()->setUpdatePlan($updatePlan); - $container = new FileDataBackendContainer(tempnam(FileDataBackend::getTempdir(), 'bavtest')); + $fileUtil = new FileUtil(); + $container = new FileDataBackendContainer(tempnam($fileUtil->getTempDirectory(), 'bavtest')); $backend = $container->getDataBackend(); touch($backend->getFile(), strtotime("-1 year")); diff --git a/tests/BackendTest.php b/tests/BackendTest.php index 3523e53c..3a3ee35a 100644 --- a/tests/BackendTest.php +++ b/tests/BackendTest.php @@ -60,7 +60,9 @@ public function provideInstallationBackends() $pdoBackend = new PDODataBackend(PDOFactory::makePDO(), 'bavtest_'); $this->setupInstallationBackends($pdoBackend); - $fileBackend = new FileDataBackend(tempnam(FileDataBackend::getTempdir(), 'bavtest')); + $fileUtil = new FileUtil(); + + $fileBackend = new FileDataBackend(tempnam($fileUtil->getTempDirectory(), 'bavtest')); $this->setupInstallationBackends($fileBackend); return array( diff --git a/tests/FileUtilTest.php b/tests/FileUtilTest.php new file mode 100644 index 00000000..7d491090 --- /dev/null +++ b/tests/FileUtilTest.php @@ -0,0 +1,50 @@ + + * @license GPL + */ +class FileUtilTest extends \PHPUnit_Framework_TestCase +{ + + /** + * Tests a user configured temporary directory + */ + public function testSetConfiguredTempDirectory() + { + $directory = "/root"; + + $configuration = new DefaultConfiguration(); + $configuration->setTempDirectory($directory); + + $fileUtil = new FileUtil($configuration); + $this->assertEquals($directory, $fileUtil->getTempDirectory()); + } + + /** + * Tests getting a writable directory. + */ + public function testGetWritableTempDirectory() + { + $fileUtil = new FileUtil(); + $this->assertTrue(is_writable($fileUtil->getTempDirectory())); + } + + /** + * Tests getting /tmp. + * + * @requires OS Linux + */ + public function testLinuxTempDirectory() + { + $fileUtil = new FileUtil(); + $this->assertEquals("/tmp", $fileUtil->getTempDirectory()); + } +} From f0f55c3d41a55470075e0c61a09256371d317266 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 31 May 2014 12:41:45 +0200 Subject: [PATCH 151/303] installation lock --- autoloader/index/0.php | 2 + classes/dataBackend/DataBackendContainer.php | 14 ++- classes/util/Lock.php | 110 +++++++++++++++++++ classes/util/exception/LockException.php | 14 +++ 4 files changed, 137 insertions(+), 3 deletions(-) create mode 100644 classes/util/Lock.php create mode 100644 classes/util/exception/LockException.php diff --git a/autoloader/index/0.php b/autoloader/index/0.php index 89416fbb..a4669657 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -17,6 +17,7 @@ return array( 'malkusch\bav\bav' => '../classes/BAV.php', 'malkusch\bav\bank' => '../classes/bank/Bank.php', + 'malkusch\bav\lock' => '../classes/util/Lock.php', 'malkusch\bav\agency' => '../classes/bank/Agency.php', 'malkusch\bav\fileutil' => '../classes/dataBackend/file/FileUtil.php', 'malkusch\bav\encoding' => '../classes/encoding/Encoding.php', @@ -186,6 +187,7 @@ 'malkusch\bav\fileexception' => '../classes/dataBackend/file/exception/FileException.php', 'malkusch\bav\logupdateplan' => '../classes/dataBackend/update/LogUpdatePlan.php', 'malkusch\bav\iconvencoding' => '../classes/encoding/IconvEncoding.php', + 'malkusch\bav\lockexception' => '../classes/util/exception/LockException.php', 'malkusch\bav\pdodatabackend' => '../classes/dataBackend/pdo/PDODataBackend.php', 'malkusch\bav\validatorchain' => '../classes/validator/ValidatorChain.php', 'malkusch\bav\agencyexception' => '../classes/bank/exception/AgencyException.php', diff --git a/classes/dataBackend/DataBackendContainer.php b/classes/dataBackend/DataBackendContainer.php index 3b28db2f..c0492154 100644 --- a/classes/dataBackend/DataBackendContainer.php +++ b/classes/dataBackend/DataBackendContainer.php @@ -12,6 +12,11 @@ abstract class DataBackendContainer { + /** + * @var string Name of the installation lock file + */ + const INSTALL_LOCK = "bav_install.lock"; + /** * @var DataBackend */ @@ -41,9 +46,12 @@ private function buildDataBackend() // Installation if ($configuration->isAutomaticInstallation() && ! $backend->isInstalled()) { - // TODO Lock concurrent installations - $backend->install(); - + $lock = new Lock(self::INSTALL_LOCK); + $lock->executeOnce( + function() use ($backend) { + $backend->install(); + } + ); } // Update hook diff --git a/classes/util/Lock.php b/classes/util/Lock.php new file mode 100644 index 00000000..def38b70 --- /dev/null +++ b/classes/util/Lock.php @@ -0,0 +1,110 @@ + + * @license GPL + * @see DataBackend + */ +class Lock +{ + + /** + * @var string + */ + private $name; + + /** + * @var resource + */ + private $handle; + + /** + * @param string $name lock name + * @throws LockException + */ + public function __construct($name) + { + $this->name = $name; + + $fileUtil = new FileUtil(); + $lockFile = $fileUtil->getTempDirectory() . DIRECTORY_SEPARATOR . $name; + + $this->handle = fopen($lockFile, "w"); + if (! is_resource($this->handle)) { + throw new LockException("Could not open lock file $lockFile."); + + } + } + + /** + * Get a lock and execute a task. + * + * If more processes call this method only the process which aquired the lock + * will execute the task. The others will block but won't execute the task. + * + * @throws Exception + */ + public function executeOnce(\Closure $task) + { + $isBlocked = $this->checkedLock(); + $error = null; + try { + if (! $isBlocked) { + call_user_func($task); + + } + } catch (\Exception $e) { + $error = $e; + + } + $this->unlock(); + if (! is_null($error)) { + throw $error; + + } + } + + /** + * Blocking lock + * + * @throws LockException + */ + public function lock() + { + if (! flock($this->handle, LOCK_EX)) { + throw new LockException("flock() failed for {$this->name}."); + + } + } + + /** + * Blocking lock which returns if the lock did block. + * + * @throws LockException + * @return bool true if the lock was blocked. + */ + public function checkedLock() + { + $isLocked = ! flock($this->handle, LOCK_EX | LOCK_NB); + if ($isLocked) { + $this->lock(); + + } + return $isLocked; + } + + /** + * @throws LockException + */ + public function unlock() + { + if (! flock($this->handle, LOCK_UN)) { + throw new LockException("flock() failed releasing {$this->name}."); + + } + } +} \ No newline at end of file diff --git a/classes/util/exception/LockException.php b/classes/util/exception/LockException.php new file mode 100644 index 00000000..b86aabc0 --- /dev/null +++ b/classes/util/exception/LockException.php @@ -0,0 +1,14 @@ + + * @license GPL + */ +class LockException extends BAVException +{ + +} From b982cfbd3b6330d1baa8cb23c308b7efd0cb67fd Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 31 May 2014 12:43:06 +0200 Subject: [PATCH 152/303] PSR2 compatible --- classes/dataBackend/DataBackendContainer.php | 2 +- classes/util/Lock.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/dataBackend/DataBackendContainer.php b/classes/dataBackend/DataBackendContainer.php index c0492154..11d3d268 100644 --- a/classes/dataBackend/DataBackendContainer.php +++ b/classes/dataBackend/DataBackendContainer.php @@ -48,7 +48,7 @@ private function buildDataBackend() if ($configuration->isAutomaticInstallation() && ! $backend->isInstalled()) { $lock = new Lock(self::INSTALL_LOCK); $lock->executeOnce( - function() use ($backend) { + function () use ($backend) { $backend->install(); } ); diff --git a/classes/util/Lock.php b/classes/util/Lock.php index def38b70..54d8e336 100644 --- a/classes/util/Lock.php +++ b/classes/util/Lock.php @@ -107,4 +107,4 @@ public function unlock() } } -} \ No newline at end of file +} From 88ea1dcd54e0647ec07a94adb0a510af883a0365 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 31 May 2014 13:12:35 +0200 Subject: [PATCH 153/303] non blocking update lock --- .../update/AutomaticUpdatePlan.php | 20 +++++++--- classes/util/Lock.php | 39 +++++++++++++++++++ 2 files changed, 54 insertions(+), 5 deletions(-) diff --git a/classes/dataBackend/update/AutomaticUpdatePlan.php b/classes/dataBackend/update/AutomaticUpdatePlan.php index 7ec6b426..4bb24a6f 100644 --- a/classes/dataBackend/update/AutomaticUpdatePlan.php +++ b/classes/dataBackend/update/AutomaticUpdatePlan.php @@ -11,6 +11,11 @@ class AutomaticUpdatePlan extends UpdatePlan { + /** + * @var string Name of the update lock file + */ + const UPDATE_LOCK = "bav_update.lock"; + /** * @var bool */ @@ -33,11 +38,16 @@ public function setNotice($notice) */ public function perform(DataBackend $backend) { - // TODO lock concurrent updates - $backend->update(); - if ($this->notice) { - trigger_error("bav's bank data was updated sucessfully.", E_USER_NOTICE); + $isNotice = $this->notice; + $lock = new Lock(self::UPDATE_LOCK); + $lock->nonblockingExecuteOnce( + function () use ($backend, $isNotice) { + $backend->update(); + if ($isNotice) { + trigger_error("bav's bank data was updated sucessfully.", E_USER_NOTICE); - } + } + } + ); } } diff --git a/classes/util/Lock.php b/classes/util/Lock.php index 54d8e336..85a247b6 100644 --- a/classes/util/Lock.php +++ b/classes/util/Lock.php @@ -68,6 +68,35 @@ public function executeOnce(\Closure $task) } } + /** + * Get a lock and execute a task only if the lock was aquired. + * + * If more processes call this method only the process which aquired the lock + * will execute the task. The others will continue execution. + * + * @throws Exception + */ + public function nonblockingExecuteOnce(\Closure $task) + { + if (! $this->nonblockingLock()) { + return; + + } + $error = null; + try { + call_user_func($task); + + } catch (\Exception $e) { + $error = $e; + + } + $this->unlock(); + if (! is_null($error)) { + throw $error; + + } + } + /** * Blocking lock * @@ -81,6 +110,16 @@ public function lock() } } + /** + * Nonblocking lock which returns if the lock was aquired + * + * @return bool true if the lock was aquired. + */ + public function nonblockingLock() + { + return flock($this->handle, LOCK_EX | LOCK_NB); + } + /** * Blocking lock which returns if the lock did block. * From 371ad2b9212407e3eada21a4f6403c419f30c3b9 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 31 May 2014 13:22:18 +0200 Subject: [PATCH 154/303] moved safeRename() into FileUtil --- classes/dataBackend/file/FileDataBackend.php | 47 ++------------------ classes/dataBackend/file/FileUtil.php | 41 +++++++++++++++++ tests/FileUtilTest.php | 20 ++++++++- 3 files changed, 64 insertions(+), 44 deletions(-) diff --git a/classes/dataBackend/file/FileDataBackend.php b/classes/dataBackend/file/FileDataBackend.php index a2b33f20..1fe191bc 100644 --- a/classes/dataBackend/file/FileDataBackend.php +++ b/classes/dataBackend/file/FileDataBackend.php @@ -61,6 +61,7 @@ public function getFile() * * @param String $file * @throws DataBackendIOException + * @throws FileException */ private function sortFile($file) { @@ -98,7 +99,7 @@ private function sortFile($file) } fclose($tempH); - $this->safeRename($temp, $file); + $this->fileUtil->safeRename($temp, $file); } /** @@ -128,6 +129,7 @@ public function install() * * @see DataBackend::update() * @throws DataBackendIOException + * @throws FileException */ public function update() { @@ -239,51 +241,10 @@ public function update() } - $this->safeRename($file, $this->parser->getFile()); + $this->fileUtil->safeRename($file, $this->parser->getFile()); chmod($this->parser->getFile(), 0644); } - /** - * Renames a file atomically between different filesystems. - * - * @param String $source path of the source - * @param String $destination path of the destination - * @throws DataBackendIOException - */ - private function safeRename($source, $destination) - { - $isRenamed = @rename($source, $destination); - if ($isRenamed) { - return; - - } - - // copy to the target filesystem - $tempFileOnSameFS = "$destination.tmp"; - - $isCopied = copy($source, $tempFileOnSameFS); - if (! $isCopied) { - throw new DataBackendIOException( - "failed to copy $source to $tempFileOnSameFS." - ); - - } - - $isUnlinked = unlink($source); - if (! $isUnlinked) { - trigger_error("Failed to unlink $source."); - - } - - $isRenamed = rename($tempFileOnSameFS, $destination); - if (! $isRenamed) { - throw new DataBackendIOException( - "failed to rename $tempFileOnSameFS to $destination." - ); - - } - } - /** * @throws DataBackendIOException * @throws DataBackendException diff --git a/classes/dataBackend/file/FileUtil.php b/classes/dataBackend/file/FileUtil.php index 992ec737..8a717b3c 100644 --- a/classes/dataBackend/file/FileUtil.php +++ b/classes/dataBackend/file/FileUtil.php @@ -33,6 +33,47 @@ public function __construct(Configuration $configuration = null) $this->configuration = $configuration; } + /** + * Renames a file atomically between different filesystems. + * + * @param String $source path of the source + * @param String $destination path of the destination + * @throws FileException + */ + public function safeRename($source, $destination) + { + $isRenamed = @rename($source, $destination); + if ($isRenamed) { + return; + + } + + // copy to the target filesystem + $tempFileOnSameFS = "$destination.tmp"; + + $isCopied = copy($source, $tempFileOnSameFS); + if (! $isCopied) { + throw new FileException( + "failed to copy $source to $tempFileOnSameFS." + ); + + } + + $isUnlinked = unlink($source); + if (! $isUnlinked) { + trigger_error("Failed to unlink $source."); + + } + + $isRenamed = rename($tempFileOnSameFS, $destination); + if (! $isRenamed) { + throw new FileException( + "failed to rename $tempFileOnSameFS to $destination." + ); + + } + } + /** * Returns a writable directory for temporary files * diff --git a/tests/FileUtilTest.php b/tests/FileUtilTest.php index 7d491090..0a385ba3 100644 --- a/tests/FileUtilTest.php +++ b/tests/FileUtilTest.php @@ -12,7 +12,25 @@ * @license GPL */ class FileUtilTest extends \PHPUnit_Framework_TestCase -{ +{ + + /** + * Test only renaming in one filesystem. + */ + public function testSafeRenameOneFS() + { + $before = __DIR__ . "/data/testSafeRenameBefore"; + $after = __DIR__ . "/data/testSafeRenameAfter"; + + touch($before); + + $fileUtil = new FileUtil(); + $fileUtil->safeRename($before, $after); + + $this->assertFileExists($after); + + unlink($after); + } /** * Tests a user configured temporary directory From c6221e538e07cf6396c3e966bee4ca25ed9b3d16 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 31 May 2014 14:30:23 +0200 Subject: [PATCH 155/303] new readme --- README-1.0.0.md | 134 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 README-1.0.0.md diff --git a/README-1.0.0.md b/README-1.0.0.md new file mode 100644 index 00000000..28caaeb0 --- /dev/null +++ b/README-1.0.0.md @@ -0,0 +1,134 @@ +# Installation + +Visit and download the latest version or use [Composer](https://getcomposer.org/): + +```json +{ + "require": { + "malkusch/bav": "~1.0" + } +} +``` + +# Autoloader + +If you don't use composer's autoloader you have to include `bav/autoloader/autoloader.php`. +BAV uses the autoloader generated by [PHP-Autoloader](http://php-autoloader.malkusch.de/en/). + +```php +namespace malkusch\bav; + +require_once __DIR__ . "/bav/autoloader/autoloader.php"; + +$bav = new BAV(); +``` + + +# Configuration + +You can use BAV out of the box. BAV comes with a ready to play default +configuration (`DefaultConfiguration`): + +* `UTF-8` encoding (if supported) + +* `FileDataBackendContainer`. I.e. it uses binary search on the file from the Bundesbank. + +* automatic installation. You don't have to call any installation +script. The container will download the Bundesbank file upon the first execution. + +* update plan which triggers an E_USER_NOTICE if the Bundesbank file +is outdated. + +You can define your own configuration by calling `ConfigurationRegistry::setConfiguration()` +or preferably creating the file `bav/configuration.php` which returns a `Configuration` object: + +```php +namespace malkusch\bav; + +$configuration = new DefaultConfiguration(); + +$pdo = new \PDO("mysql:host=localhost;dbname=test"); +$configuration->setDataBackendContainer(new PDODataBackendContainer($pdo)); + +$configuration->setUpdatePlan(new AutomaticUpdatePlan()); + +return $configuration; +``` + +# Update + +The Bundesbank releases new files for March, June, September and December. +BAV needs those new files. You have several possiblities to update bav: + +## Script + +Call `bin/bav-update.php`. + +## Programmatically + +```php +$container = ConfigurationRegistry::getConfiguration()->getDataBackendContainer(); +$container->getDatabackend()->update(); +``` + +## Automatic + +Enable automatic updates with `AutomaticUpdatePlan` in your `bav/configuration.php`: + +```php +namespace malkusch\bav; + +$configuration = new DefaultConfiguration(); +$configuration->setUpdatePlan(new AutomaticUpdatePlan()); + +return $configuration; +``` + +# Usage + +You can use BAV with the api facade `BAV`: +```php +namespace malkusch\bav; + +$bav = new BAV(); +$bankID = "10000000"; +$account = "1234567890" + +// check for a bank +var_dump( + $bav->bankExists($bankID) +); + +// check for a bank account +var_dump( + $bav->isValidBankAccount($bankID, $account) +); + +// print the name of the bank +$agency = $bav->getMainAgency($bankID); +echo "{$agency->getName()} {$agency->getCity()}\n"; +``` +See also `docs/example.php`. + + +# Optional Dependencies + +You may have: + +* **CURL**: If you provide `bav/data/banklist.txt` you don't need CURL. + +* **mbstring or iconv**: BAV works with unicode encoding. Your PHP must have support compiled +in to either the `mb_*` or the `iconv_*` functions. If these functions are +missing BAV works only with the ISO-8859-15 encoding. + +* **PDO**: If you intend to use a DBS you need to use `PDODataBackendContainer`. +`PDODataBackendContainer` needs a `PDO` support compiled in PHP. + + +# License and authors + +This project is free and under GPL (see gpl.txt). So do what ever you want. +But it would be nice to leave a note about the authors. + +The author of the original project which gave the idea to this project is +Björn Wilmsmann. Responsable for this project is Markus Malkusch . From c92d34af1f191928331f6ef648bfd7276f6787fa Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sat, 31 May 2014 14:34:10 +0200 Subject: [PATCH 156/303] added ci image --- README-1.0.0.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README-1.0.0.md b/README-1.0.0.md index 28caaeb0..f7d8ffa0 100644 --- a/README-1.0.0.md +++ b/README-1.0.0.md @@ -132,3 +132,5 @@ But it would be nice to leave a note about the authors. The author of the original project which gave the idea to this project is Björn Wilmsmann. Responsable for this project is Markus Malkusch . + +[![Build Status](https://travis-ci.org/malkusch/bav.svg?branch=master)](https://travis-ci.org/malkusch/bav) \ No newline at end of file From c480b4889bb188558e2eb6cd25d28d604d18a5fc Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sun, 1 Jun 2014 14:57:21 +0200 Subject: [PATCH 157/303] release 0.29 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 980042cf..b6d6f5ad 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ Visit and download the latest version or use [Composer ```json { "require": { - "malkusch/bav": "0.28" + "malkusch/bav": "0.29" } } ``` From 540d52a824894f79ac0ea1d73919bc196fb9ff6e Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sun, 1 Jun 2014 22:16:45 +0200 Subject: [PATCH 158/303] moved FileUtil --- autoloader/index/0.php | 8 ++++---- classes/{dataBackend/file => util}/FileUtil.php | 2 +- .../file => util}/exception/FileException.php | 0 .../file => util}/exception/NoTempDirectoryException.php | 0 4 files changed, 5 insertions(+), 5 deletions(-) rename classes/{dataBackend/file => util}/FileUtil.php (98%) rename classes/{dataBackend/file => util}/exception/FileException.php (100%) rename classes/{dataBackend/file => util}/exception/NoTempDirectoryException.php (100%) diff --git a/autoloader/index/0.php b/autoloader/index/0.php index a4669657..634e5a3b 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -19,8 +19,8 @@ 'malkusch\bav\bank' => '../classes/bank/Bank.php', 'malkusch\bav\lock' => '../classes/util/Lock.php', 'malkusch\bav\agency' => '../classes/bank/Agency.php', - 'malkusch\bav\fileutil' => '../classes/dataBackend/file/FileUtil.php', 'malkusch\bav\encoding' => '../classes/encoding/Encoding.php', + 'malkusch\bav\fileutil' => '../classes/util/FileUtil.php', 'malkusch\bav\validator' => '../classes/validator/Validator.php', 'malkusch\bav\fileparser' => '../classes/dataBackend/file/fileParser/FileParser.php', 'malkusch\bav\updateplan' => '../classes/dataBackend/update/UpdatePlan.php', @@ -184,9 +184,9 @@ 'malkusch\bav\validatorb9b' => '../classes/validator/validators/ValidatorB9b.php', 'malkusch\bav\validatorc1b' => '../classes/validator/validators/ValidatorC1b.php', 'malkusch\bav\configuration' => '../classes/configuration/Configuration.php', - 'malkusch\bav\fileexception' => '../classes/dataBackend/file/exception/FileException.php', 'malkusch\bav\logupdateplan' => '../classes/dataBackend/update/LogUpdatePlan.php', 'malkusch\bav\iconvencoding' => '../classes/encoding/IconvEncoding.php', + 'malkusch\bav\fileexception' => '../classes/util/exception/FileException.php', 'malkusch\bav\lockexception' => '../classes/util/exception/LockException.php', 'malkusch\bav\pdodatabackend' => '../classes/dataBackend/pdo/PDODataBackend.php', 'malkusch\bav\validatorchain' => '../classes/validator/ValidatorChain.php', @@ -211,7 +211,7 @@ 'malkusch\bav\validatoreserexception' => '../classes/validator/exception/ValidatorESERException.php', 'malkusch\bav\pdodatabackendcontainer' => '../classes/dataBackend/pdo/PDODataBackendContainer.php', 'malkusch\bav\filedatabackendcontainer' => '../classes/dataBackend/file/FileDataBackendContainer.php', - 'malkusch\bav\notempdirectoryexception' => '../classes/dataBackend/file/exception/NoTempDirectoryException.php', + 'malkusch\bav\notempdirectoryexception' => '../classes/util/exception/NoTempDirectoryException.php', 'malkusch\bav\fileparsercontextexception' => '../classes/dataBackend/file/fileParser/exception/FileParserContextException.php', 'malkusch\bav\weightediterationvalidator' => '../classes/validator/WeightedIterationValidator.php', 'malkusch\bav\validatornotexistsexception' => '../classes/validator/exception/ValidatorNotExistsException.php', @@ -222,6 +222,6 @@ 'malkusch\bav\undefinedattributeagencyexception' => '../classes/bank/exception/UndefinedAttributeAgencyException.php', 'malkusch\bav\undefinedfileparsercontextexception' => '../classes/dataBackend/file/fileParser/exception/UndefinedFileParserContextException.php', 'malkusch\bav\missingattributesdatabackendioexception' => '../classes/dataBackend/exception/MissingAttributesDataBackendIOException.php', - 'malkusch\bav\parseexception' => '../classes/dataBackend/file/fileParser/exception/ParseException', 'malkusch\bav\fileparserioexception' => '../classes/dataBackend/file/fileParser/exception/FileParserIOException', + 'malkusch\bav\parseexception' => '../classes/dataBackend/file/fileParser/exception/ParseException', ); diff --git a/classes/dataBackend/file/FileUtil.php b/classes/util/FileUtil.php similarity index 98% rename from classes/dataBackend/file/FileUtil.php rename to classes/util/FileUtil.php index 8a717b3c..d34bfdad 100644 --- a/classes/dataBackend/file/FileUtil.php +++ b/classes/util/FileUtil.php @@ -108,7 +108,7 @@ function_exists('sys_get_temp_dir') ? sys_get_temp_dir() : false, empty($_ENV['TEMP']) ? false : $_ENV['TEMP'], ini_get('upload_tmp_dir'), '/tmp', - __DIR__ . "/../../../data/" + __DIR__ . "/../../data/" ); foreach ($tmpDirs as $tmpDir) { diff --git a/classes/dataBackend/file/exception/FileException.php b/classes/util/exception/FileException.php similarity index 100% rename from classes/dataBackend/file/exception/FileException.php rename to classes/util/exception/FileException.php diff --git a/classes/dataBackend/file/exception/NoTempDirectoryException.php b/classes/util/exception/NoTempDirectoryException.php similarity index 100% rename from classes/dataBackend/file/exception/NoTempDirectoryException.php rename to classes/util/exception/NoTempDirectoryException.php From d35ffca47fc94a46a4524c55b0c01298a0ee0630 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sun, 1 Jun 2014 22:18:01 +0200 Subject: [PATCH 159/303] disable update plan in bav-update.php --- bin/bav-update.php | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/bav-update.php b/bin/bav-update.php index 749e2f93..5fdfea82 100755 --- a/bin/bav-update.php +++ b/bin/bav-update.php @@ -13,6 +13,7 @@ require_once __DIR__ . "/../autoloader/autoloader.php"; try { + ConfigurationRegistry::getConfiguration()->setUpdatePlan(null); $databack = ConfigurationRegistry::getConfiguration()->getDatabackendContainer()->getDataBackend(); $databack->update(); From 83e75fe900497ae2cb4024aefd30e23b4abc5d1d Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sun, 1 Jun 2014 22:18:51 +0200 Subject: [PATCH 160/303] removed verifyimport.php --- bin/verifyImport.php | 76 -------------------------------------------- 1 file changed, 76 deletions(-) delete mode 100755 bin/verifyImport.php diff --git a/bin/verifyImport.php b/bin/verifyImport.php deleted file mode 100755 index e61d69bd..00000000 --- a/bin/verifyImport.php +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/env php - - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * @package scripts - * @author Markus Malkusch - * @copyright Copyright (C) 2006 Markus Malkusch - * @see VerifyImport - */ - - -/** - * We need to require the autoloader - */ -require_once __DIR__ . "/../autoloader/autoloader.php"; - - -/** - * This works only if you have called FileDataBackend->install(). That - * means there must exist a ../data/banklist.txt. If this does not apply to - * you, you have to change these lines. - */ -$databack = new FileDataBackend(); - - -$importer = new VerifyImport($databack); - - -/** - * In this loop you should insert the account IDs with bank IDs. - * - * Of course you need to modify the while condition and the - * sources for $bankID and $accountID. - */ -while ($youHaveMoreAccounts) { // <- Please change - - $bankID = $accounts[$i]['bankID']; // <- Please change - $accountID = $accounts[$i]['accountID']; // <- Please change - - /** - * As a third optional boolean parameter you may specify - * if the account is valid (TRUE) or not (FALSE). Default - * is a valid account. - */ - $importer->import($bankID, $accountID); - -} - - -/** - * An optional parameter says where to save the file. - * Default's to ../data/verify.ini - */ -$importer->save(); \ No newline at end of file From 44abef3a27551f07f3268ef32f9210ede6db95d8 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sun, 1 Jun 2014 23:27:08 +0200 Subject: [PATCH 161/303] added validation of bundesbank file --- autoloader/index/0.php | 5 ++ classes/dataBackend/file/FileDataBackend.php | 5 ++ .../file/validator/FileValidator.php | 57 ++++++++++++ .../validator/exception/FieldException.php | 14 +++ .../exception/FileValidatorException.php | 14 +++ .../exception/InvalidFilesizeException.php | 14 +++ .../exception/InvalidLineLengthException.php | 14 +++ tests/FileValidatorTest.php | 88 +++++++++++++++++++ tests/data/.gitignore | 4 + 9 files changed, 215 insertions(+) create mode 100644 classes/dataBackend/file/validator/FileValidator.php create mode 100644 classes/dataBackend/file/validator/exception/FieldException.php create mode 100644 classes/dataBackend/file/validator/exception/FileValidatorException.php create mode 100644 classes/dataBackend/file/validator/exception/InvalidFilesizeException.php create mode 100644 classes/dataBackend/file/validator/exception/InvalidLineLengthException.php create mode 100644 tests/FileValidatorTest.php create mode 100644 tests/data/.gitignore diff --git a/autoloader/index/0.php b/autoloader/index/0.php index 634e5a3b..b5dd9aca 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -184,10 +184,12 @@ 'malkusch\bav\validatorb9b' => '../classes/validator/validators/ValidatorB9b.php', 'malkusch\bav\validatorc1b' => '../classes/validator/validators/ValidatorC1b.php', 'malkusch\bav\configuration' => '../classes/configuration/Configuration.php', + 'malkusch\bav\filevalidator' => '../classes/dataBackend/file/validator/FileValidator.php', 'malkusch\bav\logupdateplan' => '../classes/dataBackend/update/LogUpdatePlan.php', 'malkusch\bav\iconvencoding' => '../classes/encoding/IconvEncoding.php', 'malkusch\bav\fileexception' => '../classes/util/exception/FileException.php', 'malkusch\bav\lockexception' => '../classes/util/exception/LockException.php', + 'malkusch\bav\fieldexception' => '../classes/dataBackend/file/validator/exception/FieldException.php', 'malkusch\bav\pdodatabackend' => '../classes/dataBackend/pdo/PDODataBackend.php', 'malkusch\bav\validatorchain' => '../classes/validator/ValidatorChain.php', 'malkusch\bav\agencyexception' => '../classes/bank/exception/AgencyException.php', @@ -207,12 +209,15 @@ 'malkusch\bav\nomainagencyexception' => '../classes/dataBackend/exception/NoMainAgencyException.php', 'malkusch\bav\configurationexception' => '../classes/configuration/ConfigurationException.php', 'malkusch\bav\databackendioexception' => '../classes/dataBackend/exception/DataBackendIOException.php', + 'malkusch\bav\filevalidatorexception' => '../classes/dataBackend/file/validator/exception/FileValidatorException.php', 'malkusch\bav\validatorbankdependent' => '../classes/validator/ValidatorBankDependent.php', 'malkusch\bav\validatoreserexception' => '../classes/validator/exception/ValidatorESERException.php', 'malkusch\bav\pdodatabackendcontainer' => '../classes/dataBackend/pdo/PDODataBackendContainer.php', 'malkusch\bav\filedatabackendcontainer' => '../classes/dataBackend/file/FileDataBackendContainer.php', + 'malkusch\bav\invalidfilesizeexception' => '../classes/dataBackend/file/validator/exception/InvalidFilesizeException.php', 'malkusch\bav\notempdirectoryexception' => '../classes/util/exception/NoTempDirectoryException.php', 'malkusch\bav\fileparsercontextexception' => '../classes/dataBackend/file/fileParser/exception/FileParserContextException.php', + 'malkusch\bav\invalidlinelengthexception' => '../classes/dataBackend/file/validator/exception/InvalidLineLengthException.php', 'malkusch\bav\weightediterationvalidator' => '../classes/validator/WeightedIterationValidator.php', 'malkusch\bav\validatornotexistsexception' => '../classes/validator/exception/ValidatorNotExistsException.php', 'malkusch\bav\fileparsernotexistsexception' => '../classes/dataBackend/file/fileParser/exception/FileParserNotExistsException.php', diff --git a/classes/dataBackend/file/FileDataBackend.php b/classes/dataBackend/file/FileDataBackend.php index 1fe191bc..607caafb 100644 --- a/classes/dataBackend/file/FileDataBackend.php +++ b/classes/dataBackend/file/FileDataBackend.php @@ -130,6 +130,7 @@ public function install() * @see DataBackend::update() * @throws DataBackendIOException * @throws FileException + * @throws FileValidatorException */ public function update() { @@ -233,6 +234,10 @@ public function update() } + // Validate file format. + $validator = new FileValidator(); + $validator->validate($file); + // blz_20100308.txt is not sorted. $parser = new FileParser($file); $lastBankID = $parser->getBankID($parser->getLines()); diff --git a/classes/dataBackend/file/validator/FileValidator.php b/classes/dataBackend/file/validator/FileValidator.php new file mode 100644 index 00000000..1ebad8db --- /dev/null +++ b/classes/dataBackend/file/validator/FileValidator.php @@ -0,0 +1,57 @@ + + * @license GPL + */ +class FileValidator +{ + + const FILESIZE = 1500000; // 1.5MB + + /** + * Validates a bundesbank file. + * + * @param string $file bundesbank file. + * @throws FileValidatorException + */ + public function validate($file) + { + $parser = new FileParser($file); + + // file size is normally around 3 MB. Less than 1.5 is not valid + $size = filesize($file); + if ($size < self::FILESIZE) { + throw new InvalidFilesizeException( + "Get updated BAV version: file size should be less than " . self::FILESIZE . " but was $size." + ); + + } + + // check line length + $minLength = FileParser::SUCCESSOR_OFFSET + FileParser::SUCCESSOR_LENGTH; + if ($parser->getLineLength() < $minLength) { + throw new InvalidLineLengthException( + "Get updated BAV version:" + . " Line length shouldn't be less than $minLength but was {$parser->getLineLength()}." + ); + + } + + // rough check that line length is constant. + if ($size % $parser->getLineLength() != 0) { + throw new InvalidLineLengthException("Get updated BAV version: Line length is not constant."); + + } + + $firstLine = $parser->readLine(0); + if (! preg_match("/^100000001Bundesbank/", $firstLine)) { + throw new FieldException("Get updated BAV version: first line has unexpected content: $firstLine"); + + } + } +} diff --git a/classes/dataBackend/file/validator/exception/FieldException.php b/classes/dataBackend/file/validator/exception/FieldException.php new file mode 100644 index 00000000..400e316f --- /dev/null +++ b/classes/dataBackend/file/validator/exception/FieldException.php @@ -0,0 +1,14 @@ + + * @license GPL + */ +class FieldException extends FileValidatorException +{ + +} diff --git a/classes/dataBackend/file/validator/exception/FileValidatorException.php b/classes/dataBackend/file/validator/exception/FileValidatorException.php new file mode 100644 index 00000000..7f507aea --- /dev/null +++ b/classes/dataBackend/file/validator/exception/FileValidatorException.php @@ -0,0 +1,14 @@ + + * @license GPL + */ +class FileValidatorException extends BAVException +{ + +} diff --git a/classes/dataBackend/file/validator/exception/InvalidFilesizeException.php b/classes/dataBackend/file/validator/exception/InvalidFilesizeException.php new file mode 100644 index 00000000..a540853d --- /dev/null +++ b/classes/dataBackend/file/validator/exception/InvalidFilesizeException.php @@ -0,0 +1,14 @@ + + * @license GPL + */ +class InvalidFilesizeException extends FileValidatorException +{ + +} diff --git a/classes/dataBackend/file/validator/exception/InvalidLineLengthException.php b/classes/dataBackend/file/validator/exception/InvalidLineLengthException.php new file mode 100644 index 00000000..90e3d264 --- /dev/null +++ b/classes/dataBackend/file/validator/exception/InvalidLineLengthException.php @@ -0,0 +1,14 @@ + + * @license GPL + */ +class InvalidLineLengthException extends FileValidatorException +{ + +} diff --git a/tests/FileValidatorTest.php b/tests/FileValidatorTest.php new file mode 100644 index 00000000..90a31bb2 --- /dev/null +++ b/tests/FileValidatorTest.php @@ -0,0 +1,88 @@ + + * @see BAV + */ +class FileValidatorTest extends \PHPUnit_Framework_TestCase +{ + + public function testValidate() + { + $backend = new FileDataBackend(); + $file = $backend->getFile(); + + $validator = new FileValidator(); + $validator->validate($file); + } + + /** + * @expectedException malkusch\bav\InvalidFilesizeException + */ + public function testInvalidFileSize() + { + $validator = new FileValidator(); + $validator->validate(__FILE__); + } + + /** + * @expectedException malkusch\bav\InvalidLineLengthException + */ + public function testInvalidLineLength() + { + $backend = new FileDataBackend(); + $file = $backend->getFile(); + + $invalidFile = __DIR__ . "/data/invalidLength.txt"; + copy($file, $invalidFile); + + $fp = fopen($invalidFile, "c"); + fputs($fp, "invalid line\n"); + + $validator = new FileValidator(); + $validator->validate($invalidFile); + } + + /** + * @expectedException malkusch\bav\InvalidLineLengthException + */ + public function testNotConstantLineLength() + { + $backend = new FileDataBackend(); + $file = $backend->getFile(); + + $invalidFile = __DIR__ . "/data/notConstantLength.txt"; + copy($file, $invalidFile); + + $fp = fopen($invalidFile, "a"); + fputs($fp, "X\n"); + + $validator = new FileValidator(); + $validator->validate($invalidFile); + } + + /** + * @expectedException malkusch\bav\FieldException + */ + public function testInvalidFirstLineContent() + { + $backend = new FileDataBackend(); + $file = $backend->getFile(); + + $invalidFile = __DIR__ . "/data/invalidFirstLineContent.txt"; + copy($file, $invalidFile); + + $fp = fopen($invalidFile, "c"); + fputs($fp, "XXX"); + + $validator = new FileValidator(); + $validator->validate($invalidFile); + } +} diff --git a/tests/data/.gitignore b/tests/data/.gitignore new file mode 100644 index 00000000..5b2c275f --- /dev/null +++ b/tests/data/.gitignore @@ -0,0 +1,4 @@ +invalidLength.txt +invalidFirstLineContent.txt +notConstantLength.txt + From 7b6e1771aaec0dead8126c15c2db2734b58de05d Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Sun, 1 Jun 2014 23:38:26 +0200 Subject: [PATCH 162/303] fixed inheritance --- classes/dataBackend/file/FileDataBackend.php | 1 - .../file/validator/exception/FileValidatorException.php | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/classes/dataBackend/file/FileDataBackend.php b/classes/dataBackend/file/FileDataBackend.php index 607caafb..f0a64e8b 100644 --- a/classes/dataBackend/file/FileDataBackend.php +++ b/classes/dataBackend/file/FileDataBackend.php @@ -130,7 +130,6 @@ public function install() * @see DataBackend::update() * @throws DataBackendIOException * @throws FileException - * @throws FileValidatorException */ public function update() { diff --git a/classes/dataBackend/file/validator/exception/FileValidatorException.php b/classes/dataBackend/file/validator/exception/FileValidatorException.php index 7f507aea..60fa1abc 100644 --- a/classes/dataBackend/file/validator/exception/FileValidatorException.php +++ b/classes/dataBackend/file/validator/exception/FileValidatorException.php @@ -8,7 +8,7 @@ * @author Markus Malkusch * @license GPL */ -class FileValidatorException extends BAVException +class FileValidatorException extends DataBackendException { } From 2c8fcde4ad462e59b8afba0850e01e925be85772 Mon Sep 17 00:00:00 2001 From: Markus Malkusch Date: Mon, 2 Jun 2014 00:27:23 +0200 Subject: [PATCH 163/303] added URIPicker --- autoloader/index/0.php | 5 + classes/dataBackend/file/FileDataBackend.php | 39 +- .../file/download/uripicker/DOMURIPicker.php | 47 + .../download/uripicker/FallbackURIPicker.php | 67 ++ .../download/uripicker/RegExpURIPicker.php | 43 + .../file/download/uripicker/URIPicker.php | 29 + .../exception/URIPickerException.php | 14 + composer.json | 1 + tests/URIPickerTest.php | 89 ++ tests/data/bankleitzahlen_download.html | 903 ++++++++++++++++++ 10 files changed, 1201 insertions(+), 36 deletions(-) create mode 100644 classes/dataBackend/file/download/uripicker/DOMURIPicker.php create mode 100644 classes/dataBackend/file/download/uripicker/FallbackURIPicker.php create mode 100644 classes/dataBackend/file/download/uripicker/RegExpURIPicker.php create mode 100644 classes/dataBackend/file/download/uripicker/URIPicker.php create mode 100644 classes/dataBackend/file/download/uripicker/exception/URIPickerException.php create mode 100644 tests/URIPickerTest.php create mode 100644 tests/data/bankleitzahlen_download.html diff --git a/autoloader/index/0.php b/autoloader/index/0.php index b5dd9aca..049c5c1a 100644 --- a/autoloader/index/0.php +++ b/autoloader/index/0.php @@ -21,6 +21,7 @@ 'malkusch\bav\agency' => '../classes/bank/Agency.php', 'malkusch\bav\encoding' => '../classes/encoding/Encoding.php', 'malkusch\bav\fileutil' => '../classes/util/FileUtil.php', + 'malkusch\bav\uripicker' => '../classes/dataBackend/file/download/uripicker/URIPicker.php', 'malkusch\bav\validator' => '../classes/validator/Validator.php', 'malkusch\bav\fileparser' => '../classes/dataBackend/file/fileParser/FileParser.php', 'malkusch\bav\updateplan' => '../classes/dataBackend/update/UpdatePlan.php', @@ -167,6 +168,7 @@ 'malkusch\bav\validatord9' => '../classes/validator/validators/ValidatorD9.php', 'malkusch\bav\validatore0' => '../classes/validator/validators/ValidatorE0.php', 'malkusch\bav\validatore1' => '../classes/validator/validators/ValidatorE1.php', + 'malkusch\bav\domuripicker' => '../classes/dataBackend/file/download/uripicker/DOMURIPicker.php', 'malkusch\bav\bavexception' => '../classes/exception/BAVException.php', 'malkusch\bav\validator51x' => '../classes/validator/validators/Validator51x.php', 'malkusch\bav\validator69b' => '../classes/validator/validators/Validator69b.php', @@ -194,9 +196,12 @@ 'malkusch\bav\validatorchain' => '../classes/validator/ValidatorChain.php', 'malkusch\bav\agencyexception' => '../classes/bank/exception/AgencyException.php', 'malkusch\bav\filedatabackend' => '../classes/dataBackend/file/FileDataBackend.php', + 'malkusch\bav\regexpuripicker' => '../classes/dataBackend/file/download/uripicker/RegExpURIPicker.php', 'malkusch\bav\iso8859encoding' => '../classes/encoding/ISO8859Encoding.php', + 'malkusch\bav\fallbackuripicker' => '../classes/dataBackend/file/download/uripicker/FallbackURIPicker.php', 'malkusch\bav\fileparsercontext' => '../classes/dataBackend/file/fileParser/FileParserContext.php', 'malkusch\bav\encodingexception' => '../classes/encoding/exception/EncodingException.php', + 'malkusch\bav\uripickerexception' => '../classes/dataBackend/file/download/uripicker/exception/URIPickerException.php', 'malkusch\bav\validatoriteration' => '../classes/validator/ValidatorIteration.php', 'malkusch\bav\validatorexception' => '../classes/validator/exception/ValidatorException.php', 'malkusch\bav\fileparserexception' => '../classes/dataBackend/file/fileParser/exception/FileParserException.php', diff --git a/classes/dataBackend/file/FileDataBackend.php b/classes/dataBackend/file/FileDataBackend.php index f0a64e8b..9282cf9d 100644 --- a/classes/dataBackend/file/FileDataBackend.php +++ b/classes/dataBackend/file/FileDataBackend.php @@ -156,24 +156,9 @@ public function update() ); } - $isTXT = preg_match('/Bankleitzahlendateien ungepackt.+href *= *"([^"]+\.txt[^"]*)"/sU', $content, $txtMatches); - $isZIP = (exec('unzip -v') == '') - ? false - : preg_match('/Bankleitzahlendateien gepackt.+href *= *"([^"]+\.zip[^"]*)"/sU', $content, $zipMatches); - /** - * There is an unresolved bug, that doesn't allow to uncompress - * the zip archive. Zip support is disabled until it's repaired. - * - * @see http://sourceforge.net/forum/message.php?msg_id=7555232 - * TODO enable Zip support - */ - $isZIP = false; - - if (! ($isTXT || $isZIP)) { - throw new DataBackendException("Could not find a file."); - - } + $uriPicker = new FallbackURIPicker(); + $path = $uriPicker->pickURI($content); $temp = tempnam($this->fileUtil->getTempDirectory(), ""); $tempH = fopen($temp, 'w'); @@ -181,7 +166,6 @@ public function update() throw new DataBackendIOException(); } - $path = $isZIP ? $zipMatches[1] : $txtMatches[1]; if (strlen($path) > 0 && $path{0} != "/") { $path = sprintf("/%s/%s", dirname(self::DOWNLOAD_URI), $path); @@ -214,24 +198,7 @@ public function update() fclose($tempH); curl_close($ch); - if ($isZIP) { - $file = tempnam($this->fileUtil->getTempDirectory(), ""); - if (! $file) { - unlink($temp); - throw new DataBackendIOException(); - - } - system('unzip -qqp '.$temp.' > '.$file, $error); - if (! unlink($temp) || $error !== 0) { - unlink($file); - throw new DataBackendIOException(); - - } - - } else { - $file = $temp; - - } + $file = $temp; // Validate file format. $validator = new FileValidator(); diff --git a/classes/dataBackend/file/download/uripicker/DOMURIPicker.php b/classes/dataBackend/file/download/uripicker/DOMURIPicker.php new file mode 100644 index 00000000..b6d8b826 --- /dev/null +++ b/classes/dataBackend/file/download/uripicker/DOMURIPicker.php @@ -0,0 +1,47 @@ + + * @license GPL + */ +class DOMURIPicker implements URIPicker +{ + + /** + * Returns true if this implementation is available on this platform. + * + * @return bool + */ + public function isAvailable() + { + return class_exists("\DOMXPath"); + } + + /** + * Returns the download URI from the Bundesbank html page. + * + * @throws URIPickerException + * @return string + */ + public function pickURI($html) + { + $doc = new \DOMDocument(); + libxml_use_internal_errors(true); + $doc->loadHTML($html); + + $xpath = new \DOMXpath($doc); + + $result = $xpath->query( + "(//a[contains(text(), 'Bankleitzahlendateien') and contains(@href, '.txt')]/@href)[1]" + ); + if ($result->length != 1) { + throw new URIPickerException("Did not find download URI"); + + } + return $result->item(0)->value; + } +} diff --git a/classes/dataBackend/file/download/uripicker/FallbackURIPicker.php b/classes/dataBackend/file/download/uripicker/FallbackURIPicker.php new file mode 100644 index 00000000..151ccea4 --- /dev/null +++ b/classes/dataBackend/file/download/uripicker/FallbackURIPicker.php @@ -0,0 +1,67 @@ + + * @license GPL + */ +class FallbackURIPicker implements URIPicker +{ + + /** + * @var URIPicker[] + */ + private $pickers = array(); + + /** + * Construct available pickers. + */ + public function __construct() + { + $domPicker = new DOMURIPicker(); + if ($domPicker->isAvailable()) { + $this->pickers[] = $domPicker; + + } + + $regExpPicker = new RegExpURIPicker(); + if ($regExpPicker->isAvailable()) { + $this->pickers[] = $regExpPicker; + + } + } + + /** + * Returns true if this implementation is available on this platform. + * + * @return bool + */ + public function isAvailable() + { + return ! empty($this->pickers); + } + + /** + * Returns the download URI from the Bundesbank html page. + * + * @throws URIPickerException + * @return string + */ + public function pickURI($html) + { + $exception = null; + foreach ($this->pickers as $picker) { + try { + return $picker->pickURI($html); + + } catch (URIPickerException $e) { + $exception = $e; + + } + } + throw $exception; + } +} diff --git a/classes/dataBackend/file/download/uripicker/RegExpURIPicker.php b/classes/dataBackend/file/download/uripicker/RegExpURIPicker.php new file mode 100644 index 00000000..ea6364e3 --- /dev/null +++ b/classes/dataBackend/file/download/uripicker/RegExpURIPicker.php @@ -0,0 +1,43 @@ + + * @license GPL + */ +class RegExpURIPicker implements URIPicker +{ + + /** + * Returns true if this implementation is available on this platform. + * + * @return bool + */ + public function isAvailable() + { + return function_exists("preg_match"); + } + + /** + * Returns the download URI from the Bundesbank html page. + * + * @throws URIPickerException + * @return string + */ + public function pickURI($html) + { + $isMatch = preg_match( + '/Bankleitzahlendateien ungepackt.+href *= *"([^"]+\.txt[^"]*)"/sU', + $html, + $txtMatches + ); + if (! $isMatch) { + throw new URIPickerException("Did not find download URI"); + + } + return $txtMatches[1]; + } +} diff --git a/classes/dataBackend/file/download/uripicker/URIPicker.php b/classes/dataBackend/file/download/uripicker/URIPicker.php new file mode 100644 index 00000000..5a81ad56 --- /dev/null +++ b/classes/dataBackend/file/download/uripicker/URIPicker.php @@ -0,0 +1,29 @@ + + * @license GPL + */ +interface URIPicker +{ + + /** + * Returns true if this implementation is available on this platform. + * + * @return bool + */ + public function isAvailable(); + + /** + * Returns the download URI from the Bundesbank html page. + * + * @throws URIPickerException + * @return string + */ + public function pickURI($html); + +} diff --git a/classes/dataBackend/file/download/uripicker/exception/URIPickerException.php b/classes/dataBackend/file/download/uripicker/exception/URIPickerException.php new file mode 100644 index 00000000..353ccef5 --- /dev/null +++ b/classes/dataBackend/file/download/uripicker/exception/URIPickerException.php @@ -0,0 +1,14 @@ + + * @license GPL + */ +class URIPickerException extends DataBackendException +{ + +} diff --git a/composer.json b/composer.json index 197823d1..120396e9 100644 --- a/composer.json +++ b/composer.json @@ -22,6 +22,7 @@ "suggest": { "ext-PDO": "Allows storing bank information in a database", "ext-mbstring": "Enables UTF-8 support", + "ext-dom": "Enables picking the download URI by xpath", "lib-curl": "Enables API for downloading the bank file", "lib-iconv": "Enables UTF-8 support" }, diff --git a/tests/URIPickerTest.php b/tests/URIPickerTest.php new file mode 100644 index 00000000..da7eac2c --- /dev/null +++ b/tests/URIPickerTest.php @@ -0,0 +1,89 @@ + + */ +class URIPickerTest extends \PHPUnit_Framework_TestCase +{ + + /** + * Provides URIPicker implementations. + * + * @return URIPicker[][] + */ + public function provideURIPicker() + { + return array( + array(new RegExpURIPicker()), + array(new DOMURIPicker()), + array(new FallbackURIPicker()), + ); + } + + /** + * All picker return the same result. + * + * @medium + */ + public function testSameResults() + { + $lastResult = null; + $html = file_get_contents(FileDataBackend::DOWNLOAD_URI); + foreach ($this->provideURIPicker() as $picker) { + $picker = $picker[0]; + $result = $picker->pickURI($html); + if (is_null($lastResult)) { + $lastResult = $result; + continue; + + } + + $this->assertEquals($lastResult, $result); + } + } + + /** + * Tests pickURI() + * + * @dataProvider provideURIPicker + */ + public function testPickURI(URIPicker $picker) + { + $html = file_get_contents(__DIR__ . "/data/bankleitzahlen_download.html"); + $uri = $picker->pickURI($html); + + $this->assertEquals( + "/Redaktion/DE/Downloads/Aufgaben/Unbarer_Zahlungsverkehr/Bankleitzahlen/2014_09_07/blz_2014_06_09_txt.txt?__blob=publicationFile", + $uri + ); + } + + /** + * Tests pickURI() + * + * @dataProvider provideURIPicker + * @expectedException malkusch\bav\URIPickerException + */ + public function testFailPickURI(URIPicker $picker) + { + $html = "XXX"; + $uri = $picker->pickURI($html); + } + + /** + * All pickers are available on this platform. + * + * @dataProvider provideURIPicker + */ + public function testIsAvailable(URIPicker $picker) + { + $this->assertTrue($picker->isAvailable()); + } +} diff --git a/tests/data/bankleitzahlen_download.html b/tests/data/bankleitzahlen_download.html new file mode 100644 index 00000000..b23b3099 --- /dev/null +++ b/tests/data/bankleitzahlen_download.html @@ -0,0 +1,903 @@ + + + + + +Deutsche Bundesbank - Bankleitzahlen - Download - Bankleitzahlen + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +