2021-10-14 14:31:37 +00:00
< ? php
2021-12-16 13:15:32 +00:00
/**
* @ package Joomla . Component . Builder
*
* @ created 30 th April , 2015
* @ author Llewellyn van der Merwe < https :// dev . vdm . io >
2022-08-20 16:38:51 +00:00
* @ git Joomla Component Builder < https :// git . vdm . dev / joomla / Component - Builder >
2021-12-16 13:15:32 +00:00
* @ 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:37 +00:00
*/
// No direct access to this file
defined ( '_JEXEC' ) or die ( 'Restricted access' );
2024-03-02 20:10:30 +00:00
use Joomla\CMS\Factory ;
use Joomla\CMS\Language\Text ;
use Joomla\CMS\Filesystem\File ;
use Joomla\CMS\Filesystem\Folder ;
2021-10-14 14:31:37 +00:00
/**
* Extension - Componentbuilder Field Ordering Compiler script file .
*
* @ package PlgExtensionComponentbuilderFieldOrderingCompiler
*/
class plgExtensionComponentbuilderFieldOrderingCompilerInstallerScript
{
/**
* Called before any type of action
*
* @ param string $route Which action is happening ( install | uninstall | discover_install | update )
2022-08-20 16:38:51 +00:00
* @ param Joomla\CMS\Installer\InstallerAdapter $adapter The object responsible for running this script
2021-10-14 14:31:37 +00:00
*
* @ return boolean True on success
*/
2022-08-20 16:38:51 +00:00
public function preflight ( $route , $adapter )
2021-10-14 14:31:37 +00:00
{
// get application
2024-03-02 20:10:30 +00:00
$app = Factory :: getApplication ();
2021-10-14 14:31:37 +00:00
// 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-16 13:34:18 +00:00
2021-10-14 14:31:37 +00:00
// check that componentbuilder is installed
$pathToCore = JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php' ;
if ( ! JFile :: exists ( $pathToCore ))
{
2022-08-20 16:38:51 +00:00
$app -> enqueueMessage ( 'Joomla Component Builder must first be installed from <a href="https://www.joomlacomponentbuilder.com/ " target="_blank">Joomla Component Builder</a>.' , 'error' );
2021-10-14 14:31:37 +00:00
return false ;
}
2023-02-26 22:41:45 +00:00
2021-10-14 14:31:37 +00:00
// load the helper class
JLoader :: register ( 'ComponentbuilderHelper' , JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php' );
2023-02-26 22:41:45 +00:00
2021-10-14 14:31:37 +00:00
// block install
$blockInstall = true ;
2023-02-26 22:41:45 +00:00
2021-10-14 14:31:37 +00:00
// check the version of JCB
$manifest = ComponentbuilderHelper :: manifest ();
if ( isset ( $manifest -> version ) && strpos ( $manifest -> version , '.' ) !== false )
{
// get the version
$jcbVersion = explode ( '.' , $manifest -> version );
2022-01-10 14:12:57 +00:00
// check that we have JCB 3.0.0 or higher installed
if ( count ( $jcbVersion ) == 3 && $jcbVersion [ 0 ] >= 3 &&
(
( $jcbVersion [ 0 ] == 3 && $jcbVersion [ 1 ] == 0 && $jcbVersion [ 2 ] >= 0 ) ||
( $jcbVersion [ 0 ] == 3 && $jcbVersion [ 1 ] > 0 ) ||
$jcbVersion [ 0 ] > 3 )
)
2021-10-14 14:31:37 +00:00
{
$blockInstall = false ;
}
}
2023-02-26 22:41:45 +00:00
2021-10-14 14:31:37 +00:00
// allow install if all conditions are met
if ( $blockInstall )
{
2023-02-26 22:41:45 +00:00
$app -> enqueueMessage ( 'Please upgrade to JCB v3.0.0 or higher before installing this plugin.' , 'error' );
2021-10-14 14:31:37 +00:00
return false ;
2023-02-26 22:41:45 +00:00
}
2021-10-14 14:31:37 +00:00
}
return true ;
}
}