%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/updater/controllers/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/updater/controllers/UpdateController.php |
<?php
namespace humhub\modules\updater\controllers;
use Yii;
use yii\helpers\Url;
use humhub\modules\updater\libs\OnlineUpdateAPI;
/**
* UpdateController
*
* @author luke
*/
class UpdateController extends \humhub\modules\admin\components\Controller
{
public function init()
{
set_time_limit(0);
// Fix: Handle admin layout file change in (v1.0.0-beta.3 -> v1.0.0-beta.4)
if ($this->subLayout == '@humhub/modules/admin/views/_layout') {
if (!file_exists(Yii::getAlias($this->subLayout) . '.php')) {
$this->subLayout = '@humhub/modules/admin/views/layouts/main';
}
}
parent::init();
}
public function actionIndex()
{
$availableUpdate = OnlineUpdateAPI::getAvailableUpdate();
if ($availableUpdate === null) {
return $this->render('index_noupdate');
}
$releaseNotes = \humhub\widgets\MarkdownView::widget(['markdown' => $availableUpdate->releaseNotes]);
// Fix older release notes
if (strpos($releaseNotes, '<li>') === false) {
$releaseNotes = nl2br($availableUpdate->releaseNotes) . '<br />';
}
$allowStart = true;
$newUpdaterAvailable = $this->isNewUpdaterModuleAvailable();
if ($newUpdaterAvailable) {
$allowStart = false;
}
$errorMinimumPhpVersion = false;
if (version_compare(phpversion(), '5.6', '<')) {
$allowStart = false;
$errorMinimumPhpVersion = true;
}
$errorRootFolderNotWritable = !$this->isRootFolderWritable();
if ($errorRootFolderNotWritable) {
$allowStart = false;
}
return $this->render('index', [
'versionTo' => $availableUpdate->versionTo,
'releaseNotes' => $releaseNotes,
'newUpdaterAvailable' => $newUpdaterAvailable,
'allowStart' => $allowStart,
'errorMinimumPhpVersion' => $errorMinimumPhpVersion,
'errorRootFolderNotWritable' => $errorRootFolderNotWritable
]);
}
public function actionStart()
{
$availableUpdate = OnlineUpdateAPI::getAvailableUpdate();
return $this->renderAjax('start', [
'versionTo' => $availableUpdate->versionTo,
'fileName' => $availableUpdate->fileName,
]);
}
public function actionDownload()
{
$this->forcePostRequest();
Yii::$app->response->format = 'json';
$availableUpdate = OnlineUpdateAPI::getAvailableUpdate();
$availableUpdate->download();
return ['status' => 'ok'];
}
protected function isNewUpdaterModuleAvailable()
{
Yii::$app->cache->flush();
$modules = null;
if (class_exists('\humhub\modules\admin\libs\OnlineModuleManager')) {
$onlineModuleManager = new \humhub\modules\admin\libs\OnlineModuleManager();
$modules = $onlineModuleManager->getModuleUpdates();
} elseif (class_exists('\humhub\modules\marketplace\libs\OnlineModuleManager')) {
$onlineModuleManager = new \humhub\modules\marketplace\libs\OnlineModuleManager();
$modules = $onlineModuleManager->getModuleUpdates();
} elseif (class_exists('\humhub\modules\marketplace\components\OnlineModuleManager')) {
$onlineModuleManager = new \humhub\modules\marketplace\components\OnlineModuleManager();
$modules = $onlineModuleManager->getModuleUpdates();
}
if (isset($modules['updater'])) {
return true;
}
return false;
}
protected function isRootFolderWritable()
{
$rootFolder = Yii::getAlias('@webroot');
if (!is_writable($rootFolder)) {
Yii::warning('Not writable: ' . $rootFolder, 'updater');
return false;
}
$staticFolder = Yii::getAlias('@webroot/static');
if (is_dir($staticFolder) && !is_writeable($staticFolder)) {
Yii::warning('Not writable: ' . $staticFolder, 'updater');
return false;
}
$vendorFolder = Yii::getAlias('@vendor');
if (is_dir($vendorFolder) && !is_writeable($vendorFolder)) {
Yii::warning('Not writable: ' . $vendorFolder, 'updater');
return false;
}
return true;
}
}