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

class FRIENDS_CLASS_EventHandler
{
    
/**
     * Singleton instance.
     *
     * @var FRIENDS_CLASS_EventHandler
     */
    
private static $classInstance;

    
/**
     * Returns an instance of class (singleton pattern implementation).
     *
     * @return FRIENDS_CLASS_EventHandler
     */
    
public static function getInstance()
    {
        if ( 
self::$classInstance === null )
        {
            
self::$classInstance = new self();
        }

        return 
self::$classInstance;
    }

    
/**
     *
     * @var FRIENDS_BOL_Service
     */
    
private $service;

    private function 
__construct()
    {
        
$this->service FRIENDS_BOL_Service::getInstance();
    }

    public function 
genericInit()
    {
        
PEEP::getEventManager()->bind(PEEP_EventManager::ON_USER_UNREGISTER,        array($this,'onUnregisterUser'));
        
PEEP::getEventManager()->bind(PEEP_EventManager::ON_USER_BLOCK,             array($this,'onBlockUser'));

        
PEEP::getEventManager()->bind('notifications.collect_actions',            array($this,'onCollectNotificationActions'));
        
PEEP::getEventManager()->bind('plugin.friends',                           array($this,'onPluginIsActive'));
        
PEEP::getEventManager()->bind('plugin.friends.get_friend_list',           array($this,'getFriendList'));
        
PEEP::getEventManager()->bind('plugin.friends.check_friendship',          array($this,'findFriendship'));
        
PEEP::getEventManager()->bind('plugin.friends.count_friends',             array($this,'findCountOfUserFriendsInList'));
        
PEEP::getEventManager()->bind('plugin.friends.find_all_active_friendships', array($this,'findAllActiveFriendships'));
        
PEEP::getEventManager()->bind('plugin.friends.find_active_friendships',   array($this,'findActiveFriendships'));
        
PEEP::getEventManager()->bind('feed.collect_follow',                      array($this,'onCollectFeedFollow'));
        
PEEP::getEventManager()->bind('admin.add_auth_labels',                    array($this,'onCollectAuthLabels'));
        
PEEP::getEventManager()->bind('plugin.privacy.get_action_list',           array($this,'onCollectPrivacyActionList'));
        
PEEP::getEventManager()->bind('plugin.privacy.get_privacy_list',          array($this,'onCollectPrivacyList'));
        
PEEP::getEventManager()->bind('plugin.privacy.check_permission',          array($this,'onCollectPrivacyPermissions'));
        
PEEP::getEventManager()->bind('friends.request-accepted',                 array($this,'onAcceptRequest'));

//        PEEP::getEventManager()->bind('friends.request-sent',                     array($this,'onSentRequest'));

        
PEEP::getEventManager()->bind('friends.cancelled',                        array($this,'onCancelRequest'));
        
PEEP::getEventManager()->bind('feed.collect_follow_permissions',          array($this,'onCollectFollowPermissions'));
        
PEEP::getEventManager()->bind('feed.collect_privacy',                     array($this,'onCollectFeedPrivacyActions'));
        
PEEP::getEventManager()->bind('feed.collect_configurable_activity',       array($this,'onCollectFeedConfigurableActivity'));
        
PEEP::getEventManager()->bind('feed.after_comment_add',                   array($this,'onFeedAddComment'));
        
PEEP::getEventManager()->bind('feed.after_like_added',                    array($this,'onFeedAddLike'));
        
//PEEP::getEventManager()->bind('feed.action',                              array($this,'onFeedActionChangeAvatar'));
        
PEEP::getEventManager()->bind('notifications.send_list',                  array($this,'onCollectNotificationSendList'));
        
PEEP::getEventManager()->bind('friends.add_friend',                       array($this,'addFriend'));
        
PEEP::getEventManager()->bind('friends.send_friend_request',              array($this'sendFriendRequest'));

        
PEEP::getEventManager()->bind(PEEP_EventManager::ON_USER_UNREGISTER,  array($this'onUserEventClearQueryCache'));
        
PEEP::getEventManager()->bind(PEEP_EventManager::ON_USER_SUSPEND,     array($this'onUserEventClearQueryCache'));
        
PEEP::getEventManager()->bind(PEEP_EventManager::ON_USER_UNSUSPEND,   array($this'onUserEventClearQueryCache'));
        
PEEP::getEventManager()->bind(PEEP_EventManager::ON_USER_APPROVE,     array($this'onUserEventClearQueryCache'));
        
PEEP::getEventManager()->bind(PEEP_EventManager::ON_USER_DISAPPROVE,  array($this'onUserEventClearQueryCache'));

        
$credits = new FRIENDS_CLASS_Credits();
        
PEEP::getEventManager()->bind('usercredits.on_action_collect',      array($credits'bindCreditActionsCollect'));
    }

    
/**
     * Prepeare actions for tool on the profile view page
     *
     * @param BASE_CLASS_EventCollector $event
     */
    
public function onCollectProfileActionToolsBASE_CLASS_EventCollector $event )
    {
        
$params $event->getParams();

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

        
$userId = (int) $params['userId'];

        if ( !
PEEP::getUser()->isAuthenticated() || PEEP::getUser()->getId() == $userId )
        {
            return;
        }

        
$language PEEP::getLanguage();
        
$router PEEP::getRouter();
        
$dto $this->service->findFriendship($userIdPEEP::getUser()->getId());
        
$linkId 'friendship' rand(101000000);
        
$extra_label null;
        if ( 
$dto === null && PEEP::getUser()->isAuthorized('friends''add_friend') )
        {
            if ( 
BOL_UserService::getInstance()->isBlocked(PEEP::getUser()->getId(), $userId) )
            {
                
$script "$('#" $linkId "').click(function(){

            window.PEEP.error('" 
PEEP::getLanguage()->text('base''user_block_message') . "');

        });"
;

                
PEEP::getDocument()->addOnloadScript($script);
                
$href 'javascript://';
            }
            else
            {
                
$href $router->urlFor('FRIENDS_CTRL_Action''request', array('id' => $userId));
            }

            
$label PEEP::getLanguage()->text('friends''add_to_friends');
        }
        elseif ( 
$dto === null )
        {
            return;
        }
        else
        {
            switch ( 
$dto->getStatus() )
            {
                case 
FRIENDS_BOL_Service::STATUS_ACTIVE:
                    
$label $language->text('friends''remove_from_friends');
                    
$href $router->urlFor('FRIENDS_CTRL_Action''cancel', array('id' => $userId'redirect'=>true));
                    break;

                case 
FRIENDS_BOL_Service::STATUS_PENDING:

                    if ( 
$dto->getUserId() == PEEP::getUser()->getId() )
                    {
                        
$label $language->text('friends''friend_request_was_sent');
                        
$href $router->urlFor('FRIENDS_CTRL_Action''cancel', array('id' => $userId'redirect'=>true));
                        
$extra_label $language->text('friends''cancel_request');
                    }
                    else
                    {
                        if ( !
PEEP::getUser()->isAuthorized('friends''add_friend') )
                        {
                            return;
                        }
                        
$label $language->text('friends''add_to_friends');
                        
$href $router->urlFor('FRIENDS_CTRL_Action''accept', array('id' => $userId));
                    }
                    break;

                case 
FRIENDS_BOL_Service::STATUS_IGNORED:

                    if ( 
$dto->getUserId() == PEEP::getUser()->getId() )
                    {
                        
$label $language->text('friends''remove_from_friends');
                        
$href $router->urlFor('FRIENDS_CTRL_Action''cancel', array('id' => $userId));
                    }
                    else
                    {
                        if ( !
PEEP::getUser()->isAuthorized('friends''add_friend') )
                        {
                            return;
                        }
                        
$label $language->text('friends''add_to_friends');
                        
$href $router->urlFor('FRIENDS_CTRL_Action''activate', array('id' => $userId));
                    }
            }
        }

        
