public function initialize() { $signature = $this->getProperty('signature'); $this->package = $this->modx->getObject('transport.modTransportPackage', $signature); if (empty($this->package)) { $msg = $this->modx->lexicon('package_err_nf'); $this->modx->log(modX::LOG_LEVEL_ERROR, $msg); return $msg; } $this->packageSignature = explode('-', $this->package->get('signature')); if ($this->package->provider != 0) { /* if package has a provider */ $this->provider = $this->package->getOne('Provider'); if (empty($this->provider)) { $msg = $this->modx->lexicon('provider_err_nf'); $this->modx->log(modX::LOG_LEVEL_ERROR, $msg); return $msg; } } else { /* if no provider, output error. you can't update something without a provider! */ $msg = $this->modx->lexicon('package_update_err_provider_nf'); $this->modx->log(modX::LOG_LEVEL_ERROR, $msg); return $msg; } return parent::initialize(); }
public function initialize() { $signature = $this->getProperty('signature'); $this->package = $this->modx->getObject('transport.modTransportPackage', $signature); if (empty($this->package)) { $msg = $this->modx->lexicon('package_err_nf'); $this->modx->log(modX::LOG_LEVEL_ERROR, $msg); return $msg; } $this->package->parseSignature(); if ($this->package->provider != 0) { /* if package has a provider */ $this->provider = $this->package->getOne('Provider'); if (empty($this->provider)) { $msg = $this->modx->lexicon('provider_err_nf'); $this->modx->log(modX::LOG_LEVEL_ERROR, $msg); return $msg; } } else { /* if no provider, indicate it is up to date */ $msg = $this->modx->lexicon('package_err_uptodate', array('signature' => $this->package->get('signature'))); $this->modx->log(modX::LOG_LEVEL_INFO, $msg); return $msg; } return parent::initialize(); }
/** * @param modTransportPackage $package * @param array $packageArray * @return array */ public function checkForUpdates(modTransportPackage $package, array $packageArray) { $updates = array('count' => 0); if ($package->get('provider') > 0 && $this->modx->getOption('auto_check_pkg_updates', null, false)) { $updateCacheKey = 'mgr/providers/updates/' . $package->get('provider') . '/' . $package->get('signature'); $updateCacheOptions = array(xPDO::OPT_CACHE_KEY => $this->modx->cacheManager->getOption('cache_packages_key', null, 'packages'), xPDO::OPT_CACHE_HANDLER => $this->modx->cacheManager->getOption('cache_packages_handler', null, $this->modx->cacheManager->getOption(xPDO::OPT_CACHE_HANDLER))); $updates = $this->modx->cacheManager->get($updateCacheKey, $updateCacheOptions); if (empty($updates)) { /* cache providers to speed up load time */ /** @var modTransportProvider $provider */ if (!empty($this->providerCache[$package->get('provider')])) { $provider =& $this->providerCache[$package->get('provider')]; } else { $provider = $package->getOne('Provider'); if ($provider) { $this->providerCache[$provider->get('id')] = $provider; } } if ($provider) { $loaded = $provider->getClient(); if ($loaded) { /** @var modRestResponse $response */ $response = $provider->request('package/update', 'GET', array('signature' => $package->get('signature'), 'supports' => $this->productVersion)); if ($response && !$response->isError()) { $updates = $response->toXml(); } } $updates = array('count' => count($updates)); $this->modx->cacheManager->set($updateCacheKey, $updates, $this->updatesCacheExpire, $updateCacheOptions); } } } $packageArray['updateable'] = (int) $updates['count'] >= 1 ? true : false; return $packageArray; }