Index: branches/5.0.x/core/units/phrases/phrases_event_handler.php =================================================================== diff -u -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'));