예제 #1
0
 /**
  * Get the metadata for the object
  * @return void
  */
 public function getMetadata()
 {
     /** @var xPDOTransport $transport */
     $transport = $this->object->getTransport();
     if ($transport) {
         $this->object->set('readme', $transport->getAttribute('readme'));
         $this->object->set('license', $transport->getAttribute('license'));
         $this->object->set('changelog', $transport->getAttribute('changelog'));
     }
 }
예제 #2
0
 public function process()
 {
     $transport = $this->package->getTransport();
     $this->modx->log(modX::LOG_LEVEL_INFO, $this->modx->lexicon('package_uninstall_info_prep'));
     /* uninstall package */
     $options = array(xPDOTransport::PREEXISTING_MODE => $this->getProperty('preexisting_mode'));
     if ($this->package->uninstall($options) == false) {
         return $this->failure(sprintf($this->modx->lexicon('package_err_uninstall'), $this->package->getPrimaryKey()));
     }
     $this->modx->log(modX::LOG_LEVEL_WARN, $this->modx->lexicon('package_uninstall_info_success', array('signature' => $this->package->get('signature'))));
     sleep(2);
     $this->modx->log(modX::LOG_LEVEL_INFO, 'COMPLETED');
     $this->clearCache();
     $this->logManagerAction();
     return $this->success();
 }
예제 #3
0
 public function initialize()
 {
     $signature = $this->getProperty('signature');
     if (empty($signature)) {
         return $this->modx->lexicon('package_err_ns');
     }
     $this->package = $this->modx->getObject('transport.modTransportPackage', $signature);
     if (empty($this->package)) {
         return $this->modx->lexicon('package_err_nf');
     }
     $this->transport = $this->package->getTransport();
     if (!$this->transport) {
         return $this->modx->lexicon('package_err_nf');
     }
     return true;
 }
예제 #4
0
 /**
  * Run the processor, downloading and transferring the package, and creating the metadata in the database
  * {@inheritDoc}
  * @return mixed
  */
 public function process()
 {
     if (!$this->loadProvider()) {
         return $this->failure($this->modx->lexicon('provider_err_nf'));
     }
     if (!$this->provider->getClient()) {
         return $this->failure($this->modx->lexicon('provider_err_no_client'));
     }
     $this->getTransportPackage();
     $metaLoaded = $this->getPackageMetadata();
     if ($metaLoaded !== true) {
         return $this->failure($metaLoaded);
     }
     $this->setPackageVersionData();
     $url = $this->getFileDownloadUrl();
     if (!is_string($url)) {
         return $url;
     }
     if (!$this->downloadPackage($url)) {
         $msg = $this->modx->lexicon('package_download_err', array('location' => $url));
         $this->modx->log(modX::LOG_LEVEL_ERROR, $msg);
         return $this->failure($msg);
     }
     if (!$this->package->save()) {
         $msg = $this->modx->lexicon('package_download_err_create', array('signature' => $this->signature));
         $this->modx->log(modX::LOG_LEVEL_ERROR, $msg);
         return $this->failure($msg);
     }
     $this->package->getTransport();
     return $this->success('', $this->package);
 }
예제 #5
0
 /**
  * Setup description, using either metadata or readme
  *
  * @param modTransportPackage $package
  * @param array $packageArray
  * @return array
  */
 public function getPackageMeta(modTransportPackage $package, array $packageArray)
 {
     $metadata = $packageArray['metadata'];
     if (!empty($metadata)) {
         foreach ($metadata as $row) {
             if (!empty($row['name']) && $row['name'] == 'description') {
                 $packageArray['readme'] = nl2br($row['text']);
                 break;
             }
         }
     } else {
         /** @var xPDOTransport $transport */
         $transport = $package->getTransport();
         if ($transport) {
             $packageArray['readme'] = $transport->getAttribute('readme');
             $packageArray['readme'] = nl2br($packageArray['readme']);
         }
     }
     unset($packageArray['attributes']);
     unset($packageArray['metadata']);
     return $packageArray;
 }