$resultArray = array(
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LABEL => $label,
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_HREF => $href,
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ID => $linkId,
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_ITEM_KEY => 'friends.action',
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ORDER => 1,
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_EXTRA_LABEL => $extra_label
        
);

        
$event->add($resultArray);
    }

    public function 
onUnregisterUserPEEP_Event $event )
    {
        
$params $event->getParams();

        
$userId $params['userId'];

        
$this->service->deleteUserFriendships($userId);
    }

    public function 
onCollectNotificationActionsBASE_CLASS_EventCollector $e )
    {
        
$sectionLabel PEEP::getLanguage()->text('friends''notification_section_label');

        
$e->add(array(
            
'section' => 'friends',
            
'action' => 'friends-request',
            
'description' => PEEP::getLanguage()->text('friends''email_notifications_setting_request'),
            
'selected' => true,
            
'sectionLabel' => $sectionLabel,
            
'sectionIcon' => 'peep_ic_write'
        
));

        
$e->add(array(
            
'section' => 'friends',
            
'action' => 'friends-accept',
            
'description' => PEEP::getLanguage()->text('friends''email_notifications_setting_accept'),
            
'selected' => true,
            
'sectionLabel' => $sectionLabel,
            
'sectionIcon' => 'peep_ic_write'
        
));
    }

    public function 
