Index: trunk/core/units/general/helpers/multilanguage.php =================================================================== diff -u -N -r6093 -r7391 --- trunk/core/units/general/helpers/multilanguage.php (.../multilanguage.php) (revision 6093) +++ trunk/core/units/general/helpers/multilanguage.php (.../multilanguage.php) (revision 7391) @@ -72,15 +72,12 @@ return $fields_found; } - function readTableStructure($table_name, $refresh=false) + function readTableStructure($table_name, $refresh = false) { - static $structure_status = Array(); - - if ($refresh || !getArrayValue($structure_status, $table_name)) { +// if ($refresh || !getArrayValue($structure_status, $prefix.'.'.$table_name)) { $this->curStructure = $this->Conn->Query('DESCRIBE '.$table_name, 'Field'); $this->curIndexCount = count($this->Conn->Query('SHOW INDEXES FROM '.$table_name)); - $structure_status[$table_name] = true; - } +// } } /** @@ -113,7 +110,7 @@ unset($this->curFields[$field_name]); continue; } - + $created_count = $this->getCreatedCount($field_name); $create_count = $this->languageCount - $created_count; if ($create_count > 0) { @@ -204,6 +201,8 @@ } $ret = ' '; + $ml_field = preg_replace('/l(.*)_(.*?) (.*)/', '\\2', $field_mask); + $i_count = $start_index + $create_count; while ($start_index < $i_count) { list($prev_field,$type) = explode(' ', sprintf($field_mask, $start_index - 1) ); @@ -226,7 +225,10 @@ if ($this->curIndexCount < 32 && ($start_index == $this->Application->GetDefaultLanguageId() || !$single_lang)) { // create index for primary language column + for all others (if multiple languages installed) list($field_name, $field_params) = explode(' ', $field_expression, 2); - $ret .= 'ADD INDEX (`'.$field_name.'` (5) ), '; + + $index_type = isset($this->curFields[$ml_field]['index_type']) ? $this->curFields[$prev_field]['index_type'] : 'string'; + + $ret .= $index_type == 'string' ? 'ADD INDEX (`'.$field_name.'` (5) ), ' : 'ADD INDEX (`'.$field_name.'`), '; $this->curIndexCount++; }