2021-10-14 14:32:09 +00:00
< ? php
2021-12-03 02:46:24 +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-03 02:46:24 +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:32:09 +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:32:09 +00:00
/**
* Extension - Componentbuilder Language Packaging script file .
*
* @ package PlgExtensionComponentbuilderLanguagePackaging
*/
class plgExtensionComponentbuilderLanguagePackagingInstallerScript
{
/**
* 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:32:09 +00:00
*
* @ return boolean True on success
*/
2022-08-20 16:38:51 +00:00
public function preflight ( $route , $adapter )
2021-10-14 14:32:09 +00:00
{
// get application
2024-03-02 20:10:30 +00:00
$app = Factory :: getApplication ();
2021-10-14 14:32:09 +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 )
{
// check that componentbuilder is installed
$pathToCore = JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php' ;
2024-10-07 22:31:55 +00:00
if ( ! is_file ( $pathToCore ))
2021-10-14 14:32:09 +00:00
{
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:32:09 +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 );
// check that we have JCB 2.10.13 or higher installed
2021-12-03 02:46:24 +00:00
if ( count ( $jcbVersion ) == 3 && (( $jcbVersion [ 0 ] == 2 && $jcbVersion [ 1 ] >= 10 && (( $jcbVersion [ 1 ] == 10 && $jcbVersion [ 2 ] >= 13 ) || ( $jcbVersion [ 1 ] > 10 ))) || $jcbVersion [ 0 ] >= 3 ))
2021-10-14 14:32:09 +00:00
{
$blockInstall = false ;
}
}
// allow install if all conditions are met
if ( $blockInstall )
{
$app -> enqueueMessage ( 'Please upgrade to JCB 2.10.13 or higher before installing this plugin.' , 'error' );
return false ;
}
}
return true ;
}
}