Index: branches/5.0.x/core/units/phrases/phrases_config.php =================================================================== diff -u -N -r12495 -r12614 --- branches/5.0.x/core/units/phrases/phrases_config.php (.../phrases_config.php) (revision 12495) +++ branches/5.0.x/core/units/phrases/phrases_config.php (.../phrases_config.php) (revision 12614) @@ -1,6 +1,6 @@ true, - 'Hooks' => Array ( - Array ( - 'Mode' => hBEFORE, - 'Conditional' => false, - 'HookToPrefix' => 'phrases', - 'HookToSpecial' => '', - 'HookToEvent' => Array('OnCreate'), - 'DoPrefix' => 'phrases', - 'DoSpecial' => '', - 'DoEvent' => 'OnBeforePhraseCreate', - ), - - Array ( - 'Mode' => hAFTER, - 'Conditional' => false, - 'HookToPrefix' => 'phrases', - 'HookToSpecial' => '', - 'HookToEvent' => Array('OnBeforeItemCreate', 'OnBeforeItemUpdate'), - 'DoPrefix' => 'phrases', - 'DoSpecial' => '', - 'DoEvent' => 'OnSetLastUpdated', - ), - ), - 'QueryString' => Array ( 1 => 'id', 2 => 'page', @@ -159,7 +135,7 @@ 'required' => 1, 'unique' => Array ('LanguageId'), 'not_null' => 1, 'default' => '' ), - + 'PhraseKey' => Array ('type' => 'string', 'max_len' => 255, 'not_null' => 1, 'default' => NULL), 'Translation' => Array ('type' => 'string', 'formatter' => 'kFormatter', 'required' => 1, 'not_null' => 1, 'using_fck' => 1, 'default' => ''), 'PhraseType' => Array ('type' => 'int', 'required'=>1,'formatter' => 'kOptionsFormatter', 'options'=>Array (0=>'la_PhraseType_Front',1=>'la_PhraseType_Admin',2=>'la_PhraseType_Both'), 'use_phrases' => 1, 'not_null' => 1, 'default' => 0), 'PhraseId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0), Index: branches/5.0.x/core/units/phrases/phrases_event_handler.php =================================================================== diff -u -N -r12511 -r12614 --- branches/5.0.x/core/units/phrases/phrases_event_handler.php (.../phrases_event_handler.php) (revision 12511) +++ branches/5.0.x/core/units/phrases/phrases_event_handler.php (.../phrases_event_handler.php) (revision 12614) @@ -1,6 +1,6 @@ Application->GetVar($event->Prefix.'_label'); - if ($edit_direct) { + if ( $this->Application->GetVar($event->Prefix . '_label') ) { $object =& $event->getObject( Array('skip_autoload' => true) ); + if ($this->Application->GetVar('m_lang') != $this->Application->GetVar('lang_id')) { $object->SwitchToLive(); } } + + parent::OnCreate($event); } /** + * Set last change info, when phrase is created + * + * @param kEvent $event + */ + function OnBeforeItemCreate(&$event) + { + parent::OnBeforeItemCreate($event); + + $this->_setPhraseKey($event); + $this->_setLastUpdated($event); + } + + /** + * Update last change info, when phrase is updated + * + * @param kEvent $event + */ + function OnBeforeItemUpdate(&$event) + { + parent::OnBeforeItemUpdate($event); + + $this->_setPhraseKey($event); + $this->_setLastUpdated($event); + } + + /** + * Set's phrase key, used for phrase updating and loading + * + * @param kEvent $event + */ + function _setPhraseKey(&$event) + { + $object =& $event->getObject(); + /* @var $object kDBItem */ + + $object->SetDBField('PhraseKey', mb_strtoupper($object->GetDBField('Phrase'))); + } + + /** * Save phrase change date & ip translation was made from * * @param kEvent $event */ - function OnSetLastUpdated(&$event) + function _setLastUpdated(&$event) { $object =& $event->getObject(); - $prev_translation = $this->Conn->GetOne('SELECT Translation FROM '.$object->TableName.' WHERE '.$object->IDField.' = '.(int)$object->GetId() ); - if( $prev_translation != $object->GetDBField('Translation') ) - { - $ip_address = getenv('HTTP_X_FORWARDED_FOR') ? getenv('HTTP_X_FORWARDED_FOR') : getenv('REMOTE_ADDR'); + /* @var $object kDBItem */ + + if ($object->GetOriginalField('Translation') != $object->GetDBField('Translation')) { $object->SetDBField('LastChanged_date', adodb_mktime() ); $object->SetDBField('LastChanged_time', adodb_mktime() ); - $object->SetDBField('LastChangeIP', $ip_address); + $object->SetDBField('LastChangeIP', $_SERVER['REMOTE_ADDR']); } $this->Application->Session->SetCookie('last_module', $object->GetDBField('Module'));