X-Git-Url: https://git.harvie.cz/?a=blobdiff_plain;f=index.php;h=2bcad25297300418ae95e6bd46dbabc08bb6d2a5;hb=4d4ca2918fbfe23f3bbe9901057783a68a7c77e9;hp=c944d1a0866f196b16d4914f8ba414cf3db898c7;hpb=ea921a95b65ffaae5b008f864494553d73289612;p=mirrors%2FSokoMan.git diff --git a/index.php b/index.php index c944d1a..2bcad25 100755 --- a/index.php +++ b/index.php @@ -267,7 +267,7 @@ EOF; if($count) $assistants[$item] = "assistant/$item"; } - $tables=array('item','model','category','producer','vendor','room','status','location'); + $tables=array('item','barcode','model','category','producer','vendor','room','status','location'); foreach($tables as $table) { $listable[$table] = $table; @@ -364,6 +364,11 @@ EOF; 'barcode_name' => array(array('store','assistant/%d?barcode=%v')), 'model_name' => array(array('google','http://google.com/search?q=%v')) //TODO: add manufacturer to google query ), + 'barcode' => array( + 'model_id' => array(array('model',$where_url)), + 'barcode_id' => array(array('item',$where_url),array('edit','barcode/%v/edit/')), + 'barcode_name' => array(array('store','assistant/%d?barcode=%v')), + ), 'item' => array( 'item_serial' => array(array('dispose','assistant/%d?serial=%v','in_stock'),array('sell','assistant/%d?serial=%v','in_stock')), 'item_id' => array(array('edit','item/%v/edit/')) @@ -452,6 +457,8 @@ EOF; function table_hide_columns(&$table, $class) { //TODO: Move to build_query_select() !!! :-))) $fields_hide = array( + 'model' => array('model_barcode','barcode_name'), + 'barcode' => array('model_barcode'), 'item' => array('model_descript','model_price_in','model_price_out','barcode_name','model_barcode','model_countable','model_reserve','model_eshop_hide','room_descript','room_author','producer_name','producer_note','vendor_note','location_author','location_gps','location_description') ); //print_r($table); die(); @@ -623,10 +630,16 @@ class Sklad_DB extends PDO { 'item' => array('barcode', 'model', 'category', 'producer', 'vendor', 'room', 'location', 'status'), 'model' => array('category', 'producer') ); //TODO Autodetect using foreign keys? + $join2 = array( + 'model' => array('barcode'=>'model_id') + ); $fields_search = array( 'item' => array('item_id','item_serial','model_name','barcode_name','model_barcode','model_descript','producer_name','vendor_name'), 'model' => array('model_id','model_name','barcode_name','model_barcode','model_descript','producer_name') ); //TODO Autodetect + $group_concat = array( + 'model' => array('barcode_name'=>'model_id') + ); //Init if(is_array($where)) foreach($where as $key => $value) $where[$key] = $key.' '.$value; //TODO: escape SQLi!!! @@ -634,10 +647,20 @@ class Sklad_DB extends PDO { //Escaping $class = $this->escape($class); + //GROUP_CONCAT + $group_concat_query = ''; + $group_by = ''; + if(isset($group_concat[$class])) foreach($group_concat[$class] as $gc => $gb) { + $group_concat_query .= ",group_concat($gc separator ', ')"; + $group_by .= "GROUP BY $gb\n"; + } + //SELECT - $sql="SELECT * FROM `$class`\n"; + $sql="SELECT *$group_concat_query FROM `$class`\n"; + //$sql="SELECT * FROM `$class`\n"; //JOIN if(isset($join[$class])) foreach($join[$class] as $j) $sql .= "LEFT JOIN `$j` USING($j$suffix_id)\n"; + if(isset($join2[$class])) foreach($join2[$class] as $j => $c) $sql .= "LEFT JOIN `$j` USING($c)\n"; //WHERE/REGEXP if($search) { $search = $this->quote($search); @@ -649,6 +672,10 @@ class Sklad_DB extends PDO { if(!$history && $this->contains_history($class)) $where[] = $class.'_valid_till=0'; if($where) $sql .= 'WHERE ('.implode(') AND (', $where).")\n"; + + //GROUP BY + $sql.=$group_by; + //ORDER if(!$order) $order = $class.$suffix_id.' DESC'; if($this->contains_history($class)) $order .= ",${class}_valid_from DESC";