onPluginIsActive()
    {
        return 
true;
    }

    public function 
getFriendListPEEP_Event $event )
    {
        
$params $event->getParams();

        if ( !empty(
$params['userId']) )
        {
            
$userId = (int) $params['userId'];
        }
        else
        {
            return 
null;
        }

        
$first 0;

        if ( !empty(
$params['first']) )
        {
            
$first = (int) $params['first'];
        }

        
$count 1000;

        if ( !empty(
$params['count']) )
        {
            
$count = (int) $params['count'];
        }

        
$paramsUserIdList null;

        if ( !empty(
$params['idList']) && is_array($params['idList']) )
        {
            
$paramsUserIdList $params['idList'];
        }

        return 
FRIENDS_BOL_Service::getInstance()->findUserFriendsInList($userId$first$count$paramsUserIdList);
    }

    public function 
findFriendshipPEEP_Event $event )
    {
        
$params $event->getParams();

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

        return 
FRIENDS_BOL_Service::getInstance()->findFriendship((int) $params['userId'], (int) $params['friendId']);
    }

    public function 
findCountOfUserFriendsInListPEEP_Event $event )
    {
        
$params $event->getParams();

        if ( !empty(
$params['userId']) )
        {
            
$userId = (int) $params['userId'];
        }
        else
        {
            return 
null;
        }

        
$paramsUserIdList null;

        if ( !empty(
$params['idList']) && is_array($params['idList']) )
        {
            
$paramsUserIdList $params['idList'];
        }

        return 
FRIENDS_BOL_Service::getInstance()->findCountOfUserFriendsInList($userId$paramsUserIdList);
    }

    public function 
findAllActiveFriendshipsPEEP_Event $event )
    {
        
$params $event->getParams();

        return 
FRIENDS_BOL_Service::getInstance()->findAllActiveFriendships();
    }

    public function 
findActiveFriendshipsPEEP_Event $event )
    {
        
$params $event->getParams();

        if ( !isset(
$params['first']) || !isset($params['count']) )
        {
            return 
null;
        }

        return 
FRIENDS_BOL_Service::getInstance()->findActiveFriendships((int) $params['first'], (int) $params['count']);
    }

    public function 
onCollectFeedFollowBASE_CLASS_EventCollector $e )
    {
        
$friends FRIENDS_BOL_Service::getInstance()->findAllActiveFriendships();
        foreach ( 
$friends as $item )
        {
            
$e->add(array(
                
'feedType' => 'user',
                
'feedId' => $item->getUserId(),
                
'userId' => $item->getFriendId(),
                
'permission' => 'friends_only'
            
));

            
$e->add(array(
                
'feedType' => 'user',
                
'feedId' => $item->getFriendId(),
                
'userId' => $item->getUserId(),
                
'permission' => 'friends_only'
            
));
        }
    }

    public function 
onCollectAuthLabelsBASE_CLASS_EventCollector $event )
    {
        
$language PEEP::getLanguage();
        
$event->add(
            array(
                
'friends' => array(
                    
'label' => $language->text('friends''auth_group_label'),
                    
'actions' => array(
                        
'add_friend' => $language->text('friends''auth_action_label_add_friend')
                    )
                )
            )
        );
    }

    public function 
