sarga/public/installer/Classes/Requirement.php

162 lines
4.3 KiB
PHP
Raw Normal View History

<?php
class Requirement {
/**
* Check for the server requirements.
*
* @param array $requirements
* @return array
*/
public function checkRequirements()
{
// Server Requirements
$requirements = [
2019-01-25 14:41:35 +00:00
'php' => [
'openssl',
'pdo',
'mbstring',
'tokenizer',
'JSON',
'cURL',
],
2019-02-06 08:32:36 +00:00
// 'apache' => [
// 'mod_rewrite',
// ]
];
$results = [];
foreach($requirements as $type => $requirement)
{
switch ($type) {
// check php requirements
case 'php':
foreach($requirements[$type] as $requirement)
{
$results['requirements'][$type][$requirement] = true;
if(!extension_loaded($requirement))
{
$results['requirements'][$type][$requirement] = false;
$results['errors'] = true;
}
}
2019-02-06 08:32:36 +00:00
break;
// check apache requirements
2019-02-06 08:32:36 +00:00
// case 'apache':
// foreach ($requirements[$type] as $requirement) {
// // if function doesn't exist we can't check apache modules
// if(function_exists('apache_get_modules'))
// {
// $results['requirements'][$type][$requirement] = true;
2019-02-06 08:32:36 +00:00
// if(!in_array($requirement,apache_get_modules()))
// {
// $results['requirements'][$type][$requirement] = false;
2019-02-06 08:32:36 +00:00
// $results['errors'] = true;
// }
// }
// }
//break;
}
}
return $results;
}
/**
* Check PHP version requirement.
*
* @return array
*/
public function checkPHPversion()
{
/**
* Minimum PHP Version Supported (Override is in installer.php config file).
*
* @var _minPhpVersion
*/
2019-01-31 11:34:32 +00:00
$_minPhpVersion = '7.1.17';
$currentPhpVersion = $this->getPhpVersionInfo();
$supported = false;
if (version_compare($currentPhpVersion['version'], $_minPhpVersion) >= 0) {
$supported = true;
}
$phpStatus = [
'full' => $currentPhpVersion['full'],
'current' => $currentPhpVersion['version'],
'minimum' => $_minPhpVersion,
'supported' => $supported
];
return $phpStatus;
}
/**
* Get current Php version information
*
* @return array
*/
private static function getPhpVersionInfo()
{
$currentVersionFull = PHP_VERSION;
preg_match("#^\d+(\.\d+)*#", $currentVersionFull, $filtered);
$currentVersion = $filtered[0];
return [
'full' => $currentVersionFull,
'version' => $currentVersion
];
}
2019-03-29 06:29:29 +00:00
/**
* Check composer installation.
*
* @return array
*/
public function composerInstall()
{
$location = str_replace('\\', '/', getcwd());
$currentLocation = explode("/", $location);
array_pop($currentLocation);
array_pop($currentLocation);
$desiredLocation = implode("/", $currentLocation);
$autoLoadFile = $desiredLocation . '/' . 'vendor' . '/' . 'autoload.php';
if (file_exists($autoLoadFile)) {
$data['composer_install'] = 0;
} else {
$data['composer_install'] = 1;
$data['composer'] = 'Composer dependencies is not Installed.Go to root of project, run "composer install" command to install composer dependencies & refresh page again.';
}
return $data;
}
/**
* Render view for class.
*
*/
public function render()
{
2019-01-25 14:41:35 +00:00
$requirements = $this->checkRequirements();
$phpVersion = $this->checkPHPversion();
2019-03-29 06:29:29 +00:00
$composerInstall = $this->composerInstall();
ob_start();
include __DIR__ . '/../Views/requirements.blade.php';
return ob_get_clean();
}
}