Index: trunk/kernel/units/languages/languages_event_handler.php =================================================================== diff -u -N -r2915 -r3014 --- trunk/kernel/units/languages/languages_event_handler.php (.../languages_event_handler.php) (revision 2915) +++ trunk/kernel/units/languages/languages_event_handler.php (.../languages_event_handler.php) (revision 3014) @@ -29,11 +29,20 @@ if( isset($field_options['formatter']) && $field_options['formatter'] == 'kMultiLanguage' ) { $describe = $this->Conn->Query('DESCRIBE '.$table_name.' \'l%_'.$field_name.'\''); + $created_count = count($describe); + if(!$describe) + { + // no multilingual fields at all + $describe = $this->Conn->Query('DESCRIBE '.$table_name.' \''.$field_name.'\''); + $created_count = 0; + } + if(!$describe) continue; + $field_mask = 'l%s_'.$field_name.' '.$describe[0]['Type']; - $create_count = $languages_count - count($describe); + $create_count = $languages_count - $created_count; if($create_count > 0) { - $sqls[] = 'ALTER TABLE '.$table_name.( $this->generateAlterSQL($field_mask, count($describe) + 1, $create_count) ); + $sqls[] = 'ALTER TABLE '.$table_name.( $this->generateAlterSQL($field_mask, $created_count + 1, $create_count) ); } } } @@ -70,7 +79,11 @@ while($start_index < $i_count) { list($prev_field,$type) = explode(' ', sprintf($field_mask, $start_index-1) ); - $ret .= ' ADD COLUMN '.sprintf($field_mask,$start_index).' AFTER '.$prev_field.', '; + if( substr($prev_field, 0, 3) == 'l0_' ) + { + $prev_field = substr( $prev_field, 3, strlen($prev_field) ); + } + $ret .= ' ADD COLUMN '.sprintf($field_mask,$start_index).' AFTER `'.$prev_field.'`, '; $start_index++; } return preg_replace('/, $/',';',$ret); Index: trunk/core/units/languages/languages_event_handler.php =================================================================== diff -u -N -r2915 -r3014 --- trunk/core/units/languages/languages_event_handler.php (.../languages_event_handler.php) (revision 2915) +++ trunk/core/units/languages/languages_event_handler.php (.../languages_event_handler.php) (revision 3014) @@ -29,11 +29,20 @@ if( isset($field_options['formatter']) && $field_options['formatter'] == 'kMultiLanguage' ) { $describe = $this->Conn->Query('DESCRIBE '.$table_name.' \'l%_'.$field_name.'\''); + $created_count = count($describe); + if(!$describe) + { + // no multilingual fields at all + $describe = $this->Conn->Query('DESCRIBE '.$table_name.' \''.$field_name.'\''); + $created_count = 0; + } + if(!$describe) continue; + $field_mask = 'l%s_'.$field_name.' '.$describe[0]['Type']; - $create_count = $languages_count - count($describe); + $create_count = $languages_count - $created_count; if($create_count > 0) { - $sqls[] = 'ALTER TABLE '.$table_name.( $this->generateAlterSQL($field_mask, count($describe) + 1, $create_count) ); + $sqls[] = 'ALTER TABLE '.$table_name.( $this->generateAlterSQL($field_mask, $created_count + 1, $create_count) ); } } } @@ -70,7 +79,11 @@ while($start_index < $i_count) { list($prev_field,$type) = explode(' ', sprintf($field_mask, $start_index-1) ); - $ret .= ' ADD COLUMN '.sprintf($field_mask,$start_index).' AFTER '.$prev_field.', '; + if( substr($prev_field, 0, 3) == 'l0_' ) + { + $prev_field = substr( $prev_field, 3, strlen($prev_field) ); + } + $ret .= ' ADD COLUMN '.sprintf($field_mask,$start_index).' AFTER `'.$prev_field.'`, '; $start_index++; } return preg_replace('/, $/',';',$ret);