onCollectPrivacyListBASE_CLASS_EventCollector $event )
    {
        
$language PEEP::getLanguage();
        
$params $event->getParams();

        
$event->add(array(
            
'key' => 'friends_only',
            
'label' => $language->text('friends''privacy_friends_only'),
            
'sortOrder' => 2
        
));
    }

    public function 
onCollectPrivacyPermissionsBASE_CLASS_EventCollector $event )
    {
        
$params $event->getParams();

        if ( !empty(
$params['privacy']) && $params['privacy'] == 'friends_only' )
        {
            
$ownerId = (int) $params['ownerId'];
            if ( !empty(
$ownerId) )
            {
                
$viewerId = (int) $params['viewerId'];

                
$privacy = array(
                    
'friends_only' => array(
                        
'blocked' => true,
                    ));

                
$friendship FRIENDS_BOL_Service::getInstance()->findFriendship($ownerId$viewerId);

                if ( 
$ownerId && $viewerId && ( (!empty($friendship) && $friendship->getStatus() == 'active' ) || $ownerId === $viewerId ) )
                {
                    
$privacy = array(
                        
'friends_only' => array(
                            
'blocked' => false
                        
));
                }

                
$event->add($privacy);
            }
        }

        if ( !empty(
$params['userPrivacyList']) )
        {

            
$viewerId = (int) $params['viewerId'];
            
$list $params['userPrivacyList'];

            
$resultList = array();
            
$ownerIdLIst = array();

            foreach ( 
$list as $ownerId => $privacy )
            {
                if ( 
$privacy == 'friends_only' )
                {
                    
$ownerIdLIst[] = $ownerId;
                }
            }

            
$friendList FRIENDS_BOL_Service::getInstance()->findFriendIdList($viewerId010000$ownerIdLIst);

            foreach ( 
$list as $ownerId => $privacy )
            {
                if ( 
$privacy == 'friends_only' )
                {
                    
$privacy = array(
                        
'privacy' => $privacy,
                        
'blocked' => true,
                        
'userId' => $ownerId
                    
);

                    if ( 
$ownerId && $viewerId && !empty($friendList) && is_array($friendList) && in_array($ownerId$friendList) || $ownerId === $viewerId )
                    {
                        
$privacy = array(
                            
'privacy' => $privacy,
                            
'blocked' => false,
                            
'userId' => $ownerId
                        
);
                    }

                    
$event->add($privacy);
                }
            }
            
$event->add($resultList);
        }
    }

    public function 
onAcceptRequestPEEP_Event $e )
    {
        
$params $e->getParams();
        
$recipientId $params['recipientId'];
        
$senderId $params['senderId'];

        
$eventParams = array(
            
'userId' => $recipientId,
            
'feedType' => 'user',
            
'feedId' => $senderId
        
);
        
PEEP::getEventManager()->trigger(new PEEP_Event('feed.add_follow'$eventParams));

        
$eventParams = array(
            
'userId' => $senderId,
            
'feedType' => 'user',
            
'feedId' => $recipientId
        
);
        
PEEP::getEventManager()->trigger(new PEEP_Event('feed.add_follow'$eventParams));
    }

//    public function onSentRequest( PEEP_Event $e )
//    {
//        $params = $e->getParams();
//        $recipientId = $params['recipientId'];
//        $senderId = $params['senderId'];
//
//        $eventParams = array(
//            'userId' => $senderId,
//            'feedType' => 'user',
//            'feedId' => $recipientId
//        );
//        PEEP::getEventManager()->trigger(new PEEP_Event('feed.add_follow', $eventParams));
//    }

    
public function onCancelRequestPEEP_Event $e )
    {
        
$params $e->getParams();
        
$recipientId $params['recipientId'];
        
$senderId $params['senderId'];

        
$this->service->cancel($recipientId$senderId);

        
$eventParams = array(
            
'userId' => $recipientId,
            
'feedType' => 'user',
            
'feedId' => $senderId
        
);
        
PEEP::getEventManager()->trigger(new PEEP_Event('feed.remove_follow'$eventParams));

        
$eventParams = array(
            
'userId' => $senderId,
            
'feedType' => 'user',
            
'feedId' => $recipientId
        
);
        
PEEP::getEventManager()->trigger(new PEEP_Event('feed.remove_follow'$eventParams));
    }

    public function 
