permissions = $permissions;
$this->filesystem = $filesystem;
$this->cronScriptReadinessCheck = $cronScriptReadinessCheck;
$this->phpReadinessCheck = $phpReadinessCheck;
}
/**
* No index action, return 404 error page
*
* @return \Zend\View\Model\JsonModel
*/
public function indexAction()
{
$view = new \Zend\View\Model\JsonModel([]);
$view->setTemplate('/error/404.phtml');
$this->getResponse()->setStatusCode(\Zend\Http\Response::STATUS_CODE_404);
return $view;
}
/**
* Verifies php version
*
* @return \Zend\View\Model\JsonModel
*/
public function phpVersionAction()
{
$type = $this->getRequest()->getQuery('type');
$data = [];
if ($type == ReadinessCheckInstaller::INSTALLER) {
$data = $this->phpReadinessCheck->checkPhpVersion();
} elseif ($type == ReadinessCheckUpdater::UPDATER) {
$data = $this->getPhpChecksInfo(ReadinessCheck::KEY_PHP_VERSION_VERIFIED);
}
return new \Zend\View\Model\JsonModel($data);
}
/**
* Checks PHP settings
*
* @return \Zend\View\Model\JsonModel
*/
public function phpSettingsAction()
{
$type = $this->getRequest()->getQuery('type');
$data = [];
if ($type == ReadinessCheckInstaller::INSTALLER) {
$data = $this->phpReadinessCheck->checkPhpSettings();
} elseif ($type == ReadinessCheckUpdater::UPDATER) {
$data = $this->getPhpChecksInfo(ReadinessCheck::KEY_PHP_SETTINGS_VERIFIED);
}
return new \Zend\View\Model\JsonModel($data);
}
/**
* Verifies php verifications
*
* @return \Zend\View\Model\JsonModel
*/
public function phpExtensionsAction()
{
$type = $this->getRequest()->getQuery('type');
$data = [];
if ($type == ReadinessCheckInstaller::INSTALLER) {
$data = $this->phpReadinessCheck->checkPhpExtensions();
} elseif ($type == ReadinessCheckUpdater::UPDATER) {
$data = $this->getPhpChecksInfo(ReadinessCheck::KEY_PHP_EXTENSIONS_VERIFIED);
}
return new \Zend\View\Model\JsonModel($data);
}
/**
* Gets the PHP check info from Cron status file
*
* @param string $type
* @return array
*/
private function getPhpChecksInfo($type)
{
$read = $this->filesystem->getDirectoryRead(DirectoryList::VAR_DIR);
try {
$jsonData = json_decode($read->readFile(ReadinessCheck::SETUP_CRON_JOB_STATUS_FILE), true);
if (isset($jsonData[ReadinessCheck::KEY_PHP_CHECKS])
&& isset($jsonData[ReadinessCheck::KEY_PHP_CHECKS][$type])
) {
return $jsonData[ReadinessCheck::KEY_PHP_CHECKS][$type];
}
return ['responseType' => ResponseTypeInterface::RESPONSE_TYPE_ERROR];
} catch (\Exception $e) {
return ['responseType' => ResponseTypeInterface::RESPONSE_TYPE_ERROR];
}
}
/**
* Verifies file permissions
*
* @return \Zend\View\Model\JsonModel
*/
public function filePermissionsAction()
{
$responseType = ResponseTypeInterface::RESPONSE_TYPE_SUCCESS;
$missingWritePermissionPaths = $this->permissions->getMissingWritablePathsForInstallation(true);
$currentPaths = [];
$requiredPaths = [];
if ($missingWritePermissionPaths) {
foreach ($missingWritePermissionPaths as $key => $value) {
if (is_array($value)) {
$requiredPaths[] = ['path' => $key, 'missing' => $value];
$responseType = ResponseTypeInterface::RESPONSE_TYPE_ERROR;
} else {
$requiredPaths[] = ['path' => $key];
$currentPaths[] = $key;
}
}
}
$data = [
'responseType' => $responseType,
'data' => [
'required' => $requiredPaths,
'current' => $currentPaths,
],
];
return new \Zend\View\Model\JsonModel($data);
}
/**
* Verifies updater application exists
*
* @return \Zend\View\Model\JsonModel
*/
public function updaterApplicationAction()
{
$responseType = ResponseTypeInterface::RESPONSE_TYPE_SUCCESS;
if (!$this->filesystem->getDirectoryRead(DirectoryList::ROOT)->isExist(self::UPDATER_DIR)) {
$responseType = ResponseTypeInterface::RESPONSE_TYPE_ERROR;
}
$data = [
'responseType' => $responseType
];
return new \Zend\View\Model\JsonModel($data);
}
/**
* Verifies Setup and Updater Cron status
*
* @return \Zend\View\Model\JsonModel
*/
public function cronScriptAction()
{
$responseType = ResponseTypeInterface::RESPONSE_TYPE_SUCCESS;
$setupCheck = $this->cronScriptReadinessCheck->checkSetup();
$updaterCheck = $this->cronScriptReadinessCheck->checkUpdater();
$data = [];
if (!$setupCheck['success']) {
$responseType = ResponseTypeInterface::RESPONSE_TYPE_ERROR;
$data['setupErrorMessage'] = 'Error from Setup Application Cron Script:
' . $setupCheck['error'];
}
if (!$updaterCheck['success']) {
$responseType = ResponseTypeInterface::RESPONSE_TYPE_ERROR;
$data['updaterErrorMessage'] = 'Error from Updater Application Cron Script:
' . $updaterCheck['error'];
}
if (isset($setupCheck['notice'])) {
$data['setupNoticeMessage'] = 'Notice from Setup Application Cron Script:
' . $setupCheck['notice'];
}
if (isset($updaterCheck['notice'])) {
$data['updaterNoticeMessage'] = 'Notice from Updater Application Cron Script:
' .
$updaterCheck['notice'];
}
$data['responseType'] = $responseType;
return new \Zend\View\Model\JsonModel($data);
}
}