2021-10-14 14:31:41 +00:00
< ? php
2021-12-03 02:46:17 +00:00
/**
* @ package Joomla . Component . Builder
*
* @ created 30 th April , 2015
* @ author Llewellyn van der Merwe < https :// dev . vdm . io >
* @ git Joomla Component Builder < https :// git . vdm . dev / joomla / Component - Builder - Pro >
* @ copyright Copyright ( C ) 2015 Vast Development Method . All rights reserved .
* @ license GNU General Public License version 2 or later ; see LICENSE . txt
2021-10-14 14:31:41 +00:00
*/
// No direct access to this file
defined ( '_JEXEC' ) or die ( 'Restricted access' );
/**
* Extension - Componentbuilder Headers Compiler script file .
*
* @ package PlgExtensionComponentbuilderHeadersCompiler
*/
class plgExtensionComponentbuilderHeadersCompilerInstallerScript
{
/**
* Called before any type of action
*
* @ param string $route Which action is happening ( install | uninstall | discover_install | update )
* @ param JAdapterInstance $adapter The object responsible for running this script
*
* @ return boolean True on success
*/
public function preflight ( $route , JAdapterInstance $adapter )
{
// get application
$app = JFactory :: getApplication ();
// the default for both install and update
$jversion = new JVersion ();
if ( ! $jversion -> isCompatible ( '3.8.0' ))
{
$app -> enqueueMessage ( 'Please upgrade to at least Joomla! 3.8.0 before continuing!' , 'error' );
return false ;
}
if ( 'install' === $route )
{
2021-12-08 20:42:13 +00:00
2021-10-14 14:31:41 +00:00
// check that componentbuilder is installed
$pathToCore = JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php' ;
if ( ! JFile :: exists ( $pathToCore ))
{
2021-12-08 20:42:13 +00:00
$app -> enqueueMessage ( 'JCB must first be installed from <a href="https://git.vdm.dev/joomla/Component-Builder-Pro/" target="_blank">Joomla Component Builder</a>.' , 'error' );
2021-10-14 14:31:41 +00:00
return false ;
}
// load the helper class
JLoader :: register ( 'ComponentbuilderHelper' , JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php' );
// block install
$blockInstall = true ;
// check the version of JCB
$manifest = ComponentbuilderHelper :: manifest ();
if ( isset ( $manifest -> version ) && strpos ( $manifest -> version , '.' ) !== false )
{
// get the version
$jcbVersion = explode ( '.' , $manifest -> version );
2022-05-18 11:08:14 +00:00
// check that we have JCB 3.0.14 or higher installed
2022-01-10 14:13:13 +00:00
if ( count ( $jcbVersion ) == 3 && $jcbVersion [ 0 ] >= 3 &&
(
2022-05-18 11:08:14 +00:00
( $jcbVersion [ 0 ] == 3 && $jcbVersion [ 1 ] == 0 && $jcbVersion [ 2 ] >= 14 ) ||
2022-01-10 14:13:13 +00:00
( $jcbVersion [ 0 ] == 3 && $jcbVersion [ 1 ] > 0 ) ||
$jcbVersion [ 0 ] > 3 )
)
2021-10-14 14:31:41 +00:00
{
$blockInstall = false ;
}
}
// allow install if all conditions are met
if ( $blockInstall )
{
2022-05-18 11:08:14 +00:00
$app -> enqueueMessage ( 'Please upgrade to JCB-Pro v3.0.14 or higher before installing this plugin.' , 'error' );
2021-10-14 14:31:41 +00:00
return false ;
}
}
return true ;
}
}