Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Marketplace/RemoteItemList.php
Строк: 101
<?php

namespace ConcreteCoreMarketplace;

use 
Core;
use 
Config;
use 
Log;
use 
ConcreteCoreLegacyItemList;
use 
ConcreteCorePackagePackage;

class 
RemoteItemList extends ItemList
{
    protected 
$includeInstalledItems true;
    protected 
$params = array();
    protected 
$type 'themes';
    protected 
$itemsPerPage 20;

    public static function 
getItemSets($type)
    {
        
$cache Core::make('cache/expensive');
        
$r $cache->getItem('concrete.marketplace.remote_item_sets.' $type);
        if (
$r->isMiss()) {
            
$r->lock();
            
$url Config::get('concrete.urls.concrete5') . Config::get('concrete.urls.paths.marketplace.remote_item_list');
            
$url .= $type '/-/get_remote_item_sets';
            if (
Config::get('concrete.marketplace.log_requests')) {
                
Log::info($url);
            }
            
$contents Core::make('helper/file')->getContents($url);
            
$sets = array();
            if (
$contents != '') {
                
$objects = @Core::make('helper/json')->decode($contents);
                if (
is_array($objects)) {
                    foreach (
$objects as $obj) {
                        
$mr = new RemoteItemSet();
                        
$mr->id $obj->marketplaceItemSetID;
                        
$mr->name $obj->marketplaceItemSetName;
                        
$sets[] = $mr;
                    }
                }
            }
            
$r->set($sets);
        }

        return 
$r->get();
    }

    public function 
setIncludeInstalledItems($pp)
    {
        
$this->includeInstalledItems $pp;
    }

    public function 
setType($type)
    {
        
$this->type $type;
    }

    public function 
filterByKeywords($keywords)
    {
        
$this->params['keywords'] = $keywords;
    }

    public function 
filterByMarketplaceItemID($mpID)
    {
        
$this->params['mpID'] = $mpID;
    }

    public function 
sortBy($column$direction 'asc')
    {
        
$this->params['sort'] = $column;
        
$direction strtolower($direction);
        
//$this->params['sortDirection'] = in_array($direction, array('asc', 'desc')) ? $direction : 'asc';
    
}

    public function 
filterBySet($set)
    {
        
$this->params['set'] = $set;
    }

    public function 
filterByIsFeaturedRemotely($r)
    {
        
$this->params['is_featured_remotely'] = $r;
    }

    public function 
filterByCompatibility($r)
    {
        
$this->params['is_compatible'] = $r;
    }

    public function 
execute()
    {
        
$this->loadQueryStringPagingVariable();
        
$params $this->params;
        
$params['version'] = APP_VERSION;
        
$params['itemsPerPage'] = $this->itemsPerPage;
        
$mi Marketplace::getInstance();
        
$params['csToken'] = $mi->getSiteToken();

        if (
$this->includeInstalledItems) {
            
$params['includeInstalledItems'] = 1;
        } else {
            
$params['includeInstalledItems'] = 0;
            
$list Package::getInstalledList();
            foreach (
$list as $pkg) {
                
$params['installedPackages'][] = $pkg->getPackageHandle();
            }
        }

        if (isset(
$_REQUEST[$this->queryStringPagingVariable])) {
            
$params[$this->queryStringPagingVariable] = $_REQUEST[$this->queryStringPagingVariable];
        }

        
$uh Core::make('helper/url');

        
$url Config::get('concrete.urls.concrete5') . Config::get('concrete.urls.paths.marketplace.remote_item_list');
        
$url $uh->buildQuery($url $this->type '/-/get_remote_list'$params);
        if (
Config::get('concrete.marketplace.log_requests')) {
            
Log::info($url);
        }
        
$r Core::make('helper/file')->getContents($url);
        
$r2 = @Core::make('helper/json')->decode($r);

        
$total 0;
        
$items = array();

        if (
is_object($r2)) {
            
$items $r2->items;
            
$total $r2->total;
        }

        
$this->total $total;
        
$this->setItems($items);
    }

    public function 
get($itemsToGet 0$offset 0)
    {
        
$this->start $offset;
        
$items $this->items;
        
$marketplaceItems = array();
        foreach (
$items as $stdObj) {
            
$mi = new RemoteItem();
            
$mi->setPropertiesFromJSONObject($stdObj);
            
$marketplaceItems[] = $mi;
        }

        return 
$marketplaceItems;
    }
}
Онлайн: 2
Реклама