Index: trunk/core/kernel/session/session.php =================================================================== diff -u -N -r2310 -r2385 --- trunk/core/kernel/session/session.php (.../session.php) (revision 2310) +++ trunk/core/kernel/session/session.php (.../session.php) (revision 2385) @@ -490,6 +490,7 @@ break; } $this->Storage->StoreSession($this); + $this->Application->HandleEvent( new kEvent('visits:OnRegisterVisit') ); } function SetSessionCookie() Index: trunk/kernel/include/usersession.php =================================================================== diff -u -N -r2308 -r2385 --- trunk/kernel/include/usersession.php (.../usersession.php) (revision 2308) +++ trunk/kernel/include/usersession.php (.../usersession.php) (revision 2385) @@ -428,6 +428,11 @@ $this->GetNewSession(); $this->Set("PortalUserId",-1); $this->Update(); + + /*$db =& $this->adodbConnection; + $sql = 'UPDATE '.GetTablePrefix().'Visits SET PortalUserId = %s WHERE VisitId = %s'; + $db->Execute( sprintf($sql, $this->Get('PortalUserId'), $this->GetVariable('visit_id') ) );*/ + return true; } } @@ -507,8 +512,14 @@ $kSession = $app->recallObject('Session'); $kSession->SetField('GroupList', $extra_groups); $app->StoreVar('UserGroups', $this->Get('GroupList') ); + + $sql = 'UPDATE '.TABLE_PREFIX.'Visits SET PortalUserId = %s WHERE VisitId = %s'; + $app->DB->Query( sprintf($sql, $this->Get('PortalUserId'), $app->RecallVar('visit_id') ) ); } + + + $this->Set('LastAccessed', date('U') ); $this_login = $this->GetPersistantVariable("ThisLogin"); $this->SetPersistantVariable("LastLogin", $this_login); Index: trunk/kernel/units/visits/visits_event_handler.php =================================================================== diff -u -N --- trunk/kernel/units/visits/visits_event_handler.php (revision 0) +++ trunk/kernel/units/visits/visits_event_handler.php (revision 2385) @@ -0,0 +1,21 @@ +getObject( Array('skip_autoload'=>true) ); + $object->SetDBField('VisitDate_date', time() ); + $object->SetDBField('VisitDate_time', time() ); + $object->SetDBField('Referer', getArrayValue($_SERVER, 'HTTP_REFERER') ); + $object->SetDBField('IPAddress', $_SERVER['REMOTE_ADDR'] ); + if( $object->Create() ) $this->Application->StoreVar('visit_id', $object->GetID() ); + } + } + +?> \ No newline at end of file Index: trunk/kernel/units/users/users_event_handler.php =================================================================== diff -u -N -r2378 -r2385 --- trunk/kernel/units/users/users_event_handler.php (.../users_event_handler.php) (revision 2378) +++ trunk/kernel/units/users/users_event_handler.php (.../users_event_handler.php) (revision 2385) @@ -62,6 +62,7 @@ $session->SetField('PortalUserId', $user_id); $this->Application->SetVar('u_id', $user_id); $this->Application->StoreVar('user_id', $user_id); + $this->setVisitUser($user_id); } else { @@ -85,6 +86,22 @@ } } + /** + * Set's new user for current visit + * + * @param int $user_id + */ + function setVisitUser($user_id) + { + $visit =& $this->Application->recallObject('visits', null, Array('skip_autoload'=>true) ); + $visit->Load( $this->Application->RecallVar('visit_id') ); + if( $visit->isLoaded() ) + { + $visit->SetDBField('PortalUserId', $user_id); + $visit->Update(); + } + } + function OnLogout(&$event) { $session =& $this->Application->recallObject('Session'); Index: trunk/core/units/visits/visits_event_handler.php =================================================================== diff -u -N --- trunk/core/units/visits/visits_event_handler.php (revision 0) +++ trunk/core/units/visits/visits_event_handler.php (revision 2385) @@ -0,0 +1,21 @@ +getObject( Array('skip_autoload'=>true) ); + $object->SetDBField('VisitDate_date', time() ); + $object->SetDBField('VisitDate_time', time() ); + $object->SetDBField('Referer', getArrayValue($_SERVER, 'HTTP_REFERER') ); + $object->SetDBField('IPAddress', $_SERVER['REMOTE_ADDR'] ); + if( $object->Create() ) $this->Application->StoreVar('visit_id', $object->GetID() ); + } + } + +?> \ No newline at end of file Index: trunk/core/units/users/users_config.php =================================================================== diff -u -N -r2368 -r2385 --- trunk/core/units/users/users_config.php (.../users_config.php) (revision 2368) +++ trunk/core/units/users/users_config.php (.../users_config.php) (revision 2385) @@ -27,7 +27,7 @@ ), 'RegularEvents' => Array( - 'membership_expiration' => Array('EventName' => 'OnCheckExpiredMembership', 'RunInterval' => 1800, 'Type' => reAFTER), + 'membership_expiration' => Array('EventName' => 'OnCheckExpiredMembership', 'RunInterval' => 1800, 'Type' => reAFTER), ), 'IDField' => 'PortalUserId', Index: trunk/core/units/users/users_event_handler.php =================================================================== diff -u -N -r2378 -r2385 --- trunk/core/units/users/users_event_handler.php (.../users_event_handler.php) (revision 2378) +++ trunk/core/units/users/users_event_handler.php (.../users_event_handler.php) (revision 2385) @@ -62,6 +62,7 @@ $session->SetField('PortalUserId', $user_id); $this->Application->SetVar('u_id', $user_id); $this->Application->StoreVar('user_id', $user_id); + $this->setVisitUser($user_id); } else { @@ -85,6 +86,22 @@ } } + /** + * Set's new user for current visit + * + * @param int $user_id + */ + function setVisitUser($user_id) + { + $visit =& $this->Application->recallObject('visits', null, Array('skip_autoload'=>true) ); + $visit->Load( $this->Application->RecallVar('visit_id') ); + if( $visit->isLoaded() ) + { + $visit->SetDBField('PortalUserId', $user_id); + $visit->Update(); + } + } + function OnLogout(&$event) { $session =& $this->Application->recallObject('Session'); Index: trunk/kernel/units/users/users_config.php =================================================================== diff -u -N -r2368 -r2385 --- trunk/kernel/units/users/users_config.php (.../users_config.php) (revision 2368) +++ trunk/kernel/units/users/users_config.php (.../users_config.php) (revision 2385) @@ -27,7 +27,7 @@ ), 'RegularEvents' => Array( - 'membership_expiration' => Array('EventName' => 'OnCheckExpiredMembership', 'RunInterval' => 1800, 'Type' => reAFTER), + 'membership_expiration' => Array('EventName' => 'OnCheckExpiredMembership', 'RunInterval' => 1800, 'Type' => reAFTER), ), 'IDField' => 'PortalUserId', Index: trunk/core/units/visits/visits_config.php =================================================================== diff -u -N -r2383 -r2385 --- trunk/core/units/visits/visits_config.php (.../visits_config.php) (revision 2383) +++ trunk/core/units/visits/visits_config.php (.../visits_config.php) (revision 2385) @@ -4,7 +4,7 @@ 'Prefix' => 'visits', 'ItemClass' => Array('class'=>'kDBItem','file'=>'','build_event'=>'OnItemBuild'), 'ListClass' => Array('class'=>'kDBList','file'=>'','build_event'=>'OnListBuild'), - 'EventHandlerClass' => Array('class'=>'InpDBEventHandler','file'=>'','build_event'=>'OnBuild'), + 'EventHandlerClass' => Array('class'=>'VisitsEventHandler','file'=>'visits_event_handler.php','build_event'=>'OnBuild'), 'TagProcessorClass' => Array('class'=>'kDBTagProcessor','file'=>'','build_event'=>'OnBuild'), 'AutoLoad' => true, @@ -14,7 +14,7 @@ 3 => 'event', 4 => 'mode', ), - + 'IDField' => 'VisitId', 'TableName' => TABLE_PREFIX.'Visits', @@ -41,9 +41,10 @@ 'Fields' => Array( 'VisitId' => Array(), 'VisitDate' => Array('type' => 'int', 'formatter'=>'kDateFormatter', 'not_null' => '1','default' => '0'), - 'RefererIP' => Array('type' => 'string','not_null' => '1','default' => ''), + 'Referer' => Array('type' => 'string','not_null' => '1','default' => ''), + 'IPAddress' => Array('type' => 'string','not_null' => '1','default' => ''), 'AffiliateId' => Array('type' => 'int','not_null' => '1','default' => '0'), - 'PortalUserId' => Array('type' => 'int','not_null' => '1','default' => '0'), + 'PortalUserId' => Array('type' => 'int','not_null' => '1','default' => -2), 'OrderId' => Array('type' => 'int','not_null' => '1','default' => '0'), ), Index: trunk/kernel/units/visits/visits_config.php =================================================================== diff -u -N -r2383 -r2385 --- trunk/kernel/units/visits/visits_config.php (.../visits_config.php) (revision 2383) +++ trunk/kernel/units/visits/visits_config.php (.../visits_config.php) (revision 2385) @@ -4,7 +4,7 @@ 'Prefix' => 'visits', 'ItemClass' => Array('class'=>'kDBItem','file'=>'','build_event'=>'OnItemBuild'), 'ListClass' => Array('class'=>'kDBList','file'=>'','build_event'=>'OnListBuild'), - 'EventHandlerClass' => Array('class'=>'InpDBEventHandler','file'=>'','build_event'=>'OnBuild'), + 'EventHandlerClass' => Array('class'=>'VisitsEventHandler','file'=>'visits_event_handler.php','build_event'=>'OnBuild'), 'TagProcessorClass' => Array('class'=>'kDBTagProcessor','file'=>'','build_event'=>'OnBuild'), 'AutoLoad' => true, @@ -14,7 +14,7 @@ 3 => 'event', 4 => 'mode', ), - + 'IDField' => 'VisitId', 'TableName' => TABLE_PREFIX.'Visits', @@ -41,9 +41,10 @@ 'Fields' => Array( 'VisitId' => Array(), 'VisitDate' => Array('type' => 'int', 'formatter'=>'kDateFormatter', 'not_null' => '1','default' => '0'), - 'RefererIP' => Array('type' => 'string','not_null' => '1','default' => ''), + 'Referer' => Array('type' => 'string','not_null' => '1','default' => ''), + 'IPAddress' => Array('type' => 'string','not_null' => '1','default' => ''), 'AffiliateId' => Array('type' => 'int','not_null' => '1','default' => '0'), - 'PortalUserId' => Array('type' => 'int','not_null' => '1','default' => '0'), + 'PortalUserId' => Array('type' => 'int','not_null' => '1','default' => -2), 'OrderId' => Array('type' => 'int','not_null' => '1','default' => '0'), ),