update 2023-10-04 18:35:53
This commit is contained in:
parent
b727169617
commit
11a4167cf9
20
README.md
20
README.md
@ -28,10 +28,12 @@ This repository contains an index (see below) of all the approved powers within
|
||||
- **trait Utilities** | [Details](src/79d765b3-7319-4988-9730-446c7f347020) | [Code](src/79d765b3-7319-4988-9730-446c7f347020/code.php) | [Settings](src/79d765b3-7319-4988-9730-446c7f347020/settings.json) | Super__79d765b3_7319_4988_9730_446c7f347020__Power
|
||||
- **Namespace**: [VDM\Joomla\Abstraction](#vdm-joomla-abstraction)
|
||||
|
||||
- **abstract class ActiveStorageRegistry** | [Details](src/43134867-5cb8-4280-9be8-309fd2fd135f) | [Code](src/43134867-5cb8-4280-9be8-309fd2fd135f/code.php) | [Settings](src/43134867-5cb8-4280-9be8-309fd2fd135f/settings.json) | Super__43134867_5cb8_4280_9be8_309fd2fd135f__Power
|
||||
- **abstract class BaseConfig** | [Details](src/ffbd4e1f-a342-4080-ab7d-1de3741bf319) | [Code](src/ffbd4e1f-a342-4080-ab7d-1de3741bf319/code.php) | [Settings](src/ffbd4e1f-a342-4080-ab7d-1de3741bf319/settings.json) | Super__ffbd4e1f_a342_4080_ab7d_1de3741bf319__Power
|
||||
- **abstract class BaseTable** | [Details](src/e0f6ddbe-2a35-4537-942c-faff2ebd04f6) | [Code](src/e0f6ddbe-2a35-4537-942c-faff2ebd04f6/code.php) | [Settings](src/e0f6ddbe-2a35-4537-942c-faff2ebd04f6/settings.json) | Super__e0f6ddbe_2a35_4537_942c_faff2ebd04f6__Power
|
||||
- **abstract class Database** | [Details](src/6cbef8f8-4813-48e3-b05a-65e1aea95171) | [Code](src/6cbef8f8-4813-48e3-b05a-65e1aea95171/code.php) | [Settings](src/6cbef8f8-4813-48e3-b05a-65e1aea95171/settings.json) | Super__6cbef8f8_4813_48e3_b05a_65e1aea95171__Power
|
||||
- **abstract class Model** | [Details](src/584747d1-3a86-453d-b7a3-a2219de8d777) | [Code](src/584747d1-3a86-453d-b7a3-a2219de8d777/code.php) | [Settings](src/584747d1-3a86-453d-b7a3-a2219de8d777/settings.json) | Super__584747d1_3a86_453d_b7a3_a2219de8d777__Power
|
||||
- **abstract class StorageRegistry** | [Details](src/7e822c03-1b20-41d1-9427-f5b8d5836af7) | [Code](src/7e822c03-1b20-41d1-9427-f5b8d5836af7/code.php) | [Settings](src/7e822c03-1b20-41d1-9427-f5b8d5836af7/settings.json) | Super__7e822c03_1b20_41d1_9427_f5b8d5836af7__Power
|
||||
- **Namespace**: [VDM\Joomla\Componentbuilder](#vdm-joomla-componentbuilder)
|
||||
|
||||
- **class Table** | [Details](src/bfd1d6d5-56c1-4fe9-9fee-1c5910e1f5d8) | [Code](src/bfd1d6d5-56c1-4fe9-9fee-1c5910e1f5d8/code.php) | [Settings](src/bfd1d6d5-56c1-4fe9-9fee-1c5910e1f5d8/settings.json) | Super__bfd1d6d5_56c1_4fe9_9fee_1c5910e1f5d8__Power
|
||||
@ -42,15 +44,18 @@ This repository contains an index (see below) of all the approved powers within
|
||||
- **final class Update** | [Details](src/cce56585-58b0-4f72-a92c-e2635ea52d83) | [Code](src/cce56585-58b0-4f72-a92c-e2635ea52d83/code.php) | [Settings](src/cce56585-58b0-4f72-a92c-e2635ea52d83/settings.json) | Super__cce56585_58b0_4f72_a92c_e2635ea52d83__Power
|
||||
- **Namespace**: [VDM\Joomla\Interfaces](#vdm-joomla-interfaces)
|
||||
|
||||
- **interface Activestorageregistryinterface** | [Details](src/af0eedbe-603b-4671-8e5a-28165d88254b) | [Code](src/af0eedbe-603b-4671-8e5a-28165d88254b/code.php) | [Settings](src/af0eedbe-603b-4671-8e5a-28165d88254b/settings.json) | Super__af0eedbe_603b_4671_8e5a_28165d88254b__Power
|
||||
- **interface FactoryInterface** | [Details](src/caf33c5d-858c-4f9a-894f-ab302ec5445a) | [Code](src/caf33c5d-858c-4f9a-894f-ab302ec5445a/code.php) | [Settings](src/caf33c5d-858c-4f9a-894f-ab302ec5445a/settings.json) | Super__caf33c5d_858c_4f9a_894f_ab302ec5445a__Power
|
||||
- **interface InsertInterface** | [Details](src/ad12ca1c-d3ce-4e7f-88c5-c6c92bdedc48) | [Code](src/ad12ca1c-d3ce-4e7f-88c5-c6c92bdedc48/code.php) | [Settings](src/ad12ca1c-d3ce-4e7f-88c5-c6c92bdedc48/settings.json) | Super__ad12ca1c_d3ce_4e7f_88c5_c6c92bdedc48__Power
|
||||
- **interface LoadInterface** | [Details](src/2ad31f74-f579-499d-b98b-c4f54fd615dd) | [Code](src/2ad31f74-f579-499d-b98b-c4f54fd615dd/code.php) | [Settings](src/2ad31f74-f579-499d-b98b-c4f54fd615dd/settings.json) | Super__2ad31f74_f579_499d_b98b_c4f54fd615dd__Power
|
||||
- **interface ModelInterface** | [Details](src/8aef58c1-3f70-4bd4-b9e4-3f29fcd41cff) | [Code](src/8aef58c1-3f70-4bd4-b9e4-3f29fcd41cff/code.php) | [Settings](src/8aef58c1-3f70-4bd4-b9e4-3f29fcd41cff/settings.json) | Super__8aef58c1_3f70_4bd4_b9e4_3f29fcd41cff__Power
|
||||
- **interface Storageregistryinterface** | [Details](src/64e291c2-11f1-423d-a44d-837cc12cc017) | [Code](src/64e291c2-11f1-423d-a44d-837cc12cc017/code.php) | [Settings](src/64e291c2-11f1-423d-a44d-837cc12cc017/settings.json) | Super__64e291c2_11f1_423d_a44d_837cc12cc017__Power
|
||||
- **interface Tableinterface** | [Details](src/2da6d6c4-eb29-4d69-8bc2-36d96e916adf) | [Code](src/2da6d6c4-eb29-4d69-8bc2-36d96e916adf/code.php) | [Settings](src/2da6d6c4-eb29-4d69-8bc2-36d96e916adf/settings.json) | Super__2da6d6c4_eb29_4d69_8bc2_36d96e916adf__Power
|
||||
- **interface UpdateInterface** | [Details](src/7179fde6-1e51-4b51-8545-7ca18f74a0f4) | [Code](src/7179fde6-1e51-4b51-8545-7ca18f74a0f4/code.php) | [Settings](src/7179fde6-1e51-4b51-8545-7ca18f74a0f4/settings.json) | Super__7179fde6_1e51_4b51_8545_7ca18f74a0f4__Power
|
||||
- **Namespace**: [VDM\Joomla\Utilities](#vdm-joomla-utilities)
|
||||
|
||||
- **abstract class ArrayHelper** | [Details](src/0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a) | [Code](src/0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a/code.php) | [Settings](src/0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a/settings.json) | Super__0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a__Power
|
||||
- **abstract class Base64Helper** | [Details](src/64a6ff6c-069c-4a11-a76b-db5e36c27690) | [Code](src/64a6ff6c-069c-4a11-a76b-db5e36c27690/code.php) | [Settings](src/64a6ff6c-069c-4a11-a76b-db5e36c27690/settings.json) | Super__64a6ff6c_069c_4a11_a76b_db5e36c27690__Power
|
||||
- **abstract class FileHelper** | [Details](src/a223b31e-ea1d-4cdf-92ae-5f9becffaff0) | [Code](src/a223b31e-ea1d-4cdf-92ae-5f9becffaff0/code.php) | [Settings](src/a223b31e-ea1d-4cdf-92ae-5f9becffaff0/settings.json) | Super__a223b31e_ea1d_4cdf_92ae_5f9becffaff0__Power
|
||||
- **abstract class GetHelper** | [Details](src/db87c339-5bb6-4291-a7ef-2c48ea1b06bc) | [Code](src/db87c339-5bb6-4291-a7ef-2c48ea1b06bc/code.php) | [Settings](src/db87c339-5bb6-4291-a7ef-2c48ea1b06bc/settings.json) | Super__db87c339_5bb6_4291_a7ef_2c48ea1b06bc__Power
|
||||
- **abstract class GuidHelper** | [Details](src/9c513baf-b279-43fd-ae29-a585c8cbc4f0) | [Code](src/9c513baf-b279-43fd-ae29-a585c8cbc4f0/code.php) | [Settings](src/9c513baf-b279-43fd-ae29-a585c8cbc4f0/settings.json) | Super__9c513baf_b279_43fd_ae29_a585c8cbc4f0__Power
|
||||
@ -62,7 +67,14 @@ This repository contains an index (see below) of all the approved powers within
|
||||
|
||||
- **abstract class BaseRegistry** | [Details](src/b84e947d-2a13-44f7-ac0f-3902ae55ae0c) | [Code](src/b84e947d-2a13-44f7-ac0f-3902ae55ae0c/code.php) | [Settings](src/b84e947d-2a13-44f7-ac0f-3902ae55ae0c/settings.json) | Super__b84e947d_2a13_44f7_ac0f_3902ae55ae0c__Power
|
||||
- **abstract class Mapper** | [Details](src/44a3367c-f9e4-406b-b396-0f452bde0f03) | [Code](src/44a3367c-f9e4-406b-b396-0f452bde0f03/code.php) | [Settings](src/44a3367c-f9e4-406b-b396-0f452bde0f03/settings.json) | Super__44a3367c_f9e4_406b_b396_0f452bde0f03__Power
|
||||
- **abstract class MapperDouble** | [Details](src/4d4e76e9-12d9-4d19-b58c-b88974b2586a) | [Code](src/4d4e76e9-12d9-4d19-b58c-b88974b2586a/code.php) | [Settings](src/4d4e76e9-12d9-4d19-b58c-b88974b2586a/settings.json) | Super__4d4e76e9_12d9_4d19_b58c_b88974b2586a__Power
|
||||
- **abstract class MapperSingle** | [Details](src/c6bbc3ee-58e7-4463-adba-5c5ae839ee36) | [Code](src/c6bbc3ee-58e7-4463-adba-5c5ae839ee36/code.php) | [Settings](src/c6bbc3ee-58e7-4463-adba-5c5ae839ee36/settings.json) | Super__c6bbc3ee_58e7_4463_adba_5c5ae839ee36__Power
|
||||
- **Namespace**: [VDM\Joomla\Componentbuilder\Interfaces](#vdm-joomla-componentbuilder-interfaces)
|
||||
|
||||
- **interface Mapperdoublejoininterface** | [Details](src/7921a2b3-b58c-4184-af3f-f58094f695a8) | [Code](src/7921a2b3-b58c-4184-af3f-f58094f695a8/code.php) | [Settings](src/7921a2b3-b58c-4184-af3f-f58094f695a8/settings.json) | Super__7921a2b3_b58c_4184_af3f_f58094f695a8__Power
|
||||
- **Namespace**: [VDM\Joomla\Componentbuilder\Service](#vdm-joomla-componentbuilder-service)
|
||||
|
||||
- **class Database** | [Details](src/4815e1c7-a433-443d-a112-d1e03d7df84b) | [Code](src/4815e1c7-a433-443d-a112-d1e03d7df84b/code.php) | [Settings](src/4815e1c7-a433-443d-a112-d1e03d7df84b/settings.json) | Super__4815e1c7_a433_443d_a112_d1e03d7df84b__Power
|
||||
- **Namespace**: [VDM\Joomla\Componentbuilder\Utilities](#vdm-joomla-componentbuilder-utilities)
|
||||
|
||||
- **abstract class FilterHelper** | [Details](src/cddcac51-9a46-47c4-ba59-105c70453bd6) | [Code](src/cddcac51-9a46-47c4-ba59-105c70453bd6/code.php) | [Settings](src/cddcac51-9a46-47c4-ba59-105c70453bd6/settings.json) | Super__cddcac51_9a46_47c4_ba59_105c70453bd6__Power
|
||||
@ -77,6 +89,14 @@ This repository contains an index (see below) of all the approved powers within
|
||||
- **abstract class NamespaceHelper** | [Details](src/ce8cf834-6bac-44fb-941c-861f7e046cc0) | [Code](src/ce8cf834-6bac-44fb-941c-861f7e046cc0/code.php) | [Settings](src/ce8cf834-6bac-44fb-941c-861f7e046cc0/settings.json) | Super__ce8cf834_6bac_44fb_941c_861f7e046cc0__Power
|
||||
- **abstract class PluginHelper** | [Details](src/3cf76fbf-fd95-4a33-878e-7aff6d36b7f6) | [Code](src/3cf76fbf-fd95-4a33-878e-7aff6d36b7f6/code.php) | [Settings](src/3cf76fbf-fd95-4a33-878e-7aff6d36b7f6/settings.json) | Super__3cf76fbf_fd95_4a33_878e_7aff6d36b7f6__Power
|
||||
- **abstract class TypeHelper** | [Details](src/a8935cbe-7701-40dc-bfd5-675f2d600954) | [Code](src/a8935cbe-7701-40dc-bfd5-675f2d600954/code.php) | [Settings](src/a8935cbe-7701-40dc-bfd5-675f2d600954/settings.json) | Super__a8935cbe_7701_40dc_bfd5_675f2d600954__Power
|
||||
- **Namespace**: [VDM\Joomla\Abstraction\StorageRegistry\Traits](#vdm-joomla-abstraction-storageregistry-traits)
|
||||
|
||||
- **trait Count** | [Details](src/11572d9b-e3d5-4b29-904c-9618d8f2bfd8) | [Code](src/11572d9b-e3d5-4b29-904c-9618d8f2bfd8/code.php) | [Settings](src/11572d9b-e3d5-4b29-904c-9618d8f2bfd8/settings.json) | Super__11572d9b_e3d5_4b29_904c_9618d8f2bfd8__Power
|
||||
- **trait GetString** | [Details](src/59b1a2ea-d77e-4040-ac8c-e65cd8743e9b) | [Code](src/59b1a2ea-d77e-4040-ac8c-e65cd8743e9b/code.php) | [Settings](src/59b1a2ea-d77e-4040-ac8c-e65cd8743e9b/settings.json) | Super__59b1a2ea_d77e_4040_ac8c_e65cd8743e9b__Power
|
||||
- **trait InArray** | [Details](src/215b35ac-1b26-4838-bbcf-d1fdbbd9353f) | [Code](src/215b35ac-1b26-4838-bbcf-d1fdbbd9353f/code.php) | [Settings](src/215b35ac-1b26-4838-bbcf-d1fdbbd9353f/settings.json) | Super__215b35ac_1b26_4838_bbcf_d1fdbbd9353f__Power
|
||||
- **trait IsString** | [Details](src/ff7d0111-8f79-42aa-ac14-b53ba2c49369) | [Code](src/ff7d0111-8f79-42aa-ac14-b53ba2c49369/code.php) | [Settings](src/ff7d0111-8f79-42aa-ac14-b53ba2c49369/settings.json) | Super__ff7d0111_8f79_42aa_ac14_b53ba2c49369__Power
|
||||
- **trait ToString** | [Details](src/7d494d91-ab60-43cd-aecf-d50e07f7f30e) | [Code](src/7d494d91-ab60-43cd-aecf-d50e07f7f30e/code.php) | [Settings](src/7d494d91-ab60-43cd-aecf-d50e07f7f30e/settings.json) | Super__7d494d91_ab60_43cd_aecf_d50e07f7f30e__Power
|
||||
- **trait VarExport** | [Details](src/52a1d14f-304a-431c-8fa4-411179942db5) | [Code](src/52a1d14f-304a-431c-8fa4-411179942db5/code.php) | [Settings](src/52a1d14f-304a-431c-8fa4-411179942db5/settings.json) | Super__52a1d14f_304a_431c_8fa4_411179942db5__Power
|
||||
|
||||
---
|
||||
```
|
||||
|
@ -8,9 +8,10 @@
|
||||
```
|
||||
# final class Load (Details)
|
||||
> namespace: **VDM\Joomla\Database**
|
||||
> extends: **Database**
|
||||
```uml
|
||||
@startuml
|
||||
class Load << (F,LightGreen) >> #Green {
|
||||
class Load << (F,LightGreen) >> #RoyalBlue {
|
||||
+ rows(array $select, array $tables, ...) : ?array
|
||||
+ items(array $select, array $tables, ...) : ?array
|
||||
+ row(array $select, array $tables, ...) : ?array
|
||||
|
@ -385,25 +385,48 @@ final class Load extends Database implements LoadInterface
|
||||
{
|
||||
if (isset($value['value']) && isset($value['operator']))
|
||||
{
|
||||
if (ArrayHelper::check($value['value']))
|
||||
// check if value needs to be quoted
|
||||
$quote = $value['quote'] ?? true;
|
||||
if (!$quote)
|
||||
{
|
||||
// add the where by array
|
||||
$query->where($this->db->quoteName($key) . ' ' .
|
||||
$value['operator'] . ' (' .
|
||||
implode(',',
|
||||
array_map(
|
||||
fn($val) => $this->quote($val),
|
||||
$value['value']
|
||||
)
|
||||
)
|
||||
. ')'
|
||||
);
|
||||
if (ArrayHelper::check($value['value']))
|
||||
{
|
||||
// add the where by array
|
||||
$query->where($this->db->quoteName($key) . ' ' .
|
||||
$value['operator'] . ' (' .
|
||||
implode(',', $value['value'])
|
||||
. ')'
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
// add the where
|
||||
$query->where($this->db->quoteName($key) . ' ' .
|
||||
$value['operator'] . ' ' . $value['value']);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// add the where
|
||||
$query->where($this->db->quoteName($key) . ' ' .
|
||||
$value['operator'] . ' ' . $this->quote($value['value']));
|
||||
if (ArrayHelper::check($value['value']))
|
||||
{
|
||||
// add the where by array
|
||||
$query->where($this->db->quoteName($key) . ' ' .
|
||||
$value['operator'] . ' (' .
|
||||
implode(',',
|
||||
array_map(
|
||||
fn($val) => $this->quote($val),
|
||||
$value['value']
|
||||
)
|
||||
)
|
||||
. ')'
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
// add the where
|
||||
$query->where($this->db->quoteName($key) . ' ' .
|
||||
$value['operator'] . ' ' . $this->quote($value['value']));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -359,25 +359,48 @@
|
||||
{
|
||||
if (isset($value['value']) && isset($value['operator']))
|
||||
{
|
||||
if (ArrayHelper::check($value['value']))
|
||||
// check if value needs to be quoted
|
||||
$quote = $value['quote'] ?? true;
|
||||
if (!$quote)
|
||||
{
|
||||
// add the where by array
|
||||
$query->where($this->db->quoteName($key) . ' ' .
|
||||
$value['operator'] . ' (' .
|
||||
implode(',',
|
||||
array_map(
|
||||
fn($val) => $this->quote($val),
|
||||
$value['value']
|
||||
)
|
||||
)
|
||||
. ')'
|
||||
);
|
||||
if (ArrayHelper::check($value['value']))
|
||||
{
|
||||
// add the where by array
|
||||
$query->where($this->db->quoteName($key) . ' ' .
|
||||
$value['operator'] . ' (' .
|
||||
implode(',', $value['value'])
|
||||
. ')'
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
// add the where
|
||||
$query->where($this->db->quoteName($key) . ' ' .
|
||||
$value['operator'] . ' ' . $value['value']);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// add the where
|
||||
$query->where($this->db->quoteName($key) . ' ' .
|
||||
$value['operator'] . ' ' . $this->quote($value['value']));
|
||||
if (ArrayHelper::check($value['value']))
|
||||
{
|
||||
// add the where by array
|
||||
$query->where($this->db->quoteName($key) . ' ' .
|
||||
$value['operator'] . ' (' .
|
||||
implode(',',
|
||||
array_map(
|
||||
fn($val) => $this->quote($val),
|
||||
$value['value']
|
||||
)
|
||||
)
|
||||
. ')'
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
// add the where
|
||||
$query->where($this->db->quoteName($key) . ' ' .
|
||||
$value['operator'] . ' ' . $this->quote($value['value']));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
37
src/11572d9b-e3d5-4b29-904c-9618d8f2bfd8/README.md
Normal file
37
src/11572d9b-e3d5-4b29-904c-9618d8f2bfd8/README.md
Normal file
@ -0,0 +1,37 @@
|
||||
```
|
||||
██████╗ ██████╗ ██╗ ██╗███████╗██████╗
|
||||
██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔══██╗
|
||||
██████╔╝██║ ██║██║ █╗ ██║█████╗ ██████╔╝
|
||||
██╔═══╝ ██║ ██║██║███╗██║██╔══╝ ██╔══██╗
|
||||
██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║
|
||||
╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
|
||||
```
|
||||
# trait Count (Details)
|
||||
> namespace: **VDM\Joomla\Abstraction\StorageRegistry\Traits**
|
||||
```uml
|
||||
@startuml
|
||||
class Count << (T,Orange) >> #Turquoise {
|
||||
+ count(string $path) : int
|
||||
}
|
||||
|
||||
note right of Count::count
|
||||
Retrieves number of values (or sub-array) from the storage using multiple keys.
|
||||
|
||||
since: 3.2.0
|
||||
return: int
|
||||
end note
|
||||
|
||||
@enduml
|
||||
```
|
||||
|
||||
---
|
||||
```
|
||||
██╗ ██████╗██████╗
|
||||
██║██╔════╝██╔══██╗
|
||||
██║██║ ██████╔╝
|
||||
██ ██║██║ ██╔══██╗
|
||||
╚█████╔╝╚██████╗██████╔╝
|
||||
╚════╝ ╚═════╝╚═════╝
|
||||
```
|
||||
> Build with [Joomla Component Builder](https://git.vdm.dev/joomla/Component-Builder)
|
||||
|
51
src/11572d9b-e3d5-4b29-904c-9618d8f2bfd8/code.php
Normal file
51
src/11572d9b-e3d5-4b29-904c-9618d8f2bfd8/code.php
Normal file
@ -0,0 +1,51 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Component.Builder
|
||||
*
|
||||
* @created 4th September, 2022
|
||||
* @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\Abstraction\StorageRegistry\Traits;
|
||||
|
||||
|
||||
/**
|
||||
* Count Values
|
||||
*
|
||||
* @since 3.2.0
|
||||
*/
|
||||
trait Count
|
||||
{
|
||||
/**
|
||||
* Retrieves number of values (or sub-array) from the storage using multiple keys.
|
||||
*
|
||||
* @param string $path Storage path (e.g. vdm.content.builder)
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the path values are not a number or string.
|
||||
* @return int The number of values
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function count(string $path): int
|
||||
{
|
||||
if (($values = $this->get($path)) === null)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (is_array($values))
|
||||
{
|
||||
return count($values);
|
||||
}
|
||||
|
||||
if (is_object($values))
|
||||
{
|
||||
return count((array) $values);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
28
src/11572d9b-e3d5-4b29-904c-9618d8f2bfd8/code.power
Normal file
28
src/11572d9b-e3d5-4b29-904c-9618d8f2bfd8/code.power
Normal file
@ -0,0 +1,28 @@
|
||||
/**
|
||||
* Retrieves number of values (or sub-array) from the storage using multiple keys.
|
||||
*
|
||||
* @param string $path Storage path (e.g. vdm.content.builder)
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the path values are not a number or string.
|
||||
* @return int The number of values
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function count(string $path): int
|
||||
{
|
||||
if (($values = $this->get($path)) === null)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (is_array($values))
|
||||
{
|
||||
return count($values);
|
||||
}
|
||||
|
||||
if (is_object($values))
|
||||
{
|
||||
return count((array) $values);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
18
src/11572d9b-e3d5-4b29-904c-9618d8f2bfd8/settings.json
Normal file
18
src/11572d9b-e3d5-4b29-904c-9618d8f2bfd8/settings.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"add_head": "0",
|
||||
"add_licensing_template": "2",
|
||||
"extends": "0",
|
||||
"guid": "11572d9b-e3d5-4b29-904c-9618d8f2bfd8",
|
||||
"implements": null,
|
||||
"load_selection": null,
|
||||
"name": "Count",
|
||||
"power_version": "1.0.0",
|
||||
"system_name": "VDM.Abstraction.StorageRegistry.Traits.Count",
|
||||
"type": "trait",
|
||||
"use_selection": null,
|
||||
"namespace": "VDM\\Joomla\\Abstraction.StorageRegistry.Traits.Count",
|
||||
"description": "Count Values\r\n\r\n@since 3.2.0",
|
||||
"licensing_template": "\/**\r\n * @package Joomla.Component.Builder\r\n *\r\n * @created 4th September, 2022\r\n * @author Llewellyn van der Merwe <https:\/\/dev.vdm.io>\r\n * @git Joomla Component Builder <https:\/\/git.vdm.dev\/joomla\/Component-Builder>\r\n * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.\r\n * @license GNU General Public License version 2 or later; see LICENSE.txt\r\n *\/\r\n",
|
||||
"head": "",
|
||||
"composer": ""
|
||||
}
|
37
src/215b35ac-1b26-4838-bbcf-d1fdbbd9353f/README.md
Normal file
37
src/215b35ac-1b26-4838-bbcf-d1fdbbd9353f/README.md
Normal file
@ -0,0 +1,37 @@
|
||||
```
|
||||
██████╗ ██████╗ ██╗ ██╗███████╗██████╗
|
||||
██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔══██╗
|
||||
██████╔╝██║ ██║██║ █╗ ██║█████╗ ██████╔╝
|
||||
██╔═══╝ ██║ ██║██║███╗██║██╔══╝ ██╔══██╗
|
||||
██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║
|
||||
╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
|
||||
```
|
||||
# trait InArray (Details)
|
||||
> namespace: **VDM\Joomla\Abstraction\StorageRegistry\Traits**
|
||||
```uml
|
||||
@startuml
|
||||
class InArray << (T,Orange) >> #Turquoise {
|
||||
+ inArray(mixed $value, ?string $path = null) : bool
|
||||
}
|
||||
|
||||
note right of InArray::inArray
|
||||
Check if a value is found in an array
|
||||
|
||||
since: 3.2.0
|
||||
return: bool
|
||||
end note
|
||||
|
||||
@enduml
|
||||
```
|
||||
|
||||
---
|
||||
```
|
||||
██╗ ██████╗██████╗
|
||||
██║██╔════╝██╔══██╗
|
||||
██║██║ ██████╔╝
|
||||
██ ██║██║ ██╔══██╗
|
||||
╚█████╔╝╚██████╗██████╔╝
|
||||
╚════╝ ╚═════╝╚═════╝
|
||||
```
|
||||
> Build with [Joomla Component Builder](https://git.vdm.dev/joomla/Component-Builder)
|
||||
|
50
src/215b35ac-1b26-4838-bbcf-d1fdbbd9353f/code.php
Normal file
50
src/215b35ac-1b26-4838-bbcf-d1fdbbd9353f/code.php
Normal file
@ -0,0 +1,50 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Component.Builder
|
||||
*
|
||||
* @created 4th September, 2022
|
||||
* @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\Abstraction\StorageRegistry\Traits;
|
||||
|
||||
|
||||
/**
|
||||
* Check if a value is in an array
|
||||
*
|
||||
* @since 3.2.0
|
||||
*/
|
||||
trait InArray
|
||||
{
|
||||
/**
|
||||
* Check if a value is found in an array
|
||||
*
|
||||
* @param mixed $value The value to check for
|
||||
* @param string|null $path Registry path (e.g. joomla.content.showauthor)
|
||||
*
|
||||
* @return bool
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function inArray($value, ?string $path = null): bool
|
||||
{
|
||||
// Check base array if no path is given
|
||||
if (empty($path))
|
||||
{
|
||||
return in_array($value, $this->active);
|
||||
}
|
||||
|
||||
// get the value
|
||||
if (($node = $this->get($path)) !== null
|
||||
&& is_array($node)
|
||||
&& in_array($value, $node))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
27
src/215b35ac-1b26-4838-bbcf-d1fdbbd9353f/code.power
Normal file
27
src/215b35ac-1b26-4838-bbcf-d1fdbbd9353f/code.power
Normal file
@ -0,0 +1,27 @@
|
||||
/**
|
||||
* Check if a value is found in an array
|
||||
*
|
||||
* @param mixed $value The value to check for
|
||||
* @param string|null $path Registry path (e.g. joomla.content.showauthor)
|
||||
*
|
||||
* @return bool
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function inArray($value, ?string $path = null): bool
|
||||
{
|
||||
// Check base array if no path is given
|
||||
if (empty($path))
|
||||
{
|
||||
return in_array($value, $this->active);
|
||||
}
|
||||
|
||||
// get the value
|
||||
if (($node = $this->get($path)) !== null
|
||||
&& is_array($node)
|
||||
&& in_array($value, $node))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
18
src/215b35ac-1b26-4838-bbcf-d1fdbbd9353f/settings.json
Normal file
18
src/215b35ac-1b26-4838-bbcf-d1fdbbd9353f/settings.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"add_head": "0",
|
||||
"add_licensing_template": "2",
|
||||
"extends": "0",
|
||||
"guid": "215b35ac-1b26-4838-bbcf-d1fdbbd9353f",
|
||||
"implements": null,
|
||||
"load_selection": null,
|
||||
"name": "InArray",
|
||||
"power_version": "1.0.0",
|
||||
"system_name": "VDM.Abstraction.StorageRegistry.Traits.InArray",
|
||||
"type": "trait",
|
||||
"use_selection": null,
|
||||
"namespace": "VDM\\Joomla\\Abstraction.StorageRegistry.Traits.InArray",
|
||||
"description": "Check if a value is in an array\r\n\r\n@since 3.2.0",
|
||||
"licensing_template": "\/**\r\n * @package Joomla.Component.Builder\r\n *\r\n * @created 4th September, 2022\r\n * @author Llewellyn van der Merwe <https:\/\/dev.vdm.io>\r\n * @git Joomla Component Builder <https:\/\/git.vdm.dev\/joomla\/Component-Builder>\r\n * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.\r\n * @license GNU General Public License version 2 or later; see LICENSE.txt\r\n *\/\r\n",
|
||||
"head": "",
|
||||
"composer": ""
|
||||
}
|
100
src/43134867-5cb8-4280-9be8-309fd2fd135f/README.md
Normal file
100
src/43134867-5cb8-4280-9be8-309fd2fd135f/README.md
Normal file
@ -0,0 +1,100 @@
|
||||
```
|
||||
██████╗ ██████╗ ██╗ ██╗███████╗██████╗
|
||||
██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔══██╗
|
||||
██████╔╝██║ ██║██║ █╗ ██║█████╗ ██████╔╝
|
||||
██╔═══╝ ██║ ██║██║███╗██║██╔══╝ ██╔══██╗
|
||||
██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║
|
||||
╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
|
||||
```
|
||||
# abstract class ActiveStorageRegistry (Details)
|
||||
> namespace: **VDM\Joomla\Abstraction**
|
||||
```uml
|
||||
@startuml
|
||||
abstract ActiveStorageRegistry #Orange {
|
||||
# array $active
|
||||
+ isActive() : bool
|
||||
+ allActive() : array
|
||||
+ setActive(mixed $value, $keys) : void
|
||||
+ addActive(mixed $value, bool $asArray, ...) : void
|
||||
+ getActive(mixed $default, $keys) : mixed
|
||||
+ removeActive($keys) : void
|
||||
+ existsActive($keys) : bool
|
||||
# validActiveKeys(array $keys) : bool
|
||||
}
|
||||
|
||||
note right of ActiveStorageRegistry::isActive
|
||||
Check if the main storage has any content.
|
||||
|
||||
since: 3.2.0
|
||||
return: bool
|
||||
end note
|
||||
|
||||
note left of ActiveStorageRegistry::allActive
|
||||
Get all value from the active storage.
|
||||
|
||||
since: 3.2.0
|
||||
return: array
|
||||
end note
|
||||
|
||||
note right of ActiveStorageRegistry::setActive
|
||||
Sets a value into the storage using multiple keys.
|
||||
|
||||
since: 3.2.0
|
||||
return: void
|
||||
end note
|
||||
|
||||
note left of ActiveStorageRegistry::addActive
|
||||
Adds content into the storage. If a key exists,
|
||||
it either appends or concatenates based on the value's type.
|
||||
|
||||
since: 3.2.0
|
||||
return: void
|
||||
|
||||
arguments:
|
||||
mixed $value
|
||||
bool $asArray
|
||||
$keys
|
||||
end note
|
||||
|
||||
note right of ActiveStorageRegistry::getActive
|
||||
Retrieves a value (or sub-array) from the storage using multiple keys.
|
||||
|
||||
since: 3.2.0
|
||||
return: mixed
|
||||
end note
|
||||
|
||||
note left of ActiveStorageRegistry::removeActive
|
||||
Removes a value (or sub-array) from the storage using multiple keys.
|
||||
|
||||
since: 3.2.0
|
||||
return: void
|
||||
end note
|
||||
|
||||
note right of ActiveStorageRegistry::existsActive
|
||||
Checks the existence of a particular location in the storage using multiple keys.
|
||||
|
||||
since: 3.2.0
|
||||
return: bool
|
||||
end note
|
||||
|
||||
note left of ActiveStorageRegistry::validActiveKeys
|
||||
Checks that the keys are valid
|
||||
|
||||
since: 3.2.0
|
||||
return: bool
|
||||
end note
|
||||
|
||||
@enduml
|
||||
```
|
||||
|
||||
---
|
||||
```
|
||||
██╗ ██████╗██████╗
|
||||
██║██╔════╝██╔══██╗
|
||||
██║██║ ██████╔╝
|
||||
██ ██║██║ ██╔══██╗
|
||||
╚█████╔╝╚██████╗██████╔╝
|
||||
╚════╝ ╚═════╝╚═════╝
|
||||
```
|
||||
> Build with [Joomla Component Builder](https://git.vdm.dev/joomla/Component-Builder)
|
||||
|
260
src/43134867-5cb8-4280-9be8-309fd2fd135f/code.php
Normal file
260
src/43134867-5cb8-4280-9be8-309fd2fd135f/code.php
Normal file
@ -0,0 +1,260 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Component.Builder
|
||||
*
|
||||
* @created 4th September, 2022
|
||||
* @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\Abstraction;
|
||||
|
||||
|
||||
use VDM\Joomla\Interfaces\Activestorageregistryinterface;
|
||||
|
||||
|
||||
/**
|
||||
* Active Storage Registry.
|
||||
*
|
||||
* Don't use this beyond 10 dimensional depth for best performance.
|
||||
*
|
||||
* @since 3.2.0
|
||||
*/
|
||||
abstract class ActiveStorageRegistry implements Activestorageregistryinterface
|
||||
{
|
||||
/**
|
||||
* The main storage array.
|
||||
*
|
||||
* @var array
|
||||
* @since 3.2.0
|
||||
**/
|
||||
protected array $active = [];
|
||||
|
||||
/**
|
||||
* Check if the main storage has any content.
|
||||
*
|
||||
* @return bool Returns true if the active array is not empty, false otherwise.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function isActive(): bool
|
||||
{
|
||||
return !empty($this->active);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all value from the active storage.
|
||||
*
|
||||
* @return array The values or empty array.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function allActive(): array
|
||||
{
|
||||
return $this->active;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a value into the storage using multiple keys.
|
||||
*
|
||||
* @param mixed $value The value to set.
|
||||
* @param string ...$keys The keys to determine the location.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the keys are not a number or string.
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function setActive($value, string ...$keys): void
|
||||
{
|
||||
if (!$this->validActiveKeys($keys))
|
||||
{
|
||||
throw new \InvalidArgumentException("Keys must only be strings or numbers to set any value.");
|
||||
}
|
||||
|
||||
$array = &$this->active;
|
||||
|
||||
foreach ($keys as $key)
|
||||
{
|
||||
if (!isset($array[$key]))
|
||||
{
|
||||
$array[$key] = [];
|
||||
}
|
||||
$array = &$array[$key];
|
||||
}
|
||||
|
||||
$array = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds content into the storage. If a key exists,
|
||||
* it either appends or concatenates based on the value's type.
|
||||
*
|
||||
* @param mixed $value The value to set.
|
||||
* @param bool $asArray Determines if the new value should be treated as an array.
|
||||
* @param string ...$keys The keys to determine the location.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the keys are not a number or string.
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function addActive($value, bool $asArray, string ...$keys): void
|
||||
{
|
||||
if (!$this->validActiveKeys($keys))
|
||||
{
|
||||
throw new \InvalidArgumentException("Keys must only be strings or numbers to add any value.");
|
||||
}
|
||||
|
||||
$array = &$this->active;
|
||||
|
||||
foreach ($keys as $key)
|
||||
{
|
||||
if (!isset($array[$key]))
|
||||
{
|
||||
$array[$key] = [];
|
||||
}
|
||||
$array = &$array[$key];
|
||||
}
|
||||
|
||||
// add string
|
||||
if (!$asArray && $array === [])
|
||||
{
|
||||
$array = '';
|
||||
}
|
||||
|
||||
// Handle the adding logic at the tip of the array
|
||||
if (is_array($array) || $asArray)
|
||||
{
|
||||
if (!is_array($array))
|
||||
{
|
||||
// Convert to array if it's not already an array
|
||||
$array = [$array];
|
||||
}
|
||||
$array[] = $value;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (is_string($value) || is_numeric($value))
|
||||
{
|
||||
$array .= (string) $value;
|
||||
}
|
||||
else
|
||||
{
|
||||
$array = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves a value (or sub-array) from the storage using multiple keys.
|
||||
*
|
||||
* @param mixed $default The default value if not set.
|
||||
* @param string ...$keys The keys to determine the location.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the keys are not a number or string.
|
||||
* @return mixed The value or sub-array from the storage. Null if the location doesn't exist.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function getActive($default, string ...$keys)
|
||||
{
|
||||
if (!$this->validActiveKeys($keys))
|
||||
{
|
||||
throw new \InvalidArgumentException("Keys must only be strings or numbers to get any value.");
|
||||
}
|
||||
|
||||
$array = $this->active;
|
||||
|
||||
foreach ($keys as $key)
|
||||
{
|
||||
if (!isset($array[$key]))
|
||||
{
|
||||
return $default;
|
||||
}
|
||||
$array = $array[$key];
|
||||
}
|
||||
|
||||
return $array;
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a value (or sub-array) from the storage using multiple keys.
|
||||
*
|
||||
* @param string ...$keys The keys to determine the location.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the keys are not a number or string.
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function removeActive(string ...$keys): void
|
||||
{
|
||||
if (!$this->validActiveKeys($keys))
|
||||
{
|
||||
throw new \InvalidArgumentException("Keys must only be strings or numbers to remove any value.");
|
||||
}
|
||||
|
||||
$array = &$this->active;
|
||||
$lastKey = array_pop($keys);
|
||||
|
||||
foreach ($keys as $key)
|
||||
{
|
||||
if (!isset($array[$key]))
|
||||
{
|
||||
return; // Exit early if the key doesn't exist
|
||||
}
|
||||
$array = &$array[$key];
|
||||
}
|
||||
|
||||
unset($array[$lastKey]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks the existence of a particular location in the storage using multiple keys.
|
||||
*
|
||||
* @param string ...$keys The keys to determine the location.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the keys are not a number or string.
|
||||
* @return bool True if the location exists, false otherwise.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function existsActive(string ...$keys): bool
|
||||
{
|
||||
if (!$this->validActiveKeys($keys))
|
||||
{
|
||||
throw new \InvalidArgumentException("Keys must only be strings or numbers to check if any value exist.");
|
||||
}
|
||||
|
||||
$array = $this->active;
|
||||
|
||||
foreach ($keys as $key)
|
||||
{
|
||||
if (!isset($array[$key]))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
$array = $array[$key];
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks that the keys are valid
|
||||
*
|
||||
* @param array $keys The keys to determine the location.
|
||||
*
|
||||
* @return bool False if any of the keys are not a number or string.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
protected function validActiveKeys(array $keys): bool
|
||||
{
|
||||
foreach ($keys as $key)
|
||||
{
|
||||
if ($key === '' || (!is_string($key) && !is_numeric($key)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
232
src/43134867-5cb8-4280-9be8-309fd2fd135f/code.power
Normal file
232
src/43134867-5cb8-4280-9be8-309fd2fd135f/code.power
Normal file
@ -0,0 +1,232 @@
|
||||
/**
|
||||
* The main storage array.
|
||||
*
|
||||
* @var array
|
||||
* @since 3.2.0
|
||||
**/
|
||||
protected array $active = [];
|
||||
|
||||
/**
|
||||
* Check if the main storage has any content.
|
||||
*
|
||||
* @return bool Returns true if the active array is not empty, false otherwise.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function isActive(): bool
|
||||
{
|
||||
return !empty($this->active);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all value from the active storage.
|
||||
*
|
||||
* @return array The values or empty array.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function allActive(): array
|
||||
{
|
||||
return $this->active;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a value into the storage using multiple keys.
|
||||
*
|
||||
* @param mixed $value The value to set.
|
||||
* @param string ...$keys The keys to determine the location.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the keys are not a number or string.
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function setActive($value, string ...$keys): void
|
||||
{
|
||||
if (!$this->validActiveKeys($keys))
|
||||
{
|
||||
throw new \InvalidArgumentException("Keys must only be strings or numbers to set any value.");
|
||||
}
|
||||
|
||||
$array = &$this->active;
|
||||
|
||||
foreach ($keys as $key)
|
||||
{
|
||||
if (!isset($array[$key]))
|
||||
{
|
||||
$array[$key] = [];
|
||||
}
|
||||
$array = &$array[$key];
|
||||
}
|
||||
|
||||
$array = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds content into the storage. If a key exists,
|
||||
* it either appends or concatenates based on the value's type.
|
||||
*
|
||||
* @param mixed $value The value to set.
|
||||
* @param bool $asArray Determines if the new value should be treated as an array.
|
||||
* @param string ...$keys The keys to determine the location.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the keys are not a number or string.
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function addActive($value, bool $asArray, string ...$keys): void
|
||||
{
|
||||
if (!$this->validActiveKeys($keys))
|
||||
{
|
||||
throw new \InvalidArgumentException("Keys must only be strings or numbers to add any value.");
|
||||
}
|
||||
|
||||
$array = &$this->active;
|
||||
|
||||
foreach ($keys as $key)
|
||||
{
|
||||
if (!isset($array[$key]))
|
||||
{
|
||||
$array[$key] = [];
|
||||
}
|
||||
$array = &$array[$key];
|
||||
}
|
||||
|
||||
// add string
|
||||
if (!$asArray && $array === [])
|
||||
{
|
||||
$array = '';
|
||||
}
|
||||
|
||||
// Handle the adding logic at the tip of the array
|
||||
if (is_array($array) || $asArray)
|
||||
{
|
||||
if (!is_array($array))
|
||||
{
|
||||
// Convert to array if it's not already an array
|
||||
$array = [$array];
|
||||
}
|
||||
$array[] = $value;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (is_string($value) || is_numeric($value))
|
||||
{
|
||||
$array .= (string) $value;
|
||||
}
|
||||
else
|
||||
{
|
||||
$array = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves a value (or sub-array) from the storage using multiple keys.
|
||||
*
|
||||
* @param mixed $default The default value if not set.
|
||||
* @param string ...$keys The keys to determine the location.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the keys are not a number or string.
|
||||
* @return mixed The value or sub-array from the storage. Null if the location doesn't exist.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function getActive($default, string ...$keys)
|
||||
{
|
||||
if (!$this->validActiveKeys($keys))
|
||||
{
|
||||
throw new \InvalidArgumentException("Keys must only be strings or numbers to get any value.");
|
||||
}
|
||||
|
||||
$array = $this->active;
|
||||
|
||||
foreach ($keys as $key)
|
||||
{
|
||||
if (!isset($array[$key]))
|
||||
{
|
||||
return $default;
|
||||
}
|
||||
$array = $array[$key];
|
||||
}
|
||||
|
||||
return $array;
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a value (or sub-array) from the storage using multiple keys.
|
||||
*
|
||||
* @param string ...$keys The keys to determine the location.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the keys are not a number or string.
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function removeActive(string ...$keys): void
|
||||
{
|
||||
if (!$this->validActiveKeys($keys))
|
||||
{
|
||||
throw new \InvalidArgumentException("Keys must only be strings or numbers to remove any value.");
|
||||
}
|
||||
|
||||
$array = &$this->active;
|
||||
$lastKey = array_pop($keys);
|
||||
|
||||
foreach ($keys as $key)
|
||||
{
|
||||
if (!isset($array[$key]))
|
||||
{
|
||||
return; // Exit early if the key doesn't exist
|
||||
}
|
||||
$array = &$array[$key];
|
||||
}
|
||||
|
||||
unset($array[$lastKey]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks the existence of a particular location in the storage using multiple keys.
|
||||
*
|
||||
* @param string ...$keys The keys to determine the location.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the keys are not a number or string.
|
||||
* @return bool True if the location exists, false otherwise.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function existsActive(string ...$keys): bool
|
||||
{
|
||||
if (!$this->validActiveKeys($keys))
|
||||
{
|
||||
throw new \InvalidArgumentException("Keys must only be strings or numbers to check if any value exist.");
|
||||
}
|
||||
|
||||
$array = $this->active;
|
||||
|
||||
foreach ($keys as $key)
|
||||
{
|
||||
if (!isset($array[$key]))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
$array = $array[$key];
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks that the keys are valid
|
||||
*
|
||||
* @param array $keys The keys to determine the location.
|
||||
*
|
||||
* @return bool False if any of the keys are not a number or string.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
protected function validActiveKeys(array $keys): bool
|
||||
{
|
||||
foreach ($keys as $key)
|
||||
{
|
||||
if ($key === '' || (!is_string($key) && !is_numeric($key)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
20
src/43134867-5cb8-4280-9be8-309fd2fd135f/settings.json
Normal file
20
src/43134867-5cb8-4280-9be8-309fd2fd135f/settings.json
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"add_head": "0",
|
||||
"add_licensing_template": "2",
|
||||
"extends": "0",
|
||||
"guid": "43134867-5cb8-4280-9be8-309fd2fd135f",
|
||||
"implements": [
|
||||
"af0eedbe-603b-4671-8e5a-28165d88254b"
|
||||
],
|
||||
"load_selection": null,
|
||||
"name": "ActiveStorageRegistry",
|
||||
"power_version": "1.0.0",
|
||||
"system_name": "VDM.Abstraction.ActiveStorageRegistry",
|
||||
"type": "abstract class",
|
||||
"use_selection": null,
|
||||
"namespace": "VDM\\Joomla\\Abstraction.ActiveStorageRegistry",
|
||||
"description": "Active Storage Registry.\r\n\r\nDon't use this beyond 10 dimensional depth for best performance.\r\n\r\n@since 3.2.0",
|
||||
"licensing_template": "\/**\r\n * @package Joomla.Component.Builder\r\n *\r\n * @created 4th September, 2022\r\n * @author Llewellyn van der Merwe <https:\/\/dev.vdm.io>\r\n * @git Joomla Component Builder <https:\/\/git.vdm.dev\/joomla\/Component-Builder>\r\n * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.\r\n * @license GNU General Public License version 2 or later; see LICENSE.txt\r\n *\/\r\n",
|
||||
"head": "",
|
||||
"composer": ""
|
||||
}
|
@ -16,7 +16,7 @@ abstract Mapper #Orange {
|
||||
+ set(string $key, mixed $value) : void
|
||||
+ get(string $key) : mixed
|
||||
+ exist(string $key) : bool
|
||||
+ add(string $key, mixed $value) : void
|
||||
+ add(string $key, mixed $value, ...) : void
|
||||
+ remove(string $key) : void
|
||||
# {abstract} key(string $key) : string
|
||||
+ isActive_(string $firstKey = null) : bool
|
||||
@ -62,6 +62,11 @@ note right of Mapper::add
|
||||
|
||||
since: 3.2.0
|
||||
return: void
|
||||
|
||||
arguments:
|
||||
string $key
|
||||
mixed $value
|
||||
bool $array = false
|
||||
end note
|
||||
|
||||
note left of Mapper::remove
|
||||
@ -121,6 +126,7 @@ note left of Mapper::add_
|
||||
string $firstKey
|
||||
string $secondKey
|
||||
mixed $value
|
||||
bool $array = false
|
||||
end note
|
||||
|
||||
note right of Mapper::remove_
|
||||
|
@ -12,7 +12,7 @@
|
||||
namespace VDM\Joomla\Componentbuilder\Abstraction;
|
||||
|
||||
|
||||
use VDM\Joomla\Componentbuilder\Interfaces\Mapperdoubleinterface;
|
||||
use VDM\Joomla\Componentbuilder\Interfaces\Mapperdoublejoininterface;
|
||||
use VDM\Joomla\Componentbuilder\Interfaces\Mappersingleinterface;
|
||||
|
||||
|
||||
@ -21,7 +21,7 @@ use VDM\Joomla\Componentbuilder\Interfaces\Mappersingleinterface;
|
||||
*
|
||||
* @since 3.2.0
|
||||
*/
|
||||
abstract class Mapper implements Mapperdoubleinterface, Mappersingleinterface
|
||||
abstract class Mapper implements Mapperdoublejoininterface, Mappersingleinterface
|
||||
{
|
||||
|
||||
/**
|
||||
@ -52,7 +52,7 @@ abstract class Mapper implements Mapperdoubleinterface, Mappersingleinterface
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function set(string $key, $value)
|
||||
public function set(string $key, $value): void
|
||||
{
|
||||
$this->active[$this->key($key)] = $value;
|
||||
}
|
||||
@ -92,19 +92,34 @@ abstract class Mapper implements Mapperdoubleinterface, Mappersingleinterface
|
||||
*
|
||||
* @param string $key The main string key
|
||||
* @param mixed $value The values to set
|
||||
* @param bool $array The is array switch
|
||||
*
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function add(string $key, $value)
|
||||
public function add(string $key, $value, bool $array = false): void
|
||||
{
|
||||
if (isset($this->active[$this->key($key)]))
|
||||
{
|
||||
$this->active[$this->key($key)] .= $value;
|
||||
if (is_array($this->active[$this->key($key)]))
|
||||
{
|
||||
$this->active[$this->key($key)][] = $value;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->active[$this->key($key)] .= $value;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->active[$this->key($key)] = $value;
|
||||
if ($array)
|
||||
{
|
||||
$this->active[$this->key($key)] = [$value];
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->active[$this->key($key)] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -116,7 +131,7 @@ abstract class Mapper implements Mapperdoubleinterface, Mappersingleinterface
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function remove(string $key)
|
||||
public function remove(string $key): void
|
||||
{
|
||||
unset($this->active[$this->key($key)]);
|
||||
}
|
||||
@ -175,7 +190,7 @@ abstract class Mapper implements Mapperdoubleinterface, Mappersingleinterface
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function set_(string $firstKey, string $secondKey, $value)
|
||||
public function set_(string $firstKey, string $secondKey, $value): void
|
||||
{
|
||||
$this->_active[$this->firstKey($firstKey)]
|
||||
[$this->secondKey($secondKey)] = $value;
|
||||
@ -217,7 +232,7 @@ abstract class Mapper implements Mapperdoubleinterface, Mappersingleinterface
|
||||
{
|
||||
return true;
|
||||
}
|
||||
elseif (is_null($secondKey) && isset($this->_active[$this->firstKey($firstKey)]))
|
||||
elseif ($secondKey === null && isset($this->_active[$this->firstKey($firstKey)]))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@ -230,23 +245,41 @@ abstract class Mapper implements Mapperdoubleinterface, Mappersingleinterface
|
||||
* @param string $firstKey The first key
|
||||
* @param string $secondKey The second key
|
||||
* @param mixed $value The values to set
|
||||
* @param bool $array The is array switch
|
||||
*
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function add_(string $firstKey, string $secondKey, $value)
|
||||
public function add_(string $firstKey, string $secondKey, $value, bool $array = false): void
|
||||
{
|
||||
if (isset($this->_active[$this->firstKey($firstKey)]) &&
|
||||
isset($this->_active[$this->firstKey($firstKey)]
|
||||
[$this->secondKey($secondKey)]))
|
||||
{
|
||||
$this->_active[$this->firstKey($firstKey)]
|
||||
[$this->secondKey($secondKey)] .= $value;
|
||||
if (is_array($this->_active[$this->firstKey($firstKey)]
|
||||
[$this->secondKey($secondKey)]))
|
||||
{
|
||||
$this->_active[$this->firstKey($firstKey)]
|
||||
[$this->secondKey($secondKey)][] = $value;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->_active[$this->firstKey($firstKey)]
|
||||
[$this->secondKey($secondKey)] .= $value;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->_active[$this->firstKey($firstKey)]
|
||||
[$this->secondKey($secondKey)] = $value;
|
||||
if ($array)
|
||||
{
|
||||
$this->_active[$this->firstKey($firstKey)]
|
||||
[$this->secondKey($secondKey)] = [$value];
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->_active[$this->firstKey($firstKey)]
|
||||
[$this->secondKey($secondKey)] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -259,7 +292,7 @@ abstract class Mapper implements Mapperdoubleinterface, Mappersingleinterface
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function remove_(string $firstKey, ?string $secondKey = null)
|
||||
public function remove_(string $firstKey, ?string $secondKey = null): void
|
||||
{
|
||||
if (is_string($secondKey))
|
||||
{
|
||||
|
@ -1,2 +1,2 @@
|
||||
[CUSTOMCODE=abstractionMapperSingle]
|
||||
[CUSTOMCODE=abstractionMapperDouble]
|
||||
[CUSTOMCODE=abstractionMapperDouble+_]
|
@ -4,7 +4,7 @@
|
||||
"extends": "0",
|
||||
"guid": "44a3367c-f9e4-406b-b396-0f452bde0f03",
|
||||
"implements": [
|
||||
"fbc58009-fa16-4d49-a0dd-419c3b62d42f",
|
||||
"7921a2b3-b58c-4184-af3f-f58094f695a8",
|
||||
"78527c29-24ad-4735-ad4c-ec33a4952d9b"
|
||||
],
|
||||
"load_selection": null,
|
||||
|
61
src/4815e1c7-a433-443d-a112-d1e03d7df84b/README.md
Normal file
61
src/4815e1c7-a433-443d-a112-d1e03d7df84b/README.md
Normal file
@ -0,0 +1,61 @@
|
||||
```
|
||||
██████╗ ██████╗ ██╗ ██╗███████╗██████╗
|
||||
██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔══██╗
|
||||
██████╔╝██║ ██║██║ █╗ ██║█████╗ ██████╔╝
|
||||
██╔═══╝ ██║ ██║██║███╗██║██╔══╝ ██╔══██╗
|
||||
██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║
|
||||
╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
|
||||
```
|
||||
# class Database (Details)
|
||||
> namespace: **VDM\Joomla\Componentbuilder\Service**
|
||||
```uml
|
||||
@startuml
|
||||
class Database #Gold {
|
||||
+ register(Container $container) : void
|
||||
+ getLoad(Container $container) : Load
|
||||
+ getInsert(Container $container) : Insert
|
||||
+ getUpdate(Container $container) : Update
|
||||
}
|
||||
|
||||
note right of Database::register
|
||||
Registers the service provider with a DI container.
|
||||
|
||||
since: 3.2.0
|
||||
return: void
|
||||
end note
|
||||
|
||||
note right of Database::getLoad
|
||||
Get the Core Load Database
|
||||
|
||||
since: 3.2.0
|
||||
return: Load
|
||||
end note
|
||||
|
||||
note right of Database::getInsert
|
||||
Get the Core Insert Database
|
||||
|
||||
since: 3.2.0
|
||||
return: Insert
|
||||
end note
|
||||
|
||||
note right of Database::getUpdate
|
||||
Get the Core Update Database
|
||||
|
||||
since: 3.2.0
|
||||
return: Update
|
||||
end note
|
||||
|
||||
@enduml
|
||||
```
|
||||
|
||||
---
|
||||
```
|
||||
██╗ ██████╗██████╗
|
||||
██║██╔════╝██╔══██╗
|
||||
██║██║ ██████╔╝
|
||||
██ ██║██║ ██╔══██╗
|
||||
╚█████╔╝╚██████╗██████╔╝
|
||||
╚════╝ ╚═════╝╚═════╝
|
||||
```
|
||||
> Build with [Joomla Component Builder](https://git.vdm.dev/joomla/Component-Builder)
|
||||
|
88
src/4815e1c7-a433-443d-a112-d1e03d7df84b/code.php
Normal file
88
src/4815e1c7-a433-443d-a112-d1e03d7df84b/code.php
Normal file
@ -0,0 +1,88 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Component.Builder
|
||||
*
|
||||
* @created 4th September, 2022
|
||||
* @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\Service;
|
||||
|
||||
|
||||
use Joomla\DI\Container;
|
||||
use Joomla\DI\ServiceProviderInterface;
|
||||
use VDM\Joomla\Database\Load;
|
||||
use VDM\Joomla\Database\Insert;
|
||||
use VDM\Joomla\Database\Update;
|
||||
|
||||
|
||||
/**
|
||||
* Database Service Provider
|
||||
*
|
||||
* @since 3.2.0
|
||||
*/
|
||||
class Database implements ServiceProviderInterface
|
||||
{
|
||||
/**
|
||||
* Registers the service provider with a DI container.
|
||||
*
|
||||
* @param Container $container The DI container.
|
||||
*
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function register(Container $container)
|
||||
{
|
||||
$container->alias(Load::class, 'Load')
|
||||
->share('Load', [$this, 'getLoad'], true);
|
||||
|
||||
$container->alias(Insert::class, 'Insert')
|
||||
->share('Insert', [$this, 'getInsert'], true);
|
||||
|
||||
$container->alias(Update::class, 'Update')
|
||||
->share('Update', [$this, 'getUpdate'], true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Core Load Database
|
||||
*
|
||||
* @param Container $container The DI container.
|
||||
*
|
||||
* @return Load
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function getLoad(Container $container): Load
|
||||
{
|
||||
return new Load();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Core Insert Database
|
||||
*
|
||||
* @param Container $container The DI container.
|
||||
*
|
||||
* @return Insert
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function getInsert(Container $container): Insert
|
||||
{
|
||||
return new Insert();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Core Update Database
|
||||
*
|
||||
* @param Container $container The DI container.
|
||||
*
|
||||
* @return Update
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function getUpdate(Container $container): Update
|
||||
{
|
||||
return new Update();
|
||||
}
|
||||
}
|
||||
|
58
src/4815e1c7-a433-443d-a112-d1e03d7df84b/code.power
Normal file
58
src/4815e1c7-a433-443d-a112-d1e03d7df84b/code.power
Normal file
@ -0,0 +1,58 @@
|
||||
/**
|
||||
* Registers the service provider with a DI container.
|
||||
*
|
||||
* @param Container $container The DI container.
|
||||
*
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function register(Container $container)
|
||||
{
|
||||
$container->alias(Load::class, 'Load')
|
||||
->share('Load', [$this, 'getLoad'], true);
|
||||
|
||||
$container->alias(Insert::class, 'Insert')
|
||||
->share('Insert', [$this, 'getInsert'], true);
|
||||
|
||||
$container->alias(Update::class, 'Update')
|
||||
->share('Update', [$this, 'getUpdate'], true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Core Load Database
|
||||
*
|
||||
* @param Container $container The DI container.
|
||||
*
|
||||
* @return Load
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function getLoad(Container $container): Load
|
||||
{
|
||||
return new Load();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Core Insert Database
|
||||
*
|
||||
* @param Container $container The DI container.
|
||||
*
|
||||
* @return Insert
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function getInsert(Container $container): Insert
|
||||
{
|
||||
return new Insert();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Core Update Database
|
||||
*
|
||||
* @param Container $container The DI container.
|
||||
*
|
||||
* @return Update
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function getUpdate(Container $container): Update
|
||||
{
|
||||
return new Update();
|
||||
}
|
34
src/4815e1c7-a433-443d-a112-d1e03d7df84b/settings.json
Normal file
34
src/4815e1c7-a433-443d-a112-d1e03d7df84b/settings.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"add_head": "1",
|
||||
"add_licensing_template": "2",
|
||||
"extends": "0",
|
||||
"guid": "4815e1c7-a433-443d-a112-d1e03d7df84b",
|
||||
"implements": [
|
||||
"-1"
|
||||
],
|
||||
"load_selection": null,
|
||||
"name": "Database",
|
||||
"power_version": "1.0.0",
|
||||
"system_name": "JCB.Service.Database",
|
||||
"type": "class",
|
||||
"use_selection": {
|
||||
"use_selection0": {
|
||||
"use": "06f8eada-d59b-441c-b287-0aea1793da5a",
|
||||
"as": "default"
|
||||
},
|
||||
"use_selection1": {
|
||||
"use": "524eb8f6-38d4-47dc-92ad-98b94e099ac0",
|
||||
"as": "default"
|
||||
},
|
||||
"use_selection2": {
|
||||
"use": "cce56585-58b0-4f72-a92c-e2635ea52d83",
|
||||
"as": "default"
|
||||
}
|
||||
},
|
||||
"namespace": "VDM\\Joomla\\Componentbuilder.Service.Database",
|
||||
"description": "Database Service Provider\r\n\r\n@since 3.2.0",
|
||||
"implements_custom": "ServiceProviderInterface",
|
||||
"licensing_template": "\/**\r\n * @package Joomla.Component.Builder\r\n *\r\n * @created 4th September, 2022\r\n * @author Llewellyn van der Merwe <https:\/\/dev.vdm.io>\r\n * @git Joomla Component Builder <https:\/\/git.vdm.dev\/joomla\/Component-Builder>\r\n * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.\r\n * @license GNU General Public License version 2 or later; see LICENSE.txt\r\n *\/\r\n",
|
||||
"head": "use Joomla\\DI\\Container;\r\nuse Joomla\\DI\\ServiceProviderInterface;",
|
||||
"composer": ""
|
||||
}
|
105
src/4d4e76e9-12d9-4d19-b58c-b88974b2586a/README.md
Normal file
105
src/4d4e76e9-12d9-4d19-b58c-b88974b2586a/README.md
Normal file
@ -0,0 +1,105 @@
|
||||
```
|
||||
██████╗ ██████╗ ██╗ ██╗███████╗██████╗
|
||||
██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔══██╗
|
||||
██████╔╝██║ ██║██║ █╗ ██║█████╗ ██████╔╝
|
||||
██╔═══╝ ██║ ██║██║███╗██║██╔══╝ ██╔══██╗
|
||||
██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║
|
||||
╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
|
||||
```
|
||||
# abstract class MapperDouble (Details)
|
||||
> namespace: **VDM\Joomla\Componentbuilder\Abstraction**
|
||||
```uml
|
||||
@startuml
|
||||
abstract MapperDouble #Orange {
|
||||
+ array $active
|
||||
+ isActive(string $firstKey = null) : bool
|
||||
+ set(string $firstKey, string $secondKey, ...) : void
|
||||
+ get(string $firstKey, ?string $secondKey = null) : mixed
|
||||
+ exist(string $firstKey, ?string $secondKey = null) : bool
|
||||
+ add(string $firstKey, string $secondKey, ...) : void
|
||||
+ remove(string $firstKey, ?string $secondKey = null) : void
|
||||
# {abstract} firstKey(string $key) : string
|
||||
# {abstract} secondKey(string $key) : string
|
||||
}
|
||||
|
||||
note right of MapperDouble::isActive
|
||||
Check if any values are set in the active array.
|
||||
|
||||
since: 3.2.0
|
||||
return: bool
|
||||
end note
|
||||
|
||||
note left of MapperDouble::set
|
||||
Set dynamic content
|
||||
|
||||
since: 3.2.0
|
||||
return: void
|
||||
|
||||
arguments:
|
||||
string $firstKey
|
||||
string $secondKey
|
||||
mixed $value
|
||||
end note
|
||||
|
||||
note right of MapperDouble::get
|
||||
Get dynamic content
|
||||
|
||||
since: 3.2.0
|
||||
return: mixed
|
||||
end note
|
||||
|
||||
note left of MapperDouble::exist
|
||||
Does keys exist
|
||||
|
||||
since: 3.2.0
|
||||
return: bool
|
||||
end note
|
||||
|
||||
note right of MapperDouble::add
|
||||
Add dynamic content
|
||||
|
||||
since: 3.2.0
|
||||
return: void
|
||||
|
||||
arguments:
|
||||
string $firstKey
|
||||
string $secondKey
|
||||
mixed $value
|
||||
bool $array = false
|
||||
end note
|
||||
|
||||
note left of MapperDouble::remove
|
||||
Remove dynamic content
|
||||
|
||||
since: 3.2.0
|
||||
return: void
|
||||
end note
|
||||
|
||||
note right of MapperDouble::firstKey
|
||||
Model the first key
|
||||
|
||||
since: 3.2.0
|
||||
return: string
|
||||
end note
|
||||
|
||||
note left of MapperDouble::secondKey
|
||||
Model the second key
|
||||
|
||||
since: 3.2.0
|
||||
return: string
|
||||
end note
|
||||
|
||||
@enduml
|
||||
```
|
||||
|
||||
---
|
||||
```
|
||||
██╗ ██████╗██████╗
|
||||
██║██╔════╝██╔══██╗
|
||||
██║██║ ██████╔╝
|
||||
██ ██║██║ ██╔══██╗
|
||||
╚█████╔╝╚██████╗██████╔╝
|
||||
╚════╝ ╚═════╝╚═════╝
|
||||
```
|
||||
> Build with [Joomla Component Builder](https://git.vdm.dev/joomla/Component-Builder)
|
||||
|
205
src/4d4e76e9-12d9-4d19-b58c-b88974b2586a/code.php
Normal file
205
src/4d4e76e9-12d9-4d19-b58c-b88974b2586a/code.php
Normal file
@ -0,0 +1,205 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Component.Builder
|
||||
*
|
||||
* @created 4th September, 2022
|
||||
* @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\Abstraction;
|
||||
|
||||
|
||||
use VDM\Joomla\Componentbuilder\Interfaces\Mapperdoubleinterface;
|
||||
|
||||
|
||||
/**
|
||||
* Compiler Mapper Double
|
||||
*
|
||||
* @since 3.2.0
|
||||
*/
|
||||
abstract class MapperDouble implements Mapperdoubleinterface
|
||||
{
|
||||
|
||||
/**
|
||||
* The Dynamic Content
|
||||
*
|
||||
* @var array
|
||||
* @since 3.2.0
|
||||
**/
|
||||
public array $active = [];
|
||||
|
||||
/**
|
||||
* Check if any values are set in the active array.
|
||||
*
|
||||
* @param string|null $firstKey Optional. The first key to check for values.
|
||||
*
|
||||
* @return bool True if the active array or the specified subarray is not empty, false otherwise.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function isActive(string $firstKey = null): bool
|
||||
{
|
||||
// If a firstKey is provided, check if it has any values.
|
||||
if (is_string($firstKey))
|
||||
{
|
||||
// Get the first key from the input parameter and check if it exists in the active array.
|
||||
$firstKey = $this->firstKey($firstKey);
|
||||
if (isset($this->active[$firstKey]))
|
||||
{
|
||||
return !empty($this->active[$firstKey]);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// If no firstKey is provided, check if the entire active array has any values.
|
||||
return !empty($this->active);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set dynamic content
|
||||
*
|
||||
* @param string $firstKey The first key
|
||||
* @param string $secondKey The second key
|
||||
* @param mixed $value The values to set
|
||||
*
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function set(string $firstKey, string $secondKey, $value): void
|
||||
{
|
||||
$this->active[$this->firstKey($firstKey)]
|
||||
[$this->secondKey($secondKey)] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get dynamic content
|
||||
*
|
||||
* @param string $firstKey The first key
|
||||
* @param string|null $secondKey The second key
|
||||
*
|
||||
* @return mixed
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function get(string $firstKey, ?string $secondKey = null)
|
||||
{
|
||||
if (is_string($secondKey))
|
||||
{
|
||||
return $this->active[$this->firstKey($firstKey)]
|
||||
[$this->secondKey($secondKey)] ?? null;
|
||||
}
|
||||
return $this->active[$this->firstKey($firstKey)] ?? null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Does keys exist
|
||||
*
|
||||
* @param string $firstKey The first key
|
||||
* @param string|null $secondKey The second key
|
||||
*
|
||||
* @return bool
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function exist(string $firstKey, ?string $secondKey = null): bool
|
||||
{
|
||||
if (is_string($secondKey) && isset($this->active[$this->firstKey($firstKey)]) &&
|
||||
isset($this->active[$this->firstKey($firstKey)]
|
||||
[$this->secondKey($secondKey)]))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
elseif ($secondKey === null && isset($this->active[$this->firstKey($firstKey)]))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add dynamic content
|
||||
*
|
||||
* @param string $firstKey The first key
|
||||
* @param string $secondKey The second key
|
||||
* @param mixed $value The values to set
|
||||
* @param bool $array The is array switch
|
||||
*
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function add(string $firstKey, string $secondKey, $value, bool $array = false): void
|
||||
{
|
||||
if (isset($this->active[$this->firstKey($firstKey)]) &&
|
||||
isset($this->active[$this->firstKey($firstKey)]
|
||||
[$this->secondKey($secondKey)]))
|
||||
{
|
||||
if (is_array($this->active[$this->firstKey($firstKey)]
|
||||
[$this->secondKey($secondKey)]))
|
||||
{
|
||||
$this->active[$this->firstKey($firstKey)]
|
||||
[$this->secondKey($secondKey)][] = $value;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->active[$this->firstKey($firstKey)]
|
||||
[$this->secondKey($secondKey)] .= $value;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($array)
|
||||
{
|
||||
$this->active[$this->firstKey($firstKey)]
|
||||
[$this->secondKey($secondKey)] = [$value];
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->active[$this->firstKey($firstKey)]
|
||||
[$this->secondKey($secondKey)] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove dynamic content
|
||||
*
|
||||
* @param string $firstKey The first key
|
||||
* @param string|null $secondKey The second key
|
||||
*
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function remove(string $firstKey, ?string $secondKey = null): void
|
||||
{
|
||||
if (is_string($secondKey))
|
||||
{
|
||||
unset($this->active[$this->firstKey($firstKey)]
|
||||
[$this->secondKey($secondKey)]);
|
||||
}
|
||||
else
|
||||
{
|
||||
unset($this->active[$this->firstKey($firstKey)]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Model the first key
|
||||
*
|
||||
* @param string $key The first key to model
|
||||
*
|
||||
* @return string
|
||||
* @since 3.2.0
|
||||
*/
|
||||
abstract protected function firstKey(string $key): string;
|
||||
|
||||
/**
|
||||
* Model the second key
|
||||
*
|
||||
* @param string $key The second key to model
|
||||
*
|
||||
* @return string
|
||||
* @since 3.2.0
|
||||
*/
|
||||
abstract protected function secondKey(string $key): string;
|
||||
}
|
||||
|
1
src/4d4e76e9-12d9-4d19-b58c-b88974b2586a/code.power
Normal file
1
src/4d4e76e9-12d9-4d19-b58c-b88974b2586a/code.power
Normal file
@ -0,0 +1 @@
|
||||
[CUSTOMCODE=abstractionMapperDouble+,]
|
20
src/4d4e76e9-12d9-4d19-b58c-b88974b2586a/settings.json
Normal file
20
src/4d4e76e9-12d9-4d19-b58c-b88974b2586a/settings.json
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"add_head": "0",
|
||||
"add_licensing_template": "2",
|
||||
"extends": "0",
|
||||
"guid": "4d4e76e9-12d9-4d19-b58c-b88974b2586a",
|
||||
"implements": [
|
||||
"fbc58009-fa16-4d49-a0dd-419c3b62d42f"
|
||||
],
|
||||
"load_selection": null,
|
||||
"name": "MapperDouble",
|
||||
"power_version": "1.0.0",
|
||||
"system_name": "JCB.Abstraction.MapperDouble",
|
||||
"type": "abstract class",
|
||||
"use_selection": null,
|
||||
"namespace": "VDM\\Joomla\\Componentbuilder.Abstraction.MapperDouble",
|
||||
"description": "Compiler Mapper Double\r\n\r\n@since 3.2.0",
|
||||
"licensing_template": "\/**\r\n * @package Joomla.Component.Builder\r\n *\r\n * @created 4th September, 2022\r\n * @author Llewellyn van der Merwe <https:\/\/dev.vdm.io>\r\n * @git Joomla Component Builder <https:\/\/git.vdm.dev\/joomla\/Component-Builder>\r\n * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.\r\n * @license GNU General Public License version 2 or later; see LICENSE.txt\r\n *\/\r\n",
|
||||
"head": "",
|
||||
"composer": ""
|
||||
}
|
@ -8,9 +8,10 @@
|
||||
```
|
||||
# final class Insert (Details)
|
||||
> namespace: **VDM\Joomla\Database**
|
||||
> extends: **Database**
|
||||
```uml
|
||||
@startuml
|
||||
class Insert << (F,LightGreen) >> #Green {
|
||||
class Insert << (F,LightGreen) >> #RoyalBlue {
|
||||
# bool $defaults
|
||||
+ defaults(bool $trigger = true) : void
|
||||
+ rows(array $data, string $table, ...) : bool
|
||||
|
46
src/52a1d14f-304a-431c-8fa4-411179942db5/README.md
Normal file
46
src/52a1d14f-304a-431c-8fa4-411179942db5/README.md
Normal file
@ -0,0 +1,46 @@
|
||||
```
|
||||
██████╗ ██████╗ ██╗ ██╗███████╗██████╗
|
||||
██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔══██╗
|
||||
██████╔╝██║ ██║██║ █╗ ██║█████╗ ██████╔╝
|
||||
██╔═══╝ ██║ ██║██║███╗██║██╔══╝ ██╔══██╗
|
||||
██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║
|
||||
╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
|
||||
```
|
||||
# trait VarExport (Details)
|
||||
> namespace: **VDM\Joomla\Abstraction\StorageRegistry\Traits**
|
||||
```uml
|
||||
@startuml
|
||||
class VarExport << (T,Orange) >> #Turquoise {
|
||||
# int $indent
|
||||
+ varExport(?string $path = null, int $indentation = 2) : ?string
|
||||
# convertIndent(array $matches) : string
|
||||
}
|
||||
|
||||
note right of VarExport::varExport
|
||||
Method to export a set of values to a PHP array
|
||||
|
||||
since: 3.4.0
|
||||
return: ?string
|
||||
end note
|
||||
|
||||
note right of VarExport::convertIndent
|
||||
Method to convert found of grouped spaces to system indentation
|
||||
|
||||
since: 3.4.0
|
||||
return: string
|
||||
end note
|
||||
|
||||
@enduml
|
||||
```
|
||||
|
||||
---
|
||||
```
|
||||
██╗ ██████╗██████╗
|
||||
██║██╔════╝██╔══██╗
|
||||
██║██║ ██████╔╝
|
||||
██ ██║██║ ██╔══██╗
|
||||
╚█████╔╝╚██████╗██████╔╝
|
||||
╚════╝ ╚═════╝╚═════╝
|
||||
```
|
||||
> Build with [Joomla Component Builder](https://git.vdm.dev/joomla/Component-Builder)
|
||||
|
105
src/52a1d14f-304a-431c-8fa4-411179942db5/code.php
Normal file
105
src/52a1d14f-304a-431c-8fa4-411179942db5/code.php
Normal file
@ -0,0 +1,105 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Component.Builder
|
||||
*
|
||||
* @created 4th September, 2022
|
||||
* @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\Abstraction\StorageRegistry\Traits;
|
||||
|
||||
|
||||
use VDM\Joomla\Componentbuilder\Compiler\Utilities\Indent;
|
||||
|
||||
|
||||
/**
|
||||
* Var Export Values
|
||||
*
|
||||
* @since 3.2.0
|
||||
*/
|
||||
trait VarExport
|
||||
{
|
||||
/**
|
||||
* Default indentation value
|
||||
*
|
||||
* @var int
|
||||
* @since 3.4.0
|
||||
*/
|
||||
protected int $indent = 2;
|
||||
|
||||
/**
|
||||
* Method to export a set of values to a PHP array
|
||||
*
|
||||
* @param string|null $path Registry path (e.g. joomla.content.showauthor)
|
||||
* @param int $indentation The default indentation
|
||||
*
|
||||
* @return ?string The var set being exported as a PHP array
|
||||
* @since 3.4.0
|
||||
*/
|
||||
public function varExport(?string $path = null, int $indentation = 2): ?string
|
||||
{
|
||||
// Load the data array
|
||||
if ($path === null && $this->isActive())
|
||||
{
|
||||
$data = $this->allActive();
|
||||
}
|
||||
else
|
||||
{
|
||||
$data = $this->get($path);
|
||||
}
|
||||
|
||||
// check if we have data
|
||||
if ($data === null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
// set the default indentation value
|
||||
$this->indent = $indentation;
|
||||
|
||||
// convert to string
|
||||
$data = var_export($data, true);
|
||||
|
||||
// replace all space with system indentation
|
||||
$data = preg_replace_callback("/^(\s{2})(\s{2})?(\s{2})?(\s{2})?(\s{2})?(\s{2})?(\s{2})?(\s{2})?(\s{2})?(\s{2})?(\s{2})?(.*)/m", [$this, 'convertIndent'], $data);
|
||||
|
||||
// convert all array to []
|
||||
$array = preg_split("/\r\n|\n|\r/", $data);
|
||||
$array = preg_replace(["/\s*array\s\($/", "/\)(,)?$/", "/\s=>\s$/"], [NULL, ']$1', ' => ['], $array);
|
||||
$data = implode(PHP_EOL, array_filter(["["] + $array));
|
||||
|
||||
// add needed indentation to the last ]
|
||||
$data = preg_replace("/^(\])/m", Indent::_($indentation) . '$1', $data);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to convert found of grouped spaces to system indentation
|
||||
*
|
||||
* @param array $matches The regex array of matching values
|
||||
*
|
||||
* @return string The resulting string.
|
||||
* @since 3.4.0
|
||||
*/
|
||||
protected function convertIndent(array $matches): string
|
||||
{
|
||||
// set number to indent by default
|
||||
$indent = Indent::_($this->indent);
|
||||
|
||||
// update each found space (group) with one indentation
|
||||
foreach (range(1, 11) as $space)
|
||||
{
|
||||
if (strlen((string) $matches[$space]) > 0)
|
||||
{
|
||||
$indent .= Indent::_(1);
|
||||
}
|
||||
}
|
||||
|
||||
return $indent . $matches[12];
|
||||
}
|
||||
}
|
||||
|
79
src/52a1d14f-304a-431c-8fa4-411179942db5/code.power
Normal file
79
src/52a1d14f-304a-431c-8fa4-411179942db5/code.power
Normal file
@ -0,0 +1,79 @@
|
||||
/**
|
||||
* Default indentation value
|
||||
*
|
||||
* @var int
|
||||
* @since 3.4.0
|
||||
*/
|
||||
protected int $indent = 2;
|
||||
|
||||
/**
|
||||
* Method to export a set of values to a PHP array
|
||||
*
|
||||
* @param string|null $path Registry path (e.g. joomla.content.showauthor)
|
||||
* @param int $indentation The default indentation
|
||||
*
|
||||
* @return ?string The var set being exported as a PHP array
|
||||
* @since 3.4.0
|
||||
*/
|
||||
public function varExport(?string $path = null, int $indentation = 2): ?string
|
||||
{
|
||||
// Load the data array
|
||||
if ($path === null && $this->isActive())
|
||||
{
|
||||
$data = $this->allActive();
|
||||
}
|
||||
else
|
||||
{
|
||||
$data = $this->get($path);
|
||||
}
|
||||
|
||||
// check if we have data
|
||||
if ($data === null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
// set the default indentation value
|
||||
$this->indent = $indentation;
|
||||
|
||||
// convert to string
|
||||
$data = var_export($data, true);
|
||||
|
||||
// replace all space with system indentation
|
||||
$data = preg_replace_callback("/^(\s{2})(\s{2})?(\s{2})?(\s{2})?(\s{2})?(\s{2})?(\s{2})?(\s{2})?(\s{2})?(\s{2})?(\s{2})?(.*)/m", [$this, 'convertIndent'], $data);
|
||||
|
||||
// convert all array to []
|
||||
$array = preg_split("/\r\n|\n|\r/", $data);
|
||||
$array = preg_replace(["/\s*array\s\($/", "/\)(,)?$/", "/\s=>\s$/"], [NULL, ']$1', ' => ['], $array);
|
||||
$data = implode(PHP_EOL, array_filter(["["] + $array));
|
||||
|
||||
// add needed indentation to the last ]
|
||||
$data = preg_replace("/^(\])/m", Indent::_($indentation) . '$1', $data);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to convert found of grouped spaces to system indentation
|
||||
*
|
||||
* @param array $matches The regex array of matching values
|
||||
*
|
||||
* @return string The resulting string.
|
||||
* @since 3.4.0
|
||||
*/
|
||||
protected function convertIndent(array $matches): string
|
||||
{
|
||||
// set number to indent by default
|
||||
$indent = Indent::_($this->indent);
|
||||
|
||||
// update each found space (group) with one indentation
|
||||
foreach (range(1, 11) as $space)
|
||||
{
|
||||
if (strlen((string) $matches[$space]) > 0)
|
||||
{
|
||||
$indent .= Indent::_(1);
|
||||
}
|
||||
}
|
||||
|
||||
return $indent . $matches[12];
|
||||
}
|
23
src/52a1d14f-304a-431c-8fa4-411179942db5/settings.json
Normal file
23
src/52a1d14f-304a-431c-8fa4-411179942db5/settings.json
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"add_head": "0",
|
||||
"add_licensing_template": "2",
|
||||
"extends": "0",
|
||||
"guid": "52a1d14f-304a-431c-8fa4-411179942db5",
|
||||
"implements": null,
|
||||
"load_selection": null,
|
||||
"name": "VarExport",
|
||||
"power_version": "1.0.0",
|
||||
"system_name": "VDM.Abstraction.StorageRegistry.Traits.VarExport",
|
||||
"type": "trait",
|
||||
"use_selection": {
|
||||
"use_selection0": {
|
||||
"use": "a68c010b-e92e-47d5-8a44-d23cfddeb6c6",
|
||||
"as": "default"
|
||||
}
|
||||
},
|
||||
"namespace": "VDM\\Joomla\\Abstraction.StorageRegistry.Traits.VarExport",
|
||||
"description": "Var Export Values\r\n\r\n@since 3.2.0",
|
||||
"licensing_template": "\/**\r\n * @package Joomla.Component.Builder\r\n *\r\n * @created 4th September, 2022\r\n * @author Llewellyn van der Merwe <https:\/\/dev.vdm.io>\r\n * @git Joomla Component Builder <https:\/\/git.vdm.dev\/joomla\/Component-Builder>\r\n * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.\r\n * @license GNU General Public License version 2 or later; see LICENSE.txt\r\n *\/\r\n",
|
||||
"head": "",
|
||||
"composer": ""
|
||||
}
|
37
src/59b1a2ea-d77e-4040-ac8c-e65cd8743e9b/README.md
Normal file
37
src/59b1a2ea-d77e-4040-ac8c-e65cd8743e9b/README.md
Normal file
@ -0,0 +1,37 @@
|
||||
```
|
||||
██████╗ ██████╗ ██╗ ██╗███████╗██████╗
|
||||
██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔══██╗
|
||||
██████╔╝██║ ██║██║ █╗ ██║█████╗ ██████╔╝
|
||||
██╔═══╝ ██║ ██║██║███╗██║██╔══╝ ██╔══██╗
|
||||
██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║
|
||||
╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
|
||||
```
|
||||
# trait GetString (Details)
|
||||
> namespace: **VDM\Joomla\Abstraction\StorageRegistry\Traits**
|
||||
```uml
|
||||
@startuml
|
||||
class GetString << (T,Orange) >> #Turquoise {
|
||||
+ getString(string $path, ?string $default = null) : ?string
|
||||
}
|
||||
|
||||
note right of GetString::getString
|
||||
Get a registry path if the return value is a string
|
||||
|
||||
since: 3.2.0
|
||||
return: ?string
|
||||
end note
|
||||
|
||||
@enduml
|
||||
```
|
||||
|
||||
---
|
||||
```
|
||||
██╗ ██████╗██████╗
|
||||
██║██╔════╝██╔══██╗
|
||||
██║██║ ██████╔╝
|
||||
██ ██║██║ ██╔══██╗
|
||||
╚█████╔╝╚██████╗██████╔╝
|
||||
╚════╝ ╚═════╝╚═════╝
|
||||
```
|
||||
> Build with [Joomla Component Builder](https://git.vdm.dev/joomla/Component-Builder)
|
||||
|
50
src/59b1a2ea-d77e-4040-ac8c-e65cd8743e9b/code.php
Normal file
50
src/59b1a2ea-d77e-4040-ac8c-e65cd8743e9b/code.php
Normal file
@ -0,0 +1,50 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Component.Builder
|
||||
*
|
||||
* @created 4th September, 2022
|
||||
* @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\Abstraction\StorageRegistry\Traits;
|
||||
|
||||
|
||||
/**
|
||||
* Get String Values
|
||||
*
|
||||
* @since 3.2.0
|
||||
*/
|
||||
trait GetString
|
||||
{
|
||||
/**
|
||||
* Get a registry path if the return value is a string
|
||||
*
|
||||
* @param string $path Registry path (e.g. joomla.content.showauthor)
|
||||
* @param string|null $default A default value
|
||||
*
|
||||
* @return string|null
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function getString(string $path, ?string $default = null): ?string
|
||||
{
|
||||
// Return default value if path is empty
|
||||
if (empty($path))
|
||||
{
|
||||
return $default;
|
||||
}
|
||||
|
||||
// get the value
|
||||
if (($node = $this->get($path)) !== null
|
||||
&& is_string($node)
|
||||
&& strlen((string) $node) > 0)
|
||||
{
|
||||
return $node;
|
||||
}
|
||||
|
||||
return $default;
|
||||
}
|
||||
}
|
||||
|
27
src/59b1a2ea-d77e-4040-ac8c-e65cd8743e9b/code.power
Normal file
27
src/59b1a2ea-d77e-4040-ac8c-e65cd8743e9b/code.power
Normal file
@ -0,0 +1,27 @@
|
||||
/**
|
||||
* Get a registry path if the return value is a string
|
||||
*
|
||||
* @param string $path Registry path (e.g. joomla.content.showauthor)
|
||||
* @param string|null $default A default value
|
||||
*
|
||||
* @return string|null
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function getString(string $path, ?string $default = null): ?string
|
||||
{
|
||||
// Return default value if path is empty
|
||||
if (empty($path))
|
||||
{
|
||||
return $default;
|
||||
}
|
||||
|
||||
// get the value
|
||||
if (($node = $this->get($path)) !== null
|
||||
&& is_string($node)
|
||||
&& strlen((string) $node) > 0)
|
||||
{
|
||||
return $node;
|
||||
}
|
||||
|
||||
return $default;
|
||||
}
|
18
src/59b1a2ea-d77e-4040-ac8c-e65cd8743e9b/settings.json
Normal file
18
src/59b1a2ea-d77e-4040-ac8c-e65cd8743e9b/settings.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"add_head": "0",
|
||||
"add_licensing_template": "2",
|
||||
"extends": "0",
|
||||
"guid": "59b1a2ea-d77e-4040-ac8c-e65cd8743e9b",
|
||||
"implements": null,
|
||||
"load_selection": null,
|
||||
"name": "GetString",
|
||||
"power_version": "1.0.0",
|
||||
"system_name": "VDM.Abstraction.StorageRegistry.Traits.GetString",
|
||||
"type": "trait",
|
||||
"use_selection": null,
|
||||
"namespace": "VDM\\Joomla\\Abstraction.StorageRegistry.Traits.GetString",
|
||||
"description": "Get String Values\r\n\r\n@since 3.2.0",
|
||||
"licensing_template": "\/**\r\n * @package Joomla.Component.Builder\r\n *\r\n * @created 4th September, 2022\r\n * @author Llewellyn van der Merwe <https:\/\/dev.vdm.io>\r\n * @git Joomla Component Builder <https:\/\/git.vdm.dev\/joomla\/Component-Builder>\r\n * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.\r\n * @license GNU General Public License version 2 or later; see LICENSE.txt\r\n *\/\r\n",
|
||||
"head": "",
|
||||
"composer": ""
|
||||
}
|
42
src/64a6ff6c-069c-4a11-a76b-db5e36c27690/README.md
Normal file
42
src/64a6ff6c-069c-4a11-a76b-db5e36c27690/README.md
Normal file
@ -0,0 +1,42 @@
|
||||
```
|
||||
██████╗ ██████╗ ██╗ ██╗███████╗██████╗
|
||||
██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔══██╗
|
||||
██████╔╝██║ ██║██║ █╗ ██║█████╗ ██████╔╝
|
||||
██╔═══╝ ██║ ██║██║███╗██║██╔══╝ ██╔══██╗
|
||||
██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║
|
||||
╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
|
||||
```
|
||||
# abstract class Base64Helper (Details)
|
||||
> namespace: **VDM\Joomla\Utilities**
|
||||
```uml
|
||||
@startuml
|
||||
abstract Base64Helper #Orange {
|
||||
+ {static} open(?string $data, ?string $key = '__.o0=base64=Oo.__', ...) : ?string
|
||||
}
|
||||
|
||||
note right of Base64Helper::open
|
||||
open base64 string if stored as base64 (in JCB)
|
||||
|
||||
since: 3.2.0
|
||||
return: ?string
|
||||
|
||||
arguments:
|
||||
?string $data
|
||||
?string $key = '__.o0=base64=Oo.__'
|
||||
?string $default = 'string'
|
||||
end note
|
||||
|
||||
@enduml
|
||||
```
|
||||
|
||||
---
|
||||
```
|
||||
██╗ ██████╗██████╗
|
||||
██║██╔════╝██╔══██╗
|
||||
██║██║ ██████╔╝
|
||||
██ ██║██║ ██╔══██╗
|
||||
╚█████╔╝╚██████╗██████╔╝
|
||||
╚════╝ ╚═════╝╚═════╝
|
||||
```
|
||||
> Build with [Joomla Component Builder](https://git.vdm.dev/joomla/Component-Builder)
|
||||
|
65
src/64a6ff6c-069c-4a11-a76b-db5e36c27690/code.php
Normal file
65
src/64a6ff6c-069c-4a11-a76b-db5e36c27690/code.php
Normal file
@ -0,0 +1,65 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Component.Builder
|
||||
*
|
||||
* @created 4th September, 2022
|
||||
* @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\Utilities;
|
||||
|
||||
|
||||
use VDM\Joomla\Utilities\StringHelper;
|
||||
|
||||
|
||||
/**
|
||||
* The Base64 Helper
|
||||
*
|
||||
* @since 3.2.0
|
||||
*/
|
||||
abstract class Base64Helper
|
||||
{
|
||||
/**
|
||||
* open base64 string if stored as base64 (in JCB)
|
||||
*
|
||||
* @param string|null $data The base64 string
|
||||
* @param string|null $key We store the string with that suffix :)
|
||||
* @param string|null $default The default switch
|
||||
*
|
||||
* @return string|null The opened string
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public static function open(?string $data, ?string $key = '__.o0=base64=Oo.__', ?string $default = 'string'): ?string
|
||||
{
|
||||
// check that we have a string
|
||||
if (StringHelper::check($data))
|
||||
{
|
||||
// check if we have a key
|
||||
if (StringHelper::check($key))
|
||||
{
|
||||
if (strpos($data, $key) !== false)
|
||||
{
|
||||
return base64_decode(str_replace($key, '', $data));
|
||||
}
|
||||
}
|
||||
|
||||
// fallback to this, not perfect method
|
||||
if (base64_encode(base64_decode($data, true)) === $data)
|
||||
{
|
||||
return base64_decode($data);
|
||||
}
|
||||
}
|
||||
|
||||
// check if we should just return the string
|
||||
if ('string' === $default)
|
||||
{
|
||||
return $data;
|
||||
}
|
||||
|
||||
return $default;
|
||||
}
|
||||
}
|
||||
|
39
src/64a6ff6c-069c-4a11-a76b-db5e36c27690/code.power
Normal file
39
src/64a6ff6c-069c-4a11-a76b-db5e36c27690/code.power
Normal file
@ -0,0 +1,39 @@
|
||||
/**
|
||||
* open base64 string if stored as base64 (in JCB)
|
||||
*
|
||||
* @param string|null $data The base64 string
|
||||
* @param string|null $key We store the string with that suffix :)
|
||||
* @param string|null $default The default switch
|
||||
*
|
||||
* @return string|null The opened string
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public static function open(?string $data, ?string $key = '__.o0=base64=Oo.__', ?string $default = 'string'): ?string
|
||||
{
|
||||
// check that we have a string
|
||||
if (StringHelper::check($data))
|
||||
{
|
||||
// check if we have a key
|
||||
if (StringHelper::check($key))
|
||||
{
|
||||
if (strpos($data, $key) !== false)
|
||||
{
|
||||
return base64_decode(str_replace($key, '', $data));
|
||||
}
|
||||
}
|
||||
|
||||
// fallback to this, not perfect method
|
||||
if (base64_encode(base64_decode($data, true)) === $data)
|
||||
{
|
||||
return base64_decode($data);
|
||||
}
|
||||
}
|
||||
|
||||
// check if we should just return the string
|
||||
if ('string' === $default)
|
||||
{
|
||||
return $data;
|
||||
}
|
||||
|
||||
return $default;
|
||||
}
|
23
src/64a6ff6c-069c-4a11-a76b-db5e36c27690/settings.json
Normal file
23
src/64a6ff6c-069c-4a11-a76b-db5e36c27690/settings.json
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"add_head": "0",
|
||||
"add_licensing_template": "2",
|
||||
"extends": "0",
|
||||
"guid": "64a6ff6c-069c-4a11-a76b-db5e36c27690",
|
||||
"implements": null,
|
||||
"load_selection": null,
|
||||
"name": "Base64Helper",
|
||||
"power_version": "1.0.0",
|
||||
"system_name": "Utilities Base64 Helper",
|
||||
"type": "abstract class",
|
||||
"use_selection": {
|
||||
"use_selection0": {
|
||||
"use": "1f28cb53-60d9-4db1-b517-3c7dc6b429ef",
|
||||
"as": "default"
|
||||
}
|
||||
},
|
||||
"namespace": "VDM\\Joomla\\Utilities.Base64Helper",
|
||||
"description": "The Base64 Helper\r\n\r\n@since 3.2.0",
|
||||
"licensing_template": "\/**\r\n * @package Joomla.Component.Builder\r\n *\r\n * @created 4th September, 2022\r\n * @author Llewellyn van der Merwe <https:\/\/dev.vdm.io>\r\n * @git Joomla Component Builder <https:\/\/git.vdm.dev\/joomla\/Component-Builder>\r\n * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.\r\n * @license GNU General Public License version 2 or later; see LICENSE.txt\r\n *\/\r\n",
|
||||
"head": "",
|
||||
"composer": ""
|
||||
}
|
83
src/64e291c2-11f1-423d-a44d-837cc12cc017/README.md
Normal file
83
src/64e291c2-11f1-423d-a44d-837cc12cc017/README.md
Normal file
@ -0,0 +1,83 @@
|
||||
```
|
||||
██████╗ ██████╗ ██╗ ██╗███████╗██████╗
|
||||
██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔══██╗
|
||||
██████╔╝██║ ██║██║ █╗ ██║█████╗ ██████╔╝
|
||||
██╔═══╝ ██║ ██║██║███╗██║██╔══╝ ██╔══██╗
|
||||
██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║
|
||||
╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
|
||||
```
|
||||
# interface Storageregistryinterface (Details)
|
||||
> namespace: **VDM\Joomla\Interfaces**
|
||||
```uml
|
||||
@startuml
|
||||
interface Storageregistryinterface #Lavender {
|
||||
+ set(string $path, mixed $value) : void
|
||||
+ add(string $path, mixed $value, ...) : void
|
||||
+ get(string $path, mixed $default = null) : mixed
|
||||
+ remove(string $path) : void
|
||||
+ exists(string $path) : bool
|
||||
+ setSeparator(?string $value) : void
|
||||
}
|
||||
|
||||
note right of Storageregistryinterface::set
|
||||
Sets a value into the storage using multiple keys.
|
||||
|
||||
since: 3.2.0
|
||||
return: void
|
||||
end note
|
||||
|
||||
note right of Storageregistryinterface::add
|
||||
Adds content into the storage. If a key exists,
|
||||
it either appends or concatenates based on $asArray switch.
|
||||
|
||||
since: 3.2.0
|
||||
return: void
|
||||
|
||||
arguments:
|
||||
string $path
|
||||
mixed $value
|
||||
bool $asArray = false
|
||||
end note
|
||||
|
||||
note right of Storageregistryinterface::get
|
||||
Retrieves a value (or sub-array) from the storage using multiple keys.
|
||||
|
||||
since: 3.2.0
|
||||
return: mixed
|
||||
end note
|
||||
|
||||
note right of Storageregistryinterface::remove
|
||||
Removes a value (or sub-array) from the storage using multiple keys.
|
||||
|
||||
since: 3.2.0
|
||||
return: void
|
||||
end note
|
||||
|
||||
note right of Storageregistryinterface::exists
|
||||
Checks the existence of a particular location in the storage using multiple keys.
|
||||
|
||||
since: 3.2.0
|
||||
return: bool
|
||||
end note
|
||||
|
||||
note right of Storageregistryinterface::setSeparator
|
||||
Sets a separator value
|
||||
|
||||
since: 3.2.0
|
||||
return: void
|
||||
end note
|
||||
|
||||
@enduml
|
||||
```
|
||||
|
||||
---
|
||||
```
|
||||
██╗ ██████╗██████╗
|
||||
██║██╔════╝██╔══██╗
|
||||
██║██║ ██████╔╝
|
||||
██ ██║██║ ██╔══██╗
|
||||
╚█████╔╝╚██████╗██████╔╝
|
||||
╚════╝ ╚═════╝╚═════╝
|
||||
```
|
||||
> Build with [Joomla Component Builder](https://git.vdm.dev/joomla/Component-Builder)
|
||||
|
92
src/64e291c2-11f1-423d-a44d-837cc12cc017/code.php
Normal file
92
src/64e291c2-11f1-423d-a44d-837cc12cc017/code.php
Normal file
@ -0,0 +1,92 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Component.Builder
|
||||
*
|
||||
* @created 4th September, 2022
|
||||
* @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\Interfaces;
|
||||
|
||||
|
||||
/**
|
||||
* The Storage Registry Interface
|
||||
*
|
||||
* @since 3.2.0
|
||||
*/
|
||||
interface Storageregistryinterface
|
||||
{
|
||||
/**
|
||||
* Sets a value into the storage using multiple keys.
|
||||
*
|
||||
* @param string $path Storage path (e.g. vdm.content.builder)
|
||||
* @param mixed $value Value of entry
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the path values are not a number or string.
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function set(string $path, $value): void;
|
||||
|
||||
/**
|
||||
* Adds content into the storage. If a key exists,
|
||||
* it either appends or concatenates based on $asArray switch.
|
||||
*
|
||||
* @param string $path Storage path (e.g. vdm.content.builder)
|
||||
* @param mixed $value Value of entry
|
||||
* @param bool $asArray Determines if the new value should be treated as an array. Default is false.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the path values are not a number or string.
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function add(string $path, $value, bool $asArray = false): void;
|
||||
|
||||
/**
|
||||
* Retrieves a value (or sub-array) from the storage using multiple keys.
|
||||
*
|
||||
* @param string $path Storage path (e.g. vdm.content.builder)
|
||||
* @param mixed $default Optional default value, returned if the internal doesn't exist.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the path values are not a number or string.
|
||||
* @return mixed The value or sub-array from the storage. Null if the location doesn't exist.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function get(string $path, $default = null);
|
||||
|
||||
/**
|
||||
* Removes a value (or sub-array) from the storage using multiple keys.
|
||||
*
|
||||
* @param string $path Storage path (e.g. vdm.content.builder)
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the path values are not a number or string.
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function remove(string $path): void;
|
||||
|
||||
/**
|
||||
* Checks the existence of a particular location in the storage using multiple keys.
|
||||
*
|
||||
* @param string $path Storage path (e.g. vdm.content.builder)
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the path values are not a number or string.
|
||||
* @return bool True if the location exists, false otherwise.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function exists(string $path): bool;
|
||||
|
||||
/**
|
||||
* Sets a separator value
|
||||
*
|
||||
* @param string|null $value The value to set.
|
||||
*
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function setSeparator(?string $value): void;
|
||||
}
|
||||
|
69
src/64e291c2-11f1-423d-a44d-837cc12cc017/code.power
Normal file
69
src/64e291c2-11f1-423d-a44d-837cc12cc017/code.power
Normal file
@ -0,0 +1,69 @@
|
||||
/**
|
||||
* Sets a value into the storage using multiple keys.
|
||||
*
|
||||
* @param string $path Storage path (e.g. vdm.content.builder)
|
||||
* @param mixed $value Value of entry
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the path values are not a number or string.
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function set(string $path, $value): void;
|
||||
|
||||
/**
|
||||
* Adds content into the storage. If a key exists,
|
||||
* it either appends or concatenates based on $asArray switch.
|
||||
*
|
||||
* @param string $path Storage path (e.g. vdm.content.builder)
|
||||
* @param mixed $value Value of entry
|
||||
* @param bool $asArray Determines if the new value should be treated as an array. Default is false.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the path values are not a number or string.
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function add(string $path, $value, bool $asArray = false): void;
|
||||
|
||||
/**
|
||||
* Retrieves a value (or sub-array) from the storage using multiple keys.
|
||||
*
|
||||
* @param string $path Storage path (e.g. vdm.content.builder)
|
||||
* @param mixed $default Optional default value, returned if the internal doesn't exist.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the path values are not a number or string.
|
||||
* @return mixed The value or sub-array from the storage. Null if the location doesn't exist.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function get(string $path, $default = null);
|
||||
|
||||
/**
|
||||
* Removes a value (or sub-array) from the storage using multiple keys.
|
||||
*
|
||||
* @param string $path Storage path (e.g. vdm.content.builder)
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the path values are not a number or string.
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function remove(string $path): void;
|
||||
|
||||
/**
|
||||
* Checks the existence of a particular location in the storage using multiple keys.
|
||||
*
|
||||
* @param string $path Storage path (e.g. vdm.content.builder)
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the path values are not a number or string.
|
||||
* @return bool True if the location exists, false otherwise.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function exists(string $path): bool;
|
||||
|
||||
/**
|
||||
* Sets a separator value
|
||||
*
|
||||
* @param string|null $value The value to set.
|
||||
*
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function setSeparator(?string $value): void;
|
18
src/64e291c2-11f1-423d-a44d-837cc12cc017/settings.json
Normal file
18
src/64e291c2-11f1-423d-a44d-837cc12cc017/settings.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"add_head": "0",
|
||||
"add_licensing_template": "2",
|
||||
"extends": "0",
|
||||
"guid": "64e291c2-11f1-423d-a44d-837cc12cc017",
|
||||
"implements": null,
|
||||
"load_selection": null,
|
||||
"name": "Storageregistryinterface",
|
||||
"power_version": "1.0.0",
|
||||
"system_name": "VDM.Interfaces.Storageregistryinterface",
|
||||
"type": "interface",
|
||||
"use_selection": null,
|
||||
"namespace": "VDM\\Joomla\\Interfaces.Storageregistryinterface",
|
||||
"description": "The Storage Registry Interface\r\n\r\n@since 3.2.0",
|
||||
"licensing_template": "\/**\r\n * @package Joomla.Component.Builder\r\n *\r\n * @created 4th September, 2022\r\n * @author Llewellyn van der Merwe <https:\/\/dev.vdm.io>\r\n * @git Joomla Component Builder <https:\/\/git.vdm.dev\/joomla\/Component-Builder>\r\n * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.\r\n * @license GNU General Public License version 2 or later; see LICENSE.txt\r\n *\/\r\n",
|
||||
"head": "",
|
||||
"composer": ""
|
||||
}
|
88
src/7921a2b3-b58c-4184-af3f-f58094f695a8/README.md
Normal file
88
src/7921a2b3-b58c-4184-af3f-f58094f695a8/README.md
Normal file
@ -0,0 +1,88 @@
|
||||
```
|
||||
██████╗ ██████╗ ██╗ ██╗███████╗██████╗
|
||||
██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔══██╗
|
||||
██████╔╝██║ ██║██║ █╗ ██║█████╗ ██████╔╝
|
||||
██╔═══╝ ██║ ██║██║███╗██║██╔══╝ ██╔══██╗
|
||||
██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║
|
||||
╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
|
||||
```
|
||||
# interface Mapperdoublejoininterface (Details)
|
||||
> namespace: **VDM\Joomla\Componentbuilder\Interfaces**
|
||||
```uml
|
||||
@startuml
|
||||
interface Mapperdoublejoininterface #Lavender {
|
||||
+ isActive_(string $firstKey = null) : bool
|
||||
+ set_(string $firstKey, string $secondKey, ...) : void
|
||||
+ get_(string $firstKey, ?string $secondKey = null) : mixed
|
||||
+ exist_(string $firstKey, ?string $secondKey = null) : bool
|
||||
+ add_(string $firstKey, string $secondKey, ...) : void
|
||||
+ remove_(string $firstKey, ?string $secondKey = null) : void
|
||||
}
|
||||
|
||||
note right of Mapperdoublejoininterface::isActive_
|
||||
Check if any values are set in the active array.
|
||||
|
||||
since: 3.2.0
|
||||
return: bool
|
||||
end note
|
||||
|
||||
note right of Mapperdoublejoininterface::set_
|
||||
Set dynamic content
|
||||
|
||||
since: 3.2.0
|
||||
return: void
|
||||
|
||||
arguments:
|
||||
string $firstKey
|
||||
string $secondKey
|
||||
mixed $value
|
||||
end note
|
||||
|
||||
note right of Mapperdoublejoininterface::get_
|
||||
Get dynamic content
|
||||
|
||||
since: 3.2.0
|
||||
return: mixed
|
||||
end note
|
||||
|
||||
note right of Mapperdoublejoininterface::exist_
|
||||
Does keys exist
|
||||
|
||||
since: 3.2.0
|
||||
return: bool
|
||||
end note
|
||||
|
||||
note right of Mapperdoublejoininterface::add_
|
||||
Add dynamic content
|
||||
|
||||
since: 3.2.0
|
||||
return: void
|
||||
|
||||
arguments:
|
||||
string $firstKey
|
||||
string $secondKey
|
||||
mixed $value
|
||||
bool $array = false
|
||||
end note
|
||||
|
||||
note right of Mapperdoublejoininterface::remove_
|
||||
Remove dynamic content
|
||||
|
||||
since: 3.2.0
|
||||
return: void
|
||||
end note
|
||||
|
||||
@enduml
|
||||
```
|
||||
|
||||
---
|
||||
```
|
||||
██╗ ██████╗██████╗
|
||||
██║██╔════╝██╔══██╗
|
||||
██║██║ ██████╔╝
|
||||
██ ██║██║ ██╔══██╗
|
||||
╚█████╔╝╚██████╗██████╔╝
|
||||
╚════╝ ╚═════╝╚═════╝
|
||||
```
|
||||
> Build with [Joomla Component Builder](https://git.vdm.dev/joomla/Component-Builder)
|
||||
|
89
src/7921a2b3-b58c-4184-af3f-f58094f695a8/code.php
Normal file
89
src/7921a2b3-b58c-4184-af3f-f58094f695a8/code.php
Normal file
@ -0,0 +1,89 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Component.Builder
|
||||
*
|
||||
* @created 4th September, 2022
|
||||
* @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 Double Jointed Mapper Interface
|
||||
*/
|
||||
interface Mapperdoublejoininterface
|
||||
{
|
||||
|
||||
/**
|
||||
* Check if any values are set in the active array.
|
||||
*
|
||||
* @param string|null $firstKey Optional. The first key to check for values.
|
||||
*
|
||||
* @return bool True if the active array or the specified subarray is not empty, false otherwise.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function isActive_(string $firstKey = null): bool;
|
||||
|
||||
/**
|
||||
* Set dynamic content
|
||||
*
|
||||
* @param string $firstKey The first key
|
||||
* @param string $secondKey The second key
|
||||
* @param mixed $value The values to set
|
||||
*
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function set_(string $firstKey, string $secondKey, $value): void;
|
||||
|
||||
/**
|
||||
* Get dynamic content
|
||||
*
|
||||
* @param string $firstKey The first key
|
||||
* @param string|null $secondKey The second key
|
||||
*
|
||||
* @return mixed
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function get_(string $firstKey, ?string $secondKey = null);
|
||||
|
||||
/**
|
||||
* Does keys exist
|
||||
*
|
||||
* @param string $firstKey The first key
|
||||
* @param string|null $secondKey The second key
|
||||
*
|
||||
* @return bool
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function exist_(string $firstKey, ?string $secondKey = null): bool;
|
||||
|
||||
/**
|
||||
* Add dynamic content
|
||||
*
|
||||
* @param string $firstKey The first key
|
||||
* @param string $secondKey The second key
|
||||
* @param mixed $value The values to set
|
||||
* @param bool $array The is array switch
|
||||
*
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function add_(string $firstKey, string $secondKey, $value, bool $array = false): void;
|
||||
|
||||
/**
|
||||
* Remove dynamic content
|
||||
*
|
||||
* @param string $firstKey The first key
|
||||
* @param string|null $secondKey The second key
|
||||
*
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function remove_(string $firstKey, ?string $secondKey = null): void;
|
||||
}
|
||||
|
1
src/7921a2b3-b58c-4184-af3f-f58094f695a8/code.power
Normal file
1
src/7921a2b3-b58c-4184-af3f-f58094f695a8/code.power
Normal file
@ -0,0 +1 @@
|
||||
[CUSTOMCODE=interfacesMapperDouble+_]
|
18
src/7921a2b3-b58c-4184-af3f-f58094f695a8/settings.json
Normal file
18
src/7921a2b3-b58c-4184-af3f-f58094f695a8/settings.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"add_head": "0",
|
||||
"add_licensing_template": "2",
|
||||
"extends": "0",
|
||||
"guid": "7921a2b3-b58c-4184-af3f-f58094f695a8",
|
||||
"implements": null,
|
||||
"load_selection": null,
|
||||
"name": "Mapperdoublejoininterface",
|
||||
"power_version": "1.0.0",
|
||||
"system_name": "JCB.Interfaces.Mapperdoublejoininterface",
|
||||
"type": "interface",
|
||||
"use_selection": null,
|
||||
"namespace": "VDM\\Joomla\\Componentbuilder.Interfaces.Mapperdoublejoininterface",
|
||||
"description": "The Double Jointed Mapper Interface",
|
||||
"licensing_template": "\/**\r\n * @package Joomla.Component.Builder\r\n *\r\n * @created 4th September, 2022\r\n * @author Llewellyn van der Merwe <https:\/\/dev.vdm.io>\r\n * @git Joomla Component Builder <https:\/\/git.vdm.dev\/joomla\/Component-Builder>\r\n * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.\r\n * @license GNU General Public License version 2 or later; see LICENSE.txt\r\n *\/\r\n",
|
||||
"head": "",
|
||||
"composer": ""
|
||||
}
|
37
src/7d494d91-ab60-43cd-aecf-d50e07f7f30e/README.md
Normal file
37
src/7d494d91-ab60-43cd-aecf-d50e07f7f30e/README.md
Normal file
@ -0,0 +1,37 @@
|
||||
```
|
||||
██████╗ ██████╗ ██╗ ██╗███████╗██████╗
|
||||
██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔══██╗
|
||||
██████╔╝██║ ██║██║ █╗ ██║█████╗ ██████╔╝
|
||||
██╔═══╝ ██║ ██║██║███╗██║██╔══╝ ██╔══██╗
|
||||
██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║
|
||||
╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
|
||||
```
|
||||
# trait ToString (Details)
|
||||
> namespace: **VDM\Joomla\Abstraction\StorageRegistry\Traits**
|
||||
```uml
|
||||
@startuml
|
||||
class ToString << (T,Orange) >> #Turquoise {
|
||||
+ toString(string $path, string $separator = '') : string
|
||||
}
|
||||
|
||||
note right of ToString::toString
|
||||
Convert an array of values to a string (or return string)
|
||||
|
||||
since: 3.2.0
|
||||
return: string
|
||||
end note
|
||||
|
||||
@enduml
|
||||
```
|
||||
|
||||
---
|
||||
```
|
||||
██╗ ██████╗██████╗
|
||||
██║██╔════╝██╔══██╗
|
||||
██║██║ ██████╔╝
|
||||
██ ██║██║ ██╔══██╗
|
||||
╚█████╔╝╚██████╗██████╔╝
|
||||
╚════╝ ╚═════╝╚═════╝
|
||||
```
|
||||
> Build with [Joomla Component Builder](https://git.vdm.dev/joomla/Component-Builder)
|
||||
|
55
src/7d494d91-ab60-43cd-aecf-d50e07f7f30e/code.php
Normal file
55
src/7d494d91-ab60-43cd-aecf-d50e07f7f30e/code.php
Normal file
@ -0,0 +1,55 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Component.Builder
|
||||
*
|
||||
* @created 4th September, 2022
|
||||
* @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\Abstraction\StorageRegistry\Traits;
|
||||
|
||||
|
||||
/**
|
||||
* To String Values
|
||||
*
|
||||
* @since 3.2.0
|
||||
*/
|
||||
trait ToString
|
||||
{
|
||||
/**
|
||||
* Convert an array of values to a string (or return string)
|
||||
*
|
||||
* @param string $path Registry path (e.g. joomla.content.showauthor)
|
||||
* @param string $seperator Return string separator
|
||||
*
|
||||
* @return string
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function toString(string $path, string $separator = ''): string
|
||||
{
|
||||
// Return default value if path is empty
|
||||
if (empty($path))
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
// get the value
|
||||
if (($node = $this->get($path)) !== null)
|
||||
{
|
||||
if (is_array($node) && $node !== [])
|
||||
{
|
||||
return implode($separator, $node);
|
||||
}
|
||||
elseif (is_string($node) && strlen((string) $node) > 0)
|
||||
{
|
||||
return $node;
|
||||
}
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
32
src/7d494d91-ab60-43cd-aecf-d50e07f7f30e/code.power
Normal file
32
src/7d494d91-ab60-43cd-aecf-d50e07f7f30e/code.power
Normal file
@ -0,0 +1,32 @@
|
||||
/**
|
||||
* Convert an array of values to a string (or return string)
|
||||
*
|
||||
* @param string $path Registry path (e.g. joomla.content.showauthor)
|
||||
* @param string $seperator Return string separator
|
||||
*
|
||||
* @return string
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function toString(string $path, string $separator = ''): string
|
||||
{
|
||||
// Return default value if path is empty
|
||||
if (empty($path))
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
// get the value
|
||||
if (($node = $this->get($path)) !== null)
|
||||
{
|
||||
if (is_array($node) && $node !== [])
|
||||
{
|
||||
return implode($separator, $node);
|
||||
}
|
||||
elseif (is_string($node) && strlen((string) $node) > 0)
|
||||
{
|
||||
return $node;
|
||||
}
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
18
src/7d494d91-ab60-43cd-aecf-d50e07f7f30e/settings.json
Normal file
18
src/7d494d91-ab60-43cd-aecf-d50e07f7f30e/settings.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"add_head": "0",
|
||||
"add_licensing_template": "2",
|
||||
"extends": "0",
|
||||
"guid": "7d494d91-ab60-43cd-aecf-d50e07f7f30e",
|
||||
"implements": null,
|
||||
"load_selection": null,
|
||||
"name": "ToString",
|
||||
"power_version": "1.0.0",
|
||||
"system_name": "VDM.Abstraction.StorageRegistry.Traits.ToString",
|
||||
"type": "trait",
|
||||
"use_selection": null,
|
||||
"namespace": "VDM\\Joomla\\Abstraction.StorageRegistry.Traits.ToString",
|
||||
"description": "To String Values\r\n\r\n@since 3.2.0",
|
||||
"licensing_template": "\/**\r\n * @package Joomla.Component.Builder\r\n *\r\n * @created 4th September, 2022\r\n * @author Llewellyn van der Merwe <https:\/\/dev.vdm.io>\r\n * @git Joomla Component Builder <https:\/\/git.vdm.dev\/joomla\/Component-Builder>\r\n * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.\r\n * @license GNU General Public License version 2 or later; see LICENSE.txt\r\n *\/\r\n",
|
||||
"head": "",
|
||||
"composer": ""
|
||||
}
|
93
src/7e822c03-1b20-41d1-9427-f5b8d5836af7/README.md
Normal file
93
src/7e822c03-1b20-41d1-9427-f5b8d5836af7/README.md
Normal file
@ -0,0 +1,93 @@
|
||||
```
|
||||
██████╗ ██████╗ ██╗ ██╗███████╗██████╗
|
||||
██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔══██╗
|
||||
██████╔╝██║ ██║██║ █╗ ██║█████╗ ██████╔╝
|
||||
██╔═══╝ ██║ ██║██║███╗██║██╔══╝ ██╔══██╗
|
||||
██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║
|
||||
╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
|
||||
```
|
||||
# abstract class StorageRegistry (Details)
|
||||
> namespace: **VDM\Joomla\Abstraction**
|
||||
> extends: **ActiveStorageRegistry**
|
||||
```uml
|
||||
@startuml
|
||||
abstract StorageRegistry #Orange {
|
||||
# ?string $separator
|
||||
+ set(string $path, mixed $value) : void
|
||||
+ add(string $path, mixed $value, ...) : void
|
||||
+ get(string $path, mixed $default = null) : mixed
|
||||
+ remove(string $path) : void
|
||||
+ exists(string $path) : bool
|
||||
+ setSeparator(?string $value) : void
|
||||
# getActiveKeys(string $path) : ?array
|
||||
}
|
||||
|
||||
note right of StorageRegistry::set
|
||||
Sets a value into the storage using multiple keys.
|
||||
|
||||
since: 3.2.0
|
||||
return: void
|
||||
end note
|
||||
|
||||
note right of StorageRegistry::add
|
||||
Adds content into the storage. If a key exists,
|
||||
it either appends or concatenates based on $asArray switch.
|
||||
|
||||
since: 3.2.0
|
||||
return: void
|
||||
|
||||
arguments:
|
||||
string $path
|
||||
mixed $value
|
||||
bool $asArray = false
|
||||
end note
|
||||
|
||||
note right of StorageRegistry::get
|
||||
Retrieves a value (or sub-array) from the storage using multiple keys.
|
||||
|
||||
since: 3.2.0
|
||||
return: mixed
|
||||
end note
|
||||
|
||||
note right of StorageRegistry::remove
|
||||
Removes a value (or sub-array) from the storage using multiple keys.
|
||||
|
||||
since: 3.2.0
|
||||
return: void
|
||||
end note
|
||||
|
||||
note right of StorageRegistry::exists
|
||||
Checks the existence of a particular location in the storage using multiple keys.
|
||||
|
||||
since: 3.2.0
|
||||
return: bool
|
||||
end note
|
||||
|
||||
note right of StorageRegistry::setSeparator
|
||||
Sets a separator value
|
||||
|
||||
since: 3.2.0
|
||||
return: void
|
||||
end note
|
||||
|
||||
note right of StorageRegistry::getActiveKeys
|
||||
Get that the active keys from a path
|
||||
|
||||
since: 3.2.0
|
||||
return: ?array
|
||||
end note
|
||||
|
||||
@enduml
|
||||
```
|
||||
|
||||
---
|
||||
```
|
||||
██╗ ██████╗██████╗
|
||||
██║██╔════╝██╔══██╗
|
||||
██║██║ ██████╔╝
|
||||
██ ██║██║ ██╔══██╗
|
||||
╚█████╔╝╚██████╗██████╔╝
|
||||
╚════╝ ╚═════╝╚═════╝
|
||||
```
|
||||
> Build with [Joomla Component Builder](https://git.vdm.dev/joomla/Component-Builder)
|
||||
|
182
src/7e822c03-1b20-41d1-9427-f5b8d5836af7/code.php
Normal file
182
src/7e822c03-1b20-41d1-9427-f5b8d5836af7/code.php
Normal file
@ -0,0 +1,182 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Component.Builder
|
||||
*
|
||||
* @created 4th September, 2022
|
||||
* @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\Abstraction;
|
||||
|
||||
|
||||
use VDM\Joomla\Interfaces\Activestorageregistryinterface;
|
||||
use VDM\Joomla\Interfaces\Storageregistryinterface;
|
||||
use VDM\Joomla\Abstraction\ActiveStorageRegistry;
|
||||
|
||||
|
||||
/**
|
||||
* Storage Registry.
|
||||
*
|
||||
* Don't use this beyond 10 dimensional depth for best performance.
|
||||
*
|
||||
* @since 3.2.0
|
||||
*/
|
||||
abstract class StorageRegistry extends ActiveStorageRegistry implements Activestorageregistryinterface, Storageregistryinterface
|
||||
{
|
||||
/**
|
||||
* Path separator
|
||||
*
|
||||
* @var string|null
|
||||
* @since 3.2.0
|
||||
*/
|
||||
protected ?string $separator = '.';
|
||||
|
||||
/**
|
||||
* Sets a value into the storage using multiple keys.
|
||||
*
|
||||
* @param string $path Storage path (e.g. vdm.content.builder)
|
||||
* @param mixed $value Value of entry
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the path values are not a number or string.
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function set(string $path, $value): void
|
||||
{
|
||||
if (($keys = $this->getActiveKeys($path)) === null)
|
||||
{
|
||||
throw new \InvalidArgumentException("Path must only be strings or numbers to set any value.");
|
||||
}
|
||||
|
||||
$this->setActive($value, ...$keys);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds content into the storage. If a key exists,
|
||||
* it either appends or concatenates based on $asArray switch.
|
||||
*
|
||||
* @param string $path Storage path (e.g. vdm.content.builder)
|
||||
* @param mixed $value Value of entry
|
||||
* @param bool $asArray Determines if the new value should be treated as an array. Default is false.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the path values are not a number or string.
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function add(string $path, $value, bool $asArray = false): void
|
||||
{
|
||||
if (($keys = $this->getActiveKeys($path)) === null)
|
||||
{
|
||||
throw new \InvalidArgumentException("Path must only be strings or numbers to add any value.");
|
||||
}
|
||||
|
||||
$this->addActive($value, $asArray, ...$keys);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves a value (or sub-array) from the storage using multiple keys.
|
||||
*
|
||||
* @param string $path Storage path (e.g. vdm.content.builder)
|
||||
* @param mixed $default Optional default value, returned if the internal doesn't exist.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the path values are not a number or string.
|
||||
* @return mixed The value or sub-array from the storage. Null if the location doesn't exist.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function get(string $path, $default = null)
|
||||
{
|
||||
if (($keys = $this->getActiveKeys($path)) === null)
|
||||
{
|
||||
throw new \InvalidArgumentException("Path must only be strings or numbers to get any value.");
|
||||
}
|
||||
|
||||
return $this->getActive($default, ...$keys);
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a value (or sub-array) from the storage using multiple keys.
|
||||
*
|
||||
* @param string $path Storage path (e.g. vdm.content.builder)
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the path values are not a number or string.
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function remove(string $path): void
|
||||
{
|
||||
if (($keys = $this->getActiveKeys($path)) === null)
|
||||
{
|
||||
throw new \InvalidArgumentException("Path must only be strings or numbers to remove any value.");
|
||||
}
|
||||
|
||||
$this->removeActive(...$keys);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks the existence of a particular location in the storage using multiple keys.
|
||||
*
|
||||
* @param string $path Storage path (e.g. vdm.content.builder)
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the path values are not a number or string.
|
||||
* @return bool True if the location exists, false otherwise.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function exists(string $path): bool
|
||||
{
|
||||
if (($keys = $this->getActiveKeys($path)) === null)
|
||||
{
|
||||
throw new \InvalidArgumentException("Path must only be strings or numbers to check if any value exist.");
|
||||
}
|
||||
|
||||
return $this->existsActive(...$keys);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a separator value
|
||||
*
|
||||
* @param string|null $value The value to set.
|
||||
*
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function setSeparator(?string $value): void
|
||||
{
|
||||
$this->separator = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get that the active keys from a path
|
||||
*
|
||||
* @param string $path The path to determine the location storage.
|
||||
*
|
||||
* @return array|null The valid array of keys
|
||||
* @since 3.2.0
|
||||
*/
|
||||
protected function getActiveKeys(string $path): ?array
|
||||
{
|
||||
// empty path no allowed
|
||||
if ($path === '')
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
// Flatten the path
|
||||
if ($this->separator === null || $this->separator === '')
|
||||
{
|
||||
return [$path];
|
||||
}
|
||||
|
||||
$keys = array_values(array_filter(explode($this->separator, $path), 'strlen'));
|
||||
|
||||
if (empty($keys))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return $keys;
|
||||
}
|
||||
}
|
||||
|
152
src/7e822c03-1b20-41d1-9427-f5b8d5836af7/code.power
Normal file
152
src/7e822c03-1b20-41d1-9427-f5b8d5836af7/code.power
Normal file
@ -0,0 +1,152 @@
|
||||
/**
|
||||
* Path separator
|
||||
*
|
||||
* @var string|null
|
||||
* @since 3.2.0
|
||||
*/
|
||||
protected ?string $separator = '.';
|
||||
|
||||
/**
|
||||
* Sets a value into the storage using multiple keys.
|
||||
*
|
||||
* @param string $path Storage path (e.g. vdm.content.builder)
|
||||
* @param mixed $value Value of entry
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the path values are not a number or string.
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function set(string $path, $value): void
|
||||
{
|
||||
if (($keys = $this->getActiveKeys($path)) === null)
|
||||
{
|
||||
throw new \InvalidArgumentException("Path must only be strings or numbers to set any value.");
|
||||
}
|
||||
|
||||
$this->setActive($value, ...$keys);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds content into the storage. If a key exists,
|
||||
* it either appends or concatenates based on $asArray switch.
|
||||
*
|
||||
* @param string $path Storage path (e.g. vdm.content.builder)
|
||||
* @param mixed $value Value of entry
|
||||
* @param bool $asArray Determines if the new value should be treated as an array. Default is false.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the path values are not a number or string.
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function add(string $path, $value, bool $asArray = false): void
|
||||
{
|
||||
if (($keys = $this->getActiveKeys($path)) === null)
|
||||
{
|
||||
throw new \InvalidArgumentException("Path must only be strings or numbers to add any value.");
|
||||
}
|
||||
|
||||
$this->addActive($value, $asArray, ...$keys);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves a value (or sub-array) from the storage using multiple keys.
|
||||
*
|
||||
* @param string $path Storage path (e.g. vdm.content.builder)
|
||||
* @param mixed $default Optional default value, returned if the internal doesn't exist.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the path values are not a number or string.
|
||||
* @return mixed The value or sub-array from the storage. Null if the location doesn't exist.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function get(string $path, $default = null)
|
||||
{
|
||||
if (($keys = $this->getActiveKeys($path)) === null)
|
||||
{
|
||||
throw new \InvalidArgumentException("Path must only be strings or numbers to get any value.");
|
||||
}
|
||||
|
||||
return $this->getActive($default, ...$keys);
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a value (or sub-array) from the storage using multiple keys.
|
||||
*
|
||||
* @param string $path Storage path (e.g. vdm.content.builder)
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the path values are not a number or string.
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function remove(string $path): void
|
||||
{
|
||||
if (($keys = $this->getActiveKeys($path)) === null)
|
||||
{
|
||||
throw new \InvalidArgumentException("Path must only be strings or numbers to remove any value.");
|
||||
}
|
||||
|
||||
$this->removeActive(...$keys);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks the existence of a particular location in the storage using multiple keys.
|
||||
*
|
||||
* @param string $path Storage path (e.g. vdm.content.builder)
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the path values are not a number or string.
|
||||
* @return bool True if the location exists, false otherwise.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function exists(string $path): bool
|
||||
{
|
||||
if (($keys = $this->getActiveKeys($path)) === null)
|
||||
{
|
||||
throw new \InvalidArgumentException("Path must only be strings or numbers to check if any value exist.");
|
||||
}
|
||||
|
||||
return $this->existsActive(...$keys);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a separator value
|
||||
*
|
||||
* @param string|null $value The value to set.
|
||||
*
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function setSeparator(?string $value): void
|
||||
{
|
||||
$this->separator = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get that the active keys from a path
|
||||
*
|
||||
* @param string $path The path to determine the location storage.
|
||||
*
|
||||
* @return array|null The valid array of keys
|
||||
* @since 3.2.0
|
||||
*/
|
||||
protected function getActiveKeys(string $path): ?array
|
||||
{
|
||||
// empty path no allowed
|
||||
if ($path === '')
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
// Flatten the path
|
||||
if ($this->separator === null || $this->separator === '')
|
||||
{
|
||||
return [$path];
|
||||
}
|
||||
|
||||
$keys = array_values(array_filter(explode($this->separator, $path), 'strlen'));
|
||||
|
||||
if (empty($keys))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return $keys;
|
||||
}
|
21
src/7e822c03-1b20-41d1-9427-f5b8d5836af7/settings.json
Normal file
21
src/7e822c03-1b20-41d1-9427-f5b8d5836af7/settings.json
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"add_head": "0",
|
||||
"add_licensing_template": "2",
|
||||
"extends": "43134867-5cb8-4280-9be8-309fd2fd135f",
|
||||
"guid": "7e822c03-1b20-41d1-9427-f5b8d5836af7",
|
||||
"implements": [
|
||||
"af0eedbe-603b-4671-8e5a-28165d88254b",
|
||||
"64e291c2-11f1-423d-a44d-837cc12cc017"
|
||||
],
|
||||
"load_selection": null,
|
||||
"name": "StorageRegistry",
|
||||
"power_version": "1.0.0",
|
||||
"system_name": "VDM.Abstraction.StorageRegistry",
|
||||
"type": "abstract class",
|
||||
"use_selection": null,
|
||||
"namespace": "VDM\\Joomla\\Abstraction.StorageRegistry",
|
||||
"description": "Storage Registry.\r\n\r\nDon't use this beyond 10 dimensional depth for best performance.\r\n\r\n@since 3.2.0",
|
||||
"licensing_template": "\/**\r\n * @package Joomla.Component.Builder\r\n *\r\n * @created 4th September, 2022\r\n * @author Llewellyn van der Merwe <https:\/\/dev.vdm.io>\r\n * @git Joomla Component Builder <https:\/\/git.vdm.dev\/joomla\/Component-Builder>\r\n * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.\r\n * @license GNU General Public License version 2 or later; see LICENSE.txt\r\n *\/\r\n",
|
||||
"head": "",
|
||||
"composer": ""
|
||||
}
|
@ -7,7 +7,7 @@
|
||||
"load_selection": null,
|
||||
"name": "InsertInterface",
|
||||
"power_version": "1.0.0",
|
||||
"system_name": "JCB.Interfaces.InsertInterface",
|
||||
"system_name": "VDM.Interfaces.InsertInterface",
|
||||
"type": "interface",
|
||||
"use_selection": null,
|
||||
"namespace": "VDM\\Joomla\\Interfaces.InsertInterface",
|
||||
|
91
src/af0eedbe-603b-4671-8e5a-28165d88254b/README.md
Normal file
91
src/af0eedbe-603b-4671-8e5a-28165d88254b/README.md
Normal file
@ -0,0 +1,91 @@
|
||||
```
|
||||
██████╗ ██████╗ ██╗ ██╗███████╗██████╗
|
||||
██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔══██╗
|
||||
██████╔╝██║ ██║██║ █╗ ██║█████╗ ██████╔╝
|
||||
██╔═══╝ ██║ ██║██║███╗██║██╔══╝ ██╔══██╗
|
||||
██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║
|
||||
╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
|
||||
```
|
||||
# interface Activestorageregistryinterface (Details)
|
||||
> namespace: **VDM\Joomla\Interfaces**
|
||||
```uml
|
||||
@startuml
|
||||
interface Activestorageregistryinterface #Lavender {
|
||||
+ isActive() : bool
|
||||
+ allActive() : array
|
||||
+ setActive(mixed $value, $keys) : void
|
||||
+ addActive(mixed $value, bool $asArray, ...) : void
|
||||
+ getActive(mixed $default, $keys) : mixed
|
||||
+ removeActive($keys) : void
|
||||
+ existsActive($keys) : bool
|
||||
}
|
||||
|
||||
note right of Activestorageregistryinterface::isActive
|
||||
Check if the main storage has any content.
|
||||
|
||||
since: 3.2.0
|
||||
return: bool
|
||||
end note
|
||||
|
||||
note right of Activestorageregistryinterface::allActive
|
||||
Retrieves all value from the storage.
|
||||
|
||||
since: 3.2.0
|
||||
return: array
|
||||
end note
|
||||
|
||||
note right of Activestorageregistryinterface::setActive
|
||||
Sets a value into the storage using multiple keys.
|
||||
|
||||
since: 3.2.0
|
||||
return: void
|
||||
end note
|
||||
|
||||
note right of Activestorageregistryinterface::addActive
|
||||
Adds content into the storage. If a key exists,
|
||||
it either appends or concatenates based on the value's type.
|
||||
|
||||
since: 3.2.0
|
||||
return: void
|
||||
|
||||
arguments:
|
||||
mixed $value
|
||||
bool $asArray
|
||||
$keys
|
||||
end note
|
||||
|
||||
note right of Activestorageregistryinterface::getActive
|
||||
Retrieves a value (or sub-array) from the storage using multiple keys.
|
||||
|
||||
since: 3.2.0
|
||||
return: mixed
|
||||
end note
|
||||
|
||||
note right of Activestorageregistryinterface::removeActive
|
||||
Removes a value (or sub-array) from the storage using multiple keys.
|
||||
|
||||
since: 3.2.0
|
||||
return: void
|
||||
end note
|
||||
|
||||
note right of Activestorageregistryinterface::existsActive
|
||||
Checks the existence of a particular location in the storage using multiple keys.
|
||||
|
||||
since: 3.2.0
|
||||
return: bool
|
||||
end note
|
||||
|
||||
@enduml
|
||||
```
|
||||
|
||||
---
|
||||
```
|
||||
██╗ ██████╗██████╗
|
||||
██║██╔════╝██╔══██╗
|
||||
██║██║ ██████╔╝
|
||||
██ ██║██║ ██╔══██╗
|
||||
╚█████╔╝╚██████╗██████╔╝
|
||||
╚════╝ ╚═════╝╚═════╝
|
||||
```
|
||||
> Build with [Joomla Component Builder](https://git.vdm.dev/joomla/Component-Builder)
|
||||
|
98
src/af0eedbe-603b-4671-8e5a-28165d88254b/code.php
Normal file
98
src/af0eedbe-603b-4671-8e5a-28165d88254b/code.php
Normal file
@ -0,0 +1,98 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Component.Builder
|
||||
*
|
||||
* @created 4th September, 2022
|
||||
* @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\Interfaces;
|
||||
|
||||
|
||||
/**
|
||||
* The Active Storage Registry Interface
|
||||
*
|
||||
* @since 3.2.0
|
||||
*/
|
||||
interface Activestorageregistryinterface
|
||||
{
|
||||
/**
|
||||
* Check if the main storage has any content.
|
||||
*
|
||||
* @return bool Returns true if the active array is not empty, false otherwise.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function isActive(): bool;
|
||||
|
||||
/**
|
||||
* Retrieves all value from the storage.
|
||||
*
|
||||
* @return array The values.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function allActive(): array;
|
||||
|
||||
/**
|
||||
* Sets a value into the storage using multiple keys.
|
||||
*
|
||||
* @param mixed $value The value to set.
|
||||
* @param string ...$keys The keys to determine the location.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the keys are not a number or string.
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function setActive($value, string ...$keys): void;
|
||||
|
||||
/**
|
||||
* Adds content into the storage. If a key exists,
|
||||
* it either appends or concatenates based on the value's type.
|
||||
*
|
||||
* @param mixed $value The value to set.
|
||||
* @param bool $asArray Determines if the new value should be treated as an array.
|
||||
* @param string ...$keys The keys to determine the location.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the keys are not a number or string.
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function addActive($value, bool $asArray, string ...$keys): void;
|
||||
|
||||
/**
|
||||
* Retrieves a value (or sub-array) from the storage using multiple keys.
|
||||
*
|
||||
* @param mixed $default The default value if not set.
|
||||
* @param string ...$keys The keys to determine the location.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the keys are not a number or string.
|
||||
* @return mixed The value or sub-array from the storage. Null if the location doesn't exist.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function getActive($default, string ...$keys);
|
||||
|
||||
/**
|
||||
* Removes a value (or sub-array) from the storage using multiple keys.
|
||||
*
|
||||
* @param string ...$keys The keys to determine the location.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the keys are not a number or string.
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function removeActive(string ...$keys): void;
|
||||
|
||||
/**
|
||||
* Checks the existence of a particular location in the storage using multiple keys.
|
||||
*
|
||||
* @param string ...$keys The keys to determine the location.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the keys are not a number or string.
|
||||
* @return bool True if the location exists, false otherwise.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function existsActive(string ...$keys): bool;
|
||||
}
|
||||
|
75
src/af0eedbe-603b-4671-8e5a-28165d88254b/code.power
Normal file
75
src/af0eedbe-603b-4671-8e5a-28165d88254b/code.power
Normal file
@ -0,0 +1,75 @@
|
||||
/**
|
||||
* Check if the main storage has any content.
|
||||
*
|
||||
* @return bool Returns true if the active array is not empty, false otherwise.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function isActive(): bool;
|
||||
|
||||
/**
|
||||
* Retrieves all value from the storage.
|
||||
*
|
||||
* @return array The values.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function allActive(): array;
|
||||
|
||||
/**
|
||||
* Sets a value into the storage using multiple keys.
|
||||
*
|
||||
* @param mixed $value The value to set.
|
||||
* @param string ...$keys The keys to determine the location.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the keys are not a number or string.
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function setActive($value, string ...$keys): void;
|
||||
|
||||
/**
|
||||
* Adds content into the storage. If a key exists,
|
||||
* it either appends or concatenates based on the value's type.
|
||||
*
|
||||
* @param mixed $value The value to set.
|
||||
* @param bool $asArray Determines if the new value should be treated as an array.
|
||||
* @param string ...$keys The keys to determine the location.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the keys are not a number or string.
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function addActive($value, bool $asArray, string ...$keys): void;
|
||||
|
||||
/**
|
||||
* Retrieves a value (or sub-array) from the storage using multiple keys.
|
||||
*
|
||||
* @param mixed $default The default value if not set.
|
||||
* @param string ...$keys The keys to determine the location.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the keys are not a number or string.
|
||||
* @return mixed The value or sub-array from the storage. Null if the location doesn't exist.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function getActive($default, string ...$keys);
|
||||
|
||||
/**
|
||||
* Removes a value (or sub-array) from the storage using multiple keys.
|
||||
*
|
||||
* @param string ...$keys The keys to determine the location.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the keys are not a number or string.
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function removeActive(string ...$keys): void;
|
||||
|
||||
/**
|
||||
* Checks the existence of a particular location in the storage using multiple keys.
|
||||
*
|
||||
* @param string ...$keys The keys to determine the location.
|
||||
*
|
||||
* @throws \InvalidArgumentException If any of the keys are not a number or string.
|
||||
* @return bool True if the location exists, false otherwise.
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function existsActive(string ...$keys): bool;
|
18
src/af0eedbe-603b-4671-8e5a-28165d88254b/settings.json
Normal file
18
src/af0eedbe-603b-4671-8e5a-28165d88254b/settings.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"add_head": "0",
|
||||
"add_licensing_template": "2",
|
||||
"extends": "0",
|
||||
"guid": "af0eedbe-603b-4671-8e5a-28165d88254b",
|
||||
"implements": null,
|
||||
"load_selection": null,
|
||||
"name": "Activestorageregistryinterface",
|
||||
"power_version": "1.0.0",
|
||||
"system_name": "VDM.Interfaces.Activestorageregistryinterface",
|
||||
"type": "interface",
|
||||
"use_selection": null,
|
||||
"namespace": "VDM\\Joomla\\Interfaces.Activestorageregistryinterface",
|
||||
"description": "The Active Storage Registry Interface\r\n\r\n@since 3.2.0",
|
||||
"licensing_template": "\/**\r\n * @package Joomla.Component.Builder\r\n *\r\n * @created 4th September, 2022\r\n * @author Llewellyn van der Merwe <https:\/\/dev.vdm.io>\r\n * @git Joomla Component Builder <https:\/\/git.vdm.dev\/joomla\/Component-Builder>\r\n * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.\r\n * @license GNU General Public License version 2 or later; see LICENSE.txt\r\n *\/\r\n",
|
||||
"head": "",
|
||||
"composer": ""
|
||||
}
|
@ -8,6 +8,7 @@
|
||||
```
|
||||
# abstract class BaseRegistry (Details)
|
||||
> namespace: **VDM\Joomla\Componentbuilder\Abstraction**
|
||||
> extends: **JoomlaRegistry**
|
||||
```uml
|
||||
@startuml
|
||||
abstract BaseRegistry #Orange {
|
||||
|
@ -8,6 +8,7 @@
|
||||
```
|
||||
# class Table (Details)
|
||||
> namespace: **VDM\Joomla\Componentbuilder**
|
||||
> extends: **BaseTable**
|
||||
```uml
|
||||
@startuml
|
||||
class Table #Gold {
|
||||
|
@ -16,7 +16,7 @@ abstract MapperSingle #Orange {
|
||||
+ set(string $key, mixed $value) : void
|
||||
+ get(string $key) : mixed
|
||||
+ exist(string $key) : bool
|
||||
+ add(string $key, mixed $value) : void
|
||||
+ add(string $key, mixed $value, ...) : void
|
||||
+ remove(string $key) : void
|
||||
# {abstract} key(string $key) : string
|
||||
}
|
||||
@ -54,6 +54,11 @@ note right of MapperSingle::add
|
||||
|
||||
since: 3.2.0
|
||||
return: void
|
||||
|
||||
arguments:
|
||||
string $key
|
||||
mixed $value
|
||||
bool $array = false
|
||||
end note
|
||||
|
||||
note right of MapperSingle::remove
|
||||
|
@ -51,7 +51,7 @@ abstract class MapperSingle implements Mappersingleinterface
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function set(string $key, $value)
|
||||
public function set(string $key, $value): void
|
||||
{
|
||||
$this->active[$this->key($key)] = $value;
|
||||
}
|
||||
@ -91,19 +91,34 @@ abstract class MapperSingle implements Mappersingleinterface
|
||||
*
|
||||
* @param string $key The main string key
|
||||
* @param mixed $value The values to set
|
||||
* @param bool $array The is array switch
|
||||
*
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function add(string $key, $value)
|
||||
public function add(string $key, $value, bool $array = false): void
|
||||
{
|
||||
if (isset($this->active[$this->key($key)]))
|
||||
{
|
||||
$this->active[$this->key($key)] .= $value;
|
||||
if (is_array($this->active[$this->key($key)]))
|
||||
{
|
||||
$this->active[$this->key($key)][] = $value;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->active[$this->key($key)] .= $value;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->active[$this->key($key)] = $value;
|
||||
if ($array)
|
||||
{
|
||||
$this->active[$this->key($key)] = [$value];
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->active[$this->key($key)] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -115,7 +130,7 @@ abstract class MapperSingle implements Mappersingleinterface
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function remove(string $key)
|
||||
public function remove(string $key): void
|
||||
{
|
||||
unset($this->active[$this->key($key)]);
|
||||
}
|
||||
|
@ -8,9 +8,10 @@
|
||||
```
|
||||
# final class Update (Details)
|
||||
> namespace: **VDM\Joomla\Database**
|
||||
> extends: **Database**
|
||||
```uml
|
||||
@startuml
|
||||
class Update << (F,LightGreen) >> #Green {
|
||||
class Update << (F,LightGreen) >> #RoyalBlue {
|
||||
+ rows(array $data, string $key, ...) : bool
|
||||
+ items(array $data, string $key, ...) : bool
|
||||
+ row(array $data, string $key, ...) : bool
|
||||
|
@ -11,7 +11,7 @@
|
||||
```uml
|
||||
@startuml
|
||||
abstract NamespaceHelper #Orange {
|
||||
+ {static} safe(string $string, bool $removeNumbers = true) : string
|
||||
+ {static} safe(string $string) : string
|
||||
}
|
||||
|
||||
note right of NamespaceHelper::safe
|
||||
|
@ -25,47 +25,43 @@ abstract class NamespaceHelper
|
||||
/**
|
||||
* Making namespace safe
|
||||
*
|
||||
* @input string $string The you would like to make safe
|
||||
* @input bool $removeNumbers The switch to remove numbers
|
||||
*
|
||||
* @returns string on success
|
||||
* @param string $string The namespace string you would like to make safe
|
||||
*
|
||||
* @return string on success
|
||||
* @since 3.0.9
|
||||
*/
|
||||
public static function safe(string $string, bool $removeNumbers = true): string
|
||||
public static function safe(string $string): string
|
||||
{
|
||||
// 0nly continue if we have a string with length
|
||||
if (StringHelper::check($string))
|
||||
// Remove leading and trailing backslashes
|
||||
$string = trim($string, '\\');
|
||||
|
||||
// Split the string into namespace segments
|
||||
$segments = explode('\\', $string);
|
||||
|
||||
foreach ($segments as &$segment)
|
||||
{
|
||||
// make sure it has not numbers
|
||||
if ($removeNumbers)
|
||||
// Check if segment starts with a number
|
||||
if (preg_match("/^\d/", $segment))
|
||||
{
|
||||
$string = StringHelper::numbers($string);
|
||||
// Extract the starting number(s)
|
||||
preg_match("/^\d+/", $segment, $matches);
|
||||
|
||||
if (isset($matches[0]))
|
||||
{
|
||||
$numberWord = StringHelper::numbers($matches[0]);
|
||||
$segment = str_replace($matches[0], $numberWord, $segment);
|
||||
}
|
||||
}
|
||||
|
||||
// Transliterate string TODO: look again as this makes it lowercase
|
||||
// $string = StringHelper::transliterate($string);
|
||||
// $segment = StringHelper::transliterate($segment);
|
||||
|
||||
// first remove all [\] backslashes
|
||||
$string = str_replace('\\', '+', (string) $string);
|
||||
|
||||
// remove all and keep only characters and [\] backslashes inside of the string
|
||||
if ($removeNumbers)
|
||||
{
|
||||
$string = trim( preg_replace("/[^A-Za-z\+]/", '', $string), '+');
|
||||
}
|
||||
else
|
||||
{
|
||||
$string = trim( preg_replace("/[^A-Za-z0-9\+]/", '', $string), '+');
|
||||
}
|
||||
|
||||
// place the [\] backslashes back
|
||||
return trim( preg_replace("/\++/", '\\', $string));
|
||||
// Make sure segment only contains valid characters
|
||||
$segment = preg_replace("/[^A-Za-z0-9]/", '', $segment);
|
||||
}
|
||||
|
||||
// not a string
|
||||
return '';
|
||||
// Join the namespace segments back together
|
||||
return implode('\\', $segments);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -1,44 +1,41 @@
|
||||
/**
|
||||
* Making namespace safe
|
||||
*
|
||||
* @input string $string The you would like to make safe
|
||||
* @input bool $removeNumbers The switch to remove numbers
|
||||
*
|
||||
* @returns string on success
|
||||
* @param string $string The namespace string you would like to make safe
|
||||
*
|
||||
* @return string on success
|
||||
* @since 3.0.9
|
||||
*/
|
||||
public static function safe(string $string, bool $removeNumbers = true): string
|
||||
public static function safe(string $string): string
|
||||
{
|
||||
// 0nly continue if we have a string with length
|
||||
if (StringHelper::check($string))
|
||||
// Remove leading and trailing backslashes
|
||||
$string = trim($string, '\\');
|
||||
|
||||
// Split the string into namespace segments
|
||||
$segments = explode('\\', $string);
|
||||
|
||||
foreach ($segments as &$segment)
|
||||
{
|
||||
// make sure it has not numbers
|
||||
if ($removeNumbers)
|
||||
// Check if segment starts with a number
|
||||
if (preg_match("/^\d/", $segment))
|
||||
{
|
||||
$string = StringHelper::numbers($string);
|
||||
// Extract the starting number(s)
|
||||
preg_match("/^\d+/", $segment, $matches);
|
||||
|
||||
if (isset($matches[0]))
|
||||
{
|
||||
$numberWord = StringHelper::numbers($matches[0]);
|
||||
$segment = str_replace($matches[0], $numberWord, $segment);
|
||||
}
|
||||
}
|
||||
|
||||
// Transliterate string TODO: look again as this makes it lowercase
|
||||
// $string = StringHelper::transliterate($string);
|
||||
// $segment = StringHelper::transliterate($segment);
|
||||
|
||||
// first remove all [\] backslashes
|
||||
$string = str_replace('\\', '+', (string) $string);
|
||||
|
||||
// remove all and keep only characters and [\] backslashes inside of the string
|
||||
if ($removeNumbers)
|
||||
{
|
||||
$string = trim( preg_replace("/[^A-Za-z\+]/", '', $string), '+');
|
||||
}
|
||||
else
|
||||
{
|
||||
$string = trim( preg_replace("/[^A-Za-z0-9\+]/", '', $string), '+');
|
||||
}
|
||||
|
||||
// place the [\] backslashes back
|
||||
return trim( preg_replace("/\++/", '\\', $string));
|
||||
// Make sure segment only contains valid characters
|
||||
$segment = preg_replace("/[^A-Za-z0-9]/", '', $segment);
|
||||
}
|
||||
|
||||
// not a string
|
||||
return '';
|
||||
// Join the namespace segments back together
|
||||
return implode('\\', $segments);
|
||||
}
|
37
src/ff7d0111-8f79-42aa-ac14-b53ba2c49369/README.md
Normal file
37
src/ff7d0111-8f79-42aa-ac14-b53ba2c49369/README.md
Normal file
@ -0,0 +1,37 @@
|
||||
```
|
||||
██████╗ ██████╗ ██╗ ██╗███████╗██████╗
|
||||
██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔══██╗
|
||||
██████╔╝██║ ██║██║ █╗ ██║█████╗ ██████╔╝
|
||||
██╔═══╝ ██║ ██║██║███╗██║██╔══╝ ██╔══██╗
|
||||
██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║
|
||||
╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
|
||||
```
|
||||
# trait IsString (Details)
|
||||
> namespace: **VDM\Joomla\Abstraction\StorageRegistry\Traits**
|
||||
```uml
|
||||
@startuml
|
||||
class IsString << (T,Orange) >> #Turquoise {
|
||||
+ isString(string $path) : bool
|
||||
}
|
||||
|
||||
note right of IsString::isString
|
||||
Check if a registry path exists and is a string
|
||||
|
||||
since: 3.2.0
|
||||
return: bool
|
||||
end note
|
||||
|
||||
@enduml
|
||||
```
|
||||
|
||||
---
|
||||
```
|
||||
██╗ ██████╗██████╗
|
||||
██║██╔════╝██╔══██╗
|
||||
██║██║ ██████╔╝
|
||||
██ ██║██║ ██╔══██╗
|
||||
╚█████╔╝╚██████╗██████╔╝
|
||||
╚════╝ ╚═════╝╚═════╝
|
||||
```
|
||||
> Build with [Joomla Component Builder](https://git.vdm.dev/joomla/Component-Builder)
|
||||
|
48
src/ff7d0111-8f79-42aa-ac14-b53ba2c49369/code.php
Normal file
48
src/ff7d0111-8f79-42aa-ac14-b53ba2c49369/code.php
Normal file
@ -0,0 +1,48 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Component.Builder
|
||||
*
|
||||
* @created 4th September, 2022
|
||||
* @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\Abstraction\StorageRegistry\Traits;
|
||||
|
||||
|
||||
/**
|
||||
* Is String Values
|
||||
*
|
||||
* @since 3.2.0
|
||||
*/
|
||||
trait IsString
|
||||
{
|
||||
/**
|
||||
* Check if a registry path exists and is a string
|
||||
*
|
||||
* @param string $path Registry path (e.g. joomla.content.showauthor)
|
||||
*
|
||||
* @return boolean
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function isString(string $path): bool
|
||||
{
|
||||
// Return default value if path is empty
|
||||
if (empty($path)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// get the value
|
||||
if (($node = $this->get($path)) !== null
|
||||
&& is_string($node)
|
||||
&& strlen((string) $node) > 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
25
src/ff7d0111-8f79-42aa-ac14-b53ba2c49369/code.power
Normal file
25
src/ff7d0111-8f79-42aa-ac14-b53ba2c49369/code.power
Normal file
@ -0,0 +1,25 @@
|
||||
/**
|
||||
* Check if a registry path exists and is a string
|
||||
*
|
||||
* @param string $path Registry path (e.g. joomla.content.showauthor)
|
||||
*
|
||||
* @return boolean
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function isString(string $path): bool
|
||||
{
|
||||
// Return default value if path is empty
|
||||
if (empty($path)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// get the value
|
||||
if (($node = $this->get($path)) !== null
|
||||
&& is_string($node)
|
||||
&& strlen((string) $node) > 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
18
src/ff7d0111-8f79-42aa-ac14-b53ba2c49369/settings.json
Normal file
18
src/ff7d0111-8f79-42aa-ac14-b53ba2c49369/settings.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"add_head": "0",
|
||||
"add_licensing_template": "2",
|
||||
"extends": "0",
|
||||
"guid": "ff7d0111-8f79-42aa-ac14-b53ba2c49369",
|
||||
"implements": null,
|
||||
"load_selection": null,
|
||||
"name": "IsString",
|
||||
"power_version": "1.0.0",
|
||||
"system_name": "VDM.Abstraction.StorageRegistry.Traits.IsString",
|
||||
"type": "trait",
|
||||
"use_selection": null,
|
||||
"namespace": "VDM\\Joomla\\Abstraction.StorageRegistry.Traits.IsString",
|
||||
"description": "Is String Values\r\n\r\n@since 3.2.0",
|
||||
"licensing_template": "\/**\r\n * @package Joomla.Component.Builder\r\n *\r\n * @created 4th September, 2022\r\n * @author Llewellyn van der Merwe <https:\/\/dev.vdm.io>\r\n * @git Joomla Component Builder <https:\/\/git.vdm.dev\/joomla\/Component-Builder>\r\n * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.\r\n * @license GNU General Public License version 2 or later; see LICENSE.txt\r\n *\/\r\n",
|
||||
"head": "",
|
||||
"composer": ""
|
||||
}
|
@ -8,6 +8,7 @@
|
||||
```
|
||||
# abstract class BaseConfig (Details)
|
||||
> namespace: **VDM\Joomla\Abstraction**
|
||||
> extends: **JoomlaRegistry**
|
||||
```uml
|
||||
@startuml
|
||||
abstract BaseConfig #Orange {
|
||||
|
@ -21,6 +21,17 @@
|
||||
"spk": "Super__0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a__Power",
|
||||
"guid": "0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a"
|
||||
},
|
||||
"11572d9b-e3d5-4b29-904c-9618d8f2bfd8": {
|
||||
"name": "Count",
|
||||
"type": "trait",
|
||||
"namespace": "VDM\\Joomla\\Abstraction\\StorageRegistry\\Traits",
|
||||
"code": "src\/11572d9b-e3d5-4b29-904c-9618d8f2bfd8\/code.php",
|
||||
"power": "src\/11572d9b-e3d5-4b29-904c-9618d8f2bfd8\/code.power",
|
||||
"settings": "src\/11572d9b-e3d5-4b29-904c-9618d8f2bfd8\/settings.json",
|
||||
"path": "src\/11572d9b-e3d5-4b29-904c-9618d8f2bfd8",
|
||||
"spk": "Super__11572d9b_e3d5_4b29_904c_9618d8f2bfd8__Power",
|
||||
"guid": "11572d9b-e3d5-4b29-904c-9618d8f2bfd8"
|
||||
},
|
||||
"1198aecf-84c6-45d2-aea8-d531aa4afdfa": {
|
||||
"name": "FormHelper",
|
||||
"type": "abstract class",
|
||||
@ -54,6 +65,17 @@
|
||||
"spk": "Super__1f28cb53_60d9_4db1_b517_3c7dc6b429ef__Power",
|
||||
"guid": "1f28cb53-60d9-4db1-b517-3c7dc6b429ef"
|
||||
},
|
||||
"215b35ac-1b26-4838-bbcf-d1fdbbd9353f": {
|
||||
"name": "InArray",
|
||||
"type": "trait",
|
||||
"namespace": "VDM\\Joomla\\Abstraction\\StorageRegistry\\Traits",
|
||||
"code": "src\/215b35ac-1b26-4838-bbcf-d1fdbbd9353f\/code.php",
|
||||
"power": "src\/215b35ac-1b26-4838-bbcf-d1fdbbd9353f\/code.power",
|
||||
"settings": "src\/215b35ac-1b26-4838-bbcf-d1fdbbd9353f\/settings.json",
|
||||
"path": "src\/215b35ac-1b26-4838-bbcf-d1fdbbd9353f",
|
||||
"spk": "Super__215b35ac_1b26_4838_bbcf_d1fdbbd9353f__Power",
|
||||
"guid": "215b35ac-1b26-4838-bbcf-d1fdbbd9353f"
|
||||
},
|
||||
"2ad31f74-f579-499d-b98b-c4f54fd615dd": {
|
||||
"name": "LoadInterface",
|
||||
"type": "interface",
|
||||
@ -98,6 +120,17 @@
|
||||
"spk": "Super__3cf76fbf_fd95_4a33_878e_7aff6d36b7f6__Power",
|
||||
"guid": "3cf76fbf-fd95-4a33-878e-7aff6d36b7f6"
|
||||
},
|
||||
"43134867-5cb8-4280-9be8-309fd2fd135f": {
|
||||
"name": "ActiveStorageRegistry",
|
||||
"type": "abstract class",
|
||||
"namespace": "VDM\\Joomla\\Abstraction",
|
||||
"code": "src\/43134867-5cb8-4280-9be8-309fd2fd135f\/code.php",
|
||||
"power": "src\/43134867-5cb8-4280-9be8-309fd2fd135f\/code.power",
|
||||
"settings": "src\/43134867-5cb8-4280-9be8-309fd2fd135f\/settings.json",
|
||||
"path": "src\/43134867-5cb8-4280-9be8-309fd2fd135f",
|
||||
"spk": "Super__43134867_5cb8_4280_9be8_309fd2fd135f__Power",
|
||||
"guid": "43134867-5cb8-4280-9be8-309fd2fd135f"
|
||||
},
|
||||
"44a3367c-f9e4-406b-b396-0f452bde0f03": {
|
||||
"name": "Mapper",
|
||||
"type": "abstract class",
|
||||
@ -109,6 +142,17 @@
|
||||
"spk": "Super__44a3367c_f9e4_406b_b396_0f452bde0f03__Power",
|
||||
"guid": "44a3367c-f9e4-406b-b396-0f452bde0f03"
|
||||
},
|
||||
"4815e1c7-a433-443d-a112-d1e03d7df84b": {
|
||||
"name": "Database",
|
||||
"type": "class",
|
||||
"namespace": "VDM\\Joomla\\Componentbuilder\\Service",
|
||||
"code": "src\/4815e1c7-a433-443d-a112-d1e03d7df84b\/code.php",
|
||||
"power": "src\/4815e1c7-a433-443d-a112-d1e03d7df84b\/code.power",
|
||||
"settings": "src\/4815e1c7-a433-443d-a112-d1e03d7df84b\/settings.json",
|
||||
"path": "src\/4815e1c7-a433-443d-a112-d1e03d7df84b",
|
||||
"spk": "Super__4815e1c7_a433_443d_a112_d1e03d7df84b__Power",
|
||||
"guid": "4815e1c7-a433-443d-a112-d1e03d7df84b"
|
||||
},
|
||||
"4b225c51-d293-48e4-b3f6-5136cf5c3f18": {
|
||||
"name": "JsonHelper",
|
||||
"type": "abstract class",
|
||||
@ -120,6 +164,17 @@
|
||||
"spk": "Super__4b225c51_d293_48e4_b3f6_5136cf5c3f18__Power",
|
||||
"guid": "4b225c51-d293-48e4-b3f6-5136cf5c3f18"
|
||||
},
|
||||
"4d4e76e9-12d9-4d19-b58c-b88974b2586a": {
|
||||
"name": "MapperDouble",
|
||||
"type": "abstract class",
|
||||
"namespace": "VDM\\Joomla\\Componentbuilder\\Abstraction",
|
||||
"code": "src\/4d4e76e9-12d9-4d19-b58c-b88974b2586a\/code.php",
|
||||
"power": "src\/4d4e76e9-12d9-4d19-b58c-b88974b2586a\/code.power",
|
||||
"settings": "src\/4d4e76e9-12d9-4d19-b58c-b88974b2586a\/settings.json",
|
||||
"path": "src\/4d4e76e9-12d9-4d19-b58c-b88974b2586a",
|
||||
"spk": "Super__4d4e76e9_12d9_4d19_b58c_b88974b2586a__Power",
|
||||
"guid": "4d4e76e9-12d9-4d19-b58c-b88974b2586a"
|
||||
},
|
||||
"524eb8f6-38d4-47dc-92ad-98b94e099ac0": {
|
||||
"name": "Insert",
|
||||
"type": "final class",
|
||||
@ -131,6 +186,17 @@
|
||||
"spk": "Super__524eb8f6_38d4_47dc_92ad_98b94e099ac0__Power",
|
||||
"guid": "524eb8f6-38d4-47dc-92ad-98b94e099ac0"
|
||||
},
|
||||
"52a1d14f-304a-431c-8fa4-411179942db5": {
|
||||
"name": "VarExport",
|
||||
"type": "trait",
|
||||
"namespace": "VDM\\Joomla\\Abstraction\\StorageRegistry\\Traits",
|
||||
"code": "src\/52a1d14f-304a-431c-8fa4-411179942db5\/code.php",
|
||||
"power": "src\/52a1d14f-304a-431c-8fa4-411179942db5\/code.power",
|
||||
"settings": "src\/52a1d14f-304a-431c-8fa4-411179942db5\/settings.json",
|
||||
"path": "src\/52a1d14f-304a-431c-8fa4-411179942db5",
|
||||
"spk": "Super__52a1d14f_304a_431c_8fa4_411179942db5__Power",
|
||||
"guid": "52a1d14f-304a-431c-8fa4-411179942db5"
|
||||
},
|
||||
"584747d1-3a86-453d-b7a3-a2219de8d777": {
|
||||
"name": "Model",
|
||||
"type": "abstract class",
|
||||
@ -142,6 +208,17 @@
|
||||
"spk": "Super__584747d1_3a86_453d_b7a3_a2219de8d777__Power",
|
||||
"guid": "584747d1-3a86-453d-b7a3-a2219de8d777"
|
||||
},
|
||||
"59b1a2ea-d77e-4040-ac8c-e65cd8743e9b": {
|
||||
"name": "GetString",
|
||||
"type": "trait",
|
||||
"namespace": "VDM\\Joomla\\Abstraction\\StorageRegistry\\Traits",
|
||||
"code": "src\/59b1a2ea-d77e-4040-ac8c-e65cd8743e9b\/code.php",
|
||||
"power": "src\/59b1a2ea-d77e-4040-ac8c-e65cd8743e9b\/code.power",
|
||||
"settings": "src\/59b1a2ea-d77e-4040-ac8c-e65cd8743e9b\/settings.json",
|
||||
"path": "src\/59b1a2ea-d77e-4040-ac8c-e65cd8743e9b",
|
||||
"spk": "Super__59b1a2ea_d77e_4040_ac8c_e65cd8743e9b__Power",
|
||||
"guid": "59b1a2ea-d77e-4040-ac8c-e65cd8743e9b"
|
||||
},
|
||||
"640b5352-fb09-425f-a26e-cd44eda03f15": {
|
||||
"name": "Helper",
|
||||
"type": "abstract class",
|
||||
@ -153,6 +230,28 @@
|
||||
"spk": "Super__640b5352_fb09_425f_a26e_cd44eda03f15__Power",
|
||||
"guid": "640b5352-fb09-425f-a26e-cd44eda03f15"
|
||||
},
|
||||
"64a6ff6c-069c-4a11-a76b-db5e36c27690": {
|
||||
"name": "Base64Helper",
|
||||
"type": "abstract class",
|
||||
"namespace": "VDM\\Joomla\\Utilities",
|
||||
"code": "src\/64a6ff6c-069c-4a11-a76b-db5e36c27690\/code.php",
|
||||
"power": "src\/64a6ff6c-069c-4a11-a76b-db5e36c27690\/code.power",
|
||||
"settings": "src\/64a6ff6c-069c-4a11-a76b-db5e36c27690\/settings.json",
|
||||
"path": "src\/64a6ff6c-069c-4a11-a76b-db5e36c27690",
|
||||
"spk": "Super__64a6ff6c_069c_4a11_a76b_db5e36c27690__Power",
|
||||
"guid": "64a6ff6c-069c-4a11-a76b-db5e36c27690"
|
||||
},
|
||||
"64e291c2-11f1-423d-a44d-837cc12cc017": {
|
||||
"name": "Storageregistryinterface",
|
||||
"type": "interface",
|
||||
"namespace": "VDM\\Joomla\\Interfaces",
|
||||
"code": "src\/64e291c2-11f1-423d-a44d-837cc12cc017\/code.php",
|
||||
"power": "src\/64e291c2-11f1-423d-a44d-837cc12cc017\/code.power",
|
||||
"settings": "src\/64e291c2-11f1-423d-a44d-837cc12cc017\/settings.json",
|
||||
"path": "src\/64e291c2-11f1-423d-a44d-837cc12cc017",
|
||||
"spk": "Super__64e291c2_11f1_423d_a44d_837cc12cc017__Power",
|
||||
"guid": "64e291c2-11f1-423d-a44d-837cc12cc017"
|
||||
},
|
||||
"6cbef8f8-4813-48e3-b05a-65e1aea95171": {
|
||||
"name": "Database",
|
||||
"type": "abstract class",
|
||||
@ -175,6 +274,17 @@
|
||||
"spk": "Super__7179fde6_1e51_4b51_8545_7ca18f74a0f4__Power",
|
||||
"guid": "7179fde6-1e51-4b51-8545-7ca18f74a0f4"
|
||||
},
|
||||
"7921a2b3-b58c-4184-af3f-f58094f695a8": {
|
||||
"name": "Mapperdoublejoininterface",
|
||||
"type": "interface",
|
||||
"namespace": "VDM\\Joomla\\Componentbuilder\\Interfaces",
|
||||
"code": "src\/7921a2b3-b58c-4184-af3f-f58094f695a8\/code.php",
|
||||
"power": "src\/7921a2b3-b58c-4184-af3f-f58094f695a8\/code.power",
|
||||
"settings": "src\/7921a2b3-b58c-4184-af3f-f58094f695a8\/settings.json",
|
||||
"path": "src\/7921a2b3-b58c-4184-af3f-f58094f695a8",
|
||||
"spk": "Super__7921a2b3_b58c_4184_af3f_f58094f695a8__Power",
|
||||
"guid": "7921a2b3-b58c-4184-af3f-f58094f695a8"
|
||||
},
|
||||
"79d765b3-7319-4988-9730-446c7f347020": {
|
||||
"name": "Utilities",
|
||||
"type": "trait",
|
||||
@ -186,6 +296,28 @@
|
||||
"spk": "Super__79d765b3_7319_4988_9730_446c7f347020__Power",
|
||||
"guid": "79d765b3-7319-4988-9730-446c7f347020"
|
||||
},
|
||||
"7d494d91-ab60-43cd-aecf-d50e07f7f30e": {
|
||||
"name": "ToString",
|
||||
"type": "trait",
|
||||
"namespace": "VDM\\Joomla\\Abstraction\\StorageRegistry\\Traits",
|
||||
"code": "src\/7d494d91-ab60-43cd-aecf-d50e07f7f30e\/code.php",
|
||||
"power": "src\/7d494d91-ab60-43cd-aecf-d50e07f7f30e\/code.power",
|
||||
"settings": "src\/7d494d91-ab60-43cd-aecf-d50e07f7f30e\/settings.json",
|
||||
"path": "src\/7d494d91-ab60-43cd-aecf-d50e07f7f30e",
|
||||
"spk": "Super__7d494d91_ab60_43cd_aecf_d50e07f7f30e__Power",
|
||||
"guid": "7d494d91-ab60-43cd-aecf-d50e07f7f30e"
|
||||
},
|
||||
"7e822c03-1b20-41d1-9427-f5b8d5836af7": {
|
||||
"name": "StorageRegistry",
|
||||
"type": "abstract class",
|
||||
"namespace": "VDM\\Joomla\\Abstraction",
|
||||
"code": "src\/7e822c03-1b20-41d1-9427-f5b8d5836af7\/code.php",
|
||||
"power": "src\/7e822c03-1b20-41d1-9427-f5b8d5836af7\/code.power",
|
||||
"settings": "src\/7e822c03-1b20-41d1-9427-f5b8d5836af7\/settings.json",
|
||||
"path": "src\/7e822c03-1b20-41d1-9427-f5b8d5836af7",
|
||||
"spk": "Super__7e822c03_1b20_41d1_9427_f5b8d5836af7__Power",
|
||||
"guid": "7e822c03-1b20-41d1-9427-f5b8d5836af7"
|
||||
},
|
||||
"8aef58c1-3f70-4bd4-b9e4-3f29fcd41cff": {
|
||||
"name": "ModelInterface",
|
||||
"type": "interface",
|
||||
@ -263,6 +395,17 @@
|
||||
"spk": "Super__ad12ca1c_d3ce_4e7f_88c5_c6c92bdedc48__Power",
|
||||
"guid": "ad12ca1c-d3ce-4e7f-88c5-c6c92bdedc48"
|
||||
},
|
||||
"af0eedbe-603b-4671-8e5a-28165d88254b": {
|
||||
"name": "Activestorageregistryinterface",
|
||||
"type": "interface",
|
||||
"namespace": "VDM\\Joomla\\Interfaces",
|
||||
"code": "src\/af0eedbe-603b-4671-8e5a-28165d88254b\/code.php",
|
||||
"power": "src\/af0eedbe-603b-4671-8e5a-28165d88254b\/code.power",
|
||||
"settings": "src\/af0eedbe-603b-4671-8e5a-28165d88254b\/settings.json",
|
||||
"path": "src\/af0eedbe-603b-4671-8e5a-28165d88254b",
|
||||
"spk": "Super__af0eedbe_603b_4671_8e5a_28165d88254b__Power",
|
||||
"guid": "af0eedbe-603b-4671-8e5a-28165d88254b"
|
||||
},
|
||||
"b84e947d-2a13-44f7-ac0f-3902ae55ae0c": {
|
||||
"name": "BaseRegistry",
|
||||
"type": "abstract class",
|
||||
@ -362,6 +505,17 @@
|
||||
"spk": "Super__e0f6ddbe_2a35_4537_942c_faff2ebd04f6__Power",
|
||||
"guid": "e0f6ddbe-2a35-4537-942c-faff2ebd04f6"
|
||||
},
|
||||
"ff7d0111-8f79-42aa-ac14-b53ba2c49369": {
|
||||
"name": "IsString",
|
||||
"type": "trait",
|
||||
"namespace": "VDM\\Joomla\\Abstraction\\StorageRegistry\\Traits",
|
||||
"code": "src\/ff7d0111-8f79-42aa-ac14-b53ba2c49369\/code.php",
|
||||
"power": "src\/ff7d0111-8f79-42aa-ac14-b53ba2c49369\/code.power",
|
||||
"settings": "src\/ff7d0111-8f79-42aa-ac14-b53ba2c49369\/settings.json",
|
||||
"path": "src\/ff7d0111-8f79-42aa-ac14-b53ba2c49369",
|
||||
"spk": "Super__ff7d0111_8f79_42aa_ac14_b53ba2c49369__Power",
|
||||
"guid": "ff7d0111-8f79-42aa-ac14-b53ba2c49369"
|
||||
},
|
||||
"ffbd4e1f-a342-4080-ab7d-1de3741bf319": {
|
||||
"name": "BaseConfig",
|
||||
"type": "abstract class",
|
||||
|
Loading…
Reference in New Issue
Block a user