2019-06-03 11:02:50 +00:00
< ? php
class Requirement {
/**
* Check for the server requirements .
*
* @ return array
*/
2021-12-11 22:04:56 +00:00
public function checkRequirements () : array
2019-06-03 11:02:50 +00:00
{
// Server Requirements
$requirements = [
'php' => [
'openssl' ,
'pdo' ,
'mbstring' ,
'tokenizer' ,
'JSON' ,
'cURL' ,
],
// '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 ;
}
}
break ;
// check apache requirements
// 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;
// if(!in_array($requirement,apache_get_modules()))
// {
// $results['requirements'][$type][$requirement] = false;
// $results['errors'] = true;
// }
// }
// }
//break;
}
}
return $results ;
}
/**
* Check PHP version requirement .
*
* @ return array
*/
2021-12-11 22:04:56 +00:00
public function checkPHPVersion () : array
2019-06-03 11:02:50 +00:00
{
/**
* Minimum PHP Version Supported ( Override is in installer . php config file ) .
*
2021-12-11 22:04:56 +00:00
* @ var string _minPhpVersion
2019-06-03 11:02:50 +00:00
*/
2022-03-26 16:32:28 +00:00
$_minPhpVersion = '8.0.2' ;
2019-06-03 11:02:50 +00:00
$currentPhpVersion = $this -> getPhpVersionInfo ();
$supported = false ;
2019-06-28 09:45:17 +00:00
if ( version_compare (( str_pad ( $currentPhpVersion [ 'version' ], 6 , " 0 " )), $_minPhpVersion ) >= 0 ) {
2019-06-03 11:02:50 +00:00
$supported = true ;
}
2021-12-11 22:04:56 +00:00
return [
2019-06-03 11:02:50 +00:00
'full' => $currentPhpVersion [ 'full' ],
'current' => $currentPhpVersion [ 'version' ],
'minimum' => $_minPhpVersion ,
'supported' => $supported
];
}
/**
* Get current Php version information
*
* @ return array
*/
2021-12-11 22:04:56 +00:00
private static function getPhpVersionInfo () : array
2019-06-03 11:02:50 +00:00
{
$currentVersionFull = PHP_VERSION ;
preg_match ( " #^ \ d+( \ . \ d+)*# " , $currentVersionFull , $filtered );
$currentVersion = $filtered [ 0 ];
return [
'full' => $currentVersionFull ,
'version' => $currentVersion
];
}
/**
* Check composer installation .
*
* @ return array
*/
2021-12-11 22:04:56 +00:00
public function composerInstall () : array
2019-06-03 11:02:50 +00:00
{
$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 ;
2020-02-19 00:31:23 +00:00
$data [ 'composer' ] = 'Bagisto has detected that the required composer dependencies are not installed.<br />Go to the root directory of Bagisto and run "composer install".' ;
2019-06-03 11:02:50 +00:00
}
return $data ;
}
/**
* Render view for class .
*
*/
public function render ()
{
$requirements = $this -> checkRequirements ();
$phpVersion = $this -> checkPHPversion ();
$composerInstall = $this -> composerInstall ();
ob_start ();
include __DIR__ . '/../Views/requirements.blade.php' ;
return ob_get_clean ();
}
}