--- a/busui/owa/modules/base/handlers/visitorHandlers.php +++ b/busui/owa/modules/base/handlers/visitorHandlers.php @@ -1,1 +1,129 @@ - + + * @copyright Copyright © 2006 Peter Adams + * @license http://www.gnu.org/copyleft/gpl.html GPL v2.0 + * @category owa + * @package owa + * @version $Revision$ + * @since owa 1.0.0 + */ + +class owa_visitorHandlers extends owa_observer { + + /** + * Notify Event Handler + * + * @param unknown_type $event + * @access public + */ + function notify($event) { + + switch ($event->get('is_new_visitor')) { + + case true: + return $this->logVisitor($event); + + case false: + return $this->logVisitorUpdate($event); + break; + } + } + + function logVisitor($event) { + + $v = owa_coreAPI::entityFactory('base.visitor'); + + $v->load( $event->get( 'visitor_id' ) ); + + if ( ! $v->wasPersisted() ) { + + $v->setProperties($event->getProperties()); + + // Set Primary Key + $v->set( 'id', $event->get('visitor_id') ); + + $v->set('user_name', $event->get('user_name')); + $v->set('user_email', $event->get('user_email')); + $v->set('first_session_id', $event->get('session_id')); + $v->set('first_session_year', $event->get('year')); + $v->set('first_session_month', $event->get('month')); + $v->set('first_session_day', $event->get('day')); + $v->set('first_session_dayofyear', $event->get('dayofyear')); + $v->set('first_session_timestamp', $event->get('timestamp')); + $v->set('num_prior_sessions', $event->get('num_prior_sessions')); + $ret = $v->create(); + + if ( $ret ) { + return OWA_EHS_EVENT_HANDLED; + } else { + return OWA_EHS_EVENT_FAILED; + } + + } else { + owa_coreAPI::debug("Not persisting. Visitor already exists."); + return OWA_EHS_EVENT_HANDLED; + } + } + + function logVisitorUpdate($event) { + + $v = owa_coreAPI::entityFactory('base.visitor'); + + $v->load( $event->get('visitor_id' ) ); + + if ( $v->wasPersisted() ) { + if ( $event->get( 'user_name' ) ) { + $v->set( 'user_name', $event->get( 'user_name' ) ); + } + + if ($event->get('user_email')) { + $v->set('user_email', $event->get('user_email')); + } + $v->set('last_session_id', $event->get('session_id')); + $v->set('last_session_year', $event->get('year')); + $v->set('last_session_month', $event->get('month')); + $v->set('last_session_day', $event->get('day')); + $v->set('last_session_dayofyear', $event->get('dayofyear')); + $v->set('num_prior_sessions', $event->get('num_prior_sessions')); + $ret = $v->update(); + + if ( $ret ) { + return OWA_EHS_EVENT_HANDLED; + } else { + return OWA_EHS_EVENT_FAILED; + } + + } else { + owa_coreAPI::debug("Not updating visitor. Visitor does not exists, adding it now."); + return $this->logVisitor($event); + //return OWA_EHS_EVENT_FAILED; + } + } +} + +?>