From ed943894514bd390ca5b55803de500d34d1e62a1 Mon Sep 17 00:00:00 2001 From: Cameron Date: Tue, 2 Feb 2021 07:34:36 -0800 Subject: [PATCH] Fixes #4369 Reverted model multi-dimensional support for now. Added test for custom-fields scenario. --- e107_handlers/model_class.php | 3 +- e107_tests/tests/unit/e_front_modelTest.php | 137 ++++++++++++++++++++ 2 files changed, 139 insertions(+), 1 deletion(-) diff --git a/e107_handlers/model_class.php b/e107_handlers/model_class.php index e59ebd0d9..b505434c3 100755 --- a/e107_handlers/model_class.php +++ b/e107_handlers/model_class.php @@ -2723,7 +2723,8 @@ class e_front_model extends e_model { if($this->isValidFieldKey($k)) { - $ret[$k] = is_array($v) ? $this->sanitize($v) : $this->sanitize($k, $v); + $ret[$k] = $this->sanitize($k, $v); + // $ret[$k] = is_array($v) ? $this->sanitize($v) : $this->sanitize($k, $v); } } return $ret; diff --git a/e107_tests/tests/unit/e_front_modelTest.php b/e107_tests/tests/unit/e_front_modelTest.php index 04b5a00a7..0730a3d9a 100644 --- a/e107_tests/tests/unit/e_front_modelTest.php +++ b/e107_tests/tests/unit/e_front_modelTest.php @@ -134,6 +134,143 @@ } + + + public function testSanitizeCustomFields() + { + $dataFields = array ( 'chapter_id' => 'int', 'chapter_icon' => 'str', 'chapter_parent' => 'str', 'chapter_name' => 'str', 'chapter_template' => 'str', 'chapter_meta_description' => 'str', 'chapter_meta_keywords' => 'str', 'chapter_sef' => 'str', 'chapter_manager' => 'int', 'chapter_order' => 'str', 'chapter_visibility' => 'int', 'chapter_fields' => 'json', 'chapter_image' => 'str', ); + $this->model->setDataFields($dataFields); + + $posted = array ( 'lastname_74758209201093747' => '', 'e-token' => 'a51c3769f784b6d980bdb86a93e56998', 'chapter_icon' => '', 'mediameta_chapter_icon' => '', 'chapter_parent' => '1', 'chapter_name' => 'Custom Fields 10', 'chapter_template' => 'default', 'chapter_meta_description' => 'Chapter containing custom fields', 'chapter_meta_keywords' => '', 'chapter_sef' => 'customfields', 'chapter_manager' => '254', 'chapter_order' => '0', 'chapter_visibility' => '0', 'chapter_image' => '', 'mediameta_chapter_image' => '', '__e_customfields_tabs__' => 'Custom Fields 10', 'chapter_fields' => array ( '__tabs__' => array ( 'additional' => 'Custom Fields 10', ), 'mybbarea' => array ( 'title' => 'Rich Text', 'type' => 'bbarea', 'writeParms' => '{ "rows": "4" }', 'help' => '', ), 'myboolean' => array ( 'title' => 'Boolean', 'type' => 'boolean', 'writeParms' => '', 'help' => '', ), 'mycheckbox' => array ( 'title' => 'Checkbox', 'type' => 'checkbox', 'writeParms' => '', 'help' => '', ), 'mycountry' => array ( 'title' => 'Country', 'type' => 'country', 'writeParms' => '', 'help' => '', ), 'mydatestamp' => array ( 'title' => 'Date', 'type' => 'datestamp', 'writeParms' => '{ "format": "yyyy-mm-dd" }', 'help' => '', ), 'mydropdown' => array ( 'title' => 'Selection', 'type' => 'dropdown', 'writeParms' => '{ "optArray": { "blue": "Blue", "green": "Green", "red": "Red" }, "default": "blank" }', 'help' => '', ), 'myemail' => array ( 'title' => 'Email', 'type' => 'email', 'writeParms' => '', 'help' => '', ), 'myfile' => array ( 'title' => 'File', 'type' => 'file', 'writeParms' => '', 'help' => '', ), 'myicon' => array ( 'title' => 'Icon', 'type' => 'icon', 'writeParms' => '', 'help' => '', ), 'myimage' => array ( 'title' => 'Image', 'type' => 'image', 'writeParms' => '', 'help' => '', ), 'mylanguage' => array ( 'title' => 'Language', 'type' => 'language', 'writeParms' => '', 'help' => '', ), 'mynumber' => array ( 'title' => 'Number', 'type' => 'number', 'writeParms' => '', 'help' => '', ), 'myprogressbar' => array ( 'title' => 'Progress', 'type' => 'progressbar', 'writeParms' => '', 'help' => '', ), 'mytags' => array ( 'title' => 'Tags', 'type' => 'tags', 'writeParms' => '', 'help' => '', ), 'mytext' => array ( 'title' => 'Text', 'type' => 'text', 'writeParms' => '', 'help' => '', ), 'myurl' => array ( 'title' => 'URL', 'type' => 'url', 'writeParms' => '', 'help' => '', ), 'myvideo' => array ( 'title' => 'Video', 'type' => 'video', 'writeParms' => '', 'help' => '', ), ), 'etrigger_submit' => 'update', '__after_submit_action' => 'list', 'submit_value' => '9', ); + $expected = array ( + 'chapter_icon' => '', + 'chapter_parent' => '1', + 'chapter_name' => 'Custom Fields 10', + 'chapter_template' => 'default', + 'chapter_meta_description' => 'Chapter containing custom fields', + 'chapter_meta_keywords' => '', + 'chapter_sef' => 'customfields', + 'chapter_manager' => 254, + 'chapter_order' => '0', + 'chapter_visibility' => 0, + 'chapter_image' => '', + 'chapter_fields' => '{ + "__tabs__": { + "additional": "Custom Fields 10" + }, + "mybbarea": { + "title": "Rich Text", + "type": "bbarea", + "writeParms": "{ \\"rows\\": \\"4\\" }", + "help": "" + }, + "myboolean": { + "title": "Boolean", + "type": "boolean", + "writeParms": "", + "help": "" + }, + "mycheckbox": { + "title": "Checkbox", + "type": "checkbox", + "writeParms": "", + "help": "" + }, + "mycountry": { + "title": "Country", + "type": "country", + "writeParms": "", + "help": "" + }, + "mydatestamp": { + "title": "Date", + "type": "datestamp", + "writeParms": "{ \\"format\\": \\"yyyy-mm-dd\\" }", + "help": "" + }, + "mydropdown": { + "title": "Selection", + "type": "dropdown", + "writeParms": "{ \\"optArray\\": { \\"blue\\": \\"Blue\\", \\"green\\": \\"Green\\", \\"red\\": \\"Red\\" }, \\"default\\": \\"blank\\" }", + "help": "" + }, + "myemail": { + "title": "Email", + "type": "email", + "writeParms": "", + "help": "" + }, + "myfile": { + "title": "File", + "type": "file", + "writeParms": "", + "help": "" + }, + "myicon": { + "title": "Icon", + "type": "icon", + "writeParms": "", + "help": "" + }, + "myimage": { + "title": "Image", + "type": "image", + "writeParms": "", + "help": "" + }, + "mylanguage": { + "title": "Language", + "type": "language", + "writeParms": "", + "help": "" + }, + "mynumber": { + "title": "Number", + "type": "number", + "writeParms": "", + "help": "" + }, + "myprogressbar": { + "title": "Progress", + "type": "progressbar", + "writeParms": "", + "help": "" + }, + "mytags": { + "title": "Tags", + "type": "tags", + "writeParms": "", + "help": "" + }, + "mytext": { + "title": "Text", + "type": "text", + "writeParms": "", + "help": "" + }, + "myurl": { + "title": "URL", + "type": "url", + "writeParms": "", + "help": "" + }, + "myvideo": { + "title": "Video", + "type": "video", + "writeParms": "", + "help": "" + } +}', +); + $result = $this->model->sanitize($posted); + $this->assertSame($expected, $result); + + + + } + + + /* public function testAddValidationError() {