X-Git-Url: http://git.harvie.cz/?a=blobdiff_plain;f=index.php;h=ce099b166954c63ca978ce258311003a765b9e91;hb=16261142aaa2e3477b476d84c662a14bb3d1fa82;hp=33b7f75eb73d08fe4f750081b7fb14846a260adf;hpb=cb8a686102d7f5fa79ac3b6bb934e3dfbc997398;p=mirrors%2FSokoMan.git diff --git a/index.php b/index.php index 33b7f75..ce099b1 100755 --- a/index.php +++ b/index.php @@ -141,6 +141,7 @@ class Sklad_HTML extends HTML {
  • Home
  • Assistants +
  • store
  • new-item
  • @@ -242,7 +243,7 @@ EOF; return $this->table($table); } - function render_insert_form($class, $columns, $selectbox=array(), $current=false, $hidecols=false, $multi_insert=true) { + function render_insert_form($class, $columns, $selectbox=array(), $current=false, $hidecols=false, $action=false, $multi_insert=true) { //echo('
    '); print_r($selectbox);
     		//echo('
    '); print_r($current);
     		$update = false;
    @@ -253,13 +254,14 @@ EOF;
     
     		if(!is_array($hidecols)) $hidecols = array('item_author', 'item_valid_from', 'item_valid_till'); //TODO Autodetect
     
    -		$html='
    '; + $action = $action ? " action='$action'" : false; + $html=""; if($multi_insert) $html.='
    '; //$html.=$this->input('table', $class, 'hidden'); foreach($columns as $column) { $html.=$class.':'.$column['Field'].': '; $name="values[$class][".$column['Field'].'][]'; - $val = $update ? $current[$column['Field']] : false; + $val = $update && isset($current[$column['Field']]) ? $current[$column['Field']] : false; switch(true) { case (preg_match('/auto_increment/', $column['Extra']) || in_array($column['Field'], $hidecols)): if(!$val) $val = ''; @@ -395,7 +397,7 @@ class Sklad_DB extends PDO { $table=preg_replace('/'.$suffix_id.'$/','',$column['Field']); $history = $this->contains_history($table) ? " WHERE ${table}_valid_till=0" : ''; - $sql = "SELECT $table$suffix_id, $table$suffix_name FROM $table$history;"; + $sql = "SELECT $table$suffix_id, $table$suffix_name FROM $table$history;"; //TODO use build_query_select()!!! $result = $this->safe_query($sql, false); if(!$result) continue; $result = $result->fetchAll(PDO::FETCH_ASSOC); @@ -405,6 +407,14 @@ class Sklad_DB extends PDO { return array_filter($selectbox, 'ksort'); } + function map_unique($key, $value, $select, $table) { //TODO: Guess $select and $table if not passed + $history = $this->contains_history($table) ? " AND ${table}_valid_till=0" : ''; + $value=$this->quote($value); + $sql = "SELECT $select FROM $table WHERE $key=$value$history LIMIT 1;"; //TODO use build_query_select()!!! + $result = $this->safe_query($sql)->fetchAll(PDO::FETCH_ASSOC); + if(isset($result[0][$select])) return $result[0][$select]; else die(trigger_error('Položka nenalezena!')); //TODO post_redirect_get... + } + function contains_history($table) { $history_tables = array('item'); //TODO Autodetect return in_array($table, $history_tables); @@ -482,15 +492,15 @@ class Sklad_DB extends PDO { return $sql; } - function insert_or_update($table, $values) { - $sql = $this->build_query_insert($table, $values); + function insert_or_update($table, $values, $replace=true) { + $sql = $this->build_query_insert($table, $values, $replace); $this->safe_query($sql); return $this->lastInsertId(); } - function insert_or_update_multitab($values) { + function insert_or_update_multitab($values, $replace=true) { $last=false; - foreach($values as $table => $rows) $last = $this->insert_or_update($table, $rows); + foreach($values as $table => $rows) $last = $this->insert_or_update($table, $rows, $replace); return $last; } @@ -641,10 +651,12 @@ class Sklad_UI { if($action) switch($action) { case 'new': + $replace = false; case 'edit': + if(!isset($replace)) $replace = true; $table = $class ? $class : 'item'; //print_r($values); //debug - $last = $this->db->insert_or_update_multitab($values); + $last = $this->db->insert_or_update_multitab($values, $replace); $last = "$table/$last/"; $next = "$table/new/"; $this->post_redirect_get($last, 'Hotovo. Další záznam přidáte '.$this->html->link('zde', $next).'.');