From 8a86145307d47fc62e3f91508995fd1b3ac475cc Mon Sep 17 00:00:00 2001 From: Clemens Schwaighofer Date: Tue, 12 Jun 2018 15:32:22 +0900 Subject: [PATCH] All DB columns are set to varchar, PHP 7.2 compatible fixes All DB columns that had a varchar(number) are changed to varchar. The edit_language default unique grouping has been removed because this does not work (you cannot have unique on this when it is 1/0 flag only) Update Output\Form\Generate and edit_base to be PHP 7.2 compatible with removing all old while (list() ... each()) entries. Fix all undefined counts, etc. Login class update is long line wraps and clean up of some nested teniary parts --- 4dev/database/table/edit_access.sql | 2 +- 4dev/database/table/edit_group.sql | 2 +- 4dev/database/table/edit_language.sql | 8 +- 4dev/database/table/edit_menu_group.sql | 4 +- 4dev/database/table/edit_page.sql | 4 +- 4dev/database/table/edit_query_string.sql | 4 +- 4dev/database/table/edit_scheme.sql | 14 +- 4dev/database/table/edit_temp_files.sql | 2 +- 4dev/database/table/edit_visible_group.sql | 4 +- www/admin/edit_base.inc | 8 +- www/lib/CoreLibs/ACL/Login.inc | 2 +- www/lib/CoreLibs/Output/Form/Generate.inc | 144 +++++++++++++-------- 12 files changed, 114 insertions(+), 84 deletions(-) diff --git a/4dev/database/table/edit_access.sql b/4dev/database/table/edit_access.sql index b2fa3322..40e3e1f6 100644 --- a/4dev/database/table/edit_access.sql +++ b/4dev/database/table/edit_access.sql @@ -8,7 +8,7 @@ -- DROP TABLE edit_access; CREATE TABLE edit_access ( edit_access_id SERIAL PRIMARY KEY, - name VARCHAR(255) UNIQUE, + name VARCHAR UNIQUE, description VARCHAR, COLOR VARCHAR ) INHERITS (edit_generic) WITHOUT OIDS; diff --git a/4dev/database/table/edit_group.sql b/4dev/database/table/edit_group.sql index ef6348cb..93365c62 100644 --- a/4dev/database/table/edit_group.sql +++ b/4dev/database/table/edit_group.sql @@ -8,7 +8,7 @@ -- DROP TABLE edit_group; CREATE TABLE edit_group ( edit_group_id SERIAL PRIMARY KEY, - name VARCHAR(50), + name VARCHAR, enabled SMALLINT NOT NULL DEFAULT 0, edit_scheme_id INT, edit_access_right_id INT NOT NULL, diff --git a/4dev/database/table/edit_language.sql b/4dev/database/table/edit_language.sql index 654eccd6..282d0d21 100644 --- a/4dev/database/table/edit_language.sql +++ b/4dev/database/table/edit_language.sql @@ -9,12 +9,12 @@ -- DROP TABLE edit_language; CREATE TABLE edit_language ( edit_language_id SERIAL PRIMARY KEY, - short_name VARCHAR(2), - long_name VARCHAR(70), - iso_name VARCHAR(12), + short_name VARCHAR, + long_name VARCHAR, + iso_name VARCHAR, order_number INT, enabled SMALLINT NOT NULL DEFAULT 0, - lang_default SMALLINT NOT NULL DEFAULT 0 UNIQUE + lang_default SMALLINT NOT NULL DEFAULT 0 ) INHERITS (edit_generic) WITHOUT OIDS; INSERT INTO edit_language (short_name, long_name, iso_name, order_number, enabled, lang_default) VALUES ('en', 'English', 'UTF-8', 1, 1, 1); diff --git a/4dev/database/table/edit_menu_group.sql b/4dev/database/table/edit_menu_group.sql index 34f64896..f66d929c 100644 --- a/4dev/database/table/edit_menu_group.sql +++ b/4dev/database/table/edit_menu_group.sql @@ -8,8 +8,8 @@ -- DROP TABLE edit_menu_group; CREATE TABLE edit_menu_group ( edit_menu_group_id SERIAL PRIMARY KEY, - name VARCHAR(255), - flag VARCHAR(50), + name VARCHAR, + flag VARCHAR, order_number INT NOT NULL ) INHERITS (edit_generic) WITHOUT OIDS; diff --git a/4dev/database/table/edit_page.sql b/4dev/database/table/edit_page.sql index ee98585c..84ecea6e 100644 --- a/4dev/database/table/edit_page.sql +++ b/4dev/database/table/edit_page.sql @@ -8,8 +8,8 @@ -- DROP TABLE edit_page; CREATE TABLE edit_page ( edit_page_id SERIAL PRIMARY KEY, - filename VARCHAR(70), - name VARCHAR(255) UNIQUE, + filename VARCHAR, + name VARCHAR UNIQUE, order_number INT NOT NULL, online SMALLINT NOT NULL DEFAULT 0, menu SMALLINT NOT NULL DEFAULT 0, diff --git a/4dev/database/table/edit_query_string.sql b/4dev/database/table/edit_query_string.sql index f919af7a..064127eb 100644 --- a/4dev/database/table/edit_query_string.sql +++ b/4dev/database/table/edit_query_string.sql @@ -8,8 +8,8 @@ -- DROP TABLE edit_query_string; CREATE TABLE edit_query_string ( edit_query_string_id SERIAL PRIMARY KEY, - name VARCHAR(255), - value VARCHAR(255), + name VARCHAR, + value VARCHAR, enabled SMALLINT NOT NULL DEFAULT 0, dynamic SMALLINT NOT NULL DEFAULT 0, edit_page_id INT NOT NULL, diff --git a/4dev/database/table/edit_scheme.sql b/4dev/database/table/edit_scheme.sql index c04bd9ae..809dfe9e 100644 --- a/4dev/database/table/edit_scheme.sql +++ b/4dev/database/table/edit_scheme.sql @@ -9,12 +9,12 @@ CREATE TABLE edit_scheme ( edit_scheme_id SERIAL PRIMARY KEY, enabled SMALLINT NOT NULL DEFAULT 0, - name VARCHAR(50), - header_color VARCHAR(7), - css_file VARCHAR(50), - template VARCHAR(50) + name VARCHAR, + header_color VARCHAR, + css_file VARCHAR, + template VARCHARs ) INHERITS (edit_generic) WITHOUT OIDS; -INSERT INTO edit_scheme (name, header_color, enabled) VALUES ('Default Scheme', '#E0E2FF', 1); -INSERT INTO edit_scheme (name, header_color, enabled) VALUES ('Admin', '#CC7E7E', 1); -INSERT INTO edit_scheme (name, header_color, enabled) VALUES ('Visitor', '#B0C4B3', 1); +INSERT INTO edit_scheme (name, header_color, enabled) VALUES ('Default Scheme', 'E0E2FF', 1); +INSERT INTO edit_scheme (name, header_color, enabled) VALUES ('Admin', 'CC7E7E', 1); +INSERT INTO edit_scheme (name, header_color, enabled) VALUES ('Visitor', 'B0C4B3', 1); diff --git a/4dev/database/table/edit_temp_files.sql b/4dev/database/table/edit_temp_files.sql index f822eda0..301df712 100644 --- a/4dev/database/table/edit_temp_files.sql +++ b/4dev/database/table/edit_temp_files.sql @@ -7,5 +7,5 @@ -- DROP TABLE temp_files; CREATE TABLE temp_files ( - filename VARCHAR(250) + filename VARCHAR ); diff --git a/4dev/database/table/edit_visible_group.sql b/4dev/database/table/edit_visible_group.sql index eb794d1e..5414a0f7 100644 --- a/4dev/database/table/edit_visible_group.sql +++ b/4dev/database/table/edit_visible_group.sql @@ -8,8 +8,8 @@ -- DROP TABLE edit_visible_group; CREATE TABLE edit_visible_group ( edit_visible_group_id SERIAL PRIMARY KEY, - name VARCHAR(255), - flag VARCHAR(50) + name VARCHAR, + flag VARCHAR ) INHERITS (edit_generic) WITHOUT OIDS; DELETE FROM edit_visible_group; diff --git a/www/admin/edit_base.inc b/www/admin/edit_base.inc index 14bf0850..cf016584 100644 --- a/www/admin/edit_base.inc +++ b/www/admin/edit_base.inc @@ -24,7 +24,7 @@ extract($_POST, EXTR_SKIP); $table_width = 750; // this is for certain CMS modules that set a relative path -define(REL_PATH, ''); +define('REL_PATH', ''); ob_start(); include("config.inc"); @@ -137,7 +137,7 @@ $DATA['GROUP_NAME'] = $_SESSION["GROUP_NAME"]; $DATA['GROUP_LEVEL'] = $_SESSION["GROUP_LEVEL"]; $PAGES = $_SESSION["PAGES"]; -//$form->debug('menu', $form->print_ar($PAGES)); +//$form->debug('menu', $form->printAr($PAGES)); // baue nav aus $PAGES ... for ($i = 0; $i < count($PAGES); $i ++) { @@ -292,7 +292,7 @@ if ($form->yes) { print "[No valid page definition given]"; break; } -// $form->debug('edit', "Elements:
".$form->print_ar($elements));
+//		$form->debug('edit', "Elements: 
".$form->printAr($elements));
 	$DATA['elements'] = $elements;
 	$DATA['hidden'] = $form->formCreateHiddenFields();
 	$DATA['save_delete'] = $form->formCreateSaveDelete();
@@ -304,7 +304,7 @@ $DEBUG_DATA['DEBUG'] = $DEBUG_TMPL;
 // create main data array
 $CONTENT_DATA = array_merge($HEADER, $DATA, $DEBUG_DATA);
 // data is 1:1 mapping (all vars, values, etc)
-while (list($key, $value) = each($CONTENT_DATA)) {
+foreach ($CONTENT_DATA as $key => $value) {
 	$smarty->assign($key, $value);
 }
 if (is_dir(BASE.TEMPLATES_C)) {
diff --git a/www/lib/CoreLibs/ACL/Login.inc b/www/lib/CoreLibs/ACL/Login.inc
index 784e60f3..fe6c4518 100644
--- a/www/lib/CoreLibs/ACL/Login.inc
+++ b/www/lib/CoreLibs/ACL/Login.inc
@@ -332,7 +332,7 @@ class Login extends \CoreLibs\DB\IO
 				$q .= "eu.edit_access_right_id = eareu.edit_access_right_id AND ";
 				$q .= "eg.edit_access_right_id = eareg.edit_access_right_id AND ";
 				// password match is done in script, against old plain or new blowfish encypted
-				$q .= "(LOWER(username) = '".strtolower($this->username)."') ";
+				$q .= "(LOWER(username) = '".$this->dbEscapeString(strtolower($this->username))."') ";
 				$res = $this->dbReturn($q);
 				// username is wrong, but we throw for wrong username and wrong password the same error
 				if (!$this->cursor_ext[md5($q)]["num_rows"]) {
diff --git a/www/lib/CoreLibs/Output/Form/Generate.inc b/www/lib/CoreLibs/Output/Form/Generate.inc
index 1b5c7ad5..dda68ed5 100644
--- a/www/lib/CoreLibs/Output/Form/Generate.inc
+++ b/www/lib/CoreLibs/Output/Form/Generate.inc
@@ -270,12 +270,12 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
 		$this->int_pk_name = $this->pk_name;
 		// check if reference_arrays are given and proceed them
 		if (is_array($config_array["reference_arrays"])) {
-			while (list($key, $value) = each($config_array["reference_arrays"])) {
+			foreach ($config_array["reference_arrays"] as $key => $value) {
 				$this->reference_array[$key] = $value;
 			}
 		}
 		if (is_array($config_array["element_list"])) {
-			while (list($key, $value) = each($config_array["element_list"])) {
+			foreach ($config_array["element_list"] as $key => $value) {
 				$this->element_list[$key] = $value;
 			}
 		}
@@ -319,7 +319,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
 		}
 		reset($this->table_array);
 		$string .= "TABLE ARRAY DUMP: ".$this->table_name."
"; - while (list($key, $value) = each($this->table_array)) { + foreach ($this->table_array as $key => $value) { $string .= "$key: ".$value["value"]."
"; } return $string; @@ -347,7 +347,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO $this->table_array = array (); } reset($this->table_array); - while (list($key, $value) = each($this->table_array)) { + foreach ($this->table_array as $key => $value) { if ($value[$want_key] && !$key_value) { return $key; } elseif ($value[$want_key] == $key_value && $key_value) { @@ -368,7 +368,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO $this->table_array = array (); } reset($this->table_array); - while (list($key, $value) = each($this->table_array)) { + foreach ($this->table_array as $key => $value) { if ($value[$want_key] && !$key_value) { array_push($key_array, $key); } @@ -474,22 +474,26 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO { // only do if the user is allowed to delete if ($this->group_level_user <= $this->security_level["delete"] && !$this->table_array["protected"]["value"] && !$this->error) { - for ($i = 0; $i < count($element_list); $i ++) { + if (!is_array($element_list)) { + $element_list = array (); + } + for ($i = 0, $i_max = count($element_list); $i < $i_max; $i ++) { // $this->debug('form_error', "Array: ".is_array($this->element_list[$element_list[$i]]["read_data"])." | ".$this->element_list[$element_list[$i]]["delete"]); // if prefix, set it $prfx = ($this->element_list[$element_list[$i]]["prefix"]) ? $this->element_list[$element_list[$i]]["prefix"]."_" : ''; // get the primary key - while (list($el_name, $data) = each($this->element_list[$element_list[$i]]["elements"])) { + foreach ($this->element_list[$element_list[$i]]["elements"] as $el_name => $data) { if ($data["pk_id"]) { $pk_name = $el_name; } } // which key should be deleted $id = $remove_name[$i]; - if (($this->element_list[$element_list[$i]]["delete_name"] || $this->element_list[$element_list[$i]]["delete"]) && !$this->element_list[$element_list[$i]]["enable_name"]) { + if (($this->element_list[$element_list[$i]]["delete_name"] || $this->element_list[$element_list[$i]]["delete"]) && + !$this->element_list[$element_list[$i]]["enable_name"] + ) { // flag var name $flag = $remove_name[$i]."_flag"; - if ($_POST[$flag] == "true") { $q = "DELETE FROM ".$element_list[$i]." WHERE ".$pk_name." = ".$_POST[$id]; $this->dbExec($q); @@ -497,7 +501,10 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO $this->warning = 1; } // post okay true -> delete } elseif (is_array($this->element_list[$element_list[$i]]["read_data"]) && !$this->element_list[$element_list[$i]]["delete"]) { - for ($j = 0; $j < count($_POST[$id]); $j ++) { + if (!is_array($_POST[$id])) { + $_POST[$id] = array (); + } + for ($j = 0, $j_max = count($_POST[$id]); $j < $j_max; $j ++) { // if it is not activated if (!$_POST[$remove_name[$i]][$j]) { $q = "UPDATE ".$element_list[$i]." WHERE ".$pk_name." = ".$_POST[$prfx.$pk_name][$j]; @@ -511,7 +518,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO // $this->debug('form_clean', "ID [$id] [$prfx.$pk_name]"); // $this->debug('form_clean', "ID arr: ".$this->print_ar($_POST[$id])); // $this->debug('form_clean', "PK arr: ".$this->print_ar($_POST[$prfx.$pk_name])); - for ($j = 0; $j < count($_POST[$prfx.$pk_name]); $j ++) { + for ($j = 0, $j_max = count($_POST[$prfx.$pk_name]); $j < $j_max; $j ++) { if (!$_POST[$remove_name[$i]][$j] && $_POST[$prfx.$pk_name][$j]) { $q = "DELETE FROM ".$element_list[$i]." WHERE ".$pk_name." = ".$_POST[$prfx.$pk_name][$j]; // $this->debug('edit_db', "DEL: $q"); @@ -540,13 +547,13 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO // lade liste $this->dbExec($this->load_query); - while ($res = $this->db_fetch_array()) { + while ($res = $this->dbFetchArray()) { $pk_ids[] = $res[$this->int_pk_name]; if ($res[$this->int_pk_name] == $this->table_array[$this->int_pk_name]["value"]) { $pk_selected = $res[$this->int_pk_name]; } unset($t_string); - for ($i = 0; $i < count($this->field_array); $i ++) { + for ($i = 0, $i_max = count($this->field_array); $i < $i_max; $i ++) { if ($t_string) { $t_string .= ", "; } @@ -612,7 +619,14 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO $show_delete = 1; } } // print save/delete row at all$ - return array('seclevel_okay' => $seclevel_okay, 'save' => $save, 'pk_name' => $pk_name, 'pk_value' => $pk_value, 'show_delete' => $show_delete, 'hide_delete_checkbox' => $hide_delete_checkbox); + return array( + 'seclevel_okay' => $seclevel_okay, + 'save' => $save, + 'pk_name' => $pk_name, + 'pk_value' => $pk_value, + 'show_delete' => $show_delete, + 'hide_delete_checkbox' => $hide_delete_checkbox + ); } // end of function // METHOD: formCreateElement @@ -717,7 +731,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO $data['name'] = $element_name; $data['value'][] = ""; $data['output'][] = $this->l->__("Please choose ..."); - while ($res = $this->db_return($query)) { + while ($res = $this->dbReturn($query)) { $data['value'][] = $res[0]; $data['output'][] = $res[1]; if ($this->table_array[$element_name]["value"] == $res[0]) { @@ -743,7 +757,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO $data['value'][] = ""; $data['output'][] = $this->l->__("Please choose ..."); // outer query overrules inner - while (list($key, $value) = each($query)) { + foreach ($query as $key => $value) { $data['value'][] = $key; $data['output'][] = $value; if ($this->table_array[$element_name]["value"] == $key) { @@ -757,7 +771,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO $query = $this->table_array[$element_name]["query"]; } $data['name'] = $element_name; - while (list($key, $value) = each($query)) { + foreach ($query as $key => $value) { $data['value'][] = $key; $data['output'][] = $value; if ($this->table_array[$element_name]["value"] == $key) { @@ -806,7 +820,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO $this->table_array = array (); } reset($this->table_array); - while (list($key, $value) = each($this->table_array)) { + foreach ($this->table_array as $key => $value) { //if ($value["mandatory"] && $value["error_check"]) // if error value set && somethign input, check if input okay if ($value["error_check"] && $this->table_array[$key]["value"]) { @@ -844,7 +858,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO break; // check unique, check if field in table is not yet exist case "unique": - $q = "SELECT ".$key." FROM ".$this->table_name." WHERE ".$key." = '".$this->db_escape_string($this->table_array[$key]["value"])."'"; + $q = "SELECT ".$key." FROM ".$this->table_name." WHERE ".$key." = '".$this->dbEscapeString($this->table_array[$key]["value"])."'"; if ($this->table_array[$this->int_pk_name]["value"]) { $q .= " AND ".$this->int_pk_name." <> ".$this->table_array[$this->int_pk_name]["value"]; } @@ -928,7 +942,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO $this->reference_array = array (); } reset($this->reference_array); - while (list($key, $value) = each($this->reference_array)) { + foreach ($this->reference_array as $key => $value) { if ($this->reference_array[$key]["mandatory"] && !$this->reference_array[$key]["selected"][0]) { $this->msg .= sprintf($this->l->__("Please select at least one Element from field %s!
"), $this->reference_array[$key]["output_name"]); } @@ -938,7 +952,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO if (is_array($this->element_list)) { // check the mandatory stuff // if mandatory, check that at least on pk exists or if at least the mandatory field is filled - while (list($table_name, $reference_array) = each($this->element_list)) { + foreach ($this->element_list as $table_name => $reference_array) { // set pk/fk id for this foreach ($reference_array['elements'] as $_name => $_data) { if ($_data['pk_id']) { @@ -955,7 +969,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO // get max elements $max = 0; foreach ($keys as $key) { - if (count($_POST[$prfx.$key]) > $max) { + if (is_array($_POST[$prfx.$key]) && count($_POST[$prfx.$key]) > $max) { $max = count($_POST[$prfx.$key]); } // $this->debug('edit_error_chk', "KEY: $prfx$key | count: ".count($_POST[$prfx.$key])." | M: $max"); @@ -965,7 +979,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO # check each row for ($i = 0; $i < $max; $i ++) { // either one of the post pks is set, or the mandatory - while (list($el_name, $data_array) = each($reference_array["elements"])) { + foreach ($reference_array["elements"] as $el_name => $data_array) { if ($data_array["mandatory"]) { $mand_name = $data_array["output_name"]; } @@ -999,7 +1013,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO switch ($error_check) { // check unique, check if field in table is not yet exist case "unique": - $q = "SELECT ".$_pk_name." FROM ".$table_name." WHERE ".$el_name." = '".$this->db_escape_string($_POST[$prfx.$el_name][$i])."'"; + $q = "SELECT ".$_pk_name." FROM ".$table_name." WHERE ".$el_name." = '".$this->dbEscapeString($_POST[$prfx.$el_name][$i])."'"; if ($this->table_array[$this->int_pk_name]["value"]) { $q .= " AND ".$this->int_pk_name." <> ".$this->table_array[$this->int_pk_name]["value"]; } @@ -1078,7 +1092,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO $this->table_array = array (); } reset($this->table_array); - while (list($key, $value) = each($this->table_array)) { + foreach ($this->table_array as $key => $value) { unset($this->table_array[$key]["value"]); unset($this->table_array[$key]["input_value"]); // if preset var present preset @@ -1091,7 +1105,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO $this->reference_array = array (); } reset($this->reference_array); - while (list($key, $value) = each($this->reference_array)) { + foreach ($this->reference_array as $key => $value) { unset($this->reference_array[$key]["selected"]); } } @@ -1109,14 +1123,14 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO if ($pk_id) { $this->pk_id = $pk_id; } - $this->table_array = $this->db_read(1); + $this->table_array = $this->dbRead(1); // reset all temp fields if (!is_array($this->table_array)) { $this->table_array = array (); } reset($this->table_array); - while (list($key, $value) = each($this->table_array)) { + foreach ($this->table_array as $key => $value) { unset($this->table_array[$key]["input_value"]); } @@ -1126,10 +1140,10 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO $this->reference_array = array (); } reset($this->reference_array); - while (list($key, $value) = each($this->reference_array)) { + foreach ($this->reference_array as $key => $value) { unset($this->reference_array[$key]["selected"]); $q = "SELECT ".$this->reference_array[$key]["other_table_pk"]." FROM ".$this->reference_array[$key]["table_name"]." WHERE ".$this->int_pk_name."=".$this->table_array[$this->int_pk_name]["value"]; - while ($res = $this->db_return($q)) { + while ($res = $this->dbReturn($q)) { $this->reference_array[$key]["selected"][] = $res[$this->reference_array[$key]["other_table_pk"]]; } } @@ -1151,13 +1165,13 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO $this->table_array = array (); } reset($this->table_array); - while (list($key, $value) = each($this->table_array)) { + foreach ($this->table_array as $key => $value) { // drop_down_db with input + reference table // $this->debug('form', "A: ".$this->table_array[$key]["type"]." --- ".$this->table_array[$key]["input_value"]); if ($this->table_array[$key]["type"] == "drop_down_db_input" && $this->table_array[$key]["input_value"]) { // $this->debug('form', "HERE"); // check if this text name already exists (lowercase compare) - $q = "SELECT ".$this->table_array[$key]["pk_name"]." FROM ".$this->table_array[$key]["table_name"]." WHERE LCASE(".$this->table_array[$key]["input_name"].") = '".$this->db_escape_string(strtolower($this->table_array[$key]["input_value"]))."'"; + $q = "SELECT ".$this->table_array[$key]["pk_name"]." FROM ".$this->table_array[$key]["table_name"]." WHERE LCASE(".$this->table_array[$key]["input_name"].") = '".$this->dbEscapeString(strtolower($this->table_array[$key]["input_value"]))."'"; // if a where was given, add here if ($this->table_array[$key]["where"]) { $q .= " AND ".$this->table_array[$key]["where"]; @@ -1168,7 +1182,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO } else { // if a where was given, set this key also [dangerous!] // postgreSQL compatible insert - $q = "INSERT INTO ".$this->table_array[$key]["table_name"]." (".$this->table_array[$key]["input_name"].") VALUES ('".$this->db_escape_string($this->table_array[$key]["input_value"])."')"; + $q = "INSERT INTO ".$this->table_array[$key]["table_name"]." (".$this->table_array[$key]["input_name"].") VALUES ('".$this->dbEscapeString($this->table_array[$key]["input_value"])."')"; $this->dbExec($q); if ($this->table_array[$key]["where"]) { // make an update on the just inseted data with the where data als update values @@ -1186,7 +1200,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO // if drop down & input are different if ($this->table_array[$key]["input_value"] != $this->table_array[$key]["value"]) { // check if "right input" is in DB - $q = "SELECT ".$this->table_array[$key]["input_name"]." FROM ".$this->table_array[$key]["table_name"]." WHERE LCASE(".$this->table_array[$key]["input_name"].") = '".strtolower($this->db_escape_string($this->table_array[$key]["input_value"]))."'"; + $q = "SELECT ".$this->table_array[$key]["input_name"]." FROM ".$this->table_array[$key]["table_name"]." WHERE LCASE(".$this->table_array[$key]["input_name"].") = '".strtolower($this->dbEscapeString($this->table_array[$key]["input_value"]))."'"; // if a where was given, add here if ($this->table_array[$key]["where"]) { $q .= " AND ".$this->table_array[$key]["where"]; @@ -1262,7 +1276,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO $q = "DELETE FROM ".$reference_array["table_name"]." WHERE ".$this->int_pk_name."=".$this->table_array[$this->int_pk_name]["value"]; $this->dbExec($q); $q = "INSERT INTO ".$reference_array["table_name"]." (".$reference_array["other_table_pk"].", ".$this->int_pk_name.") VALUES "; - for ($i = 0; $i < count($reference_array["selected"]); $i ++) { + for ($i = 0, $i_max = count($reference_array["selected"]); $i < $i_max; $i ++) { $t_q = "(".$reference_array["selected"][$i].", ".$this->table_array[$this->int_pk_name]["value"].")"; $this->dbExec($q.$t_q); } @@ -1274,7 +1288,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO $this->element_list = array (); } reset($this->element_list); - while (list($table_name, $reference_array) = each($this->element_list)) { + foreach ($this->element_list as $table_name => $reference_array) { // get the number of keys from the elements array $keys = array_keys($reference_array["elements"]); // element prefix name @@ -1282,13 +1296,13 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO // get max elements $max = 0; foreach ($keys as $key) { - if (count($_POST[$prfx.$key]) > $max) { + if (is_array($_POST[$prfx.$key]) && count($_POST[$prfx.$key]) > $max) { $max = count($_POST[$prfx.$key]); } } // $this->debug('edit_error', "MAX: $max"); // check if there is a hidden key, update, else insert - while (list($el_name, $data_array) = each($reference_array["elements"])) { + foreach ($reference_array["elements"] as $el_name => $data_array) { // this is only for reference_data part, at least one of the text fields need to be set for writing $blow_write = array (); // $this->debug('edit_error_query', "QUERY: ".$this->print_ar($_POST)); @@ -1364,14 +1378,14 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO $q_values[$i] .= $_value; } else { // normal data gets escaped - $q_data[$i] .= $el_name." = '".$this->db_escape_string($_value)."'"; - $q_values[$i] .= "'".$this->db_escape_string($_value)."'"; + $q_data[$i] .= $el_name." = '".$this->dbEscapeString($_value)."'"; + $q_values[$i] .= "'".$this->dbEscapeString($_value)."'"; } } } } // eche table elements // finalize the queries, add FK key reference for inserts and run the query - for ($i = 0; $i < count($type); $i ++) { + for ($i = 0, $i_max = count($type); $i < $i_max; $i ++) { $q = ''; if (!$no_write[$i]) { if ($type[$i] == "update") { @@ -1416,7 +1430,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO $this->element_list = array (); } reset($this->element_list); - while (list($table_name, $data_array) = each($this->element_list)) { + foreach ($this->element_list as $table_name => $data_array) { $q = "DELETE FROM ".$table_name." WHERE ".$this->int_pk_name." = ".$this->table_array[$this->int_pk_name]["value"]; $this->dbExec($q); } @@ -1426,12 +1440,12 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO $this->table_array = array (); } reset($this->table_array); - while (list($key, $value) = each($this->table_array)) { + foreach ($this->table_array as $key => $value) { if ($this->table_array[$key]["type"] == "file") { unlink($this->table_array[$key]["save_dir"].$this->table_array[$key]["value"]); } } - $this->db_delete(); + $this->dbDelete(); $this->warning = 1; $this->msg = $this->l->__("Dataset has been deleted!"); } @@ -1441,21 +1455,25 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO // PARAMS: $hidden_array // RETURN: the input fields (html) // DESC : creates HTML hidden input fields out of an hash array - public function formCreateHiddenFields($hidden_array = "") + public function formCreateHiddenFields($hidden_array = array ()) { $hidden = array (); if (!is_array($this->table_array)) { $this->table_array = array (); } reset($this->table_array); - while (list($key, $value) = each($this->table_array)) { + foreach ($this->table_array as $key => $value) { if ($this->table_array[$key]["type"] == "hidden") { - $hidden_array[$key] = $this->table_array[$key]["value"]; + if (array_key_exists($key, $this->table_array)) { + $hidden_array[$key] = $this->table_array[$key]["value"]; + } else { + $hidden_array[$key] = ''; + } } } if (is_array($hidden_array)) { reset($hidden_array); - while (list($key, $value) = each($hidden_array)) { + foreach ($hidden_array as $key => $value) { $hidden[] = array('key' => $key, 'value' => $value); } } @@ -1475,7 +1493,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO } $data['name'] = $this->reference_array[$table_name]["other_table_pk"]; $data['size'] = $this->reference_array[$table_name]["select_size"]; - while ($res = $this->db_return($this->reference_array[$table_name]["query"])) { + while ($res = $this->dbReturn($this->reference_array[$table_name]["query"])) { $data['value'][] = $res[0]; $data['output'][] = $res[1]; $data['selected'][] = ($this->checked($this->reference_array[$table_name]["selected"], $res[0])) ? $res[0] : ''; @@ -1523,7 +1541,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO reset($this->element_list[$table_name]["elements"]); // generic data read in (counts for all rows) // visible list data output - while (list($el_name, $data_array) = each($this->element_list[$table_name]["elements"])) { + foreach ($this->element_list[$table_name]["elements"] as $el_name => $data_array) { $this->debug('CFG', 'El: '.$el_name.' -> '.$this->print_ar($data_array)); // if the element name matches the read array, then set the table as a name prefix $q_select[] = $el_name; // this is for reading the data @@ -1542,7 +1560,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO // only two elements are allowed: pos 0 is key, pso 1 is visible output name if ($data_array['type'] == 'drop_down_db') { $md_q = md5($data_array['query']); - while ($res = $this->db_return($data_array['query'])) { + while ($res = $this->dbReturn($data_array['query'])) { $this->debug('edit', "Q[$md_q] pos: ".$this->cursor_ext[$md_q]["pos"]." | want: ".$data_array["preset"]." | set: ".$data['preset'][$el_name]); // first is default for this element if (!$data['preset'][$el_name] && ($this->cursor_ext[$md_q]["pos"] == $data_array['preset'])) { @@ -1555,7 +1573,19 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO } elseif ($data_array["element_list"]) { $data['element_list'][$el_name] = $data_array["element_list"]; // this is for the checkboxes } - $proto[$el_name] = ($this->error) ? $_POST[$el_name][(count($_POST[$el_name]) - 1)] : ''; // this is for the new line + $this->debug('CREATE ELEMENT LIST TABLE', 'Post: '.$el_name.' => '.$_POST[$el_name].' => '.is_array($_POST[$el_name])); + // if error, check new line addition so we don't loose it + if ($this->error) { + if (is_array($_POST[$el_name])) { + // this is for the new line + $proto[$el_name] = $_POST[$el_name][(count($_POST[$el_name]) - 1)]; + } else { + $proto[$el_name] = 0; + } + } else { + $proto[$el_name] = ''; + } + // $proto[$el_name] = $this->error ? $_POST[$el_name][(count($_POST[$el_name]) - 1)] : ''; } // $this->debug('CFG DATA', 'Data: '.$this->print_ar($data)); // $this->debug('CFG PROTO', 'Proto: '.$this->print_ar($proto)); @@ -1610,11 +1640,11 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO if ($q) { $pos = 0; // position in while for overwrite if needed // read out the list and add the selected data if needed - while ($res = $this->db_return($q)) { + while ($res = $this->dbReturn($q)) { $_data = array (); $prfx = $data["prefix"]; // short // go through each res - for ($i = 0; $i < count($q_select); $i ++) { + for ($i = 0, $i_max = count($q_select); $i < $i_max; $i ++) { // query select part, set to the element name $el_name = $q_select[$i]; // $this->debug('edit_error', "[$i] ELNAME: $el_name | POS[$prfx$el_name]: ".$_POST[$prfx.$el_name][$pos]." | RES: ".$res[$el_name]); @@ -1649,12 +1679,12 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO $this->element_list[$table_name]['max_empty'] = 10; } // check if we need to fill fields - $element_count = count($data['content']); - $missing_empty_count = $this->element_list[$table_name]['max_empty'] - count($data['content']); + $element_count = is_array($data['content']) ? count($data['content']) : 0; + $missing_empty_count = $this->element_list[$table_name]['max_empty'] - $element_count; $this->debug('CFG MAX', 'Max empty: '.$this->element_list[$table_name]['max_empty'].', Missing: '.$missing_empty_count.', Has: '.$element_count); // set if we need more open entries or if we do not have any entries yet if (($missing_empty_count < $this->element_list[$table_name]['max_empty']) || $element_count == 0) { - for ($pos = count($data['content']); $pos <= ($this->element_list[$table_name]['max_empty'] + $element_count); $pos ++) { + for ($pos = $element_count , $pos_max = $this->element_list[$table_name]['max_empty'] + $element_count; $pos <= $pos_max; $pos ++) { $_data = array (); // the fields that need to be filled are in data->type array: