public function prepare_remote_upgrade($remoteMPID = 0) { $tp = new TaskPermission(); if ($tp->canInstallPackages()) { $mri = MarketplaceRemoteItem::getByID($remoteMPID); if (!is_object($mri)) { $this->set('error', array(t('Invalid marketplace item ID.'))); return; } $local = Package::getbyHandle($mri->getHandle()); if (!is_object($local) || $local->isPackageInstalled() == false) { $this->set('error', array(Package::E_PACKAGE_NOT_FOUND)); return; } $r = $mri->downloadUpdate(); if ($r != false) { if (!is_array($r)) { $this->set('error', array($r)); } else { $errors = Package::mapError($r); $this->set('error', $errors); } } else { $this->redirect('/dashboard/extend/update', 'do_update', $mri->getHandle()); } } }
public function view_detail($mpID = null) { $this->setThemeViewTemplate('marketplace.php'); $this->set('type', $this->getMarketplaceType()); $this->set('heading', $this->getMarketplaceDefaultHeading()); $tp = new TaskPermission(); $mi = Marketplace::getInstance(); if ($mi->isConnected() && $tp->canInstallPackages()) { $mpID = intval($mpID); $this->requireAsset('core/lightbox'); $item = RemoteItem::getByID($mpID); if (is_object($item)) { if ($item->getMarketplaceItemType() == 'theme' && $this->getMarketplaceType() == 'themes' || $item->getMarketplaceItemType() == 'add_on' && $this->getMarketplaceType() == 'addons') { $this->set('item', $item); } else { $this->redirect('/dashboard/extend/connect'); } } else { throw new \Exception(t('Invalid marketplace item object.')); } } else { $this->redirect('/dashboard/extend/connect'); } }
public function download($remoteMPID = null) { $tp = new TaskPermission(); if ($tp->canInstallPackages()) { $mri = MarketplaceRemoteItem::getByID($remoteMPID); if (!is_object($mri)) { $this->error->add(t('Invalid marketplace item ID.')); return; } $r = $mri->download(); if ($r != false) { if (!is_array($r)) { $this->error->add($r); } else { $errors = Package::mapError($r); foreach ($errors as $error) { $this->error->add($error); } } } else { $this->set('message', t('Marketplace item %s downloaded successfully.', $mri->getName())); } } else { $this->error->add(t('You do not have permission to download add-ons.')); } }
public static function getByID($mpID) { return RemoteItem::getRemotePackageObject('mpID', $mpID); }
public function on_start() { parent::on_start(); $this->marketplace = Marketplace::getInstance(); $this->item = RemoteItem::getByID($this->request->query->get('mpID')); }
public function getAvailableMarketplaceItems($filterInstalled = true) { $fh = Loader::helper('file'); if (!$fh) { return array(); } $dbConfig = \Core::make('config/database'); // Retrieve the URL contents $csToken = $dbConfig->get('concrete.marketplace.token'); $csiURL = urlencode(\Core::getApplicationURL()); $url = Config::get('concrete.urls.concrete5') . Config::get('concrete.urls.paths.marketplace.purchases'); $url .= "?csToken={$csToken}&csiURL=" . $csiURL . "&csiVersion=" . APP_VERSION; $json = $fh->getContents($url); $addons = array(); $objects = @Loader::helper('json')->decode($json); if (is_array($objects)) { try { foreach ($objects as $addon) { $mi = new RemoteItem(); $mi->setPropertiesFromJSONObject($addon); $remoteCID = $mi->getRemoteCollectionID(); if (!empty($remoteCID)) { $addons[$mi->getHandle()] = $mi; } } } catch (Exception $e) { } if ($filterInstalled && is_array($addons)) { $handles = Package::getInstalledHandles(); if (is_array($handles)) { $adlist = array(); foreach ($addons as $key => $ad) { if (!in_array($ad->getHandle(), $handles)) { $adlist[$key] = $ad; } } $addons = $adlist; } } } return $addons; }
<?php if (count($pkgLocal) == 0 && count($pkgRemote) == 0) { ?> <p><?php echo t('No updates for your add-ons are available.'); ?> </p> <?php } else { ?> <table class="table update-addons-table"> <?php foreach ($pkgRemote as $pkg) { $rpkg = \Concrete\Core\Marketplace\RemoteItem::getByHandle($pkg->getPackageHandle()); ?> <tr> <td class="ccm-marketplace-list-thumbnail" rowspan="2"><img style="max-width: 50px" src="<?php echo $ci->getPackageIconURL($pkg); ?> " /></td> <td class="ccm-addon-list-description"><h3><?php echo $pkg->getPackageName(); ?> </h3><p><?php echo $pkg->getPackageDescription(); ?> </p> <p><strong><?php
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; }