Index: branches/5.2.x/core/units/phrases/phrases_event_handler.php =================================================================== diff -u -N -r14596 -r14745 --- branches/5.2.x/core/units/phrases/phrases_event_handler.php (.../phrases_event_handler.php) (revision 14596) +++ branches/5.2.x/core/units/phrases/phrases_event_handler.php (.../phrases_event_handler.php) (revision 14745) @@ -1,6 +1,6 @@ getObject(); + /* @var $object kDBItem */ + + $this->_setPhraseModule($object); + } + + /** * Forces new label in case if issued from get link * * @param kEvent $event @@ -128,23 +145,18 @@ $label = $this->Application->GetVar($event->getPrefixSpecial() . '_label'); - if ($label) { + if ( $label ) { // phrase is created in language, used to display phrases $object->SetDBField('Phrase', $label); - $object->SetDBField('PhraseType', 1); // admin + $object->SetDBField('PhraseType', $this->_getPhraseType($label)); // to show on form $object->SetDBField('PrimaryTranslation', $this->_getPrimaryTranslation($label)); } - // set module from cookie - $last_module = $this->Application->GetVar('last_module'); + $this->_setPhraseModule($object); - if ($last_module) { - $object->SetDBField('Module', $last_module); - } - - if (($event->Special == 'export') || ($event->Special == 'import')) { + if ( $event->Special == 'export' || $event->Special == 'import' ) { $object->SetDBField('PhraseType', '|0|1|2|'); - $object->SetDBField('Module', '|' . implode('|', array_keys($this->Application->ModuleInfo)) . '|' ); + $object->SetDBField('Module', '|' . implode('|', array_keys($this->Application->ModuleInfo)) . '|'); } } @@ -153,8 +165,9 @@ * * @param string $phrase * @return string + * @access protected */ - function _getPrimaryTranslation($phrase) + protected function _getPrimaryTranslation($phrase) { $sql = 'SELECT l' . $this->Application->GetDefaultLanguageId() . '_Translation FROM ' . $this->Application->getUnitOption($this->Prefix, 'TableName') . ' @@ -164,6 +177,22 @@ } /** + * Sets new phrase module + * + * @param kDBItem $object + * @return void + * @access protected + */ + protected function _setPhraseModule(&$object) + { + $last_module = $this->Application->GetVar('last_module'); + + if ( $last_module ) { + $object->SetDBField('Module', $last_module); + } + } + + /** * Forces create to use live table * * @param kEvent $event @@ -270,7 +299,9 @@ $object =& $event->getObject(); /* @var $object kDBItem */ - $object->SetDBField('PhraseKey', mb_strtoupper($object->GetDBField('Phrase'))); + $label = $object->GetDBField('Phrase'); + $object->SetDBField('PhraseKey', mb_strtoupper($label)); + $object->SetDBField('PhraseType', $this->_getPhraseType($label)); if ( $this->translationChanged($object) ) { $object->SetDBField('LastChanged_date', adodb_mktime() ); @@ -282,8 +313,29 @@ } /** + * Returns phrase type, that corresponds given phrase label + * + * @param string $label + * @return int + * @access protected + */ + protected function _getPhraseType($label) + { + $phrase_type_map = Array ( + 'LU' => Language::PHRASE_TYPE_FRONT, + 'LA' => Language::PHRASE_TYPE_ADMIN, + 'LC' => Language::PHRASE_TYPE_COMMON + ); + + $label = mb_strtoupper($label); + $label_prefix = substr($label, 0, 2); + + return isset($phrase_type_map[$label_prefix]) ? $phrase_type_map[$label_prefix] : Language::PHRASE_TYPE_COMMON; + } + + /** * Checks, that at least one of phrase's translations was changed - * + * * @param kDBItem $object * @return bool */