onBlockUserPEEP_Event $e )
    {
        
$params $e->getParams();

        
$event = new PEEP_Event('friends.cancelled', array(
            
'senderId' => $params['userId'],
            
'recipientId' => $params['blockedUserId']
        ));

        
PEEP::getEventManager()->trigger($event);
    }

    public function 
onCollectFollowPermissionsBASE_CLASS_EventCollector $e )
    {
        
$params $e->getParams();

        if ( 
$params['feedType'] != 'user' )
        {
            return;
        }

        
$dto FRIENDS_BOL_Service::getInstance()->findFriendship($params['feedId'], $params['userId']);
        if ( 
$dto === null || $dto->status != 'active' )
        {
            return;
        }

        
$e->add('friends_only');
    }

    public function 
onCollectPrivacyActionListBASE_CLASS_EventCollector $event )
    {
        
$language PEEP::getLanguage();

        
$action = array(
            
'key' => 'friends_view',
            
'pluginKey' => 'friends',
            
'label' => $language->text('friends''privacy_action_view_friends'),
            
'description' => '',
            
'defaultValue' => 'everybody'
        
);

        
$event->add($action);
    }

    public function 
onCollectFeedPrivacyActionsBASE_CLASS_EventCollector $event )
    {
        
$event->add(array('create:friend_add''friends_view'));
    }

    public function 
onCollectFeedConfigurableActivityBASE_CLASS_EventCollector $event )
    {
        
$language PEEP::getLanguage();
        
$event->add(array(
            
'label' => $language->text('friends''feed_content_label'),
            
'activity' => '*:friend_add'
        
));
    }

    public function 
onCollectQuickLinksBASE_CLASS_EventCollector $event )
    {
        
$userId PEEP::getUser()->getId();

        
$count = (int) $this->service->countFriends($userId);
        
$activeCount = (int) $this->service->count(null$userIdFRIENDS_BOL_Service::STATUS_PENDING);

        if (
$count == && $activeCount == 0)
        {
            return;
        }

        
$event->add(array(
            
BASE_CMP_QuickLinksWidget::DATA_KEY_LABEL => PEEP::getLanguage()->text('friends''widget_title'),
            
BASE_CMP_QuickLinksWidget::DATA_KEY_URL => PEEP::getRouter()->urlForRoute('friends_list'),
            
BASE_CMP_QuickLinksWidget::DATA_KEY_COUNT => $count,
            
BASE_CMP_QuickLinksWidget::DATA_KEY_COUNT_URL => PEEP::getRouter()->urlForRoute('friends_list'),
            
BASE_CMP_QuickLinksWidget::DATA_KEY_ACTIVE_COUNT => $activeCount,
            
BASE_CMP_QuickLinksWidget::DATA_KEY_ACTIVE_COUNT_URL => PEEP::getRouter()->urlForRoute('friends_lists', array('list' => 'got-requests'))
        ));
    }

    public function 
onFeedAddCommentPEEP_Event $event )
    {
        
$params $event->getParams();

        if ( 
$params['entityType'] != 'friend_add' )
        {
            return;
        }

        
$friendship FRIENDS_BOL_Service::getInstance()->findFriendshipById($params['entityId']);

        if ( empty(
$friendship) )
        {
            return;
        }

        
$userName1 BOL_UserService::getInstance()->getDisplayName($friendship->userId);
        
$userUrl1 BOL_UserService::getInstance()->getUserUrl($friendship->userId);
        
$userEmbed1 '<a href="' $userUrl1 '">' $userName1 '</a>';

        
$userName2 BOL_UserService::getInstance()->getDisplayName($friendship->friendId);
        
$userUrl2 BOL_UserService::getInstance()->getUserUrl($friendship->friendId);
        
$userEmbed2 '<a href="' $userUrl2 '">' $userName2 '</a>';

        
PEEP::getEventManager()->trigger(new PEEP_Event('feed.activity', array(
            
'activityType' => 'comment',
            
'activityId' => $params['commentId'],
            
'entityId' => $params['entityId'],
            
'entityType' => 'friend_add',
            
'userId' => $params['userId'],
            
'pluginKey' => 'friends'
        
), array(
            
'string' => array('key'=>'friends+comment_activity_string''vars'=>array('user1' => $userEmbed1'user2' => $userEmbed2)),
            
'line' => ''
        
)));
    }

    public function 
