Index: trunk/core/units/languages/languages_event_handler.php =================================================================== diff -u -N -r3187 -r3211 --- trunk/core/units/languages/languages_event_handler.php (.../languages_event_handler.php) (revision 3187) +++ trunk/core/units/languages/languages_event_handler.php (.../languages_event_handler.php) (revision 3211) @@ -1,8 +1,8 @@ Application->getUnitOption($event->Prefix,'TableName'); $languages_count = $this->Conn->GetOne('SELECT COUNT(*) FROM '.$table_name); $languages_count = $languages_count + 5 - ( $languages_count % 5 ? ($languages_count % 5) : 5 ); - + $sqls = Array(); - + $unit_config_reader =& $this->Application->recallObject('kUnitConfigReader'); - + foreach($unit_config_reader->configData as $prefix => $config_data) { $table_name = getArrayValue($config_data,'TableName'); $fields = getArrayValue($config_data,'Fields'); if(!($table_name && $fields) ) continue; - + foreach($fields as $field_name => $field_options) { if( isset($field_options['formatter']) && $field_options['formatter'] == 'kMultiLanguage' ) @@ -37,10 +37,10 @@ $created_count = 0; } if(!$describe) continue; - + $field_mask = 'l%s_'.$field_name.' '.$describe[0]['Type']; $create_count = $languages_count - $created_count; - if($create_count > 0) + if($create_count > 0) { $sqls[] = 'ALTER TABLE '.$table_name.( $this->generateAlterSQL($field_mask, $created_count + 1, $create_count) ); } @@ -49,7 +49,7 @@ } if($sqls) $this->Conn->Query( implode("\n",$sqls) ); } - + /** * Shows only enabled languages on front * @@ -60,10 +60,10 @@ if($event->Special == 'enabled') { $object =& $event->getObject(); - $object->addFilter('enabled_filter', '%1$s.Enabled = 1'); + $object->addFilter('enabled_filter', '%1$s.Enabled = 1'); } } - + /** * Returns ALTER statement part for adding required fields to table * @@ -88,7 +88,7 @@ } return preg_replace('/, $/',';',$ret); } - + /** * Copy labels from another language * @@ -98,24 +98,24 @@ { $object =& $event->getObject(); $from_lang_id = $object->GetDBField('CopyFromLanguage'); - + if( ($event->MasterEvent->status == erSUCCESS) && $object->GetDBField('CopyLabels') == 1 && ($from_lang_id > 0) ) { $lang_id = $object->GetID(); - + // 1. phrases import $phrases_live = $this->Application->getUnitOption('phrases','TableName'); $phrases_temp = kTempTablesHandler::GetTempName($phrases_live); - $sql = 'INSERT INTO '.$phrases_temp.' + $sql = 'INSERT INTO '.$phrases_temp.' SELECT Phrase, Translation, PhraseType, 0-PhraseId, '.$lang_id.', '.time().', "", Module - FROM '.$phrases_live.' + FROM '.$phrases_live.' WHERE LanguageId='.$from_lang_id; $this->Conn->Query($sql); - + // 2. events import $em_table_live = $this->Application->getUnitOption('emailmessages','TableName'); $em_table_temp = kTempTablesHandler::GetTempName($em_table_live); - + $sql = 'SELECT * FROM '.$em_table_live.' WHERE LanguageId = '.$from_lang_id; $email_messages = $this->Conn->Query($sql); if($email_messages) @@ -133,39 +133,39 @@ $sql = 'INSERT INTO '.$em_table_temp.'(EmailMessageId,Template,MessageType,LanguageId,EventId) VALUES ('.implode('),(',$sqls).')'; $this->Conn->Query($sql); } - - $object->SetDBField('CopyLabels', 0); + + $object->SetDBField('CopyLabels', 0); } } - + /** * Prepare temp tables for creating new item - * but does not create it. Actual create is + * but does not create it. Actual create is * done in OnPreSaveCreated * * @param kEvent $event */ function OnPreCreate(&$event) { parent::OnPreCreate($event); - + $object =& $event->getObject(); $object->SetDBField('CopyLabels', 1); - + $live_table = kTempTablesHandler::GetLiveName($object->TableName); $primary_lang_id = $this->Conn->GetOne('SELECT '.$object->IDField.' FROM '.$live_table.' WHERE PrimaryLang = 1'); - + $object->SetDBField('CopyFromLanguage', $primary_lang_id); } - - + + function OnChangeLanguage(&$event) { $this->Application->SetVar('m_lang', $this->Application->GetVar('language')); - - $this->Application->LinkVar('language', 'm_lang'); + + //$this->Application->LinkVar('language', 'm_lang'); } - + /** * Parse language XML file into temp tables and redirect to progress bar screen * @@ -179,7 +179,7 @@ list($id,$field_values) = each($items_info); $object =& $this->Application->recallObject('phrases.import', 'phrases', Array('skip_autoload' => true) ); $object->SetFieldsFromHash($field_values); - + $filename = getArrayValue($field_values, 'LangFile', 'tmp_name'); if( filesize($filename) ) { @@ -198,7 +198,7 @@ } } } - + /** * Copies imported from xml file from temp table to live table * @@ -208,26 +208,26 @@ { define('IMPORT_BY', 300); // import this much records per step $template_name = 'regional/languages_import_step2'; - + $import_mode = (int)$this->Application->GetVar('mode'); // 1 - overwrite existing phrases, 0 - don't overwrite existing phrases $import_source = (int)$this->Application->GetVar('source'); $import_steps = Array(0 => 'lang', 1 => 'phrases', 2 => 'emailmessages', 3 => 'finish'); - + $key_fields = Array(0 => 'PackName', 1 => 'Phrase', 2 => 'EventId'); // by what field should we search record match - + $import_titles = Array(0 => 'la_ImportingLanguages', 1 => 'la_ImportingPhrases', 2 => 'la_ImportingEmailEvents', 3 => 'la_Done'); - + // --- BEFORE --- $import_prefix = $import_steps[$import_source]; $import_start = (int)$this->Application->GetVar('start'); $id_field = $this->Application->getUnitOption($import_prefix,'IDField'); $dst_table = $this->Application->getUnitOption($import_prefix,'TableName'); $src_table = kTempTablesHandler::GetTempName($dst_table); - + $import_total = $this->Application->GetVar('total'); if(!$import_total) $import_total = $this->Conn->GetOne('SELECT COUNT(*) FROM '.$src_table); // --- AFTER --- - + if($import_start == $import_total) { $import_source++; @@ -237,34 +237,34 @@ $event->SetRedirectParam('opener','u'); return true; } - + $import_start = 0; $id_field = $this->Application->getUnitOption($import_prefix,'IDField'); $dst_table = $this->Application->getUnitOption($import_prefix,'TableName'); $src_table = kTempTablesHandler::GetTempName($dst_table); $import_total = $this->Conn->GetOne('SELECT COUNT(*) FROM '.$src_table); } - + $done_percent = ($import_start * 100) / $import_total; $block_params = Array( 'name' => $template_name, 'title' => $import_titles[$import_source], 'percent_done' => $done_percent, 'percent_left' => 100 - $done_percent); - + $this->Application->InitParser(); $this->Application->setUnitOption('phrases','AutoLoad',false); echo $this->Application->ParseBlock($block_params); flush(); - + $sql = 'SELECT * FROM %s LIMIT %s,%s'; $rows = $this->Conn->Query( sprintf($sql,$src_table,$import_start,IMPORT_BY) ); - + $values_sql = ''; // if found and mode = 1 (overwrite) $search_sql = 'SELECT '.$id_field.' FROM '.$dst_table.' WHERE '.$key_fields[$import_source].' = %s AND LanguageId = %s'; $update_sql = 'UPDATE '.$dst_table.' SET %s WHERE '.$id_field.' = %s'; - + foreach($rows as $row) { $tmp_sql = sprintf($search_sql, $this->Conn->qstr($row[ $key_fields[$import_source] ]), $row['LanguageId'] ); @@ -291,7 +291,7 @@ $values_sql = preg_replace('/(.*),$/', '\\1', $values_sql).'),'; } } - + if($values_sql) { $fields_sql = ''; @@ -301,14 +301,14 @@ $fields_sql .= '`'.$field_name.'`,'; } $fields_sql = preg_replace('/(.*),$/', '\\1', $fields_sql); - + $values_sql = preg_replace('/(.*),$/', '\\1', $values_sql); $sql = sprintf('INSERT INTO %s (%s) VALUES %s', $dst_table, $fields_sql, $values_sql); $this->Conn->Query($sql); } $event->setRedirectParams( Array('lang_event' => 'OnImportProgress', 'pass' => 'all,lang', 'start' => $import_start += count($rows), 'total' => $import_total, 'source' => $import_source, 'mode' => $import_mode) ); } - + /** * Stores ids of selected languages and redirects to export language step 1 * @@ -317,14 +317,14 @@ function OnExportLanguage(&$event) { $this->Application->setUnitOption('phrases','AutoLoad',false); - + $this->StoreSelectedIDs($event); $this->Application->StoreVar('export_language_ids', implode(',', $this->getSelectedIDs($event)) ); - + $event->setRedirectParams( Array('m_opener'=>'d','phrases.export_event'=>'OnNew','pass'=>'all,phrases.export') ); $event->redirect = 'regional/languages_export'; } - + /** * Saves selected languages to xml file passed * @@ -338,9 +338,9 @@ list($id,$field_values) = each($items_info); $object =& $this->Application->recallObject('phrases.export', 'phrases', Array('skip_autoload' => true) ); $object->SetFieldsFromHash($field_values); - + $lang_ids = explode(',', $this->Application->RecallVar('export_language_ids') ); - + if( !getArrayValue($field_values,'LangFile') ) { $object->SetError('LangFile', 'required'); @@ -355,16 +355,16 @@ } if( substr($field_values['LangFile'], -5) != '.lang' ) $field_values['LangFile'] .= '.lang'; $filename = EXPORT_PATH.'/'.$field_values['LangFile']; - + $lang_xml =& $this->Application->recallObject('LangXML'); $lang_xml->Create($filename, $field_values['PhraseType'], $lang_ids, $field_values['Module']); - + } - + $event->redirect = 'regional/languages_export_step2'; $event->SetRedirectParam('export_file', $field_values['LangFile']); } - + /** * Returns to previous template in opener stack * @@ -374,7 +374,7 @@ { $event->redirect_params['opener'] = 'u'; } - + } ?> \ No newline at end of file