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

class PRIVACY_CLASS_EventHandler
{

    public function 
__construct()
    {

    }

    public function 
addPrivacyPreferenceMenuItem( BASE_CLASS_EventCollector $event )
    {
        
$router = PEEP_Router::getInstance();
        
$language = PEEP::getLanguage();

        
$menuItem = new BASE_MenuItem();

        
$menuItem->setKey('privacy');
        
$menuItem->setLabel($language->text('privacy', 'privacy_index'));
        
$menuItem->setIconClass('peep_ic_lock');
        
$menuItem->setUrl($router->urlForRoute('privacy_index'));
        
$menuItem->setOrder(5);

        
$event->add($menuItem);
    }

    

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

        
$event->add(array(
            
'key' => 'everybody',
            
'label' => $language->text('privacy', 'privacy_everybody'),
            
'weight' => 0,
            
'sortOrder' => 0
        
));

        
$event->add(array(
            
'key' => 'only_for_me',
            
'label' => $language->text('privacy', 'privacy_only_for_me'),
            
'weight' => 10,
            
'sortOrder' => 100000
        
));
    }

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

        if ( empty(
$params['ownerId']) || empty($params['action']) )
        {
            throw new 
InvalidArgumentException('Invalid parameters were provided!'); // TODO trow Exeption
        
}

        return 
PRIVACY_BOL_ActionService::getInstance()->getActionValue($params['action'], $params['ownerId']);
    }

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

        if ( empty(
$params['userIdList']) || !is_array($params['userIdList']) || empty($params['action']) )
        {
            throw new 
InvalidArgumentException('Invalid parameters were provided!'); // TODO trow Exeption
        
}

        return 
PRIVACY_BOL_ActionService::getInstance()->getMainActionValue($params['action'], $params['userIdList']);
    }

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

        if ( !empty(
$params['userId']) )
        {
            
PRIVACY_BOL_ActionService::getInstance()->deleteActionDataByUserId((int) $params['userId']);
        }
    }

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

        if ( !empty(
$params['pluginKey']) )
        {
            
PRIVACY_BOL_ActionService::getInstance()->deleteActionDataByPluginKey($params['pluginKey']);
        }
    }

    public function 
checkPremission( PEEP_Event $event )
    {

        
$params = $event->getParams();

        
$result = PRIVACY_BOL_ActionService::getInstance()->checkPermission($params);

        if ( 
$result['blocked'] )
        {
            
$ownerId = (int) $params['ownerId'];

            
$username = BOL_UserService::getInstance()->getUserName($ownerId);

            
$exception = new RedirectException(PEEP::getRouter()->urlForRoute('privacy_no_permission', array('username' => $username)));

            
$params['message'] = $result['message'];
            
$params['privacy'] = $result['privacy'];

            
PEEP::getSession()->set('privacyRedirectExceptionMessage', $params['message']);

            
$exception->setData($params);

            throw 
$exception;
        }
    }

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

        
$action = $params['action'];
        
$ownerIdList = $params['ownerIdList'];
        
$viewerId = $params['viewerId'];

        return 
PRIVACY_BOL_ActionService::getInstance()->checkPermissionForUserList($action, $ownerIdList, $viewerId);
    }

    public function 
permissionEverybody( BASE_CLASS_EventCollector $event )
    {
        
$params = $event->getParams();
        if ( !empty(
$params['privacy']) && $params['privacy'] == 'everybody' )
        {
            if ( !empty(
$params['ownerId']) )
            {
                
$privacy = array();
                
$privacy = array(
                    
'everybody' => array(
                        
'blocked' => false
                    
));

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

        if ( !empty(
$params['userPrivacyList']) && is_array($params['userPrivacyList']) )
        {
            
$list = $params['userPrivacyList'];
            
$resultList = array();

            foreach ( 
$list as $ownerId => $privacy )
            {
                if ( 
$privacy == 'everybody' )
                {
                    
$privacy = array(
                        
'privacy' => $privacy,
                        
'blocked' => false,
                        
'userId' => $ownerId
                    
);
                    
$event->add($privacy);
                }
            }
        }
    }

    public function 
permissionOnlyForMe( BASE_CLASS_EventCollector $event )
    {
        
$language = PEEP::getLanguage();

        
$params = $event->getParams();

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

                
$item = array();
                
$item = array(
                    
'only_for_me' => array(
                        
'blocked' => true,
                    ));

                if ( 
$ownerId > 0 && $ownerId === $viewerId )
                {
                    
$item = array(
                        
'only_for_me' => array(
                            
'blocked' => false
                        
));
                }

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


        if ( !empty(
$params['userPrivacyList']) && is_array($params['userPrivacyList']) )
        {
            
$list = $params['userPrivacyList'];

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

            
$resultList = array();

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

                    if ( 
$ownerId > 0 && $ownerId === $viewerId )
                    {
                        
$privacy = array(
                            
'privacy' => $privacy,
                            
'blocked' => false,
                            
'userId' => $ownerId
                        
);
                    }

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

    public function 
pluginIsActive()
    {
        return 
true;
    }

    public function 
genericInit()
    {
        
PEEP::getEventManager()->bind('base.preference_menu_items', array($this, 'addPrivacyPreferenceMenuItem'));
        
PEEP::getEventManager()->bind(PRIVACY_BOL_ActionService::EVENT_GET_PRIVACY_LIST, array($this, 'addPrivacy'));
        
PEEP::getEventManager()->bind('plugin.privacy.get_privacy', array($this, 'getActionPrivacy'));
        
PEEP::getEventManager()->bind('plugin.privacy.get_main_privacy', array($this, 'getActionMainPrivacyByOwnerIdList'));
        
PEEP::getEventManager()->bind(PEEP_EventManager::ON_USER_UNREGISTER, array($this, 'removeUserPrivacy'));
        
PEEP::getEventManager()->bind(PEEP_EventManager::ON_BEFORE_PLUGIN_UNINSTALL, array($this, 'removePluginPrivacy'));
        
PEEP::getEventManager()->bind(PRIVACY_BOL_ActionService::EVENT_CHECK_PERMISSION, array($this, 'checkPremission'));
        
PEEP::getEventManager()->bind(PRIVACY_BOL_ActionService::EVENT_CHECK_PERMISSION_FOR_USER_LIST, array($this, 'checkPremissionForUserList'));
        
PEEP::getEventManager()->bind('plugin.privacy.check_permission', array($this, 'permissionEverybody'));
        
PEEP::getEventManager()->bind('plugin.privacy.check_permission', array($this, 'permissionOnlyForMe'));
        
PEEP::getEventManager()->bind('plugin.privacy', array($this, 'pluginIsActive'));
    }
    

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