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();
 }
예제 #2
0
 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();
 }
예제 #3
0
 /**
  * @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;
 }