diff --git a/www/admin/class_test.php b/www/admin/class_test.php index ddd9d20d..8fe6f66e 100644 --- a/www/admin/class_test.php +++ b/www/admin/class_test.php @@ -86,6 +86,18 @@ $status = $basic->db_exec("INSERT INTO foo (test) values ('BAR 1 ".time()."'), ('BAR 2 ".time()."'), ('BAR 3 ".time()."') RETURNING foo_id, test"); print "DIRECT MULTIPLE INSERT STATUS: $status | PRIMARY KEYS: ".print_r($basic->insert_id, 1)." | PRIMARY KEY EXT: ".print_r($basic->insert_id_ext, 1)."
"; + # db write class test + $table = 'foo'; + $primary_key = ''; # unset + $db_write_table = array ('test'); + $object_fields_not_touch = array (); + $object_fields_not_update = array (); + $data = array ('test' => 'SOMETHING '.time()); + $primary_key = $basic->db_write_data_ext($db_write_table, $primary_key, $table, $object_fields_not_touch, $object_fields_not_update, $data); + print "Wrote to DB tabel $table and got primary key $primary_key
"; + $data = array ('test' => ''); + $primary_key = $basic->db_write_data_ext($db_write_table, $primary_key, $table, $object_fields_not_touch, $object_fields_not_update, $data); + print "Wrote to DB tabel $table and got primary key $primary_key
"; # async test queries /* $basic->db_exec_async("SELECT test FROM foo, (SELECT pg_sleep(10)) as sub WHERE foo_id IN (27, 50, 67, 44, 10)"); diff --git a/www/libs/Class.Basic.inc b/www/libs/Class.Basic.inc index 363bf380..87ac188f 100644 --- a/www/libs/Class.Basic.inc +++ b/www/libs/Class.Basic.inc @@ -54,6 +54,7 @@ * GenAssocArray -> generactes a new associativ array from an existing array * CheckDate -> checks if a date is valid * CompareDate -> compares two dates. -1 if the first is smaller, 0 if they are equal, 1 if the first is bigger + * CompareDateTime -> compares two dates with time. -1 if the first is smaller, 0 if they are equal, 1 if the first is bigger * _crc32b -> behaves like the hash("crc32b") in php < 5.2.8. this function will flip the hash like it was (wrong) * before if a new php version is found * crypt* -> encrypt and decrypt login string data, used by Login class @@ -1274,6 +1275,25 @@ return 1; } + // METHOD: CompareDateTime + // PARAMS: start_datetime, end_datetime (both YYYY-MM-DD HH:mm:ss) + // RETURN: -1 if the first date is smaller the last, 0 if both are equal, 1 if the end date is bigger than the last + // DESC : compares the two dates + times. if seconds missing in one set, add :00, converts / to - + public static function CompareDateTime($start_datetime, $end_datetime) + { + // pre check for empty or wrong + if ($start_date == '--' || $end_date == '--' || !$start_date || !$end_date) + return FALSE; + $start_timestamp = strtotime($start_datetime); + $end_timestamp = strtotime($end_datetime); + if ($start_timestamp < $end_timestamp) + return -1; + if ($start_timestamp == $end_timestamp) + return 0; + if ($start_timestamp > $end_timestamp) + return 1; + } + // METHOD: ArrayToString // PARAMS: array, connect char // RETRUN: string diff --git a/www/libs/Class.DB.IO.inc b/www/libs/Class.DB.IO.inc index beef8fdb..1be4d854 100644 --- a/www/libs/Class.DB.IO.inc +++ b/www/libs/Class.DB.IO.inc @@ -1667,7 +1667,13 @@ $this->debug('ExecuteData', 'ERROR in STM['.$stm_name.'|'.$this->prepare_cursor[ // DESC: writes into one table based on array of table columns public function db_write_data($write_array, $not_write_array, $primary_key, $table, $data = array ()) { - $not_write_upodate_array = array (); + if (!is_array($write_array)) + $write_array = array (); + if (!is_array($not_write_array)) + $not_write_array = array (); + if (is_array($table)) + return false; + $not_write_update_array = array (); return $this->db_write_data_ext($write_array, $primary_key, $table, $not_write_array, $not_write_update_array, $data); } @@ -1691,7 +1697,9 @@ $this->debug('ExecuteData', 'ERROR in STM['.$stm_name.'|'.$this->prepare_cursor[ 'value' => $primary_key ); } - + // var set for strings + $q_sub_value = ''; + $q_sub_data = ''; // get the table layout and row types $table_data = $this->db_show_table_meta_data(($this->db_schema ? $this->db_schema.'.' : '').$table); foreach ($write_array as $field) @@ -1705,7 +1713,7 @@ $this->debug('ExecuteData', 'ERROR in STM['.$stm_name.'|'.$this->prepare_cursor[ // we detect bool, so we can force a write on "false" $is_bool = $table_data[$field]['type'] == 'bool' ? true : false; // write if the field has to be not null, or if there is no data and the field has no default values or if there is data - if (($not_null && !$_data) || (!$has_default && !$_data) || ($is_bool && !$_data) || (is_numeric($_data) && isset($_data)) || $_data) + if (($not_null && !$_data) || (!$has_default && !$_data) || ($is_bool && !$_data) || (is_numeric($_data) && isset($_data)) || ($primary_key['value'] && !$_data) || $_data) { if ($q_sub_value && !$primary_key['value']) $q_sub_value .= ', '; diff --git a/www/libs/Class.Login.inc b/www/libs/Class.Login.inc index fc897f36..37de0917 100644 --- a/www/libs/Class.Login.inc +++ b/www/libs/Class.Login.inc @@ -581,7 +581,7 @@ { $this->acl['page'] = $_SESSION['GROUP_ACL_LEVEL']; } - if ($_SESSION['PAGES_ACL_LEVEL'][$this->page_name] != -1) + if (isset($_SESSION['PAGES_ACL_LEVEL'][$this->page_name]) && $_SESSION['PAGES_ACL_LEVEL'][$this->page_name] != -1) { $this->acl['page'] = $_SESSION['PAGES_ACL_LEVEL'][$this->page_name]; }