Index: trunk/admin/install.php =================================================================== diff -u -N -r4232 -r4237 --- trunk/admin/install.php (.../install.php) (revision 4232) +++ trunk/admin/install.php (.../install.php) (revision 4237) @@ -610,8 +610,12 @@ include_once(FULL_PATH.'/kernel/kernel4/startup.php'); $application =& kApplication::Instance(); - $application->Init(); + $application->Init(); + // force rereading of configs + $unit_config_reader =& $application->recallObject('kUnitConfigReader'); + $unit_config_reader->scanModules(MODULES_PATH); + $ado =& inst_GetADODBConnection(); $mod_arr = $_POST['modules']; Index: trunk/admin/install/install_lib.php =================================================================== diff -u -N -r4232 -r4237 --- trunk/admin/install/install_lib.php (.../install_lib.php) (revision 4232) +++ trunk/admin/install/install_lib.php (.../install_lib.php) (revision 4237) @@ -965,5 +965,46 @@ { $application =& kApplication::Instance(); + $ml_helper =& $application->recallObject('kMultiLanguageHelper'); + $ml_helper->createFields($prefix.'-cdata'); + + $db =& $application->GetADODBConnection(); + + $custom_fields = $application->getUnitOption($prefix, 'CustomFields'); + if (!$custom_fields) { + return true; + } + + $custom_table = $application->getUnitOption($prefix.'-cdata', 'TableName'); + + // copy value from Value field to l_Value field, where destination field is empty + $m_lang = $application->GetVar('m_lang'); + $sql = 'UPDATE '.TABLE_PREFIX.'CustomMetaData + SET l'.$m_lang.'_Value = Value + WHERE LENGTH(l'.$m_lang.'_Value) = 0'; + $db->Query($sql); + + $i = 1; + $field_mask = ''; + $language_count = $ml_helper->getLanguageCount(); + while ($i <= $language_count) { + $field_mask .= 'cdata%1$s.l'.$i.'_Value AS l'.$i.'_cust_%1$s, '; + $i++; + } + $field_mask = preg_replace('/(.*), $/', '\\1', $field_mask); + + $join_mask = 'LEFT JOIN '.TABLE_PREFIX.'CustomMetaData cdata%1$s ON main_table.ResourceId = cdata%1$s.ResourceId AND cdata%1$s.CustomFieldId = %1$s'; + + $fields_sql = Array(); + $joins_sql = Array(); + foreach ($custom_fields as $custom_id => $custom_name) { + array_push($fields_sql, sprintf($field_mask, $custom_id) ); + array_push($joins_sql, sprintf($join_mask, $custom_id)); + } + + $sql = 'INSERT INTO '.$custom_table.' + SELECT 0 AS CustomDataId, main_table.ResourceId, '.implode(', ', $fields_sql).' + FROM '.$application->getUnitOption($prefix, 'TableName').' main_table '.implode(' ', $joins_sql); + $db->Query($sql); } ?> Index: trunk/admin/install/inportal_schema.sql =================================================================== diff -u -N -r4108 -r4237 --- trunk/admin/install/inportal_schema.sql (.../inportal_schema.sql) (revision 4108) +++ trunk/admin/install/inportal_schema.sql (.../inportal_schema.sql) (revision 4237) @@ -119,23 +119,6 @@ # -------------------------------------------------------- -CREATE TABLE CustomMetaData ( - CustomDataId int(11) NOT NULL auto_increment, - ResourceId int(11) NOT NULL default '0', - CustomFieldId int(11) NOT NULL default '0', - Value text NOT NULL, - l1_Value text NOT NULL, - l2_Value text NOT NULL, - l3_Value text NOT NULL, - l4_Value text NOT NULL, - l5_Value text NOT NULL, - PRIMARY KEY (CustomDataId), - KEY ResourceId (ResourceId), - KEY CustomFieldId (CustomFieldId) -) - -# -------------------------------------------------------- - CREATE TABLE EmailMessage ( EmailMessageId int(10) NOT NULL auto_increment, Template longtext,