2018-12-31 11:57:32 +00:00
< ? 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',
// ]
2018-12-31 11:57:32 +00:00
];
$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 ;
2018-12-31 11:57:32 +00:00
// 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;
2018-12-31 11:57:32 +00:00
2019-02-06 08:32:36 +00:00
// if(!in_array($requirement,apache_get_modules()))
// {
// $results['requirements'][$type][$requirement] = false;
2018-12-31 11:57:32 +00:00
2019-02-06 08:32:36 +00:00
// $results['errors'] = true;
// }
// }
// }
//break;
2018-12-31 11:57:32 +00:00
}
}
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' ;
2018-12-31 11:57:32 +00:00
$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 ;
}
2018-12-31 11:57:32 +00:00
/**
* Render view for class .
*
*/
public function render ()
{
2019-01-25 14:41:35 +00:00
$requirements = $this -> checkRequirements ();
2018-12-31 11:57:32 +00:00
$phpVersion = $this -> checkPHPversion ();
2019-03-29 06:29:29 +00:00
$composerInstall = $this -> composerInstall ();
2018-12-31 11:57:32 +00:00
ob_start ();
include __DIR__ . '/../Views/requirements.blade.php' ;
return ob_get_clean ();
}
}