Вход Регистрация
Файл: plugins/pvisitors/classes/event_handler.php
Строк: 145
<?php

class PVISITORS_CLASS_EventHandler
{
    
/**
     * Class instance
     *
     * @var PVISITORS_CLASS_EventHandler
     */
    
private static $classInstance;

    
/**
     * Class constructor
     *
     */
    
private function __construct()
    {
        
    }

    
/**
     * Returns class instance
     *
     * @return PVISITORS_CLASS_EventHandler
     */
    
public static function getInstance()
    {
        if ( 
null === self::$classInstance )
        {
            
self::$classInstance = new self();
        }

        return 
self::$classInstance;
    }

    public function 
onProfilePageRender( BASE_CLASS_EventCollector $event )
    {
        
$params = $event->getParams();

        if ( empty(
$params['entityId']) || empty($params['placeName']) || $params['placeName'] != 'profile' )
        {
            return;
        }

        
$userId = (int) $params['entityId'];
        
$viewerId = PEEP::getUser()->getId();

        
$authService = BOL_AuthorizationService::getInstance();
        
$isAdmin = $authService->isActionAuthorizedForUser($viewerId, 'admin') || $authService->isActionAuthorizedForUser($viewerId, 'base');

        if ( 
$userId && $viewerId && ($viewerId != $userId) && !$isAdmin )
        {
            
PVISITORS_BOL_Service::getInstance()->trackVisit($userId, $viewerId);
        }
    }

    public function 
trackVisit( PEEP_Event $event )
    {
        
$params = $event->getParams();

        if ( empty(
$params['userId']) || empty($params['visitorId']) )
        {
            return;
        }

        
$userId = $params['userId'];
        
$visitorId = $params['visitorId'];

        
$authService = BOL_AuthorizationService::getInstance();
        
$isAdmin = $authService->isActionAuthorizedForUser($visitorId, 'admin') || $authService->isActionAuthorizedForUser($visitorId, 'base');

        if ( 
$userId && $visitorId && ($visitorId != $userId) && !$isAdmin )
        {
            
PVISITORS_BOL_Service::getInstance()->trackVisit($userId, $visitorId);
        }
    }

    public function 
onUserUnregister( PEEP_Event $event )
    {
        
$params = $event->getParams();

        
$userId = $params['userId'];

        
PVISITORS_BOL_Service::getInstance()->deleteUserVisitors($userId);
    }

    public function 
getList( PEEP_Event $event )
    {
        
$params = $event->getParams();
        
$userId = $params['userId'];
        
$page = empty($params['page']) ? 1 : $params['page'];
        
$limit = empty($params['limit']) ? 1000000 : $params['limit'];

        
$users = PVISITORS_BOL_Service::getInstance()->findVisitorUsers($userId, $page, $limit);
        
$visitorsIdList = array();
        foreach ( 
$users as $user )
        {
            
$visitorsIdList[] = $user->id;
        }

        
$visitors = PVISITORS_BOL_Service::getInstance()->findVisitorsByVisitorIds($userId, $visitorsIdList);
        
$out = array();

        foreach ( 
$visitors as $visitor )
        {
            
$out[] = array(
                
"userId" => $visitor->visitorId,
                
"viewed" => $visitor->viewed,
                
"timeStamp" => $visitor->visitTimestamp
            
);
        }

        
$event->setData($out);

        return 
$out;
    }

    public function 
getNewCount( PEEP_Event $event )
    {
        
$params = $event->getParams();
        
$userId = $params['userId'];

        
$count = PVISITORS_BOL_Service::getInstance()->findNewVisitorsCount($userId);

        
$event->setData($count);

        return 
$count;
    }

    public function 
markViewed( PEEP_Event $event )
    {
        
$params = $event->getParams();

        if ( empty(
$params['visitorIds']) )
        {
            return;
        }

        
$userId = $params['userId'];
        
$visitorIds = $params['visitorIds'];

        
PVISITORS_BOL_Service::getInstance()->setViewedStatusByVisitorIds($userId, $visitorIds);
    }

    public function 
genericInit()
    {
        
$em = PEEP::getEventManager();

        
$em->bind("visitors.get_visitors_list", array($this, "getList"));
        
$em->bind("visitors.get_new_visitors_count", array($this, "getNewCount"));
        
$em->bind("visitors.mark_visitors_viewed", array($this, "markViewed"));
        
$em->bind("visitors.track_visit", array($this, "trackVisit"));

        
$em->bind(PEEP_EventManager::ON_USER_UNREGISTER, array($this, 'onUserUnregister'));
    }

    public function 
init()
    {
        
$this->genericInit();
        
$em = PEEP::getEventManager();

        
$em->bind('base.widget_panel.content.top', array($this, 'onProfilePageRender'));
    }
}
Онлайн: 0
Реклама