Moved Core Table class to be used all over JCB.

This commit is contained in:
Llewellyn van der Merwe 2022-11-20 10:51:56 +02:00
parent 9f5c7deec8
commit 1c7515d0f5
Signed by: Llewellyn
GPG Key ID: A9201372263741E7
17 changed files with 548 additions and 463 deletions

View File

@ -140,14 +140,14 @@ TODO
+ *Author*: [Llewellyn van der Merwe](mailto:joomla@vdm.io) + *Author*: [Llewellyn van der Merwe](mailto:joomla@vdm.io)
+ *Name*: [Component Builder](https://git.vdm.dev/joomla/Component-Builder) + *Name*: [Component Builder](https://git.vdm.dev/joomla/Component-Builder)
+ *First Build*: 30th April, 2015 + *First Build*: 30th April, 2015
+ *Last Build*: 13th November, 2022 + *Last Build*: 20th November, 2022
+ *Version*: 3.1.12 + *Version*: 3.1.12
+ *Copyright*: Copyright (C) 2015 Vast Development Method. All rights reserved. + *Copyright*: Copyright (C) 2015 Vast Development Method. All rights reserved.
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt + *License*: GNU General Public License version 2 or later; see LICENSE.txt
+ *Line count*: **334311** + *Line count*: **334395**
+ *Field count*: **2004** + *Field count*: **2004**
+ *File count*: **2183** + *File count*: **2186**
+ *Folder count*: **381** + *Folder count*: **382**
> This **component** was build with a [Joomla](https://extensions.joomla.org/extension/component-builder/) [Automated Component Builder](https://www.joomlacomponentbuilder.com). > This **component** was build with a [Joomla](https://extensions.joomla.org/extension/component-builder/) [Automated Component Builder](https://www.joomlacomponentbuilder.com).
> Developed by [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com) > Developed by [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com)

View File

@ -140,14 +140,14 @@ TODO
+ *Author*: [Llewellyn van der Merwe](mailto:joomla@vdm.io) + *Author*: [Llewellyn van der Merwe](mailto:joomla@vdm.io)
+ *Name*: [Component Builder](https://git.vdm.dev/joomla/Component-Builder) + *Name*: [Component Builder](https://git.vdm.dev/joomla/Component-Builder)
+ *First Build*: 30th April, 2015 + *First Build*: 30th April, 2015
+ *Last Build*: 13th November, 2022 + *Last Build*: 20th November, 2022
+ *Version*: 3.1.12 + *Version*: 3.1.12
+ *Copyright*: Copyright (C) 2015 Vast Development Method. All rights reserved. + *Copyright*: Copyright (C) 2015 Vast Development Method. All rights reserved.
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt + *License*: GNU General Public License version 2 or later; see LICENSE.txt
+ *Line count*: **334311** + *Line count*: **334395**
+ *Field count*: **2004** + *Field count*: **2004**
+ *File count*: **2183** + *File count*: **2186**
+ *Folder count*: **381** + *Folder count*: **382**
> This **component** was build with a [Joomla](https://extensions.joomla.org/extension/component-builder/) [Automated Component Builder](https://www.joomlacomponentbuilder.com). > This **component** was build with a [Joomla](https://extensions.joomla.org/extension/component-builder/) [Automated Component Builder](https://www.joomlacomponentbuilder.com).
> Developed by [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com) > Developed by [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com)

View File

@ -613,6 +613,10 @@ const buttonUpdateAllStyleDisplay = async (value) => {
* JS Function to execute (A) on search/replace text change , (B) on search options changes * JS Function to execute (A) on search/replace text change , (B) on search options changes
*/ */
const startSearch = (field, forced = false) => { const startSearch = (field, forced = false) => {
// check if we have an Enter click
if (field && typeof field.code !== 'undefined' && field.code === "Enter") {
forced = true;
}
// get replace value if set // get replace value if set
const replaceValue = replaceObject.value; const replaceValue = replaceObject.value;
if (replaceValue.length > 0) { if (replaceValue.length > 0) {

View File

@ -329,8 +329,8 @@ document.addEventListener('DOMContentLoaded', function () {
tableLengthObject = document.getElementById("search_results_table_length"); tableLengthObject = document.getElementById("search_results_table_length");
showSearch(); showSearch();
<?php if (strlen($this->urlvalues['search_value']) > 2): ?> <?php if (strlen($this->urlvalues['search_value']) > 0): ?>
startSearch(); startSearch(null, true);
<?php endif; ?> <?php endif; ?>
}); });
</script> </script>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="4" method="upgrade"> <extension type="component" version="4" method="upgrade">
<name>COM_COMPONENTBUILDER</name> <name>COM_COMPONENTBUILDER</name>
<creationDate>13th November, 2022</creationDate> <creationDate>20th November, 2022</creationDate>
<author>Llewellyn van der Merwe</author> <author>Llewellyn van der Merwe</author>
<authorEmail>joomla@vdm.io</authorEmail> <authorEmail>joomla@vdm.io</authorEmail>
<authorUrl>https://dev.vdm.io</authorUrl> <authorUrl>https://dev.vdm.io</authorUrl>

View File

@ -29,11 +29,11 @@ abstract class BaseRegistry extends JoomlaRegistry implements \JsonSerializable,
* *
* @param string $path Registry path (e.g. joomla.content.showauthor) * @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 * @since 3.4.0
*/ */
public function _($path) public function _(string $path): ?\ArrayIterator
{ {
$data = $this->extract($path); $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\Component;
use VDM\Joomla\Componentbuilder\Compiler\Service\Extension; use VDM\Joomla\Componentbuilder\Compiler\Service\Extension;
use VDM\Joomla\Componentbuilder\Compiler\Service\Field; 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 * @since 3.2.0
*/ */
abstract class Factory abstract class Factory implements Factoryinterface
{ {
/** /**
* Global Compiler Container * 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\Utilities\ArrayHelper;
use VDM\Joomla\Componentbuilder\Search\Factory; use VDM\Joomla\Componentbuilder\Search\Factory;
use VDM\Joomla\Componentbuilder\Search\Config; 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\Replace;
use VDM\Joomla\Componentbuilder\Search\Agent\Search; use VDM\Joomla\Componentbuilder\Search\Agent\Search;
use VDM\Joomla\Componentbuilder\Search\Agent\Update; 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 Joomla\CMS\Factory as JoomlaFactory;
use VDM\Joomla\Componentbuilder\Search\Factory; use VDM\Joomla\Componentbuilder\Search\Factory;
use VDM\Joomla\Componentbuilder\Search\Config; 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\Model\Get as Model;
use VDM\Joomla\Componentbuilder\Search\Interfaces\GetInterface; 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 Joomla\CMS\Factory as JoomlaFactory;
use VDM\Joomla\Componentbuilder\Search\Factory; use VDM\Joomla\Componentbuilder\Search\Factory;
use VDM\Joomla\Componentbuilder\Search\Config; 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\Componentbuilder\Search\Model\Set as Model;
use VDM\Joomla\Utilities\ArrayHelper; use VDM\Joomla\Utilities\ArrayHelper;
use VDM\Joomla\Componentbuilder\Search\Interfaces\SetInterface; 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\Model;
use VDM\Joomla\Componentbuilder\Search\Service\Database; use VDM\Joomla\Componentbuilder\Search\Service\Database;
use VDM\Joomla\Componentbuilder\Search\Service\Agent; 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 * @since 3.2.0
*/ */
abstract class Factory abstract class Factory implements Factoryinterface
{ {
/** /**
* Global Compiler Container * Global Compiler Container
@ -42,7 +43,7 @@ abstract class Factory
* @return Mixed * @return Mixed
* @since 3.2.0 * @since 3.2.0
*/ */
public static function _($key) public static function _(string $key)
{ {
return self::getContainer()->get($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\Container;
use Joomla\DI\ServiceProviderInterface; use Joomla\DI\ServiceProviderInterface;
use VDM\Joomla\Componentbuilder\Search\Config; 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\Interfaces\SearchTypeInterface as SearchEngine;
use VDM\Joomla\Componentbuilder\Search\Engine\Regex; use VDM\Joomla\Componentbuilder\Search\Engine\Regex;
use VDM\Joomla\Componentbuilder\Search\Engine\Basic; use VDM\Joomla\Componentbuilder\Search\Engine\Basic;
@ -85,9 +85,7 @@ class Search implements ServiceProviderInterface
*/ */
public function getTable(Container $container): Table public function getTable(Container $container): Table
{ {
return new Table( return new Table();
$container->get('Config')
);
} }
/** /**

View File

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