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; }
protected static function getRemotePackageObject($method, $identifier) { $fh = Loader::helper('file'); // Retrieve the URL contents $csToken = Config::get('concrete.marketplace.token'); $csiURL = urlencode(BASE_URL . DIR_REL); $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')); } }
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; }