Moved Core Table class to be used all over JCB.

This commit is contained in:
2022-11-20 10:51:56 +02:00
parent 9f5c7deec8
commit 1c7515d0f5
17 changed files with 548 additions and 463 deletions

View File

@ -29,11 +29,11 @@ abstract class BaseRegistry extends JoomlaRegistry implements \JsonSerializable,
*
* @param string $path Registry path (e.g. joomla.content.showauthor)
*
* @return \ArrayIterator This object represented as an ArrayIterator.
* @return \ArrayIterator|null This object represented as an ArrayIterator.
*
* @since 3.4.0
*/
public function _($path)
public function _(string $path): ?\ArrayIterator
{
$data = $this->extract($path);

View File

@ -23,6 +23,7 @@ use VDM\Joomla\Componentbuilder\Compiler\Service\Power;
use VDM\Joomla\Componentbuilder\Compiler\Service\Component;
use VDM\Joomla\Componentbuilder\Compiler\Service\Extension;
use VDM\Joomla\Componentbuilder\Compiler\Service\Field;
use VDM\Joomla\Componentbuilder\Interfaces\Factoryinterface;
/**
@ -30,7 +31,7 @@ use VDM\Joomla\Componentbuilder\Compiler\Service\Field;
*
* @since 3.2.0
*/
abstract class Factory
abstract class Factory implements Factoryinterface
{
/**
* Global Compiler Container

View File

@ -0,0 +1,42 @@
<?php
/**
* @package Joomla.Component.Builder
*
* @created 30th April, 2015
* @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
*/
namespace VDM\Joomla\Componentbuilder\Interfaces;
use Joomla\DI\Container;
/**
* The Basic Factory Interface
*/
interface Factoryinterface
{
/**
* Get any class from the compiler container
*
* @param string $key The container class key
*
* @return Mixed
* @since 3.2.0
*/
public static function _(string $key);
/**
* Get a the global compiler container
*
* @return Container
* @since 3.2.0
*/
public static function getContainer(): Container;
}

View File

@ -0,0 +1,89 @@
<?php
/**
* @package Joomla.Component.Builder
*
* @created 30th April, 2015
* @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
*/
namespace VDM\Joomla\Componentbuilder\Interfaces;
/**
* The Table Interface
*/
interface Tableinterface
{
/**
* Get any value from a item/field/column of an area/view/table
* Example: $this->get('table_name', 'field_name', 'value_key');
* Get an item/field/column of an area/view/table
* Example: $this->get('table_name', 'field_name');
* Get all items/fields/columns of an area/view/table
* Example: $this->get('table_name');
* Get all areas/views/tables with all their item/field/column details
* Example: $this->get();
*
* @param string $table The table
* @param string|null $field The field
* @param string|null $key The value key
*
* @return mixed
* @since 3.2.0
*/
public function get(string $table, ?string $field = null, ?string $key = null);
/**
* Get title field from an area/view/table
*
* @param string|null $table The area
*
* @return ?array
* @since 3.2.0
*/
public function title(string $table): ?array;
/**
* Get title field name
*
* @param string|null $table The area
*
* @return string
* @since 3.2.0
*/
public function titleName(string $table): string;
/**
* Get all tables
*
* @return array
* @since 3.2.0
*/
public function tables(): array;
/**
* Check if a table (and field) exist
*
* @param string|null $table The area
* @param string|null $field The area
*
* @return bool
* @since 3.2.0
*/
public function exist(string $table, ?string $field = null): bool;
/**
* Get all fields of an area/view/table
*
* @param string|null $table The area
*
* @return ?array
* @since 3.2.0
*/
public function fields(string $table): ?array;
}

View File

@ -0,0 +1 @@
<html><body bgcolor="#FFFFFF"></body></html>

View File

@ -16,7 +16,7 @@ use VDM\Joomla\Utilities\StringHelper;
use VDM\Joomla\Utilities\ArrayHelper;
use VDM\Joomla\Componentbuilder\Search\Factory;
use VDM\Joomla\Componentbuilder\Search\Config;
use VDM\Joomla\Componentbuilder\Search\Table;
use VDM\Joomla\Componentbuilder\Table;
/**

View File

@ -21,7 +21,7 @@ use VDM\Joomla\Componentbuilder\Search\Agent\Find;
use VDM\Joomla\Componentbuilder\Search\Agent\Replace;
use VDM\Joomla\Componentbuilder\Search\Agent\Search;
use VDM\Joomla\Componentbuilder\Search\Agent\Update;
use VDM\Joomla\Componentbuilder\Search\Table;
use VDM\Joomla\Componentbuilder\Table;
/**

View File

@ -15,7 +15,7 @@ namespace VDM\Joomla\Componentbuilder\Search\Database;
use Joomla\CMS\Factory as JoomlaFactory;
use VDM\Joomla\Componentbuilder\Search\Factory;
use VDM\Joomla\Componentbuilder\Search\Config;
use VDM\Joomla\Componentbuilder\Search\Table;
use VDM\Joomla\Componentbuilder\Table;
use VDM\Joomla\Componentbuilder\Search\Model\Get as Model;
use VDM\Joomla\Componentbuilder\Search\Interfaces\GetInterface;

View File

@ -15,7 +15,7 @@ namespace VDM\Joomla\Componentbuilder\Search\Database;
use Joomla\CMS\Factory as JoomlaFactory;
use VDM\Joomla\Componentbuilder\Search\Factory;
use VDM\Joomla\Componentbuilder\Search\Config;
use VDM\Joomla\Componentbuilder\Search\Table;
use VDM\Joomla\Componentbuilder\Table;
use VDM\Joomla\Componentbuilder\Search\Model\Set as Model;
use VDM\Joomla\Utilities\ArrayHelper;
use VDM\Joomla\Componentbuilder\Search\Interfaces\SetInterface;

View File

@ -17,6 +17,7 @@ use VDM\Joomla\Componentbuilder\Search\Service\Search;
use VDM\Joomla\Componentbuilder\Search\Service\Model;
use VDM\Joomla\Componentbuilder\Search\Service\Database;
use VDM\Joomla\Componentbuilder\Search\Service\Agent;
use VDM\Joomla\Componentbuilder\Interfaces\Factoryinterface;
/**
@ -24,7 +25,7 @@ use VDM\Joomla\Componentbuilder\Search\Service\Agent;
*
* @since 3.2.0
*/
abstract class Factory
abstract class Factory implements Factoryinterface
{
/**
* Global Compiler Container
@ -42,7 +43,7 @@ abstract class Factory
* @return Mixed
* @since 3.2.0
*/
public static function _($key)
public static function _(string $key)
{
return self::getContainer()->get($key);
}

View File

@ -15,7 +15,7 @@ namespace VDM\Joomla\Componentbuilder\Search\Service;
use Joomla\DI\Container;
use Joomla\DI\ServiceProviderInterface;
use VDM\Joomla\Componentbuilder\Search\Config;
use VDM\Joomla\Componentbuilder\Search\Table;
use VDM\Joomla\Componentbuilder\Table;
use VDM\Joomla\Componentbuilder\Search\Interfaces\SearchTypeInterface as SearchEngine;
use VDM\Joomla\Componentbuilder\Search\Engine\Regex;
use VDM\Joomla\Componentbuilder\Search\Engine\Basic;
@ -85,9 +85,7 @@ class Search implements ServiceProviderInterface
*/
public function getTable(Container $container): Table
{
return new Table(
$container->get('Config')
);
return new Table();
}
/**

View File

@ -9,22 +9,21 @@
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
namespace VDM\Joomla\Componentbuilder\Search;
namespace VDM\Joomla\Componentbuilder;
use VDM\Joomla\Componentbuilder\Search\Factory;
use VDM\Joomla\Componentbuilder\Search\Config;
use VDM\Joomla\Componentbuilder\Interfaces\Tableinterface;
/**
* Search Table
* JCB Tables
*
* @since 3.2.0
*/
class Table
class Table implements Tableinterface
{
/**
* All areas/views/tables with their field details to SEARCH
* All areas/views/tables with their field details
*
* @var array
* @since 3.2.0
@ -2832,26 +2831,6 @@ class Table
],
];
/**
* Search Config
*
* @var Config
* @since 3.2.0
*/
protected Config $config;
/**
* Constructor
*
* @param Config|null $config The search config object.
*
* @since 3.2.0
*/
public function __construct(?Config $config = null)
{
$this->config = $config ?: Factory::_('Config');
}
/**
* Get any value from a item/field/column of an area/view/table
* Example: $this->get('table_name', 'field_name', 'value_key');
@ -2860,23 +2839,17 @@ class Table
* Get all items/fields/columns of an area/view/table
* Example: $this->get('table_name');
* Get all areas/views/tables with all their item/field/column details
* Example: $this->get();
* Example: $this->get('All');
*
* @param string|null $table The table
* @param string $table The table
* @param string|null $field The field
* @param string|null $key The value key
*
* @return mixed
* @since 3.2.0
*/
public function get(?string $table = null, ?string $field = null, ?string $key = null)
public function get(string $table, ?string $field = null, ?string $key = null)
{
// load the table
if (empty($table) && is_string($field))
{
$table = $this->config->table_name;
}
// return the item/field/column of an area/view/table
if (is_string($field) && is_string($key))
{
@ -2897,7 +2870,7 @@ class Table
return null;
}
// return an area/view/table
elseif (is_string($table))
elseif ($table !== 'All')
{
if (isset($this->tables[$table]))
{
@ -2913,19 +2886,13 @@ class Table
/**
* Get title field from an area/view/table
*
* @param string|null $table The area
* @param string $table The area
*
* @return ?array
* @since 3.2.0
*/
public function title(?string $table = null): ?array
public function title(string $table): ?array
{
// load the table
if (empty($table))
{
$table = $this->config->table_name;
}
// return the title item/field/column of an area/view/table
if (($table = $this->get($table)) !== null)
{
@ -2945,20 +2912,14 @@ class Table
/**
* Get title field name
*
* @param string|null $table The area
* @param string $table The area
*
* @return string
* @since 3.2.0
*/
public function titleName(?string $table = null): string
public function titleName(string $table): string
{
// load the table
if (empty($table))
{
$table = $this->config->table_name;
}
// return the title name of an area/view/table
// return the title name of an area/view/table
if (($field = $this->title($table)) !== null)
{
return $field['name'];
@ -2983,21 +2944,15 @@ class Table
/**
* Check if a table (and field) exist
*
* @param string|null $table The area
* @param string $table The area
* @param string|null $field The area
*
* @return bool
* @since 3.2.0
*/
public function exist(?string $table = null, ?string $field = null): bool
public function exist(string $table, ?string $field = null): bool
{
// load the table
if (empty($table))
{
$table = $this->config->table_name;
}
if (is_string($table) && isset($this->tables[$table]))
if (isset($this->tables[$table]))
{
// if we have a field
if (is_string($field))
@ -3019,19 +2974,13 @@ class Table
/**
* Get all fields of an area/view/table
*
* @param string|null $table The area
* @param string $table The area
*
* @return ?array
* @since 3.2.0
*/
public function fields(?string $table = null): ?array
public function fields(string $table): ?array
{
// load the table
if (empty($table))
{
$table = $this->config->table_name;
}
// return all fields of an area/view/table
if (($table = $this->get($table)) !== null)
{