onFeedAddLikePEEP_Event $event )
    {
        
$params $event->getParams();

        if ( 
$params['entityType'] != 'friend_add' )
        {
            return;
        }

        
$friendship FRIENDS_BOL_Service::getInstance()->findFriendshipById($params['entityId']);

        if ( empty(
$friendship) )
        {
            return;
        }

        
$userName1 BOL_UserService::getInstance()->getDisplayName($friendship->userId);
        
$userUrl1 BOL_UserService::getInstance()->getUserUrl($friendship->userId);
        
$userEmbed1 '<a href="' $userUrl1 '">' $userName1 '</a>';

        
$userName2 BOL_UserService::getInstance()->getDisplayName($friendship->friendId);
        
$userUrl2 BOL_UserService::getInstance()->getUserUrl($friendship->friendId);
        
$userEmbed2 '<a href="' $userUrl2 '">' $userName2 '</a>';

        
PEEP::getEventManager()->trigger(new PEEP_Event('feed.activity', array(
            
'activityType' => 'like',
            
'activityId' => $params['userId'],
            
'entityId' => $params['entityId'],
            
'entityType' => 'friend_add',
            
'userId' => $params['userId'],
            
'pluginKey' => 'friends'
        
), array(
            
'string' => array('key' => 'friends+like_activity_string''vars'=>array('user1' => $userEmbed1'user2' => $userEmbed2)),
            
'line' => ''
        
)));
    }

    
/*
    public function onFeedActionChangeAvatar( PEEP_Event $event )
    {
        $params = $event->getParams();

        if ( $params['entityType'] != 'avatar-change' )
        {
            return;
        }

        $list = FRIENDS_BOL_Service::getInstance()->findFriendshipListByUserId($params['userId']);

        foreach ( $list as $frendshipDto )
        {
            $getPermalinkEvent = new PEEP_Event('feed.get_item_permalink', array('entityType' => 'friend_add', 'entityId' => $frendshipDto->id));
            PEEP::getEventManager()->trigger($getPermalinkEvent);

            if ( $getPermalinkEvent->getData() == null )
            {
                continue;
            }

            $names = BOL_UserService::getInstance()->getDisplayNamesForList(array($frendshipDto->userId, $frendshipDto->friendId));
            $unames = BOL_UserService::getInstance()->getUserNamesForList(array($frendshipDto->userId, $frendshipDto->friendId));
            $avatars = BOL_AvatarService::getInstance()->getAvatarsUrlList(array($frendshipDto->userId, $frendshipDto->friendId));
            $uUrls = BOL_UserService::getInstance()->getUserUrlsForList(array($frendshipDto->userId, $frendshipDto->friendId));

            //Add Newsfeed activity action
            $event = new PEEP_Event('feed.action', array(
                'pluginKey' => 'friends',
                'entityType' => 'friend_add',
                'entityId' => $frendshipDto->id,
                'userId' => array($frendshipDto->friendId, $frendshipDto->userId),
                'feedType' => 'user',
                'feedId' => $frendshipDto->userId
            ), array(
                'string' => array("key" => 'friends+newsfeed_action_string', "vars" => array(
                    'user_url' => $uUrls[$frendshipDto->friendId],
                    'name' => $names[$frendshipDto->friendId],
                    'requester_url' => $uUrls[$frendshipDto->userId],
                    'requester_name' => $names[$frendshipDto->userId]
                ))
            ));
            PEEP::getEventManager()->trigger($event);
        }
    }
    */

    
