public function prepare_remote_upgrade($remoteMPID = 0){ $tp = new TaskPermission(); if ($tp->canInstallPackages()) { Loader::model('marketplace_remote_item'); $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 download_update() { if (MULTI_SITE == 1) { return false; } $vt = Loader::helper('validation/token'); if (!$vt->validate('download_update')) { $this->error->add($vt->getErrorMessage()); } if (!is_dir(DIR_APP_UPDATES)) { $this->error->add(t('The directory %s does not exist.', DIR_APP_UPDATES)); } else { if (!is_writable(DIR_APP_UPDATES)) { $this->error->add(t('The directory %s must be writable by the web server.', DIR_APP_UPDATES)); } } if (!$this->error->has()) { $remote = Update::getApplicationUpdateInformation(); if (is_object($remote)) { // try to download Loader::library("marketplace"); $r = Marketplace::downloadRemoteFile($remote->url); if (empty($r) || $r == Package::E_PACKAGE_DOWNLOAD) { $response = array(Package::E_PACKAGE_DOWNLOAD); } else { if ($r == Package::E_PACKAGE_SAVE) { $response = array($r); } } if (isset($response)) { $errors = Package::mapError($response); foreach ($errors as $e) { $this->error->add($e); } } if (!$this->error->has()) { // the file exists in the right spot Loader::library('archive'); $ar = new UpdateArchive(); try { $ar->install($r); } catch (Exception $e) { $this->error->add($e->getMessage()); } } } else { $this->error->add(t('Unable to retrieve software from update server.')); } } $this->view(); }
public function download_update() { $p = new \Permissions(); if (!$p->canUpgrade()) { return false; } $vt = Loader::helper('validation/token'); if (!$vt->validate('download_update')) { $this->error->add($vt->getErrorMessage()); } if (!is_dir(DIR_CORE_UPDATES)) { $this->error->add(t('The directory %s does not exist.', DIR_CORE_UPDATES)); } else { if (!is_writable(DIR_CORE_UPDATES)) { $this->error->add(t('The directory %s must be writable by the web server.', DIR_CORE_UPDATES)); } } if (!$this->error->has()) { $remote = \Concrete\Core\Updater\Update::getApplicationUpdateInformation(); if (is_object($remote)) { // try to download $r = \Marketplace::downloadRemoteFile($remote->getDirectDownloadURL()); if (empty($r) || $r == \Package::E_PACKAGE_DOWNLOAD) { $response = array(\Package::E_PACKAGE_DOWNLOAD); } else { if ($r == \Package::E_PACKAGE_SAVE) { $response = array($r); } } if (isset($response)) { $errors = \Package::mapError($response); foreach ($errors as $e) { $this->error->add($e); } } if (!$this->error->has()) { // the file exists in the right spot $ar = new UpdateArchive(); try { $ar->install($r); } catch (Exception $e) { $this->error->add($e->getMessage()); } } } else { $this->error->add(t('Unable to retrieve software from update server.')); } } $this->view(); }
foreach ($errors as $e) { $error->add($e); } } else { $error->add($r); } } } } if (!is_object($mri)) { $error->add(t('Invalid package or no package specified.')); } if (!$error->has() && $install) { $tests = Package::testForInstall($mri->getHandle()); if (is_array($tests)) { $results = Package::mapError($tests); foreach ($results as $te) { $error->add($te); } } else { $p = Loader::package($mri->getHandle()); try { $p->install(); } catch (Exception $e) { $error->add($e->getMessage()); } } } if (!$error->has()) { ?> <p>
public function download($remoteMPID = null) { $tp = new TaskPermission(); if ($tp->canInstallPackages()) { Loader::model('marketplace_remote_item'); $mri = MarketplaceRemoteItem::getByID($remoteMPID); if (!is_object($mri)) { $this->set('error', array(t('Invalid marketplace item ID.'))); return; } $r = $mri->download(); if ($r != false) { if (!is_array($r)) { $this->set('error', array($r)); } else { $errors = Package::mapError($r); $this->set('error', $errors); } } 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.')); $this->set('error', $this->error); } }