Index: branches/5.1.x/core/units/helpers/language_import_helper.php =================================================================== diff -u -N -r13276 -r13453 --- branches/5.1.x/core/units/helpers/language_import_helper.php (.../language_import_helper.php) (revision 13276) +++ branches/5.1.x/core/units/helpers/language_import_helper.php (.../language_import_helper.php) (revision 13453) @@ -1,6 +1,6 @@ false, + 'emailevents' => false, + ); + + /** * Debug language pack import process * * @var bool @@ -225,18 +235,36 @@ $phrase_modules = array_map(Array (&$this->Conn, 'qstr'), $phrase_modules); + // apply phrase selection limit + if ($this->_exportLimits['phrases']) { + $escaped_phrases = array_map(Array (&$this->Conn, 'qstr'), $this->_exportLimits['phrases']); + $limit_where = 'Phrase IN (' . implode(',', $escaped_phrases) . ')'; + } + else { + $limit_where = 'TRUE'; + } + $sql = 'SELECT * FROM ' . $this->Application->getUnitOption('phrases','TableName') . ' - WHERE PhraseType IN (' . implode(',', $phrase_types) . ') AND Module IN (' . implode(',', $phrase_modules) . ') + WHERE PhraseType IN (' . implode(',', $phrase_types) . ') AND Module IN (' . implode(',', $phrase_modules) . ') AND ' . $limit_where . ' ORDER BY Phrase'; $phrases = $this->Conn->Query($sql, 'PhraseId'); // email events $module_sql = preg_replace('/(.*),/U', 'INSTR(Module,\'\\1\') OR ', implode(',', $module_ids) . ','); + // apply event selection limit + if ($this->_exportLimits['emailevents']) { + $escaped_email_events = array_map(Array (&$this->Conn, 'qstr'), $this->_exportLimits['emailevents']); + $limit_where = '`Event` IN (' . implode(',', $escaped_email_events) . ')'; + } + else { + $limit_where = 'TRUE'; + } + $sql = 'SELECT * FROM ' . $this->Application->getUnitOption('emailevents','TableName') . ' - WHERE ' . substr($module_sql, 0, -4) . ' + WHERE ' . substr($module_sql, 0, -4) . ' AND ' . $limit_where . ' ORDER BY `Event`, `Type`'; $events = $this->Conn->Query($sql, 'EventId'); @@ -274,26 +302,30 @@ } // email events - $ret .= "\t\t" . '' . "\n"; + if ($events) { + $ret .= "\t\t" . '' . "\n"; - foreach ($events as $event_id => $event) { - $fields_hash = Array ( - 'Headers' => $event['Headers'], - 'Subject' => $event['l' . $language_id . '_Subject'], - 'Body' => $event['l' . $language_id . '_Body'], - ); + foreach ($events as $event_id => $event) { + $fields_hash = Array ( + 'Headers' => $event['Headers'], + 'Subject' => $event['l' . $language_id . '_Subject'], + 'Body' => $event['l' . $language_id . '_Body'], + ); - $template = $email_message_helper->buildTemplate($fields_hash); + $template = $email_message_helper->buildTemplate($fields_hash); - if (!$template) { - // email event is not translated on given language - continue; + if (!$template) { + // email event is not translated on given language + continue; + } + + $data = $this->_exportEncoding == 'base64' ? base64_encode($template) : ''; + $ret .= sprintf($event_tpl, $event['MessageType'], $event['Event'], $event['Type'], $data); } - $data = $this->_exportEncoding == 'base64' ? base64_encode($template) : ''; - $ret .= sprintf($event_tpl, $event['MessageType'], $event['Event'], $event['Type'], $data); + $ret .= "\t\t" . '' . "\n"; } - $ret .= "\t\t" . '' . "\n"; + $ret .= "\t" . '' . "\n"; } @@ -315,6 +347,29 @@ } /** + * Sets language pack data limits for export + * + * @param mixed $phrases + * @param mixed $email_events + */ + function setExportLimits($phrases, $email_events) + { + if (!is_array($phrases)) { + $phrases = str_replace(',', "\n", $phrases); + $phrases = preg_replace("/\n+/", "\n", str_replace("\r", '', trim($phrases))); + $phrases = $phrases ? array_map('trim', explode("\n", $phrases)) : Array (); + } + + if (!is_array($email_events)) { + $email_events = str_replace(',', "\n", $email_events); + $email_events = preg_replace("/\n+/", "\n", str_replace("\r", '', trim($email_events))); + $email_events = $email_events ? array_map('trim', explode("\n", $email_events)) : Array (); + } + + $this->_exportLimits = Array ('phrases' => $phrases, 'emailevents' => $email_events); + } + + /** * Performs upgrade of given language pack part * * @param int $language_id