public function addFriendPEEP_Event $event )
    {
        
$params $event->getParams();

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

        
$requesterId $params['requesterId'];
        
$userId $params['userId'];

        
$frendshipDto $this->service->findFriendship($requesterId$userId);

        if ( !empty(
$frendshipDto) )
        {
            return;
        }

        
$this->service->request($requesterId$userId);

        
$event = new PEEP_Event('friends.request-sent', array(
            
'senderId' => $requesterId,
            
'recipientId' => $userId,
            
'time' => time()
        ));

        
PEEP::getEventManager()->trigger($event);

        
$frendshipDto $this->service->accept($userId$requesterId);

        if ( empty(
$frendshipDto) )
        {
            return;
        }

        
$se BOL_UserService::getInstance();

        
$names $se->getDisplayNamesForList(array($requesterId$userId));
        
$uUrls $se->getUserUrlsForList(array($requesterId$userId));

        
//Add Newsfeed activity action
        
$event = new PEEP_Event('feed.action', array(
            
'pluginKey' => 'friends',
            
'entityType' => 'friend_add',
            
'entityId' => $frendshipDto->id,
            
'userId' => array($requesterId$userId),
            
'feedType' => 'user',
            
'feedId' => $requesterId
        
), array(
            
'string' => array("key" => 'friends+newsfeed_action_string'"vars" => array(
                
'user_url' => $uUrls[$userId],
                
'name' => $names[$userId],
                
'requester_url' => $uUrls[$requesterId],
                
'requester_name' => $names[$requesterId]
            ))
        ));
        
PEEP::getEventManager()->trigger($event);

        
$event = new PEEP_Event('friends.request-accepted', array(
            
'senderId' => $requesterId,
            
'recipientId' => PEEP::getUser()->getId(),
            
'time' => time()
        ));

        
PEEP::getEventManager()->trigger($event);
    }

    public function 
onUserEventClearQueryCachePEEP_Event $event )
    {
        
PEEP::getCacheManager()->clean( array( FRIENDS_BOL_FriendshipDao::CACHE_TAG_FRIENDS_COUNTFRIENDS_BOL_FriendshipDao::CACHE_TAG_FRIEND_ID_LIST ));
    }

    public function 
onCollectNotificationSendListBASE_CLASS_EventCollector $event )
    {
        
$params $event->getParams();
        
$userIdList $params['userIdList'];

        
$unreadFriendRequests FRIENDS_BOL_Service::getInstance()->getUnreadFriendRequestsForUserIdList($userIdList);

        
/**
         * @var FRIENDS_BOL_Friendship $friendship
         */
        
foreach ( $unreadFriendRequests as $id => $friendship )
        {
            
$avatars BOL_AvatarService::getInstance()->getDataForUserAvatars(array( $friendship->userId ) );
            
$avatar $avatars[$friendship->userId];

            
$event->add(array(
                
'pluginKey' => 'friends',
                
'entityType' => 'friends-request',
                
'entityId' => $friendship->id,
                
'userId' => $friendship->friendId,
                
'action' => 'friends-request',
                
'time' => $friendship->timeStamp,

                
'data' => array(
                    
'avatar' => $avatar,
                    
'string' => PEEP::getLanguage()->text('friends''notify_request_string', array(
                            
'displayName' => BOL_UserService::getInstance()->getDisplayName($friendship->userId),
                            
'userUrl' => BOL_UserService::getInstance()->getUserUrl($friendship->userId),
                            
'url' => PEEP::getRouter()->urlForRoute('friends_lists', array('list'=>'got-requests'))
                        )))
            ));

            
$unreadFriendRequests[$id]->notificationSent 1;
            
FRIENDS_BOL_Service::getInstance()->saveFriendship($unreadFriendRequests[$id]);
        }
    }

    public function 
sendFriendRequestPEEP_Event $event )
    {
        
$params $event->getParams();

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

        
$requesterId $params['requesterId'];
        
$userId $params['userId'];

        
$frendshipDto $this->service->findFriendship($requesterId$userId);

        if ( !empty(
$frendshipDto) )
        {
            return;
        }

        
$this->service->request($requesterId$userId);

        
$event = new PEEP_Event('friends.request-sent', array(
            
'senderId' => $requesterId,
            
'recipientId' => $userId,
            
'time' => time()
        ));

        
BOL_AuthorizationService::getInstance()->trackAction('friends''add_friend'$requesterId);

        
PEEP::getEventManager()->trigger($event);
    }



}
Онлайн: 1
Реклама