Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Activity/Newsflow.php
Строк: 207
<?php
namespace ConcreteCoreActivity;

use 
Config;
use 
Marketplace;
use 
ConcreteCoreFileServiceFile;
use 
ConcreteCoreActivityNewsflowItem;
use 
ConcreteCoreActivityNewsflowSlotItem;

/**
 * Class Newsflow
 *
 * A class used for retrieving the latest news and updates from Concrete5. This is a singleton class that should be
 * instantiated via Newsflow::getInstance(). This object is prevented from being created if the config file has the
 * 'concrete.external.news' setting set to false.
 * @package ConcreteCoreActivity
 */
class Newsflow
{

    
/**
     * Constant for if newsflow is manually disabled (like through a config entry)
     */
    
const E_NEWSFLOW_SUPPORT_MANUALLY_DISABLED 21;

    
/**
     * @var bool if the site is connected to concrete5.org
     */
    
protected $isConnected false;
    
/**
     * @var bool|int if there is a connection error and the error number
     */
    
protected $connectionError false;
    
/**
     * @var null|NewsflowSlotItem[]
     */
    
protected $slots null;

    public function 
__construct()
    {
        if (!
Config::get('concrete.external.news')) {
            
$this->connectionError Newsflow::E_NEWSFLOW_SUPPORT_MANUALLY_DISABLED;
            return;
        }
    }

    
/**
     * @return bool Returns true if there is a connection error, false if there is no error.
     */
    
public function hasConnectionError()
    {
        return 
$this->connectionError !== false;
    }

    
/**
     * @return bool|int Returns false if there are no errors, or an int corresponding to one of the E_* class constants
     */
    
public function getConnectionError()
    {
        return 
$this->connectionError;
    }

    
/**
     * Retrieves a NewsflowItem object for a given collection ID
     * @param int $cID
     * @return bool|NewsflowItem Returns a NewsflowItem object, false if there was an error or one could not be located.
     */
    
public function getEditionByID($cID)
    {
        if (!
$this->hasConnectionError()) {
            
$fileService = new File();
            
$appVersion Config::get('concrete.version');
            
$cfToken Marketplace::getSiteToken();
            
$path Config::get('concrete.urls.newsflow') . '/' DISPATCHER_FILENAME '/?_ccm_view_external=1&appVersion=' $appVersion '&cID=' rawurlencode($cID) . '&cfToken=' rawurlencode($cfToken);
            
$response $fileService->getContents($path);
            
$ni = new NewsflowItem();
            
$obj $ni->parseResponse($response);
            return 
$obj;
        }
        return 
false;
    }

    
/**
     * Retrieves a NewsflowItem object for a given collection path
     * @param $cPath
     * @return bool|NewsflowItem
     */
    
public function getEditionByPath($cPath)
    {
        
$cPath trim($cPath'/');
        if (!
$this->hasConnectionError()) {
            
$fileService = new File();
            
$appVersion Config::get('concrete.version');
            
$cfToken Marketplace::getSiteToken();
            
$path Config::get('concrete.urls.newsflow') . '/' DISPATCHER_FILENAME '/' $cPath '/-/view_external?cfToken=' rawurlencode($cfToken) . '&appVersion=' $appVersion;
            
$response $fileService->getContents($path);
            
$ni = new NewsflowItem();
            
$obj $ni->parseResponse($response);
            return 
$obj;
        }
        return 
false;
    }

    
/**
     * Retrieves an array of NewsflowSlotItems
     * @return NewsflowSlotItem[]|null
     */
    
public function getSlotContents()
    {
        if (
$this->slots === null) {
            
$fileService = new File();
            
$appVersion Config::get('concrete.version');
            
$cfToken Marketplace::getSiteToken();
            
$url Config::get('concrete.urls.newsflow') . Config::get('concrete.urls.paths.newsflow_slot_content');
            
$path $url '?cfToken=' rawurlencode($cfToken) . '&appVersion=' $appVersion;
            
$response $fileService->getContents($path);
            
$nsi = new NewsflowSlotItem();
            
$this->slots $nsi->parseResponse($response);
        }
        return 
$this->slots;
    }
}
Онлайн: 1
Реклама