Stable release of v4.0.0-alpha1

First alpha release of Component Builder towards Joomla 4 (very unstable...).
This commit is contained in:
2024-03-09 21:47:28 +02:00
parent 3c91a5cdbb
commit c660bb6280
3040 changed files with 296304 additions and 269820 deletions

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder
*
* @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder>
* @author Llewellyn van der Merwe <https://dev.vdm.io>
* @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
@ -27,8 +27,8 @@ class ###Component###Model###View### extends BaseDatabaseModel
// set uploading values
protected $use_streams = false;
protected $allow_unsafe = false;
protected $safeFileOptions = array();
protected $safeFileOptions = [];
/**
* @var object JTable object
*/
@ -45,13 +45,13 @@ class ###Component###Model###View### extends BaseDatabaseModel
* @var string
*/
protected $_context = 'com_###component###.###view###';
/**
* Import Settings
*/
protected $getType = NULL;
protected $dataType = NULL;
/**
* Method to auto-populate the model state.
*
@ -62,7 +62,7 @@ class ###Component###Model###View### extends BaseDatabaseModel
*/
protected function populateState()
{
$app = JFactory::getApplication('administrator');
$app = Factory::getApplication('administrator');
$this->setState('message', $app->getUserState('com_###component###.message'));
$app->setUserState('com_###component###.message', '');
@ -72,7 +72,7 @@ class ###Component###Model###View### extends BaseDatabaseModel
$this->setState('import.directory', $path);
parent::populateState();
}
###IMPORT_METHOD_CUSTOM###
###IMPORT_METHOD_CUSTOM###
/**
* Works out an importation spreadsheet from a HTTP upload
@ -80,37 +80,37 @@ class ###Component###Model###View### extends BaseDatabaseModel
* @return spreadsheet definition or false on failure
*/
protected function _getPackageFromUpload()
{
{
// Get the uploaded file information
$app = JFactory::getApplication();
$app = Factory::getApplication();
$input = $app->input;
// Do not change the filter type 'raw'. We need this to let files containing PHP code to upload. See JInputFiles::get.
$userfile = $input->files->get('import_package', null, 'raw');
// Make sure that file uploads are enabled in php
if (!(bool) ini_get('file_uploads'))
{
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_WARNIMPORTFILE'), 'warning');
$app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_WARNIMPORTFILE'), 'warning');
return false;
}
// If there is no uploaded file, we have a problem...
if (!is_array($userfile))
{
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_NO_FILE_SELECTED'), 'warning');
$app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_NO_FILE_SELECTED'), 'warning');
return false;
}
// Check if there was a problem uploading the file.
if ($userfile['error'] || $userfile['size'] < 1)
{
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_WARNIMPORTUPLOADERROR'), 'warning');
$app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_WARNIMPORTUPLOADERROR'), 'warning');
return false;
}
// Build the appropriate paths
$config = JFactory::getConfig();
$config = Factory::getConfig();
$tmp_dest = $config->get('tmp_path') . '/' . $userfile['name'];
$tmp_src = $userfile['tmp_name'];
@ -120,7 +120,7 @@ class ###Component###Model###View### extends BaseDatabaseModel
// Was the package downloaded?
if (!$p_file)
{
$session = JFactory::getSession();
$session = Factory::getSession();
$session->clear('package');
$session->clear('dataType');
$session->clear('hasPackage');
@ -142,16 +142,16 @@ class ###Component###Model###View### extends BaseDatabaseModel
*/
protected function _getPackageFromFolder()
{
$app = JFactory::getApplication();
$app = Factory::getApplication();
$input = $app->input;
// Get the path to the package to import
$p_dir = $input->getString('import_directory');
$p_dir = JPath::clean($p_dir);
$p_dir = Path::clean($p_dir);
// Did you give us a valid path?
if (!file_exists($p_dir))
{
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_PLEASE_ENTER_A_PACKAGE_DIRECTORY'), 'warning');
$app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_PLEASE_ENTER_A_PACKAGE_DIRECTORY'), 'warning');
return false;
}
@ -161,17 +161,17 @@ class ###Component###Model###View### extends BaseDatabaseModel
// Did you give us a valid package?
if (!$type)
{
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_PATH_DOES_NOT_HAVE_A_VALID_PACKAGE'), 'warning');
$app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_PATH_DOES_NOT_HAVE_A_VALID_PACKAGE'), 'warning');
}
// check the extention
if(!$this->checkExtension($p_dir))
{
// set error message
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_DOES_NOT_HAVE_A_VALID_FILE_TYPE'), 'warning');
$app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_DOES_NOT_HAVE_A_VALID_FILE_TYPE'), 'warning');
return false;
}
$package['packagename'] = null;
$package['dir'] = $p_dir;
$package['type'] = $type;
@ -187,7 +187,7 @@ class ###Component###Model###View### extends BaseDatabaseModel
*/
protected function _getPackageFromUrl()
{
$app = JFactory::getApplication();
$app = Factory::getApplication();
$input = $app->input;
// Get the URL of the package to import
@ -196,17 +196,17 @@ class ###Component###Model###View### extends BaseDatabaseModel
// Did you give us a URL?
if (!$url)
{
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_ENTER_A_URL'), 'warning');
$app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_ENTER_A_URL'), 'warning');
return false;
}
// Download the package at the URL given
$p_file = JInstallerHelper::downloadPackage($url);
$p_file = InstallerHelper::downloadPackage($url);
// Was the package downloaded?
if (!$p_file)
{
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_INVALID_URL'), 'warning');
$app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_INVALID_URL'), 'warning');
return false;
}
@ -215,7 +215,7 @@ class ###Component###Model###View### extends BaseDatabaseModel
return $package;
}
/**
* Check a file and verifies it as a spreadsheet file
* Supports .csv .xlsx .xls and .ods
@ -227,29 +227,29 @@ class ###Component###Model###View### extends BaseDatabaseModel
*/
protected function check($archivename)
{
$app = JFactory::getApplication();
$app = Factory::getApplication();
// Clean the name
$archivename = JPath::clean($archivename);
$archivename = Path::clean($archivename);
// check the extention
if(!$this->checkExtension($archivename))
{
// Cleanup the import files
$this->remove($archivename);
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_DOES_NOT_HAVE_A_VALID_FILE_TYPE'), 'warning');
$app->enqueueMessage(Text::_('COM_###COMPONENT###_IMPORT_MSG_DOES_NOT_HAVE_A_VALID_FILE_TYPE'), 'warning');
return false;
}
$config = JFactory::getConfig();
$config = Factory::getConfig();
// set Package Name
$check['packagename'] = $archivename;
// set directory
$check['dir'] = $config->get('tmp_path'). '/' .$archivename;
// set type
$check['type'] = $this->getType;
return $check;
}
###IMPORT_EXT_METHOD###
@ -264,9 +264,7 @@ class ###Component###Model###View### extends BaseDatabaseModel
*/
protected function remove($package)
{
jimport('joomla.filesystem.file');
$config = JFactory::getConfig();
$config = Factory::getConfig();
$package = $config->get('tmp_path'). '/' .$package;
// Is the package file a valid file?
@ -274,10 +272,10 @@ class ###Component###Model###View### extends BaseDatabaseModel
{
File::delete($package);
}
elseif (is_file(JPath::clean($package)))
elseif (is_file(Path::clean($package)))
{
// It might also be just a base filename
File::delete(JPath::clean($package));
File::delete(Path::clean($package));
}
}
###IMPORT_SETDATA_METHOD###
@ -286,13 +284,13 @@ class ###Component###Model###View### extends BaseDatabaseModel
protected function getAlias($name,$type = false)
{
// sanitize the name to an alias
if (JFactory::getConfig()->get('unicodeslugs') == 1)
if (Factory::getConfig()->get('unicodeslugs') == 1)
{
$alias = JFilterOutput::stringURLUnicodeSlug($name);
$alias = OutputFilter::stringURLUnicodeSlug($name);
}
else
{
$alias = JFilterOutput::stringURLSafe($name);
$alias = OutputFilter::stringURLSafe($name);
}
// must be a uniqe alias
if ($type)
@ -301,7 +299,7 @@ class ###Component###Model###View### extends BaseDatabaseModel
}
return $alias;
}
/**
* Method to generate a uniqe value.
*
@ -316,16 +314,16 @@ class ###Component###Model###View### extends BaseDatabaseModel
// insure the filed is always uniqe
while (isset($this->uniqeValueArray[$type][$field][$value]))
{
$value = JString::increment($value, 'dash');
$value = StringHelper::increment($value, 'dash');
}
$this->uniqeValueArray[$type][$field][$value] = $value;
return $value;
}
protected function getAliasesUsed($table)
{
// Get a db connection.
$db = JFactory::getDbo();
$db = Factory::getDbo();
// first we check if there is a alias column
$columns = $db->getTableColumns('#__###component###_'.$table);
if(isset($columns['alias'])){