Вход Регистрация
Файл: plugins/cnews/controllers/feed.php
Строк: 103
<?php

class CNEWS_CTRL_Feed extends PEEP_ActionController
{
    
/**
     *
     * @var CNEWS_BOL_Service
     */
    
protected $service;

    public function 
__construct()
    {
        
$this->service = CNEWS_BOL_Service::getInstance();
    }

    
/**
     * 
     * @param CNEWS_CLASS_Driver $driver
     * @param string $feedType
     * @param string $feedId
     * @return CNEWS_CMP_Feed
     */
    
protected function getFeed( CNEWS_CLASS_Driver $driver, $feedType, $feedId )
    {
        return 
PEEP::getClassInstance("CNEWS_CMP_Feed", $driver, $feedType, $feedId);
    }
    
    public function 
viewItem( $params )
    {
        
$actionId = (int) $params['actionId'];
        
$feedType = empty($_GET['ft']) ? 'site' : $_GET['ft'];
        
$feedId = empty($_GET['fi']) ? null : $_GET['fi'];

        
$driverClasses = array(
            
"site" => "CNEWS_CLASS_SiteDriver",
            
"my" => "CNEWS_CLASS_UserDriver"
        
);
        
        
$driverClass = empty($driverClasses[$feedType]) 
                ? 
"CNEWS_CLASS_FeedDriver"
                
: $driverClasses[$feedType];
        
        
$driver = PEEP::getClassInstance($driverClass);
        
        
$driver->setup(array(
            
'feedType' => $feedType,
            
'feedId' => $feedId
        
));

        
$action = $driver->getActionById($actionId);

        if ( empty(
$action) )
        {
            throw new 
Redirect404Exception();
        }

        
$feed = $this->getFeed($driver, $feedType, $feedId);
        
$feed->setup(array(
            
'viewMore' => false
        
));

        
$feed->setDisplayType(CNEWS_CMP_Feed::DISPLAY_TYPE_PAGE);
        
$feed->addAction($action);

        
$this->addComponent('action', $feed);
        
        
$this->assign("entity", array(
            
"type" => $action->getEntity()->type,
            
"id" => $action->getEntity()->id
        
));
    }

    public function 
follow()
    {
        
$userId = (int) $_GET['userId'];
        
$backUri = $_GET['backUri'];

        if ( !
PEEP::getUser()->isAuthenticated() )
        {
            throw new 
AuthenticateException();
        }

        if ( empty(
$userId) )
        {
            throw new 
InvalidArgumentException('Invalid parameter `userId`');
        }

        
$eventParams = array(
            
'userId' => PEEP::getUser()->getId(),
            
'feedType' => 'user',
            
'feedId' => $userId
        
);

        
PEEP::getEventManager()->trigger( new PEEP_Event('feed.add_follow', $eventParams) );

        
$backUrl = PEEP_URL_HOME . $backUri;
        
$username = BOL_UserService::getInstance()->getDisplayName($userId);

        if ( 
PEEP::getRequest()->isAjax() )
        {
            exit(
json_encode(array(
                
'message' => PEEP::getLanguage()->text('cnews', 'follow_complete_message', array('username' => $username))
            )));
        }
        else
        {
            
PEEP::getFeedback()->info(PEEP::getLanguage()->text('cnews', 'follow_complete_message', array('username' => $username)));
            
$this->redirect($backUrl);
        }
    }

    public function 
unFollow()
    {
        
$userId = (int) $_GET['userId'];
        
$backUri = $_GET['backUri'];

        if ( !
PEEP::getUser()->isAuthenticated() )
        {
            throw new 
AuthenticateException();
        }

        if ( empty(
$userId) )
        {
            throw new 
InvalidArgumentException('Invalid parameter `userId`');
        }

        
$this->service->removeFollow(PEEP::getUser()->getId(), 'user', $userId);

        
$backUrl = PEEP_URL_HOME . $backUri;
        
$username = BOL_UserService::getInstance()->getDisplayName($userId);

        if ( 
PEEP::getRequest()->isAjax() )
        {
            exit(
json_encode(array(
                
'message' => PEEP::getLanguage()->text('cnews', 'unfollow_complete_message', array('username' => $username))
            )));
        }
        else
        {
            
PEEP::getFeedback()->info(PEEP::getLanguage()->text('cnews', 'unfollow_complete_message', array('username' => $username)));
            
$this->redirect($backUrl);
        }
    }
}
Онлайн: 1
Реклама