Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Marketplace/RemoteItem.php
Строк: 291
<?php
namespace ConcreteCoreMarketplace;
use 
ConcreteCorePackagePackage;
use 
ConcreteCorePackagePackageArchive;
use 
Loader;
use 
Config;
use 
ConcreteCoreFoundationObject;
use 
Exception;
class 
RemoteItem extends Object {

    protected 
$price=0.00;
    protected 
$remoteCID=0;
    protected 
$remoteURL='';
    protected 
$remoteFileURL='';
    protected 
$remoteIconURL='';
    protected 
$isLicensedToSite false;

    public function 
setPropertiesFromJSONObject($obj) {
        foreach(
$obj as $prop => $value) {
            
$this->{$prop} = $value;
        }
    }

    public function 
getMarketplaceItemID() {return $this->mpID;}
    public function 
getMarketplaceItemType() {return $this->mpType;}
    public function 
getHandle() { return $this->handle; }
    public function 
getName(){ return $this->name; }
    public function 
getDescription() {return $this->description;}
    public function 
getBody() {return $this->bodyContent;}
    public function 
getPrice() {return $this->price;}
    public function 
getSkillLevel() {return $this->skillLevel;}
    public function 
getExampleURL() {return $this->exampleURL;}
    public function 
getSkillLevelClassName() {
        switch(
$this->getSkillLevel()) {
            case 
'beginner':
                return 
'fa fa-cog ccm-marketplace-skill-level-beginner';
            case 
'intermediate':
                return 
'fa fa-cog ccm-marketplace-skill-level-intermediate';
            case 
'advanced':
                return 
'fa fa-cog ccm-marketplace-skill-level-advanced';
            case 
'bleeding_edge':
                return 
'fa fa-cogs ccm-marketplace-skill-level-bleeding-edge';
        }
    }
    public function 
getSkillLevelDisplayName() {
        switch(
$this->getSkillLevel()) {
            case 
'beginner':
                return 
t('Beginner');
            case 
'intermediate':
                return 
t('Intermediate');
            case 
'advanced':
                return 
t('Advanced');
            case 
'bleeding_edge':
                return 
t('Bleeding Edge/Developer');
        }
    }

    public function 
getLocalURL()
    {
        if (
$this->getMarketplaceItemType() == 'theme') {
            return 
URL::to('/dashboard/extend/themes/''view_detail'$this->getMarketplaceItemID());
        } else {
            return 
URL::to('/dashboard/extend/addons/''view_detail'$this->getMarketplaceItemID());
        }
    }

    public function 
getDisplayPrice(){
        if (
$this->price == '' || $this->price == '0' || $this->price == '0.00') {
            return 
t('Free');
        } else {
            return 
sprintf("$%.2f",floatval($this->price));
        }
    }
    public function 
getScreenshots() {
        if (
is_array($this->screenshots)) {
            return 
$this->screenshots;
        } else {
            return array();
        }
    }
    public function 
getSlideshow() {
        if (
is_array($this->slideshowImages)) {
            return 
$this->slideshowImages;
        } else {
            return array();
        }
    }
    public function 
getMarketplaceItemVersionForThisSite() {return $this->siteLatestAvailableVersion;}

    public function 
getAverageRating() {return $this->rating;}
    public function 
getVersionHistory() {return $this->versionHistory;}
    public function 
getTotalRatings() {
        if (
$this->totalRatings) {
            return 
$this->totalRatings;
        } else {
            return 
0;
        }
    }
    public function 
getRemoteReviewsURL() {return $this->reviewsURL;}
    public function 
getRemoteCollectionID(){ return $this->cID; }
    public function 
getReviewBody() {
        return 
$this->reviewBody;
    }
    public function 
getLargeThumbnail() {
        if (
$this->largethumbnail) {
            return 
$this->largethumbnail;
        } else {
            
$screenshots $this->getScreenshots();
            return 
$screenshots[0];
        }
    }
    public function 
getRemoteURL(){ return $this->url; }
    public function 
getRemoteHelpURL(){ return $this->helpURL; }
    public function 
getProductBlockID() {return $this->productBlockID;}
    public function 
getFivePackProductBlockID() {return $this->fivePackProductBlockID;}
    public function 
getRemoteFileURL(){ return $this->file; }
    public function 
getRemoteIconURL(){ return $this->icon; }
    public function 
getRemoteListIconURL() {return $this->listicon;}
    public function 
isLicensedToSite() {return $this->islicensed;}
    public function 
purchaseRequired() {
        if (
$this->price == '' || $this->price == '0' || $this->price == '0.00') {
            return 
false;
        } else if (
$this->isLicensedToSite()) {
            return 
false;
        } else {
            return 
true;
        }
    }

    public function 
getVersion() {return $this->pkgVersion;}

    public function 
downloadUpdate() {
        
$pkg Package::getByHandle($this->getHandle());

        
$fileURL $this->getRemoteFileURL();
        if (empty(
$fileURL)) {
            return array(
Package::E_PACKAGE_NOT_FOUND);
        }

        
$file Marketplace::downloadRemoteFile($this->getRemoteFileURL());
        if (empty(
$file) || $file == Package::E_PACKAGE_DOWNLOAD) {
            return array(
Package::E_PACKAGE_DOWNLOAD);
        } else if (
$file == Package::E_PACKAGE_SAVE) {
            return array(
$file);
        }

        
$r $pkg->backup();
        if (
is_array($r)) {
            return 
$r;
        }

        try {

            
$am = new PackageArchive($this->getHandle());
            
$am->install($filetrue);
        } catch (
Exception $e) {
            
$pkg->restore();
            return array(
$e->getMessage());
        }

    }

    public function 
download() {
        
$file Marketplace::downloadRemoteFile($this->getRemoteFileURL());
        if (empty(
$file) || $file == Package::E_PACKAGE_DOWNLOAD) {
            return array(
Package::E_PACKAGE_DOWNLOAD);
        } else if (
$file == Package::E_PACKAGE_SAVE) {
            return array(
$file);
        } else if (
$file == Package::E_PACKAGE_INVALID_APP_VERSION) {
            return array(
$file);
        }

        try {

            
$am = new PackageArchive($this->getHandle());
            
$am->install($filetrue);
        } catch (
Exception $e) {
            return array(
$e->getMessage());
        }
    }

    public function 
enableFreeLicense() {
        
$fh Loader::helper('file');
        
$dbConfig Core::make('config/database');
        
$csToken $dbConfig->get('concrete.marketplace.token');
        
$csiURL urlencode(Core::getApplicationURL());
        
$url Config::get('concrete.urls.concrete5') . Config::get('concrete.urls.paths.marketplace.item_free_license');
        
$url .= "?mpID=" $this->mpID "&csToken={$csToken}&csiURL=" $csiURL "&csiVersion=" APP_VERSION;
        
$fh->getContents($url);
    }

    protected static function 
getRemotePackageObject($method$identifier) {
        
$fh Loader::helper('file');

        
// Retrieve the URL contents
        
$dbConfig Core::make('config/database');
        
$csToken $dbConfig->get('concrete.marketplace.token');
        
$csiURL urlencode(Core::getApplicationURL());

        
$url Config::get('concrete.urls.concrete5') . Config::get('concrete.urls.paths.marketplace.item_information');
        
$url .= "?" $method "=" $identifier "&csToken={$csToken}&csiURL=" $csiURL "&csiVersion=" APP_VERSION;
        
$json $fh->getContents($url);

        try {
            
// Parse the returned XML file
            
$obj = @Loader::helper('json')->decode($json);
            if (
is_object($obj)) {
                
$mi = new RemoteItem();
                
$mi->setPropertiesFromJSONObject($obj);
                if (
$mi->getMarketplaceItemID() > 0) {
                    return 
$mi;
                }
            }
        } catch (
Exception $e) {
            throw new 
Exception(t('Unable to connect to marketplace to retrieve item'));
        }
    }

    
/**
     * @return ConcreteCoreMarketplaceRemoteItem;
     * @param $mpID
     * @throws Exception
     */
    
public static function getByHandle($mpHandle) {
        return 
RemoteItem::getRemotePackageObject('mpHandle'$mpHandle);
    }

    
/**
     * @return ConcreteCoreMarketplaceRemoteItem;
     * @param $mpID
     * @throws Exception
     */
    
public static function getByID($mpID) {
        return 
RemoteItem::getRemotePackageObject('mpID'$mpID);
    }
}
Онлайн: 2
Реклама