Update 2024-07-16 14:12:12

This commit is contained in:
Robot 2024-07-16 14:12:10 +02:00
parent 5d28565ce7
commit 087a84ab8b
Signed by untrusted user: Robot
GPG Key ID: 14DECD44E7E1BB95
131 changed files with 4690 additions and 2537 deletions

168
README.md
View File

@ -25,112 +25,124 @@ This repository contains an index (see below) of all the approved powers within
- **Namespace**: [VDM\Joomla\Abstraction](#vdm-joomla-abstraction) - **Namespace**: [VDM\Joomla\Abstraction](#vdm-joomla-abstraction)
- **abstract class ActiveRegistry** | [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 ActiveRegistry** | [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) | SPK: `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 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) | SPK: `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 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) | SPK: `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 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) | SPK: `Super---6cbef8f8_4813_48e3_b05a_65e1aea95171---Power`
- **abstract class Factory** | [Details](src/2e5bf608-de5c-4b00-a20d-47c26aa350d9) | [Code](src/2e5bf608-de5c-4b00-a20d-47c26aa350d9/code.php) | [Settings](src/2e5bf608-de5c-4b00-a20d-47c26aa350d9/settings.json) | Super__2e5bf608_de5c_4b00_a20d_47c26aa350d9__Power - **abstract class Factory** | [Details](src/2e5bf608-de5c-4b00-a20d-47c26aa350d9) | [Code](src/2e5bf608-de5c-4b00-a20d-47c26aa350d9/code.php) | [Settings](src/2e5bf608-de5c-4b00-a20d-47c26aa350d9/settings.json) | SPK: `Super---2e5bf608_de5c_4b00_a20d_47c26aa350d9---Power`
- **abstract class Grep** | [Details](src/1401a167-0ce4-4f4a-afee-2d8b02ed339b) | [Code](src/1401a167-0ce4-4f4a-afee-2d8b02ed339b/code.php) | [Settings](src/1401a167-0ce4-4f4a-afee-2d8b02ed339b/settings.json) | Super__1401a167_0ce4_4f4a_afee_2d8b02ed339b__Power - **abstract class Grep** | [Details](src/1401a167-0ce4-4f4a-afee-2d8b02ed339b) | [Code](src/1401a167-0ce4-4f4a-afee-2d8b02ed339b/code.php) | [Settings](src/1401a167-0ce4-4f4a-afee-2d8b02ed339b/settings.json) | SPK: `Super---1401a167_0ce4_4f4a_afee_2d8b02ed339b---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 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) | SPK: `Super---584747d1_3a86_453d_b7a3_a2219de8d777---Power`
- **abstract class Registry** | [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 - **abstract class Registry** | [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) | SPK: `Super---7e822c03_1b20_41d1_9427_f5b8d5836af7---Power`
- **abstract class Schema** | [Details](src/f3c04c28-bce4-422e-be93-7d163e4e342b) | [Code](src/f3c04c28-bce4-422e-be93-7d163e4e342b/code.php) | [Settings](src/f3c04c28-bce4-422e-be93-7d163e4e342b/settings.json) | Super__f3c04c28_bce4_422e_be93_7d163e4e342b__Power - **abstract class Schema** | [Details](src/f3c04c28-bce4-422e-be93-7d163e4e342b) | [Code](src/f3c04c28-bce4-422e-be93-7d163e4e342b/code.php) | [Settings](src/f3c04c28-bce4-422e-be93-7d163e4e342b/settings.json) | SPK: `Super---f3c04c28_bce4_422e_be93_7d163e4e342b---Power`
- **abstract class SchemaChecker** | [Details](src/5f0205fa-5c43-424a-af7d-abc943c17c8c) | [Code](src/5f0205fa-5c43-424a-af7d-abc943c17c8c/code.php) | [Settings](src/5f0205fa-5c43-424a-af7d-abc943c17c8c/settings.json) | SPK: `Super---5f0205fa_5c43_424a_af7d_abc943c17c8c---Power`
- **Namespace**: [VDM\Joomla\Componentbuilder](#vdm-joomla-componentbuilder) - **Namespace**: [VDM\Joomla\Componentbuilder](#vdm-joomla-componentbuilder)
- **final 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 - **final 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) | SPK: `Super---bfd1d6d5_56c1_4fe9_9fee_1c5910e1f5d8---Power`
- **Namespace**: [VDM\Joomla\Data](#vdm-joomla-data) - **Namespace**: [VDM\Joomla\Data](#vdm-joomla-data)
- **abstract class Factory** | [Details](src/9d76b8dc-3883-4755-b11c-131d19ca8a53) | [Code](src/9d76b8dc-3883-4755-b11c-131d19ca8a53/code.php) | [Settings](src/9d76b8dc-3883-4755-b11c-131d19ca8a53/settings.json) | Super__9d76b8dc_3883_4755_b11c_131d19ca8a53__Power - **abstract class Factory** | [Details](src/9d76b8dc-3883-4755-b11c-131d19ca8a53) | [Code](src/9d76b8dc-3883-4755-b11c-131d19ca8a53/code.php) | [Settings](src/9d76b8dc-3883-4755-b11c-131d19ca8a53/settings.json) | SPK: `Super---9d76b8dc_3883_4755_b11c_131d19ca8a53---Power`
- **final class Item** | [Details](src/9206082e-a3f7-472e-98b2-de90d06cbdcd) | [Code](src/9206082e-a3f7-472e-98b2-de90d06cbdcd/code.php) | [Settings](src/9206082e-a3f7-472e-98b2-de90d06cbdcd/settings.json) | Super__9206082e_a3f7_472e_98b2_de90d06cbdcd__Power - **final class Item** | [Details](src/9206082e-a3f7-472e-98b2-de90d06cbdcd) | [Code](src/9206082e-a3f7-472e-98b2-de90d06cbdcd/code.php) | [Settings](src/9206082e-a3f7-472e-98b2-de90d06cbdcd/settings.json) | SPK: `Super---9206082e_a3f7_472e_98b2_de90d06cbdcd---Power`
- **final class Items** | [Details](src/21bca8a4-5b28-41c4-843e-8097f0ba7cca) | [Code](src/21bca8a4-5b28-41c4-843e-8097f0ba7cca/code.php) | [Settings](src/21bca8a4-5b28-41c4-843e-8097f0ba7cca/settings.json) | Super__21bca8a4_5b28_41c4_843e_8097f0ba7cca__Power - **final class Items** | [Details](src/21bca8a4-5b28-41c4-843e-8097f0ba7cca) | [Code](src/21bca8a4-5b28-41c4-843e-8097f0ba7cca/code.php) | [Settings](src/21bca8a4-5b28-41c4-843e-8097f0ba7cca/settings.json) | SPK: `Super---21bca8a4_5b28_41c4_843e_8097f0ba7cca---Power`
- **final class MultiSubform** | [Details](src/e0198c3f-777a-4a0b-87b7-e6a198afc8f9) | [Code](src/e0198c3f-777a-4a0b-87b7-e6a198afc8f9/code.php) | [Settings](src/e0198c3f-777a-4a0b-87b7-e6a198afc8f9/settings.json) | Super__e0198c3f_777a_4a0b_87b7_e6a198afc8f9__Power - **final class MultiSubform** | [Details](src/e0198c3f-777a-4a0b-87b7-e6a198afc8f9) | [Code](src/e0198c3f-777a-4a0b-87b7-e6a198afc8f9/code.php) | [Settings](src/e0198c3f-777a-4a0b-87b7-e6a198afc8f9/settings.json) | SPK: `Super---e0198c3f_777a_4a0b_87b7_e6a198afc8f9---Power`
- **final class Subform** | [Details](src/85785701-07b2-4f81-bc1e-0f423700c254) | [Code](src/85785701-07b2-4f81-bc1e-0f423700c254/code.php) | [Settings](src/85785701-07b2-4f81-bc1e-0f423700c254/settings.json) | Super__85785701_07b2_4f81_bc1e_0f423700c254__Power - **final class Subform** | [Details](src/85785701-07b2-4f81-bc1e-0f423700c254) | [Code](src/85785701-07b2-4f81-bc1e-0f423700c254/code.php) | [Settings](src/85785701-07b2-4f81-bc1e-0f423700c254/settings.json) | SPK: `Super---85785701_07b2_4f81_bc1e_0f423700c254---Power`
- **class Remote** | [Details](src/728ee726-3f0f-4762-899d-f8c9430cee58) | [Code](src/728ee726-3f0f-4762-899d-f8c9430cee58/code.php) | [Settings](src/728ee726-3f0f-4762-899d-f8c9430cee58/settings.json) | Super__728ee726_3f0f_4762_899d_f8c9430cee58__Power
- **class Repository** | [Details](src/eb7d69c2-4ee9-4bd0-aacc-ab51a12be895) | [Code](src/eb7d69c2-4ee9-4bd0-aacc-ab51a12be895/code.php) | [Settings](src/eb7d69c2-4ee9-4bd0-aacc-ab51a12be895/settings.json) | Super__eb7d69c2_4ee9_4bd0_aacc_ab51a12be895__Power
- **Namespace**: [VDM\Joomla\Database](#vdm-joomla-database) - **Namespace**: [VDM\Joomla\Database](#vdm-joomla-database)
- **final class Delete** | [Details](src/92291f1f-f248-4ec0-9f2a-3d47c49eeac1) | [Code](src/92291f1f-f248-4ec0-9f2a-3d47c49eeac1/code.php) | [Settings](src/92291f1f-f248-4ec0-9f2a-3d47c49eeac1/settings.json) | Super__92291f1f_f248_4ec0_9f2a_3d47c49eeac1__Power - **final class Delete** | [Details](src/92291f1f-f248-4ec0-9f2a-3d47c49eeac1) | [Code](src/92291f1f-f248-4ec0-9f2a-3d47c49eeac1/code.php) | [Settings](src/92291f1f-f248-4ec0-9f2a-3d47c49eeac1/settings.json) | SPK: `Super---92291f1f_f248_4ec0_9f2a_3d47c49eeac1---Power`
- **final class Insert** | [Details](src/524eb8f6-38d4-47dc-92ad-98b94e099ac0) | [Code](src/524eb8f6-38d4-47dc-92ad-98b94e099ac0/code.php) | [Settings](src/524eb8f6-38d4-47dc-92ad-98b94e099ac0/settings.json) | Super__524eb8f6_38d4_47dc_92ad_98b94e099ac0__Power - **final class Insert** | [Details](src/524eb8f6-38d4-47dc-92ad-98b94e099ac0) | [Code](src/524eb8f6-38d4-47dc-92ad-98b94e099ac0/code.php) | [Settings](src/524eb8f6-38d4-47dc-92ad-98b94e099ac0/settings.json) | SPK: `Super---524eb8f6_38d4_47dc_92ad_98b94e099ac0---Power`
- **final class Load** | [Details](src/06f8eada-d59b-441c-b287-0aea1793da5a) | [Code](src/06f8eada-d59b-441c-b287-0aea1793da5a/code.php) | [Settings](src/06f8eada-d59b-441c-b287-0aea1793da5a/settings.json) | Super__06f8eada_d59b_441c_b287_0aea1793da5a__Power - **final class Load** | [Details](src/06f8eada-d59b-441c-b287-0aea1793da5a) | [Code](src/06f8eada-d59b-441c-b287-0aea1793da5a/code.php) | [Settings](src/06f8eada-d59b-441c-b287-0aea1793da5a/settings.json) | SPK: `Super---06f8eada_d59b_441c_b287_0aea1793da5a---Power`
- **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 - **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) | SPK: `Super---cce56585_58b0_4f72_a92c_e2635ea52d83---Power`
- **Namespace**: [VDM\Joomla\Interfaces](#vdm-joomla-interfaces) - **Namespace**: [VDM\Joomla\Interfaces](#vdm-joomla-interfaces)
- **interface Activeregistryinterface** | [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 Activeregistryinterface** | [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) | SPK: `Super---af0eedbe_603b_4671_8e5a_28165d88254b---Power`
- **interface DeleteInterface** | [Details](src/9c3aa650-e536-4eea-a2d4-73cc3e184aa9) | [Code](src/9c3aa650-e536-4eea-a2d4-73cc3e184aa9/code.php) | [Settings](src/9c3aa650-e536-4eea-a2d4-73cc3e184aa9/settings.json) | Super__9c3aa650_e536_4eea_a2d4_73cc3e184aa9__Power - **interface DeleteInterface** | [Details](src/9c3aa650-e536-4eea-a2d4-73cc3e184aa9) | [Code](src/9c3aa650-e536-4eea-a2d4-73cc3e184aa9/code.php) | [Settings](src/9c3aa650-e536-4eea-a2d4-73cc3e184aa9/settings.json) | SPK: `Super---9c3aa650_e536_4eea_a2d4_73cc3e184aa9---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 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) | SPK: `Super---caf33c5d_858c_4f9a_894f_ab302ec5445a---Power`
- **interface GrepInterface** | [Details](src/c182506a-ab84-439c-b962-1e606b58d545) | [Code](src/c182506a-ab84-439c-b962-1e606b58d545/code.php) | [Settings](src/c182506a-ab84-439c-b962-1e606b58d545/settings.json) | Super__c182506a_ab84_439c_b962_1e606b58d545__Power - **interface GrepInterface** | [Details](src/c182506a-ab84-439c-b962-1e606b58d545) | [Code](src/c182506a-ab84-439c-b962-1e606b58d545/code.php) | [Settings](src/c182506a-ab84-439c-b962-1e606b58d545/settings.json) | SPK: `Super---c182506a_ab84_439c_b962_1e606b58d545---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 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) | SPK: `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 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) | SPK: `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 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) | SPK: `Super---8aef58c1_3f70_4bd4_b9e4_3f29fcd41cff---Power`
- **interface Registryinterface** | [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 Registryinterface** | [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) | SPK: `Super---64e291c2_11f1_423d_a44d_837cc12cc017---Power`
- **interface SchemaInterface** | [Details](src/4dd11b9b-3c64-460b-aaa6-62ba467db7aa) | [Code](src/4dd11b9b-3c64-460b-aaa6-62ba467db7aa/code.php) | [Settings](src/4dd11b9b-3c64-460b-aaa6-62ba467db7aa/settings.json) | Super__4dd11b9b_3c64_460b_aaa6_62ba467db7aa__Power - **interface SchemaCheckerInterface** | [Details](src/b6e9854c-3672-42ec-8843-26c24b4635bd) | [Code](src/b6e9854c-3672-42ec-8843-26c24b4635bd/code.php) | [Settings](src/b6e9854c-3672-42ec-8843-26c24b4635bd/settings.json) | SPK: `Super---b6e9854c_3672_42ec_8843_26c24b4635bd---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 SchemaInterface** | [Details](src/4dd11b9b-3c64-460b-aaa6-62ba467db7aa) | [Code](src/4dd11b9b-3c64-460b-aaa6-62ba467db7aa/code.php) | [Settings](src/4dd11b9b-3c64-460b-aaa6-62ba467db7aa/settings.json) | SPK: `Super---4dd11b9b_3c64_460b_aaa6_62ba467db7aa---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 - **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) | SPK: `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) | SPK: `Super---7179fde6_1e51_4b51_8545_7ca18f74a0f4---Power`
- **Namespace**: [VDM\Joomla\Model](#vdm-joomla-model) - **Namespace**: [VDM\Joomla\Model](#vdm-joomla-model)
- **final class Load** | [Details](src/bb29a833-73f7-4283-9327-bc7e41f0723b) | [Code](src/bb29a833-73f7-4283-9327-bc7e41f0723b/code.php) | [Settings](src/bb29a833-73f7-4283-9327-bc7e41f0723b/settings.json) | Super__bb29a833_73f7_4283_9327_bc7e41f0723b__Power - **final class Load** | [Details](src/bb29a833-73f7-4283-9327-bc7e41f0723b) | [Code](src/bb29a833-73f7-4283-9327-bc7e41f0723b/code.php) | [Settings](src/bb29a833-73f7-4283-9327-bc7e41f0723b/settings.json) | SPK: `Super---bb29a833_73f7_4283_9327_bc7e41f0723b---Power`
- **final class Upsert** | [Details](src/7c1fb50f-8fb1-4627-8705-6fedf7182ca5) | [Code](src/7c1fb50f-8fb1-4627-8705-6fedf7182ca5/code.php) | [Settings](src/7c1fb50f-8fb1-4627-8705-6fedf7182ca5/settings.json) | Super__7c1fb50f_8fb1_4627_8705_6fedf7182ca5__Power - **final class Upsert** | [Details](src/7c1fb50f-8fb1-4627-8705-6fedf7182ca5) | [Code](src/7c1fb50f-8fb1-4627-8705-6fedf7182ca5/code.php) | [Settings](src/7c1fb50f-8fb1-4627-8705-6fedf7182ca5/settings.json) | SPK: `Super---7c1fb50f_8fb1_4627_8705_6fedf7182ca5---Power`
- **Namespace**: [VDM\Joomla\Service](#vdm-joomla-service) - **Namespace**: [VDM\Joomla\Service](#vdm-joomla-service)
- **class Data** | [Details](src/a5daf189-3345-4b13-8716-c51f686f545b) | [Code](src/a5daf189-3345-4b13-8716-c51f686f545b/code.php) | [Settings](src/a5daf189-3345-4b13-8716-c51f686f545b/settings.json) | Super__a5daf189_3345_4b13_8716_c51f686f545b__Power - **class Data** | [Details](src/a5daf189-3345-4b13-8716-c51f686f545b) | [Code](src/a5daf189-3345-4b13-8716-c51f686f545b/code.php) | [Settings](src/a5daf189-3345-4b13-8716-c51f686f545b/settings.json) | SPK: `Super---a5daf189_3345_4b13_8716_c51f686f545b---Power`
- **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 - **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) | SPK: `Super---4815e1c7_a433_443d_a112_d1e03d7df84b---Power`
- **class Model** | [Details](src/2dcedd6c-c95b-4a37-9cac-95d28faedca3) | [Code](src/2dcedd6c-c95b-4a37-9cac-95d28faedca3/code.php) | [Settings](src/2dcedd6c-c95b-4a37-9cac-95d28faedca3/settings.json) | Super__2dcedd6c_c95b_4a37_9cac_95d28faedca3__Power - **class Model** | [Details](src/2dcedd6c-c95b-4a37-9cac-95d28faedca3) | [Code](src/2dcedd6c-c95b-4a37-9cac-95d28faedca3/code.php) | [Settings](src/2dcedd6c-c95b-4a37-9cac-95d28faedca3/settings.json) | SPK: `Super---2dcedd6c_c95b_4a37_9cac_95d28faedca3---Power`
- **class Table** | [Details](src/19b2ba92-1655-4384-acfb-979c80de8b6d) | [Code](src/19b2ba92-1655-4384-acfb-979c80de8b6d/code.php) | [Settings](src/19b2ba92-1655-4384-acfb-979c80de8b6d/settings.json) | Super__19b2ba92_1655_4384_acfb_979c80de8b6d__Power - **class Table** | [Details](src/19b2ba92-1655-4384-acfb-979c80de8b6d) | [Code](src/19b2ba92-1655-4384-acfb-979c80de8b6d/code.php) | [Settings](src/19b2ba92-1655-4384-acfb-979c80de8b6d/settings.json) | SPK: `Super---19b2ba92_1655_4384_acfb_979c80de8b6d---Power`
- **Namespace**: [VDM\Joomla\Utilities](#vdm-joomla-utilities) - **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 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) | SPK: `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 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) | SPK: `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 ClassHelper** | [Details](src/13c2cac1-a70d-42d7-99fc-eb7ac3443069) | [Code](src/13c2cac1-a70d-42d7-99fc-eb7ac3443069/code.php) | [Settings](src/13c2cac1-a70d-42d7-99fc-eb7ac3443069/settings.json) | SPK: `Super---13c2cac1_a70d_42d7_99fc_eb7ac3443069---Power`
- **abstract class FormHelper** | [Details](src/1198aecf-84c6-45d2-aea8-d531aa4afdfa) | [Code](src/1198aecf-84c6-45d2-aea8-d531aa4afdfa/code.php) | [Settings](src/1198aecf-84c6-45d2-aea8-d531aa4afdfa/settings.json) | Super__1198aecf_84c6_45d2_aea8_d531aa4afdfa__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) | SPK: `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 FormHelper** | [Details](src/1198aecf-84c6-45d2-aea8-d531aa4afdfa) | [Code](src/1198aecf-84c6-45d2-aea8-d531aa4afdfa/code.php) | [Settings](src/1198aecf-84c6-45d2-aea8-d531aa4afdfa/settings.json) | SPK: `Super---1198aecf_84c6_45d2_aea8_d531aa4afdfa---Power`
- **abstract class GetHelperExtrusion** | [Details](src/cefe4092-a4c2-41a6-a683-bd3ab5419cc6) | [Code](src/cefe4092-a4c2-41a6-a683-bd3ab5419cc6/code.php) | [Settings](src/cefe4092-a4c2-41a6-a683-bd3ab5419cc6/settings.json) | Super__cefe4092_a4c2_41a6_a683_bd3ab5419cc6__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) | SPK: `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 - **abstract class GetHelperExtrusion** | [Details](src/cefe4092-a4c2-41a6-a683-bd3ab5419cc6) | [Code](src/cefe4092-a4c2-41a6-a683-bd3ab5419cc6/code.php) | [Settings](src/cefe4092-a4c2-41a6-a683-bd3ab5419cc6/settings.json) | SPK: `Super---cefe4092_a4c2_41a6_a683_bd3ab5419cc6---Power`
- **abstract class JsonHelper** | [Details](src/4b225c51-d293-48e4-b3f6-5136cf5c3f18) | [Code](src/4b225c51-d293-48e4-b3f6-5136cf5c3f18/code.php) | [Settings](src/4b225c51-d293-48e4-b3f6-5136cf5c3f18/settings.json) | Super__4b225c51_d293_48e4_b3f6_5136cf5c3f18__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) | SPK: `Super---9c513baf_b279_43fd_ae29_a585c8cbc4f0---Power`
- **abstract class MathHelper** | [Details](src/152c8793-8b75-4715-996a-257b9f65451c) | [Code](src/152c8793-8b75-4715-996a-257b9f65451c/code.php) | [Settings](src/152c8793-8b75-4715-996a-257b9f65451c/settings.json) | Super__152c8793_8b75_4715_996a_257b9f65451c__Power - **abstract class JsonHelper** | [Details](src/4b225c51-d293-48e4-b3f6-5136cf5c3f18) | [Code](src/4b225c51-d293-48e4-b3f6-5136cf5c3f18/code.php) | [Settings](src/4b225c51-d293-48e4-b3f6-5136cf5c3f18/settings.json) | SPK: `Super---4b225c51_d293_48e4_b3f6_5136cf5c3f18---Power`
- **abstract class ObjectHelper** | [Details](src/91004529-94a9-4590-b842-e7c6b624ecf5) | [Code](src/91004529-94a9-4590-b842-e7c6b624ecf5/code.php) | [Settings](src/91004529-94a9-4590-b842-e7c6b624ecf5/settings.json) | Super__91004529_94a9_4590_b842_e7c6b624ecf5__Power - **abstract class MathHelper** | [Details](src/152c8793-8b75-4715-996a-257b9f65451c) | [Code](src/152c8793-8b75-4715-996a-257b9f65451c/code.php) | [Settings](src/152c8793-8b75-4715-996a-257b9f65451c/settings.json) | SPK: `Super---152c8793_8b75_4715_996a_257b9f65451c---Power`
- **abstract class StringHelper** | [Details](src/1f28cb53-60d9-4db1-b517-3c7dc6b429ef) | [Code](src/1f28cb53-60d9-4db1-b517-3c7dc6b429ef/code.php) | [Settings](src/1f28cb53-60d9-4db1-b517-3c7dc6b429ef/settings.json) | Super__1f28cb53_60d9_4db1_b517_3c7dc6b429ef__Power - **abstract class ObjectHelper** | [Details](src/91004529-94a9-4590-b842-e7c6b624ecf5) | [Code](src/91004529-94a9-4590-b842-e7c6b624ecf5/code.php) | [Settings](src/91004529-94a9-4590-b842-e7c6b624ecf5/settings.json) | SPK: `Super---91004529_94a9_4590_b842_e7c6b624ecf5---Power`
- **abstract class StringHelper** | [Details](src/1f28cb53-60d9-4db1-b517-3c7dc6b429ef) | [Code](src/1f28cb53-60d9-4db1-b517-3c7dc6b429ef/code.php) | [Settings](src/1f28cb53-60d9-4db1-b517-3c7dc6b429ef/settings.json) | SPK: `Super---1f28cb53_60d9_4db1_b517_3c7dc6b429ef---Power`
- **Namespace**: [VDM\Joomla\Componentbuilder\Abstraction](#vdm-joomla-componentbuilder-abstraction) - **Namespace**: [VDM\Joomla\Componentbuilder\Abstraction](#vdm-joomla-componentbuilder-abstraction)
- **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 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) | SPK: `Super---b84e947d_2a13_44f7_ac0f_3902ae55ae0c---Power`
- **Namespace**: [VDM\Joomla\Componentbuilder\Table](#vdm-joomla-componentbuilder-table) - **Namespace**: [VDM\Joomla\Componentbuilder\Table](#vdm-joomla-componentbuilder-table)
- **final class Schema** | [Details](src/b3d2ec33-76d4-4c3b-bb2c-86ac14a221ce) | [Code](src/b3d2ec33-76d4-4c3b-bb2c-86ac14a221ce/code.php) | [Settings](src/b3d2ec33-76d4-4c3b-bb2c-86ac14a221ce/settings.json) | Super__b3d2ec33_76d4_4c3b_bb2c_86ac14a221ce__Power - **final class Schema** | [Details](src/b3d2ec33-76d4-4c3b-bb2c-86ac14a221ce) | [Code](src/b3d2ec33-76d4-4c3b-bb2c-86ac14a221ce/code.php) | [Settings](src/b3d2ec33-76d4-4c3b-bb2c-86ac14a221ce/settings.json) | SPK: `Super---b3d2ec33_76d4_4c3b_bb2c_86ac14a221ce---Power`
- **final class SchemaChecker** | [Details](src/709d7294-9a43-46e2-b64e-d16a16f0eab1) | [Code](src/709d7294-9a43-46e2-b64e-d16a16f0eab1/code.php) | [Settings](src/709d7294-9a43-46e2-b64e-d16a16f0eab1/settings.json) | SPK: `Super---709d7294_9a43_46e2_b64e_d16a16f0eab1---Power`
- **Namespace**: [VDM\Joomla\Data\Action](#vdm-joomla-data-action) - **Namespace**: [VDM\Joomla\Data\Action](#vdm-joomla-data-action)
- **class Delete** | [Details](src/3fc72954-a303-4cac-b53c-554be38b85e7) | [Code](src/3fc72954-a303-4cac-b53c-554be38b85e7/code.php) | [Settings](src/3fc72954-a303-4cac-b53c-554be38b85e7/settings.json) | Super__3fc72954_a303_4cac_b53c_554be38b85e7__Power - **class Delete** | [Details](src/3fc72954-a303-4cac-b53c-554be38b85e7) | [Code](src/3fc72954-a303-4cac-b53c-554be38b85e7/code.php) | [Settings](src/3fc72954-a303-4cac-b53c-554be38b85e7/settings.json) | SPK: `Super---3fc72954_a303_4cac_b53c_554be38b85e7---Power`
- **class Insert** | [Details](src/a455d916-cfe4-41df-9245-bafb709aacdb) | [Code](src/a455d916-cfe4-41df-9245-bafb709aacdb/code.php) | [Settings](src/a455d916-cfe4-41df-9245-bafb709aacdb/settings.json) | Super__a455d916_cfe4_41df_9245_bafb709aacdb__Power - **class Insert** | [Details](src/a455d916-cfe4-41df-9245-bafb709aacdb) | [Code](src/a455d916-cfe4-41df-9245-bafb709aacdb/code.php) | [Settings](src/a455d916-cfe4-41df-9245-bafb709aacdb/settings.json) | SPK: `Super---a455d916_cfe4_41df_9245_bafb709aacdb---Power`
- **class Load** | [Details](src/008d111c-9d43-427c-8dd4-2653e8b74be8) | [Code](src/008d111c-9d43-427c-8dd4-2653e8b74be8/code.php) | [Settings](src/008d111c-9d43-427c-8dd4-2653e8b74be8/settings.json) | Super__008d111c_9d43_427c_8dd4_2653e8b74be8__Power - **class Load** | [Details](src/008d111c-9d43-427c-8dd4-2653e8b74be8) | [Code](src/008d111c-9d43-427c-8dd4-2653e8b74be8/code.php) | [Settings](src/008d111c-9d43-427c-8dd4-2653e8b74be8/settings.json) | SPK: `Super---008d111c_9d43_427c_8dd4_2653e8b74be8---Power`
- **class Update** | [Details](src/8f83fb79-f92b-4f1f-952b-325f6c22d11e) | [Code](src/8f83fb79-f92b-4f1f-952b-325f6c22d11e/code.php) | [Settings](src/8f83fb79-f92b-4f1f-952b-325f6c22d11e/settings.json) | Super__8f83fb79_f92b_4f1f_952b_325f6c22d11e__Power - **class Update** | [Details](src/8f83fb79-f92b-4f1f-952b-325f6c22d11e) | [Code](src/8f83fb79-f92b-4f1f-952b-325f6c22d11e/code.php) | [Settings](src/8f83fb79-f92b-4f1f-952b-325f6c22d11e/settings.json) | SPK: `Super---8f83fb79_f92b_4f1f_952b_325f6c22d11e---Power`
- **Namespace**: [VDM\Joomla\Data\Remote](#vdm-joomla-data-remote)
- **class Get** | [Details](src/728ee726-3f0f-4762-899d-f8c9430cee58) | [Code](src/728ee726-3f0f-4762-899d-f8c9430cee58/code.php) | [Settings](src/728ee726-3f0f-4762-899d-f8c9430cee58/settings.json) | SPK: `Super---728ee726_3f0f_4762_899d_f8c9430cee58---Power`
- **class Set** | [Details](src/eb7d69c2-4ee9-4bd0-aacc-ab51a12be895) | [Code](src/eb7d69c2-4ee9-4bd0-aacc-ab51a12be895/code.php) | [Settings](src/eb7d69c2-4ee9-4bd0-aacc-ab51a12be895/settings.json) | SPK: `Super---eb7d69c2_4ee9_4bd0_aacc_ab51a12be895---Power`
- **Namespace**: [VDM\Joomla\Interfaces\Data](#vdm-joomla-interfaces-data) - **Namespace**: [VDM\Joomla\Interfaces\Data](#vdm-joomla-interfaces-data)
- **interface DeleteInterface** | [Details](src/d8f9ba53-c490-4e8b-8e9f-6757224e069c) | [Code](src/d8f9ba53-c490-4e8b-8e9f-6757224e069c/code.php) | [Settings](src/d8f9ba53-c490-4e8b-8e9f-6757224e069c/settings.json) | Super__d8f9ba53_c490_4e8b_8e9f_6757224e069c__Power - **interface DeleteInterface** | [Details](src/d8f9ba53-c490-4e8b-8e9f-6757224e069c) | [Code](src/d8f9ba53-c490-4e8b-8e9f-6757224e069c/code.php) | [Settings](src/d8f9ba53-c490-4e8b-8e9f-6757224e069c/settings.json) | SPK: `Super---d8f9ba53_c490_4e8b_8e9f_6757224e069c---Power`
- **interface InsertInterface** | [Details](src/03bbc8d5-86e8-4d2f-ae5f-0d44a4f7af13) | [Code](src/03bbc8d5-86e8-4d2f-ae5f-0d44a4f7af13/code.php) | [Settings](src/03bbc8d5-86e8-4d2f-ae5f-0d44a4f7af13/settings.json) | Super__03bbc8d5_86e8_4d2f_ae5f_0d44a4f7af13__Power - **interface InsertInterface** | [Details](src/03bbc8d5-86e8-4d2f-ae5f-0d44a4f7af13) | [Code](src/03bbc8d5-86e8-4d2f-ae5f-0d44a4f7af13/code.php) | [Settings](src/03bbc8d5-86e8-4d2f-ae5f-0d44a4f7af13/settings.json) | SPK: `Super---03bbc8d5_86e8_4d2f_ae5f_0d44a4f7af13---Power`
- **interface ItemInterface** | [Details](src/05744dd3-4030-4cf8-8dda-a93ab809b473) | [Code](src/05744dd3-4030-4cf8-8dda-a93ab809b473/code.php) | [Settings](src/05744dd3-4030-4cf8-8dda-a93ab809b473/settings.json) | Super__05744dd3_4030_4cf8_8dda_a93ab809b473__Power - **interface ItemInterface** | [Details](src/05744dd3-4030-4cf8-8dda-a93ab809b473) | [Code](src/05744dd3-4030-4cf8-8dda-a93ab809b473/code.php) | [Settings](src/05744dd3-4030-4cf8-8dda-a93ab809b473/settings.json) | SPK: `Super---05744dd3_4030_4cf8_8dda_a93ab809b473---Power`
- **interface ItemsInterface** | [Details](src/7212e4db-371f-4cfd-8122-32e9bb100d83) | [Code](src/7212e4db-371f-4cfd-8122-32e9bb100d83/code.php) | [Settings](src/7212e4db-371f-4cfd-8122-32e9bb100d83/settings.json) | Super__7212e4db_371f_4cfd_8122_32e9bb100d83__Power - **interface ItemsInterface** | [Details](src/7212e4db-371f-4cfd-8122-32e9bb100d83) | [Code](src/7212e4db-371f-4cfd-8122-32e9bb100d83/code.php) | [Settings](src/7212e4db-371f-4cfd-8122-32e9bb100d83/settings.json) | SPK: `Super---7212e4db_371f_4cfd_8122_32e9bb100d83---Power`
- **interface LoadInterface** | [Details](src/c548640c-a461-4424-9ac5-8dfb5ed06d8d) | [Code](src/c548640c-a461-4424-9ac5-8dfb5ed06d8d/code.php) | [Settings](src/c548640c-a461-4424-9ac5-8dfb5ed06d8d/settings.json) | Super__c548640c_a461_4424_9ac5_8dfb5ed06d8d__Power - **interface LoadInterface** | [Details](src/c548640c-a461-4424-9ac5-8dfb5ed06d8d) | [Code](src/c548640c-a461-4424-9ac5-8dfb5ed06d8d/code.php) | [Settings](src/c548640c-a461-4424-9ac5-8dfb5ed06d8d/settings.json) | SPK: `Super---c548640c_a461_4424_9ac5_8dfb5ed06d8d---Power`
- **interface MultiSubformInterface** | [Details](src/bb30f709-53d2-446a-ab3d-300fe6de0bc8) | [Code](src/bb30f709-53d2-446a-ab3d-300fe6de0bc8/code.php) | [Settings](src/bb30f709-53d2-446a-ab3d-300fe6de0bc8/settings.json) | Super__bb30f709_53d2_446a_ab3d_300fe6de0bc8__Power - **interface MultiSubformInterface** | [Details](src/bb30f709-53d2-446a-ab3d-300fe6de0bc8) | [Code](src/bb30f709-53d2-446a-ab3d-300fe6de0bc8/code.php) | [Settings](src/bb30f709-53d2-446a-ab3d-300fe6de0bc8/settings.json) | SPK: `Super---bb30f709_53d2_446a_ab3d_300fe6de0bc8---Power`
- **interface RemoteInterface** | [Details](src/51de80f2-2868-4c2c-8198-ef79349e9bd7) | [Code](src/51de80f2-2868-4c2c-8198-ef79349e9bd7/code.php) | [Settings](src/51de80f2-2868-4c2c-8198-ef79349e9bd7/settings.json) | Super__51de80f2_2868_4c2c_8198_ef79349e9bd7__Power - **interface RemoteGetInterface** | [Details](src/51de80f2-2868-4c2c-8198-ef79349e9bd7) | [Code](src/51de80f2-2868-4c2c-8198-ef79349e9bd7/code.php) | [Settings](src/51de80f2-2868-4c2c-8198-ef79349e9bd7/settings.json) | SPK: `Super---51de80f2_2868_4c2c_8198_ef79349e9bd7---Power`
- **interface SubformInterface** | [Details](src/34959721-415b-4b5e-8002-3d1fc84b3b2b) | [Code](src/34959721-415b-4b5e-8002-3d1fc84b3b2b/code.php) | [Settings](src/34959721-415b-4b5e-8002-3d1fc84b3b2b/settings.json) | Super__34959721_415b_4b5e_8002_3d1fc84b3b2b__Power - **interface RemoteSetInterface** | [Details](src/e335dd61-c2f9-4536-8ed9-aec5edee0b26) | [Code](src/e335dd61-c2f9-4536-8ed9-aec5edee0b26/code.php) | [Settings](src/e335dd61-c2f9-4536-8ed9-aec5edee0b26/settings.json) | SPK: `Super---e335dd61_c2f9_4536_8ed9_aec5edee0b26---Power`
- **interface UpdateInterface** | [Details](src/68a41264-64c0-441a-a3d8-8a5e557b1883) | [Code](src/68a41264-64c0-441a-a3d8-8a5e557b1883/code.php) | [Settings](src/68a41264-64c0-441a-a3d8-8a5e557b1883/settings.json) | Super__68a41264_64c0_441a_a3d8_8a5e557b1883__Power - **interface SubformInterface** | [Details](src/34959721-415b-4b5e-8002-3d1fc84b3b2b) | [Code](src/34959721-415b-4b5e-8002-3d1fc84b3b2b/code.php) | [Settings](src/34959721-415b-4b5e-8002-3d1fc84b3b2b/settings.json) | SPK: `Super---34959721_415b_4b5e_8002_3d1fc84b3b2b---Power`
- **interface UpdateInterface** | [Details](src/68a41264-64c0-441a-a3d8-8a5e557b1883) | [Code](src/68a41264-64c0-441a-a3d8-8a5e557b1883/code.php) | [Settings](src/68a41264-64c0-441a-a3d8-8a5e557b1883/settings.json) | SPK: `Super---68a41264_64c0_441a_a3d8_8a5e557b1883---Power`
- **Namespace**: [VDM\Joomla\Interfaces\Readme](#vdm-joomla-interfaces-readme)
- **interface ItemInterface** | [Details](src/65a0f81a-14fc-4870-9382-b8d830b19937) | [Code](src/65a0f81a-14fc-4870-9382-b8d830b19937/code.php) | [Settings](src/65a0f81a-14fc-4870-9382-b8d830b19937/settings.json) | SPK: `Super---65a0f81a_14fc_4870_9382_b8d830b19937---Power`
- **interface MainInterface** | [Details](src/217416f6-24cf-41c0-b18e-11086111d447) | [Code](src/217416f6-24cf-41c0-b18e-11086111d447/code.php) | [Settings](src/217416f6-24cf-41c0-b18e-11086111d447/settings.json) | SPK: `Super---217416f6_24cf_41c0_b18e_11086111d447---Power`
- **Namespace**: [VDM\Joomla\Utilities\Component](#vdm-joomla-utilities-component) - **Namespace**: [VDM\Joomla\Utilities\Component](#vdm-joomla-utilities-component)
- **abstract class Helper** | [Details](src/640b5352-fb09-425f-a26e-cd44eda03f15) | [Code](src/640b5352-fb09-425f-a26e-cd44eda03f15/code.php) | [Settings](src/640b5352-fb09-425f-a26e-cd44eda03f15/settings.json) | Super__640b5352_fb09_425f_a26e_cd44eda03f15__Power - **abstract class Helper** | [Details](src/640b5352-fb09-425f-a26e-cd44eda03f15) | [Code](src/640b5352-fb09-425f-a26e-cd44eda03f15/code.php) | [Settings](src/640b5352-fb09-425f-a26e-cd44eda03f15/settings.json) | SPK: `Super---640b5352_fb09_425f_a26e_cd44eda03f15---Power`
- **Namespace**: [VDM\Joomla\Utilities\String](#vdm-joomla-utilities-string) - **Namespace**: [VDM\Joomla\Utilities\String](#vdm-joomla-utilities-string)
- **abstract class ClassfunctionHelper** | [Details](src/30c5b4c2-f75f-4d15-869a-f8bfedd87358) | [Code](src/30c5b4c2-f75f-4d15-869a-f8bfedd87358/code.php) | [Settings](src/30c5b4c2-f75f-4d15-869a-f8bfedd87358/settings.json) | Super__30c5b4c2_f75f_4d15_869a_f8bfedd87358__Power - **abstract class ClassfunctionHelper** | [Details](src/30c5b4c2-f75f-4d15-869a-f8bfedd87358) | [Code](src/30c5b4c2-f75f-4d15-869a-f8bfedd87358/code.php) | [Settings](src/30c5b4c2-f75f-4d15-869a-f8bfedd87358/settings.json) | SPK: `Super---30c5b4c2_f75f_4d15_869a_f8bfedd87358---Power`
- **abstract class ComponentCodeNameHelper** | [Details](src/491dbe41-f26c-4de9-8a95-fcf87b35b56f) | [Code](src/491dbe41-f26c-4de9-8a95-fcf87b35b56f/code.php) | [Settings](src/491dbe41-f26c-4de9-8a95-fcf87b35b56f/settings.json) | Super__491dbe41_f26c_4de9_8a95_fcf87b35b56f__Power - **abstract class ComponentCodeNameHelper** | [Details](src/491dbe41-f26c-4de9-8a95-fcf87b35b56f) | [Code](src/491dbe41-f26c-4de9-8a95-fcf87b35b56f/code.php) | [Settings](src/491dbe41-f26c-4de9-8a95-fcf87b35b56f/settings.json) | SPK: `Super---491dbe41_f26c_4de9_8a95_fcf87b35b56f---Power`
- **abstract class FieldHelper** | [Details](src/9ef0eb24-aae4-4f5a-99af-d724db44808f) | [Code](src/9ef0eb24-aae4-4f5a-99af-d724db44808f/code.php) | [Settings](src/9ef0eb24-aae4-4f5a-99af-d724db44808f/settings.json) | Super__9ef0eb24_aae4_4f5a_99af_d724db44808f__Power - **abstract class FieldHelper** | [Details](src/9ef0eb24-aae4-4f5a-99af-d724db44808f) | [Code](src/9ef0eb24-aae4-4f5a-99af-d724db44808f/code.php) | [Settings](src/9ef0eb24-aae4-4f5a-99af-d724db44808f/settings.json) | SPK: `Super---9ef0eb24_aae4_4f5a_99af_d724db44808f---Power`
- **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 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) | SPK: `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 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) | SPK: `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 - **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) | SPK: `Super---a8935cbe_7701_40dc_bfd5_675f2d600954---Power`
- **Namespace**: [VDM\Joomla\Abstraction\Registry\Traits](#vdm-joomla-abstraction-registry-traits) - **Namespace**: [VDM\Joomla\Abstraction\Registry\Traits](#vdm-joomla-abstraction-registry-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 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) | SPK: `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 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) | SPK: `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 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) | SPK: `Super---215b35ac_1b26_4838_bbcf_d1fdbbd9353f---Power`
- **trait IsArray** | [Details](src/c09e8968-c767-4175-bb3d-8432f206a2c7) | [Code](src/c09e8968-c767-4175-bb3d-8432f206a2c7/code.php) | [Settings](src/c09e8968-c767-4175-bb3d-8432f206a2c7/settings.json) | Super__c09e8968_c767_4175_bb3d_8432f206a2c7__Power - **trait IsArray** | [Details](src/c09e8968-c767-4175-bb3d-8432f206a2c7) | [Code](src/c09e8968-c767-4175-bb3d-8432f206a2c7/code.php) | [Settings](src/c09e8968-c767-4175-bb3d-8432f206a2c7/settings.json) | SPK: `Super---c09e8968_c767_4175_bb3d_8432f206a2c7---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 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) | SPK: `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 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) | SPK: `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 - **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) | SPK: `Super---52a1d14f_304a_431c_8fa4_411179942db5---Power`
> remember to replace the `---` with `___` in the SPK to activate that Power in your code
--- ---
``` ```

View File

@ -8,7 +8,7 @@
``` ```
# class Load (Details) # class Load (Details)
> namespace: **VDM\Joomla\Data\Action** > namespace: **VDM\Joomla\Data\Action**
> extends: ****
```uml ```uml
@startuml @startuml
class Load #Gold { class Load #Gold {
@ -112,6 +112,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---008d111c_9d43_427c_8dd4_2653e8b74be8---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# interface InsertInterface (Details) # interface InsertInterface (Details)
> namespace: **VDM\Joomla\Interfaces\Data** > namespace: **VDM\Joomla\Interfaces\Data**
> extends: ****
```uml ```uml
@startuml @startuml
interface InsertInterface #Lavender { interface InsertInterface #Lavender {
@ -84,6 +84,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---03bbc8d5_86e8_4d2f_ae5f_0d44a4f7af13---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# interface ItemInterface (Details) # interface ItemInterface (Details)
> namespace: **VDM\Joomla\Interfaces\Data** > namespace: **VDM\Joomla\Interfaces\Data**
> extends: ****
```uml ```uml
@startuml @startuml
interface ItemInterface #Lavender { interface ItemInterface #Lavender {
@ -75,6 +75,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---05744dd3_4030_4cf8_8dda_a93ab809b473---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -9,6 +9,7 @@
# final class Load (Details) # final class Load (Details)
> namespace: **VDM\Joomla\Database** > namespace: **VDM\Joomla\Database**
> extends: **Database** > extends: **Database**
```uml ```uml
@startuml @startuml
class Load << (F,LightGreen) >> #RoyalBlue { class Load << (F,LightGreen) >> #RoyalBlue {
@ -179,6 +180,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---06f8eada_d59b_441c_b287_0aea1793da5a---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# abstract class ArrayHelper (Details) # abstract class ArrayHelper (Details)
> namespace: **VDM\Joomla\Utilities** > namespace: **VDM\Joomla\Utilities**
> extends: ****
```uml ```uml
@startuml @startuml
abstract ArrayHelper #Orange { abstract ArrayHelper #Orange {
@ -40,6 +40,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# trait Count (Details) # trait Count (Details)
> namespace: **VDM\Joomla\Abstraction\Registry\Traits** > namespace: **VDM\Joomla\Abstraction\Registry\Traits**
> extends: ****
```uml ```uml
@startuml @startuml
class Count << (T,Orange) >> #Turquoise { class Count << (T,Orange) >> #Turquoise {
@ -25,6 +25,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---11572d9b_e3d5_4b29_904c_9618d8f2bfd8---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# abstract class FormHelper (Details) # abstract class FormHelper (Details)
> namespace: **VDM\Joomla\Utilities** > namespace: **VDM\Joomla\Utilities**
> extends: ****
```uml ```uml
@startuml @startuml
abstract FormHelper #Orange { abstract FormHelper #Orange {
@ -72,6 +72,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---1198aecf_84c6_45d2_aea8_d531aa4afdfa---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -0,0 +1,58 @@
```
██████╗ ██████╗ ██╗ ██╗███████╗██████╗
██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔══██╗
██████╔╝██║ ██║██║ █╗ ██║█████╗ ██████╔╝
██╔═══╝ ██║ ██║██║███╗██║██╔══╝ ██╔══██╗
██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║
╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
```
# abstract class ClassHelper (Details)
> namespace: **VDM\Joomla\Utilities**
```uml
@startuml
abstract ClassHelper #Orange {
+ {static} exists(string $className, string $component, ...) : bool
}
note right of ClassHelper::exists
Ensures that a class in the namespace is available.
If the class is not already loaded, it attempts to load it via the specified autoloader.
since: 3.2.2
return: bool
arguments:
string $className
string $component
string $autoloaderPath
end note
@enduml
```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---13c2cac1_a70d_42d7_99fc_eb7ac3443069---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
---
```
██╗ ██████╗██████╗
██║██╔════╝██╔══██╗
██║██║ ██████╔╝
██ ██║██║ ██╔══██╗
╚█████╔╝╚██████╗██████╔╝
╚════╝ ╚═════╝╚═════╝
```
> Build with [Joomla Component Builder](https://git.vdm.dev/joomla/Component-Builder)

View File

@ -0,0 +1,55 @@
<?php
/**
* @package Joomla.Component.Builder
*
* @created 3rd September, 2020
* @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;
/**
* Class Helper for JCB Powers
*
* @since 3.2.2
*/
abstract class ClassHelper
{
/**
* Ensures that a class in the namespace is available.
* If the class is not already loaded, it attempts to load it via the specified autoloader.
*
* @param string $className The fully qualified name of the class to check.
* @param string $component The component name where the autoloader resides.
* @param string $autoloaderPath The path to the autoloader file within the component.
*
* @return bool True if the class exists or was successfully loaded, false otherwise.
* @since 3.2.2
*/
public static function exists(string $className, string $component, string $autoloaderPath): bool
{
if (!class_exists($className, true))
{
// Construct the path to the autoloader file
$autoloaderFile = JPATH_ADMINISTRATOR . '/components/com_' . $component . '/' . $autoloaderPath;
if (file_exists($autoloaderFile))
{
require_once $autoloaderFile;
}
// Check again if the class now exists after requiring the autoloader
if (!class_exists($className, true))
{
return false;
}
}
return true;
}
}

View File

@ -0,0 +1,31 @@
/**
* Ensures that a class in the namespace is available.
* If the class is not already loaded, it attempts to load it via the specified autoloader.
*
* @param string $className The fully qualified name of the class to check.
* @param string $component The component name where the autoloader resides.
* @param string $autoloaderPath The path to the autoloader file within the component.
*
* @return bool True if the class exists or was successfully loaded, false otherwise.
* @since 3.2.2
*/
public static function exists(string $className, string $component, string $autoloaderPath): bool
{
if (!class_exists($className, true))
{
// Construct the path to the autoloader file
$autoloaderFile = JPATH_ADMINISTRATOR . '/components/com_' . $component . '/' . $autoloaderPath;
if (file_exists($autoloaderFile))
{
require_once $autoloaderFile;
}
// Check again if the class now exists after requiring the autoloader
if (!class_exists($className, true))
{
return false;
}
}
return true;
}

View File

@ -0,0 +1,19 @@
{
"add_head": "0",
"add_licensing_template": "2",
"extends": "",
"guid": "13c2cac1-a70d-42d7-99fc-eb7ac3443069",
"implements": null,
"load_selection": null,
"name": "ClassHelper",
"power_version": "1.0.0",
"system_name": "Utilities Class Helper",
"type": "abstract class",
"use_selection": null,
"extendsinterfaces": null,
"namespace": "[[[NamespacePrefix]]]\\Joomla\\Utilities.ClassHelper",
"description": "Class Helper for JCB Powers\r\n\r\n@since 3.2.2",
"licensing_template": "\/**\r\n * @package Joomla.Component.Builder\r\n *\r\n * @created 3rd September, 2020\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": ""
}

View File

@ -8,7 +8,7 @@
``` ```
# abstract class Grep (Details) # abstract class Grep (Details)
> namespace: **VDM\Joomla\Abstraction** > namespace: **VDM\Joomla\Abstraction**
> extends: ****
```uml ```uml
@startuml @startuml
abstract Grep #Orange { abstract Grep #Orange {
@ -18,13 +18,32 @@ abstract Grep #Orange {
# Contents $contents # Contents $contents
# CMSApplication $app # CMSApplication $app
+ __construct(Contents $contents, array $paths, ...) + __construct(Contents $contents, array $paths, ...)
+ getRemotePowersGuid() : ?array + get(string $guid, ?array $order = null, ...) : ?object
+ exists(string $guid, ?object $repo = null, ...) : bool
+ getRemoteGuid() : ?array
+ setBranchField(string $field) : void + setBranchField(string $field) : void
+ get(string $guid, ?array $order = null) : ?object + setBranchDefaultName(?string $name) : void
# {abstract} remoteIndex(object $path) : void + setIndexPath(string $indexPath) : void
# getFunctionName(string $name) : ?string + getRemoteIndex(string $guid) : ?object
# init() : void # {abstract} setRemoteIndexMessage(string $message, string $path, ...) : void
+ getBranchField() : string # getFunctionName(string $name, string $type = 'search') : ?string
# searchSingleRepo(string $guid, array $order, ...) : ?object
# searchAllRepos(string $guid, array $order) : ?object
# itemExistsInRepo(string $guid, object $repo, ...) : bool
# itemExistsInAllRepos(string $guid, array $order) : bool
# getBranchField() : string
# getBranchDefaultName() : ?string
# getBranchName(object $item) : ?string
# getIndexPath() : string
# itemExists(string $guid, object $repo, ...) : bool
# existsLocally(string $guid) : ?object
# existsRemotely(string $guid) : ?object
# existsLocal(string $guid, object $path) : bool
# existsRemote(string $guid, object $path) : bool
# indexRemote(object $path) : void
# indexLocal(object $path) : void
# initializeInstances() : void
# loadRemoteFile(string $organisation, string $repository, ...) : mixed
} }
note right of Grep::__construct note right of Grep::__construct
@ -39,8 +58,32 @@ note right of Grep::__construct
?CMSApplication $app = null ?CMSApplication $app = null
end note end note
note left of Grep::getRemotePowersGuid note left of Grep::get
Get all remote powers GUID's Get an item
since: 3.2.2
return: ?object
arguments:
string $guid
?array $order = null
?object $repo = null
end note
note right of Grep::exists
Check if an item exists in any repo or in a specific repo.
since: 3.2.2
return: bool
arguments:
string $guid
?object $repo = null
?array $order = null
end note
note left of Grep::getRemoteGuid
Get all remote GUID's
since: 3.2.0 since: 3.2.0
return: ?array return: ?array
@ -53,18 +96,39 @@ note right of Grep::setBranchField
return: void return: void
end note end note
note left of Grep::get note left of Grep::setBranchDefaultName
Get a power Set the DEFAULT branch name (only used if branch field is not found)
since: 3.2.0 since: 3.2.2
return: void
end note
note right of Grep::setIndexPath
Set the index path
since: 3.2.2
return: void
end note
note left of Grep::getRemoteIndex
Get the index of a repo
since: 3.2.2
return: ?object return: ?object
end note end note
note right of Grep::remoteIndex note right of Grep::setRemoteIndexMessage
Load the remote repository index of powers Set repository messages and errors based on given conditions.
since: 3.2.0 since: 3.2.0
return: void return: void
arguments:
string $message
string $path
string $repository
string $organisation
?string $base
end note end note
note left of Grep::getFunctionName note left of Grep::getFunctionName
@ -74,23 +138,163 @@ note left of Grep::getFunctionName
return: ?string return: ?string
end note end note
note right of Grep::init note right of Grep::searchSingleRepo
Search a single repository for an item
since: 3.2.2
return: ?object
arguments:
string $guid
array $order
object $repo
end note
note left of Grep::searchAllRepos
Search all repositories for an item
since: 3.2.2
return: ?object
end note
note right of Grep::itemExistsInRepo
Check if an item exists in a specific repository.
since: 3.2.2
return: bool
arguments:
string $guid
object $repo
array $order
end note
note left of Grep::itemExistsInAllRepos
Check if an item exists in any of the repositories.
since: 3.2.2
return: bool
end note
note right of Grep::getBranchField
Get the branch field
since: 3.2.2
return: string
end note
note left of Grep::getBranchDefaultName
Get the branch default name
since: 3.2.2
return: ?string
end note
note right of Grep::getBranchName
Get the branch name
since: 3.2.2
return: ?string
end note
note left of Grep::getIndexPath
Get the index path
since: 3.2.2
return: string
end note
note right of Grep::itemExists
Check if an item exists in a specific repo and target.
since: 3.2.2
return: bool
arguments:
string $guid
object $repo
string $target
end note
note left of Grep::existsLocally
Check if item exists locally
since: 3.2.2
return: ?object
end note
note right of Grep::existsRemotely
Check if item exists remotely
since: 3.2.2
return: ?object
end note
note left of Grep::existsLocal
Check if item exists locally
since: 3.2.2
return: bool
end note
note right of Grep::existsRemote
Check if item exists remotely
since: 3.2.2
return: bool
end note
note left of Grep::indexRemote
Load the remote repository index of powers
since: 3.2.0
return: void
end note
note right of Grep::indexLocal
Load the local repository index of powers
since: 3.2.0
return: void
end note
note left of Grep::initializeInstances
Set path details Set path details
since: 3.2.0 since: 3.2.0
return: void return: void
end note end note
note left of Grep::getBranchField note right of Grep::loadRemoteFile
Get the branch field Load the remote file
since: 3.2.2 since: 3.2.0
return: string return: mixed
arguments:
string $organisation
string $repository
string $path
?string $branch
end note end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---1401a167_0ce4_4f4a_afee_2d8b02ed339b---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -13,9 +13,12 @@ namespace VDM\Joomla\Abstraction;
use Joomla\CMS\Factory; use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Filesystem\Folder; use Joomla\CMS\Filesystem\Folder;
use Joomla\CMS\Application\CMSApplication; use Joomla\CMS\Application\CMSApplication;
use VDM\Joomla\Gitea\Repository\Contents; use VDM\Joomla\Gitea\Repository\Contents;
use VDM\Joomla\Utilities\FileHelper;
use VDM\Joomla\Utilities\JsonHelper;
use VDM\Joomla\Interfaces\GrepInterface; use VDM\Joomla\Interfaces\GrepInterface;
@ -24,7 +27,7 @@ use VDM\Joomla\Interfaces\GrepInterface;
* *
* The Grep feature will try to find your power in the repositories listed in the global * The Grep feature will try to find your power in the repositories listed in the global
* Options of JCB in the super powers tab, and if it can't be found there will try the global core * Options of JCB in the super powers tab, and if it can't be found there will try the global core
* Super powers of JCB. All searches are performed according the the [algorithm:cascading] * Super powers of JCB. All searches are performed according the [algorithm:cascading]
* See documentation for more details: https://git.vdm.dev/joomla/super-powers/wiki * See documentation for more details: https://git.vdm.dev/joomla/super-powers/wiki
* *
* @since 3.2.1 * @since 3.2.1
@ -34,7 +37,7 @@ abstract class Grep implements GrepInterface
/** /**
* The local path * The local path
* *
* @var string * @var string|null
* @since 3.2.0 * @since 3.2.0
**/ **/
public ?string $path; public ?string $path;
@ -42,7 +45,7 @@ abstract class Grep implements GrepInterface
/** /**
* All approved paths * All approved paths
* *
* @var array * @var array|null
* @since 3.2.0 * @since 3.2.0
**/ **/
public ?array $paths; public ?array $paths;
@ -63,6 +66,22 @@ abstract class Grep implements GrepInterface
**/ **/
protected string $branch_field = 'read_branch'; protected string $branch_field = 'read_branch';
/**
* The target default branch name
*
* @var string|null
* @since 3.2.2
**/
protected ?string $branch_name = null;
/**
* The index file path
*
* @var string
* @since 3.2.2
*/
protected string $index_path = 'index.json';
/** /**
* Gitea Repository Contents * Gitea Repository Contents
* *
@ -92,21 +111,65 @@ abstract class Grep implements GrepInterface
*/ */
public function __construct(Contents $contents, array $paths, ?string $path = null, ?CMSApplication $app = null) public function __construct(Contents $contents, array $paths, ?string $path = null, ?CMSApplication $app = null)
{ {
$this->paths = $paths;
$this->contents = $contents; $this->contents = $contents;
$this->paths = $paths;
$this->path = $path; $this->path = $path;
$this->app = $app ?: Factory::getApplication(); $this->app = $app ?: Factory::getApplication();
$this->init(); $this->initializeInstances();
} }
/** /**
* Get all remote powers GUID's * Get an item
*
* @param string $guid The global unique id of the item
* @param array|null $order The search order
* @param object|null $repo The repository object to search. If null, all repos will be searched.
*
* @return object|null
* @since 3.2.2
*/
public function get(string $guid, ?array $order = null, ?object $repo = null): ?object
{
$order = $order ?? $this->order;
if ($repo !== null)
{
return $this->searchSingleRepo($guid, $order, $repo);
}
return $this->searchAllRepos($guid, $order);
}
/**
* Check if an item exists in any repo or in a specific repo.
*
* @param string $guid The unique identifier for the item.
* @param object|null $repo The repository object to check against. If null, all repos will be checked.
* @param array|null $order The order of the targets to check. If null, the default order will be used.
*
* @return bool True if the item exists, false otherwise.
* @since 3.2.2
*/
public function exists(string $guid, ?object $repo = null, ?array $order = null): bool
{
$order = $order ?? $this->order;
if ($repo !== null)
{
return $this->itemExistsInRepo($guid, $repo, $order);
}
return $this->itemExistsInAllRepos($guid, $order);
}
/**
* Get all remote GUID's
* *
* @return array|null * @return array|null
* @since 3.2.0 * @since 3.2.0
*/ */
public function getRemotePowersGuid(): ?array public function getRemoteGuid(): ?array
{ {
if (!is_array($this->paths) || $this->paths === []) if (!is_array($this->paths) || $this->paths === [])
{ {
@ -117,7 +180,7 @@ abstract class Grep implements GrepInterface
foreach ($this->paths as $path) foreach ($this->paths as $path)
{ {
// Get remote index // Get remote index
$this->remoteIndex($path); $this->indexRemote($path);
if (isset($path->index) && is_object($path->index)) if (isset($path->index) && is_object($path->index))
{ {
@ -131,7 +194,7 @@ abstract class Grep implements GrepInterface
/** /**
* Set the branch field * Set the branch field
* *
* @param string $field The global unique id of the power * @param string $field The field to use to get the branch name from the data set
* *
* @return void * @return void
* @since 3.2.2 * @since 3.2.2
@ -142,28 +205,113 @@ abstract class Grep implements GrepInterface
} }
/** /**
* Get a power * Set the DEFAULT branch name (only used if branch field is not found)
* *
* @param string $guid The global unique id of the power * @param string|null $name The default branch to use if no name could be found
* @param array|null $order The search order *
* @return void
* @since 3.2.2
*/
public function setBranchDefaultName(?string $name): void
{
$this->branch_name = $name;
}
/**
* Set the index path
*
* @param string $indexPath The repository index path
*
* @return void
* @since 3.2.2
*/
public function setIndexPath(string $indexPath): void
{
$this->index_path = $indexPath;
}
/**
* Get the index of a repo
*
* @param string $guid The unique identifier for the repo.
* *
* @return object|null * @return object|null
* @since 3.2.0 * @since 3.2.2
*/ */
public function get(string $guid, ?array $order = null): ?object public function getRemoteIndex(string $guid): ?object
{ {
if ($order === null) if (!is_array($this->paths) || $this->paths === [] || empty($guid))
{ {
$order = $this->order; return null;
} }
// we can only search if we have paths foreach ($this->paths as $path)
if (is_array($this->paths) && $this->paths !== [])
{ {
foreach ($order as $target) if (!isset($path->guid) || $guid !== $path->guid)
{ {
if (($function_name = $this->getFunctionName($target)) !== null && continue;
($power = $this->{$function_name}($guid)) !== null) }
// Get remote index
$this->indexRemote($path);
if (isset($path->index) && is_object($path->index))
{
return $path->index;
}
}
return null;
}
/**
* Set repository messages and errors based on given conditions.
*
* @param string $message The message to set (if error)
* @param string $path Path value
* @param string $repository Repository name
* @param string $organisation Organisation name
* @param string|null $base Base URL
*
* @return void
* @since 3.2.0
*/
abstract protected function setRemoteIndexMessage(string $message, string $path, string $repository, string $organisation, ?string $base): void;
/**
* Get function name
*
* @param string $name The targeted area name
* @param string $type The type of function name
*
* @return string|null
* @since 3.2.0
*/
protected function getFunctionName(string $name, string $type = 'search'): ?string
{
$function_name = $type . ucfirst(strtolower($name));
return method_exists($this, $function_name) ? $function_name : null;
}
/**
* Search a single repository for an item
*
* @param string $guid The unique identifier for the item.
* @param array $order The order of the targets to check.
* @param object $repo The repository object to check against.
*
* @return object|null
* @since 3.2.2
*/
protected function searchSingleRepo(string $guid, array $order, object $repo): ?object
{
foreach ($order as $target)
{
if ($this->itemExists($guid, $repo, $target))
{
$functionName = $this->getFunctionName($target, 'get');
if ($functionName !== null && ($power = $this->{$functionName}($repo, $guid)) !== null)
{ {
return $power; return $power;
} }
@ -173,6 +321,251 @@ abstract class Grep implements GrepInterface
return null; return null;
} }
/**
* Search all repositories for an item
*
* @param string $guid The unique identifier for the item.
* @param object $repo The repository object to check against.
*
* @return object|null
* @since 3.2.2
*/
protected function searchAllRepos(string $guid, array $order): ?object
{
if (is_array($this->paths) && $this->paths !== [])
{
foreach ($order as $target)
{
$functionName = $this->getFunctionName($target);
if ($functionName !== null && ($power = $this->{$functionName}($guid)) !== null)
{
return $power;
}
}
}
return null;
}
/**
* Check if an item exists in a specific repository.
*
* @param string $guid The unique identifier for the item.
* @param object $repo The repository object to check against.
* @param array $order The order of the targets to check.
*
* @return bool True if the item exists, false otherwise.
* @since 3.2.2
*/
protected function itemExistsInRepo(string $guid, object $repo, array $order): bool
{
foreach ($order as $target)
{
if ($this->itemExists($guid, $repo, $target))
{
return true;
}
}
return false;
}
/**
* Check if an item exists in any of the repositories.
*
* @param string $guid The unique identifier for the item.
* @param array $order The order of the targets to check.
*
* @return bool True if the item exists, false otherwise.
* @since 3.2.2
*/
protected function itemExistsInAllRepos(string $guid, array $order): bool
{
// We can only search if we have paths
if (is_array($this->paths) && $this->paths !== [])
{
foreach ($order as $target)
{
foreach ($this->paths as $path)
{
if ($this->itemExists($guid, $path, $target))
{
return true;
}
}
}
}
return false;
}
/**
* Get the branch field
*
* @return string
* @since 3.2.2
*/
protected function getBranchField(): string
{
return $this->branch_field;
}
/**
* Get the branch default name
*
* @return string|null
* @since 3.2.2
*/
protected function getBranchDefaultName(): ?string
{
return $this->branch_name;
}
/**
* Get the branch name
*
* @param object $item The item path
*
* @return string|null
* @since 3.2.2
*/
protected function getBranchName(object $item): ?string
{
// get the branch field name
$branch_field = $this->getBranchField();
return $item->{$branch_field} ?? $this->getBranchDefaultName();
}
/**
* Get the index path
*
* @return string
* @since 3.2.2
*/
protected function getIndexPath(): string
{
return $this->index_path;
}
/**
* Check if an item exists in a specific repo and target.
*
* @param string $guid The unique identifier for the item.
* @param object $repo The repository object to check against.
* @param string $target The target to check within the repo.
*
* @return bool True if the item exists, false otherwise.
* @since 3.2.2
*/
protected function itemExists(string $guid, object &$repo, string $target): bool
{
if (($function_name = $this->getFunctionName($target, 'index')) !== null)
{
$this->{$function_name}($repo);
if (($function_name = $this->getFunctionName($target, 'exists')) !== null &&
$this->{$function_name}($guid, $repo))
{
return true;
}
}
return false;
}
/**
* Check if item exists locally
*
* @param string $guid The global unique id of the item
*
* @return object|null return path object
* @since 3.2.2
*/
protected function existsLocally(string $guid): ?object
{
// we can only search if we have paths
if ($this->path && $this->paths)
{
foreach ($this->paths as $path)
{
// get local index
$this->indexLocal($path);
if ($this->existsLocal($guid, $path))
{
return $path;
}
}
}
return null;
}
/**
* Check if item exists remotely
*
* @param string $guid The global unique id of the item
*
* @return object|null return path object
* @since 3.2.2
*/
protected function existsRemotely(string $guid): ?object
{
// we can only search if we have paths
if ($this->paths)
{
foreach ($this->paths as $path)
{
// get local index
$this->indexRemote($path);
if ($this->existsRemote($guid, $path))
{
return $path;
}
}
}
return null;
}
/**
* Check if item exists locally
*
* @param string $guid The global unique id of the item
* @param object $path The path object
*
* @return bool true if it exists
* @since 3.2.2
*/
protected function existsLocal(string $guid, object $path): bool
{
if (!empty($path->local) && isset($path->local->{$guid}))
{
return true;
}
return false;
}
/**
* Check if item exists remotely
*
* @param string $guid The global unique id of the item
* @param object $path The path object
*
* @return bool true if it exists
* @since 3.2.2
*/
protected function existsRemote(string $guid, object $path): bool
{
if (!empty($path->index) && isset($path->index->{$guid}))
{
return true;
}
return false;
}
/** /**
* Load the remote repository index of powers * Load the remote repository index of powers
* *
@ -181,21 +574,55 @@ abstract class Grep implements GrepInterface
* @return void * @return void
* @since 3.2.0 * @since 3.2.0
*/ */
abstract protected function remoteIndex(object &$path): void; protected function indexRemote(object &$path): void
{
if (isset($path->index))
{
return; // already set
}
try
{
// load the base and token if set
$this->contents->load_($path->base ?? null, $path->token ?? null);
$path->index = $this->contents->get($path->organisation, $path->repository, $this->getIndexPath(), $this->getBranchName($path));
}
catch (\Exception $e)
{
$path->index = null;
$this->setRemoteIndexMessage($e->getMessage(), $path->path, $path->repository, $path->organisation, $path->base ?? null);
}
finally
{
// reset back to the global base and token
$this->contents->reset_();
}
}
/** /**
* Get function name * Load the local repository index of powers
* *
* @param string $name The targeted function name * @param object $path The repository path details
* *
* @return string|null * @return void
* @since 3.2.0 * @since 3.2.0
*/ */
protected function getFunctionName(string $name): ?string protected function indexLocal(object &$path): void
{ {
$function_name = 'search' . ucfirst(strtolower($name)); if (isset($path->local) || !isset($path->full_path))
{
return;
}
return method_exists($this, $function_name) ? $function_name : null; if (($content = FileHelper::getContent($path->full_path . '/' . $this->getIndexPath(), null)) !== null &&
JsonHelper::check($content))
{
$path->local = json_decode($content);
return;
}
$path->local = null;
} }
/** /**
@ -204,7 +631,7 @@ abstract class Grep implements GrepInterface
* @return void * @return void
* @since 3.2.0 * @since 3.2.0
*/ */
protected function init(): void protected function initializeInstances(): void
{ {
if (is_array($this->paths) && $this->paths !== []) if (is_array($this->paths) && $this->paths !== [])
{ {
@ -216,12 +643,14 @@ abstract class Grep implements GrepInterface
// build the path // build the path
$path->path = trim($path->organisation) . '/' . trim($path->repository); $path->path = trim($path->organisation) . '/' . trim($path->repository);
// update the branch // get the branch field name
$branch_field = $this->getBranchField(); $branch_field = $this->getBranchField();
$branch = $path->{$branch_field} ?? null; // get the branch name
$branch = $this->getBranchName($path);
if ($branch === 'default' || empty($branch)) if ($branch === 'default' || empty($branch))
{ {
// will allow us to target the default branch as set by the git system
$path->{$branch_field} = null; $path->{$branch_field} = null;
} }
@ -240,14 +669,33 @@ abstract class Grep implements GrepInterface
} }
/** /**
* Get the branch field * Load the remote file
* *
* @return string * @param string $organisation The repository organisation
* @since 3.2.2 * @param string $repository The repository name
* @param string $path The repository path to file
* @param string|null $branch The repository branch name
*
* @return mixed
* @since 3.2.0
*/ */
public function getBranchField(): string protected function loadRemoteFile(string $organisation, string $repository, string $path, ?string $branch)
{ {
return $this->branch_field; try
{
$data = $this->contents->get($organisation, $repository, $path, $branch);
}
catch (\Exception $e)
{
$this->app->enqueueMessage(
Text::sprintf('COM_COMPONENTBUILDER_PFILE_AT_BSSB_GAVE_THE_FOLLOWING_ERRORBR_SP', $this->contents->api(), $path, $e->getMessage()),
'Error'
);
return null;
}
return $data;
} }
} }

View File

@ -1,7 +1,7 @@
/** /**
* The local path * The local path
* *
* @var string * @var string|null
* @since 3.2.0 * @since 3.2.0
**/ **/
public ?string $path; public ?string $path;
@ -9,7 +9,7 @@
/** /**
* All approved paths * All approved paths
* *
* @var array * @var array|null
* @since 3.2.0 * @since 3.2.0
**/ **/
public ?array $paths; public ?array $paths;
@ -30,6 +30,22 @@
**/ **/
protected string $branch_field = 'read_branch'; protected string $branch_field = 'read_branch';
/**
* The target default branch name
*
* @var string|null
* @since 3.2.2
**/
protected ?string $branch_name = null;
/**
* The index file path
*
* @var string
* @since 3.2.2
*/
protected string $index_path = 'index.json';
/** /**
* Gitea Repository Contents * Gitea Repository Contents
* *
@ -59,21 +75,65 @@
*/ */
public function __construct(Contents $contents, array $paths, ?string $path = null, ?CMSApplication $app = null) public function __construct(Contents $contents, array $paths, ?string $path = null, ?CMSApplication $app = null)
{ {
$this->paths = $paths;
$this->contents = $contents; $this->contents = $contents;
$this->paths = $paths;
$this->path = $path; $this->path = $path;
$this->app = $app ?: Factory::getApplication(); $this->app = $app ?: Factory::getApplication();
$this->init(); $this->initializeInstances();
} }
/** /**
* Get all remote powers GUID's * Get an item
*
* @param string $guid The global unique id of the item
* @param array|null $order The search order
* @param object|null $repo The repository object to search. If null, all repos will be searched.
*
* @return object|null
* @since 3.2.2
*/
public function get(string $guid, ?array $order = null, ?object $repo = null): ?object
{
$order = $order ?? $this->order;
if ($repo !== null)
{
return $this->searchSingleRepo($guid, $order, $repo);
}
return $this->searchAllRepos($guid, $order);
}
/**
* Check if an item exists in any repo or in a specific repo.
*
* @param string $guid The unique identifier for the item.
* @param object|null $repo The repository object to check against. If null, all repos will be checked.
* @param array|null $order The order of the targets to check. If null, the default order will be used.
*
* @return bool True if the item exists, false otherwise.
* @since 3.2.2
*/
public function exists(string $guid, ?object $repo = null, ?array $order = null): bool
{
$order = $order ?? $this->order;
if ($repo !== null)
{
return $this->itemExistsInRepo($guid, $repo, $order);
}
return $this->itemExistsInAllRepos($guid, $order);
}
/**
* Get all remote GUID's
* *
* @return array|null * @return array|null
* @since 3.2.0 * @since 3.2.0
*/ */
public function getRemotePowersGuid(): ?array public function getRemoteGuid(): ?array
{ {
if (!is_array($this->paths) || $this->paths === []) if (!is_array($this->paths) || $this->paths === [])
{ {
@ -84,7 +144,7 @@
foreach ($this->paths as $path) foreach ($this->paths as $path)
{ {
// Get remote index // Get remote index
$this->remoteIndex($path); $this->indexRemote($path);
if (isset($path->index) && is_object($path->index)) if (isset($path->index) && is_object($path->index))
{ {
@ -98,7 +158,7 @@
/** /**
* Set the branch field * Set the branch field
* *
* @param string $field The global unique id of the power * @param string $field The field to use to get the branch name from the data set
* *
* @return void * @return void
* @since 3.2.2 * @since 3.2.2
@ -109,28 +169,113 @@
} }
/** /**
* Get a power * Set the DEFAULT branch name (only used if branch field is not found)
* *
* @param string $guid The global unique id of the power * @param string|null $name The default branch to use if no name could be found
* @param array|null $order The search order *
* @return void
* @since 3.2.2
*/
public function setBranchDefaultName(?string $name): void
{
$this->branch_name = $name;
}
/**
* Set the index path
*
* @param string $indexPath The repository index path
*
* @return void
* @since 3.2.2
*/
public function setIndexPath(string $indexPath): void
{
$this->index_path = $indexPath;
}
/**
* Get the index of a repo
*
* @param string $guid The unique identifier for the repo.
* *
* @return object|null * @return object|null
* @since 3.2.0 * @since 3.2.2
*/ */
public function get(string $guid, ?array $order = null): ?object public function getRemoteIndex(string $guid): ?object
{ {
if ($order === null) if (!is_array($this->paths) || $this->paths === [] || empty($guid))
{ {
$order = $this->order; return null;
} }
// we can only search if we have paths foreach ($this->paths as $path)
if (is_array($this->paths) && $this->paths !== [])
{ {
foreach ($order as $target) if (!isset($path->guid) || $guid !== $path->guid)
{ {
if (($function_name = $this->getFunctionName($target)) !== null && continue;
($power = $this->{$function_name}($guid)) !== null) }
// Get remote index
$this->indexRemote($path);
if (isset($path->index) && is_object($path->index))
{
return $path->index;
}
}
return null;
}
/**
* Set repository messages and errors based on given conditions.
*
* @param string $message The message to set (if error)
* @param string $path Path value
* @param string $repository Repository name
* @param string $organisation Organisation name
* @param string|null $base Base URL
*
* @return void
* @since 3.2.0
*/
abstract protected function setRemoteIndexMessage(string $message, string $path, string $repository, string $organisation, ?string $base): void;
/**
* Get function name
*
* @param string $name The targeted area name
* @param string $type The type of function name
*
* @return string|null
* @since 3.2.0
*/
protected function getFunctionName(string $name, string $type = 'search'): ?string
{
$function_name = $type . ucfirst(strtolower($name));
return method_exists($this, $function_name) ? $function_name : null;
}
/**
* Search a single repository for an item
*
* @param string $guid The unique identifier for the item.
* @param array $order The order of the targets to check.
* @param object $repo The repository object to check against.
*
* @return object|null
* @since 3.2.2
*/
protected function searchSingleRepo(string $guid, array $order, object $repo): ?object
{
foreach ($order as $target)
{
if ($this->itemExists($guid, $repo, $target))
{
$functionName = $this->getFunctionName($target, 'get');
if ($functionName !== null && ($power = $this->{$functionName}($repo, $guid)) !== null)
{ {
return $power; return $power;
} }
@ -140,6 +285,251 @@
return null; return null;
} }
/**
* Search all repositories for an item
*
* @param string $guid The unique identifier for the item.
* @param object $repo The repository object to check against.
*
* @return object|null
* @since 3.2.2
*/
protected function searchAllRepos(string $guid, array $order): ?object
{
if (is_array($this->paths) && $this->paths !== [])
{
foreach ($order as $target)
{
$functionName = $this->getFunctionName($target);
if ($functionName !== null && ($power = $this->{$functionName}($guid)) !== null)
{
return $power;
}
}
}
return null;
}
/**
* Check if an item exists in a specific repository.
*
* @param string $guid The unique identifier for the item.
* @param object $repo The repository object to check against.
* @param array $order The order of the targets to check.
*
* @return bool True if the item exists, false otherwise.
* @since 3.2.2
*/
protected function itemExistsInRepo(string $guid, object $repo, array $order): bool
{
foreach ($order as $target)
{
if ($this->itemExists($guid, $repo, $target))
{
return true;
}
}
return false;
}
/**
* Check if an item exists in any of the repositories.
*
* @param string $guid The unique identifier for the item.
* @param array $order The order of the targets to check.
*
* @return bool True if the item exists, false otherwise.
* @since 3.2.2
*/
protected function itemExistsInAllRepos(string $guid, array $order): bool
{
// We can only search if we have paths
if (is_array($this->paths) && $this->paths !== [])
{
foreach ($order as $target)
{
foreach ($this->paths as $path)
{
if ($this->itemExists($guid, $path, $target))
{
return true;
}
}
}
}
return false;
}
/**
* Get the branch field
*
* @return string
* @since 3.2.2
*/
protected function getBranchField(): string
{
return $this->branch_field;
}
/**
* Get the branch default name
*
* @return string|null
* @since 3.2.2
*/
protected function getBranchDefaultName(): ?string
{
return $this->branch_name;
}
/**
* Get the branch name
*
* @param object $item The item path
*
* @return string|null
* @since 3.2.2
*/
protected function getBranchName(object $item): ?string
{
// get the branch field name
$branch_field = $this->getBranchField();
return $item->{$branch_field} ?? $this->getBranchDefaultName();
}
/**
* Get the index path
*
* @return string
* @since 3.2.2
*/
protected function getIndexPath(): string
{
return $this->index_path;
}
/**
* Check if an item exists in a specific repo and target.
*
* @param string $guid The unique identifier for the item.
* @param object $repo The repository object to check against.
* @param string $target The target to check within the repo.
*
* @return bool True if the item exists, false otherwise.
* @since 3.2.2
*/
protected function itemExists(string $guid, object &$repo, string $target): bool
{
if (($function_name = $this->getFunctionName($target, 'index')) !== null)
{
$this->{$function_name}($repo);
if (($function_name = $this->getFunctionName($target, 'exists')) !== null &&
$this->{$function_name}($guid, $repo))
{
return true;
}
}
return false;
}
/**
* Check if item exists locally
*
* @param string $guid The global unique id of the item
*
* @return object|null return path object
* @since 3.2.2
*/
protected function existsLocally(string $guid): ?object
{
// we can only search if we have paths
if ($this->path && $this->paths)
{
foreach ($this->paths as $path)
{
// get local index
$this->indexLocal($path);
if ($this->existsLocal($guid, $path))
{
return $path;
}
}
}
return null;
}
/**
* Check if item exists remotely
*
* @param string $guid The global unique id of the item
*
* @return object|null return path object
* @since 3.2.2
*/
protected function existsRemotely(string $guid): ?object
{
// we can only search if we have paths
if ($this->paths)
{
foreach ($this->paths as $path)
{
// get local index
$this->indexRemote($path);
if ($this->existsRemote($guid, $path))
{
return $path;
}
}
}
return null;
}
/**
* Check if item exists locally
*
* @param string $guid The global unique id of the item
* @param object $path The path object
*
* @return bool true if it exists
* @since 3.2.2
*/
protected function existsLocal(string $guid, object $path): bool
{
if (!empty($path->local) && isset($path->local->{$guid}))
{
return true;
}
return false;
}
/**
* Check if item exists remotely
*
* @param string $guid The global unique id of the item
* @param object $path The path object
*
* @return bool true if it exists
* @since 3.2.2
*/
protected function existsRemote(string $guid, object $path): bool
{
if (!empty($path->index) && isset($path->index->{$guid}))
{
return true;
}
return false;
}
/** /**
* Load the remote repository index of powers * Load the remote repository index of powers
* *
@ -148,21 +538,55 @@
* @return void * @return void
* @since 3.2.0 * @since 3.2.0
*/ */
abstract protected function remoteIndex(object &$path): void; protected function indexRemote(object &$path): void
{
if (isset($path->index))
{
return; // already set
}
try
{
// load the base and token if set
$this->contents->load_($path->base ?? null, $path->token ?? null);
$path->index = $this->contents->get($path->organisation, $path->repository, $this->getIndexPath(), $this->getBranchName($path));
}
catch (\Exception $e)
{
$path->index = null;
$this->setRemoteIndexMessage($e->getMessage(), $path->path, $path->repository, $path->organisation, $path->base ?? null);
}
finally
{
// reset back to the global base and token
$this->contents->reset_();
}
}
/** /**
* Get function name * Load the local repository index of powers
* *
* @param string $name The targeted function name * @param object $path The repository path details
* *
* @return string|null * @return void
* @since 3.2.0 * @since 3.2.0
*/ */
protected function getFunctionName(string $name): ?string protected function indexLocal(object &$path): void
{ {
$function_name = 'search' . ucfirst(strtolower($name)); if (isset($path->local) || !isset($path->full_path))
{
return;
}
return method_exists($this, $function_name) ? $function_name : null; if (($content = FileHelper::getContent($path->full_path . '/' . $this->getIndexPath(), null)) !== null &&
JsonHelper::check($content))
{
$path->local = json_decode($content);
return;
}
$path->local = null;
} }
/** /**
@ -171,7 +595,7 @@
* @return void * @return void
* @since 3.2.0 * @since 3.2.0
*/ */
protected function init(): void protected function initializeInstances(): void
{ {
if (is_array($this->paths) && $this->paths !== []) if (is_array($this->paths) && $this->paths !== [])
{ {
@ -183,12 +607,14 @@
// build the path // build the path
$path->path = trim($path->organisation) . '/' . trim($path->repository); $path->path = trim($path->organisation) . '/' . trim($path->repository);
// update the branch // get the branch field name
$branch_field = $this->getBranchField(); $branch_field = $this->getBranchField();
$branch = $path->{$branch_field} ?? null; // get the branch name
$branch = $this->getBranchName($path);
if ($branch === 'default' || empty($branch)) if ($branch === 'default' || empty($branch))
{ {
// will allow us to target the default branch as set by the git system
$path->{$branch_field} = null; $path->{$branch_field} = null;
} }
@ -207,12 +633,31 @@
} }
/** /**
* Get the branch field * Load the remote file
* *
* @return string * @param string $organisation The repository organisation
* @since 3.2.2 * @param string $repository The repository name
* @param string $path The repository path to file
* @param string|null $branch The repository branch name
*
* @return mixed
* @since 3.2.0
*/ */
public function getBranchField(): string protected function loadRemoteFile(string $organisation, string $repository, string $path, ?string $branch)
{ {
return $this->branch_field; try
{
$data = $this->contents->get($organisation, $repository, $path, $branch);
}
catch (\Exception $e)
{
$this->app->enqueueMessage(
Text::sprintf('<p>File at <b>%s/%s</b> gave the following error!<br />%s</p>', $this->contents->api(), $path, $e->getMessage()),
'Error'
);
return null;
}
return $data;
} }

View File

@ -15,12 +15,20 @@
"use_selection0": { "use_selection0": {
"use": "8d1baef6-fcad-49a9-848f-428009cdb989", "use": "8d1baef6-fcad-49a9-848f-428009cdb989",
"as": "default" "as": "default"
},
"use_selection1": {
"use": "a223b31e-ea1d-4cdf-92ae-5f9becffaff0",
"as": "default"
},
"use_selection2": {
"use": "4b225c51-d293-48e4-b3f6-5136cf5c3f18",
"as": "default"
} }
}, },
"extendsinterfaces": null, "extendsinterfaces": null,
"namespace": "[[[NamespacePrefix]]]\\Joomla\\Abstraction.Grep", "namespace": "[[[NamespacePrefix]]]\\Joomla\\Abstraction.Grep",
"description": "Global Resource Empowerment Platform\r\n\r\n The Grep feature will try to find your power in the repositories listed in the global\r\n Options of JCB in the super powers tab, and if it can't be found there will try the global core\r\n Super powers of JCB. All searches are performed according the the [algorithm:cascading]\r\n See documentation for more details: https:\/\/git.vdm.dev\/joomla\/super-powers\/wiki\r\n\r\n@since 3.2.1", "description": "Global Resource Empowerment Platform\r\n\r\n The Grep feature will try to find your power in the repositories listed in the global\r\n Options of JCB in the super powers tab, and if it can't be found there will try the global core\r\n Super powers of JCB. All searches are performed according the [algorithm:cascading]\r\n See documentation for more details: https:\/\/git.vdm.dev\/joomla\/super-powers\/wiki\r\n\r\n@since 3.2.1",
"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", "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\\CMS\\Factory;\r\nuse Joomla\\CMS\\Filesystem\\Folder;\r\nuse Joomla\\CMS\\Application\\CMSApplication;", "head": "use Joomla\\CMS\\Factory;\r\nuse Joomla\\CMS\\Language\\Text;\r\nuse Joomla\\CMS\\Filesystem\\Folder;\r\nuse Joomla\\CMS\\Application\\CMSApplication;",
"composer": "" "composer": ""
} }

View File

@ -8,7 +8,7 @@
``` ```
# abstract class MathHelper (Details) # abstract class MathHelper (Details)
> namespace: **VDM\Joomla\Utilities** > namespace: **VDM\Joomla\Utilities**
> extends: ****
```uml ```uml
@startuml @startuml
abstract MathHelper #Orange { abstract MathHelper #Orange {
@ -39,6 +39,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---152c8793_8b75_4715_996a_257b9f65451c---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# class Table (Details) # class Table (Details)
> namespace: **VDM\Joomla\Service** > namespace: **VDM\Joomla\Service**
> extends: ****
```uml ```uml
@startuml @startuml
class Table #Gold { class Table #Gold {
@ -41,6 +41,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---19b2ba92_1655_4384_acfb_979c80de8b6d---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# abstract class StringHelper (Details) # abstract class StringHelper (Details)
> namespace: **VDM\Joomla\Utilities** > namespace: **VDM\Joomla\Utilities**
> extends: ****
```uml ```uml
@startuml @startuml
abstract StringHelper #Orange { abstract StringHelper #Orange {
@ -96,6 +96,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---1f28cb53_60d9_4db1_b517_3c7dc6b429ef---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# trait InArray (Details) # trait InArray (Details)
> namespace: **VDM\Joomla\Abstraction\Registry\Traits** > namespace: **VDM\Joomla\Abstraction\Registry\Traits**
> extends: ****
```uml ```uml
@startuml @startuml
class InArray << (T,Orange) >> #Turquoise { class InArray << (T,Orange) >> #Turquoise {
@ -25,6 +25,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---215b35ac_1b26_4838_bbcf_d1fdbbd9353f---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -0,0 +1,52 @@
```
██████╗ ██████╗ ██╗ ██╗███████╗██████╗
██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔══██╗
██████╔╝██║ ██║██║ █╗ ██║█████╗ ██████╔╝
██╔═══╝ ██║ ██║██║███╗██║██╔══╝ ██╔══██╗
██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║
╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
```
# interface MainInterface (Details)
> namespace: **VDM\Joomla\Interfaces\Readme**
```uml
@startuml
interface MainInterface #Lavender {
+ get(array $items) : string
}
note right of MainInterface::get
Get Main Readme
since: 3.2.0
return: string
end note
@enduml
```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---217416f6_24cf_41c0_b18e_11086111d447---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
---
```
██╗ ██████╗██████╗
██║██╔════╝██╔══██╗
██║██║ ██████╔╝
██ ██║██║ ██╔══██╗
╚█████╔╝╚██████╗██████╔╝
╚════╝ ╚═════╝╚═════╝
```
> Build with [Joomla Component Builder](https://git.vdm.dev/joomla/Component-Builder)

View File

@ -0,0 +1,32 @@
<?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\Readme;
/**
* Main Readme Interface
*
* @since 3.2.2
*/
interface MainInterface
{
/**
* Get Main Readme
*
* @param array $items All items of this repository.
*
* @return string
* @since 3.2.0
*/
public function get(array $items): string;
}

View File

@ -0,0 +1,9 @@
/**
* Get Main Readme
*
* @param array $items All items of this repository.
*
* @return string
* @since 3.2.0
*/
public function get(array $items): string;

View File

@ -0,0 +1,19 @@
{
"add_head": "0",
"add_licensing_template": "2",
"extends": "",
"guid": "217416f6-24cf-41c0-b18e-11086111d447",
"implements": null,
"load_selection": null,
"name": "MainInterface",
"power_version": "1.0.0",
"system_name": "JCB.Interfaces.Readme.MainInterface",
"type": "interface",
"use_selection": null,
"extendsinterfaces": null,
"namespace": "[[[NamespacePrefix]]]\\Joomla\\Interfaces.Readme.MainInterface",
"description": "Main Readme Interface\r\n\r\n@since 3.2.2",
"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": ""
}

View File

@ -8,7 +8,7 @@
``` ```
# final class Items (Details) # final class Items (Details)
> namespace: **VDM\Joomla\Data** > namespace: **VDM\Joomla\Data**
> extends: ****
```uml ```uml
@startuml @startuml
class Items << (F,LightGreen) >> #RoyalBlue { class Items << (F,LightGreen) >> #RoyalBlue {
@ -139,6 +139,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---21bca8a4_5b28_41c4_843e_8097f0ba7cca---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# interface LoadInterface (Details) # interface LoadInterface (Details)
> namespace: **VDM\Joomla\Interfaces** > namespace: **VDM\Joomla\Interfaces**
> extends: ****
```uml ```uml
@startuml @startuml
interface LoadInterface #Lavender { interface LoadInterface #Lavender {
@ -125,6 +125,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---2ad31f74_f579_499d_b98b_c4f54fd615dd---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# interface Tableinterface (Details) # interface Tableinterface (Details)
> namespace: **VDM\Joomla\Interfaces** > namespace: **VDM\Joomla\Interfaces**
> extends: ****
```uml ```uml
@startuml @startuml
interface Tableinterface #Lavender { interface Tableinterface #Lavender {
@ -83,6 +83,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---2da6d6c4_eb29_4d69_8bc2_36d96e916adf---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# class Model (Details) # class Model (Details)
> namespace: **VDM\Joomla\Service** > namespace: **VDM\Joomla\Service**
> extends: ****
```uml ```uml
@startuml @startuml
class Model #Gold { class Model #Gold {
@ -41,6 +41,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---2dcedd6c_c95b_4a37_9cac_95d28faedca3---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# abstract class Factory (Details) # abstract class Factory (Details)
> namespace: **VDM\Joomla\Abstraction** > namespace: **VDM\Joomla\Abstraction**
> extends: ****
```uml ```uml
@startuml @startuml
abstract Factory #Orange { abstract Factory #Orange {
@ -41,6 +41,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---2e5bf608_de5c_4b00_a20d_47c26aa350d9---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# abstract class ClassfunctionHelper (Details) # abstract class ClassfunctionHelper (Details)
> namespace: **VDM\Joomla\Utilities\String** > namespace: **VDM\Joomla\Utilities\String**
> extends: ****
```uml ```uml
@startuml @startuml
abstract ClassfunctionHelper #Orange { abstract ClassfunctionHelper #Orange {
@ -25,6 +25,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---30c5b4c2_f75f_4d15_869a_f8bfedd87358---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# interface SubformInterface (Details) # interface SubformInterface (Details)
> namespace: **VDM\Joomla\Interfaces\Data** > namespace: **VDM\Joomla\Interfaces\Data**
> extends: ****
```uml ```uml
@startuml @startuml
interface SubformInterface #Lavender { interface SubformInterface #Lavender {
@ -61,6 +61,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---34959721_415b_4b5e_8002_3d1fc84b3b2b---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# abstract class PluginHelper (Details) # abstract class PluginHelper (Details)
> namespace: **VDM\Joomla\Utilities\String** > namespace: **VDM\Joomla\Utilities\String**
> extends: ****
```uml ```uml
@startuml @startuml
abstract PluginHelper #Orange { abstract PluginHelper #Orange {
@ -49,6 +49,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---3cf76fbf_fd95_4a33_878e_7aff6d36b7f6---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# class Delete (Details) # class Delete (Details)
> namespace: **VDM\Joomla\Data\Action** > namespace: **VDM\Joomla\Data\Action**
> extends: ****
```uml ```uml
@startuml @startuml
class Delete #Gold { class Delete #Gold {
@ -58,6 +58,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---3fc72954_a303_4cac_b53c_554be38b85e7---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# abstract class ActiveRegistry (Details) # abstract class ActiveRegistry (Details)
> namespace: **VDM\Joomla\Abstraction** > namespace: **VDM\Joomla\Abstraction**
> extends: ****
```uml ```uml
@startuml @startuml
abstract ActiveRegistry #Orange { abstract ActiveRegistry #Orange {
@ -92,6 +92,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---43134867_5cb8_4280_9be8_309fd2fd135f---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# class Database (Details) # class Database (Details)
> namespace: **VDM\Joomla\Service** > namespace: **VDM\Joomla\Service**
> extends: ****
```uml ```uml
@startuml @startuml
class Database #Gold { class Database #Gold {
@ -57,6 +57,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---4815e1c7_a433_443d_a112_d1e03d7df84b---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# abstract class ComponentCodeNameHelper (Details) # abstract class ComponentCodeNameHelper (Details)
> namespace: **VDM\Joomla\Utilities\String** > namespace: **VDM\Joomla\Utilities\String**
> extends: ****
```uml ```uml
@startuml @startuml
abstract ComponentCodeNameHelper #Orange { abstract ComponentCodeNameHelper #Orange {
@ -27,6 +27,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---491dbe41_f26c_4de9_8a95_fcf87b35b56f---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# abstract class JsonHelper (Details) # abstract class JsonHelper (Details)
> namespace: **VDM\Joomla\Utilities** > namespace: **VDM\Joomla\Utilities**
> extends: ****
```uml ```uml
@startuml @startuml
abstract JsonHelper #Orange { abstract JsonHelper #Orange {
@ -39,6 +39,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---4b225c51_d293_48e4_b3f6_5136cf5c3f18---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# interface SchemaInterface (Details) # interface SchemaInterface (Details)
> namespace: **VDM\Joomla\Interfaces** > namespace: **VDM\Joomla\Interfaces**
> extends: ****
```uml ```uml
@startuml @startuml
interface SchemaInterface #Lavender { interface SchemaInterface #Lavender {
@ -41,6 +41,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---4dd11b9b_3c64_460b_aaa6_62ba467db7aa---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -6,48 +6,48 @@
██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║ ██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║
╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
``` ```
# interface RemoteInterface (Details) # interface RemoteGetInterface (Details)
> namespace: **VDM\Joomla\Interfaces\Data** > namespace: **VDM\Joomla\Interfaces\Data**
> extends: ****
```uml ```uml
@startuml @startuml
interface RemoteInterface #Lavender { interface RemoteGetInterface #Lavender {
+ table(string $table) : self + table(string $table) : self
+ init() : bool + init() : bool
+ reset(array $items) : bool + reset(array $items) : bool
+ load(string $guid, array $order = ['remote', 'local']) : bool + item(string $guid, array $order = ['remote', 'local']) : bool
+ getTable() : string + getTable() : string
} }
note right of RemoteInterface::table note right of RemoteGetInterface::table
Set the current active table Set the current active table
since: 3.2.2 since: 3.2.2
return: self return: self
end note end note
note right of RemoteInterface::init note right of RemoteGetInterface::init
Init all items not found in database Init all items not found in database
since: 3.2.0 since: 3.2.0
return: bool return: bool
end note end note
note right of RemoteInterface::reset note right of RemoteGetInterface::reset
Reset the items Reset the items
since: 3.2.0 since: 3.2.0
return: bool return: bool
end note end note
note right of RemoteInterface::load note right of RemoteGetInterface::item
Load a item Load an item
since: 3.2.2 since: 3.2.2
return: bool return: bool
end note end note
note right of RemoteInterface::getTable note right of RemoteGetInterface::getTable
Get the current active table Get the current active table
since: 3.2.2 since: 3.2.2
@ -57,6 +57,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---51de80f2_2868_4c2c_8198_ef79349e9bd7---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -17,7 +17,7 @@ namespace VDM\Joomla\Interfaces\Data;
* *
* @since 3.2.2 * @since 3.2.2
*/ */
interface RemoteInterface interface RemoteGetInterface
{ {
/** /**
* Set the current active table * Set the current active table
@ -48,7 +48,7 @@ interface RemoteInterface
public function reset(array $items): bool; public function reset(array $items): bool;
/** /**
* Load a item * Load an item
* *
* @param string $guid The global unique id of the item * @param string $guid The global unique id of the item
* @param array $order The search order * @param array $order The search order
@ -56,7 +56,7 @@ interface RemoteInterface
* @return bool * @return bool
* @since 3.2.2 * @since 3.2.2
*/ */
public function load(string $guid, array $order = ['remote', 'local']): bool; public function item(string $guid, array $order = ['remote', 'local']): bool;
/** /**
* Get the current active table * Get the current active table

View File

@ -27,7 +27,7 @@
public function reset(array $items): bool; public function reset(array $items): bool;
/** /**
* Load a item * Load an item
* *
* @param string $guid The global unique id of the item * @param string $guid The global unique id of the item
* @param array $order The search order * @param array $order The search order
@ -35,7 +35,7 @@
* @return bool * @return bool
* @since 3.2.2 * @since 3.2.2
*/ */
public function load(string $guid, array $order = ['remote', 'local']): bool; public function item(string $guid, array $order = ['remote', 'local']): bool;
/** /**
* Get the current active table * Get the current active table

View File

@ -5,13 +5,13 @@
"guid": "51de80f2-2868-4c2c-8198-ef79349e9bd7", "guid": "51de80f2-2868-4c2c-8198-ef79349e9bd7",
"implements": null, "implements": null,
"load_selection": null, "load_selection": null,
"name": "RemoteInterface", "name": "RemoteGetInterface",
"power_version": "1.0.0", "power_version": "1.0.0",
"system_name": "JCB.Interfaces.Remote", "system_name": "VDM.Interfaces.RemoteGetInterface",
"type": "interface", "type": "interface",
"use_selection": null, "use_selection": null,
"extendsinterfaces": null, "extendsinterfaces": null,
"namespace": "[[[NamespacePrefix]]]\\Joomla\\Interfaces.Data.RemoteInterface", "namespace": "[[[NamespacePrefix]]]\\Joomla\\Interfaces.Data.RemoteGetInterface",
"description": "Load data based on global unique ids from remote system\r\n\r\n@since 3.2.2", "description": "Load data based on global unique ids from remote system\r\n\r\n@since 3.2.2",
"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", "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": "", "head": "",

View File

@ -9,6 +9,7 @@
# final class Insert (Details) # final class Insert (Details)
> namespace: **VDM\Joomla\Database** > namespace: **VDM\Joomla\Database**
> extends: **Database** > extends: **Database**
```uml ```uml
@startuml @startuml
class Insert << (F,LightGreen) >> #RoyalBlue { class Insert << (F,LightGreen) >> #RoyalBlue {
@ -98,6 +99,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---524eb8f6_38d4_47dc_92ad_98b94e099ac0---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# trait VarExport (Details) # trait VarExport (Details)
> namespace: **VDM\Joomla\Abstraction\Registry\Traits** > namespace: **VDM\Joomla\Abstraction\Registry\Traits**
> extends: ****
```uml ```uml
@startuml @startuml
class VarExport << (T,Orange) >> #Turquoise { class VarExport << (T,Orange) >> #Turquoise {
@ -34,6 +34,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---52a1d14f_304a_431c_8fa4_411179942db5---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# abstract class Model (Details) # abstract class Model (Details)
> namespace: **VDM\Joomla\Abstraction** > namespace: **VDM\Joomla\Abstraction**
> extends: ****
```uml ```uml
@startuml @startuml
abstract Model #Orange { abstract Model #Orange {
@ -180,6 +180,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---584747d1_3a86_453d_b7a3_a2219de8d777---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# trait GetString (Details) # trait GetString (Details)
> namespace: **VDM\Joomla\Abstraction\Registry\Traits** > namespace: **VDM\Joomla\Abstraction\Registry\Traits**
> extends: ****
```uml ```uml
@startuml @startuml
class GetString << (T,Orange) >> #Turquoise { class GetString << (T,Orange) >> #Turquoise {
@ -25,6 +25,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---59b1a2ea_d77e_4040_ac8c_e65cd8743e9b---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -0,0 +1,123 @@
```
██████╗ ██████╗ ██╗ ██╗███████╗██████╗
██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔══██╗
██████╔╝██║ ██║██║ █╗ ██║█████╗ ██████╔╝
██╔═══╝ ██║ ██║██║███╗██║██╔══╝ ██╔══██╗
██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║
╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
```
# abstract class SchemaChecker (Details)
> namespace: **VDM\Joomla\Abstraction**
```uml
@startuml
abstract SchemaChecker #Orange {
# ?Table $table
# ?Schema $schema
# CMSApplication $app
+ __construct(?Schema $schema = null, ?Table $table = null, ...)
+ run() : void
# initializeInstances() : void
# setSchemaInstance() : void
# setTableInstance() : void
# {abstract} getCode() : string
# {abstract} getPowerPath() : string
# {abstract} getSchemaClass() : string
# {abstract} getTableClass() : string
}
note right of SchemaChecker::__construct
Constructor.
since: 3.2.2
arguments:
?Schema $schema = null
?Table $table = null
?CMSApplication $app = null
end note
note left of SchemaChecker::run
Make sure that the database schema is up-to-date.
since: 3.2.2
return: void
end note
note right of SchemaChecker::initializeInstances
Initialize the needed class instances if needed
since: 3.2.2
return: void
end note
note left of SchemaChecker::setSchemaInstance
set the schema class instance
since: 3.2.2
return: void
end note
note right of SchemaChecker::setTableInstance
set the table class instance
since: 3.2.2
return: void
end note
note left of SchemaChecker::getCode
Get the targeted component code
since: 3.2.2
return: string
end note
note right of SchemaChecker::getPowerPath
Get the targeted component power path
since: 3.2.2
return: string
end note
note left of SchemaChecker::getSchemaClass
Get the fully qualified name of the schema class.
since: 3.2.2
return: string
end note
note right of SchemaChecker::getTableClass
Get the fully qualified name of the table class.
since: 3.2.2
return: string
end note
@enduml
```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---5f0205fa_5c43_424a_af7d_abc943c17c8c---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
---
```
██╗ ██████╗██████╗
██║██╔════╝██╔══██╗
██║██║ ██████╔╝
██ ██║██║ ██╔══██╗
╚█████╔╝╚██████╗██████╔╝
╚════╝ ╚═════╝╚═════╝
```
> Build with [Joomla Component Builder](https://git.vdm.dev/joomla/Component-Builder)

View File

@ -0,0 +1,196 @@
<?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 Joomla\CMS\Factory;
use Joomla\CMS\Application\CMSApplication;
use VDM\Joomla\Interfaces\SchemaInterface as Schema;
use VDM\Joomla\Interfaces\Tableinterface as Table;
use VDM\Joomla\Utilities\ClassHelper;
use VDM\Joomla\Interfaces\SchemaCheckerInterface;
/**
* Schema Checker
*
* @since 3.2.2
*/
abstract class SchemaChecker implements SchemaCheckerInterface
{
/**
* The Table Class.
*
* @var Table|null
* @since 3.2.2
*/
protected ?Table $table;
/**
* The Schema Class.
*
* @var Schema|null
* @since 3.2.2
*/
protected ?Schema $schema;
/**
* Application object.
*
* @var CMSApplication
* @since 3.2.2
**/
protected CMSApplication $app;
/**
* Constructor.
*
* @param Schema|null $schema The Schema Class.
* @param Table|null $table The Table Class.
* @param CMSApplication|null $app The app object.
*
* @throws \Exception
* @since 3.2.2
*/
public function __construct(?Schema $schema = null, ?Table $table = null, ?CMSApplication $app = null)
{
$this->schema = $schema;
$this->table = $table;
$this->app = $app ?: Factory::getApplication();
// Validate classes are set
// Since this class is often called from outside a container
$this->initializeInstances();
// I don't care! I have more important thing to do, maybe later... (last updated in 1983 ;)
}
/**
* Make sure that the database schema is up-to-date.
*
* @return void
* @since 3.2.2
*/
public function run(): void
{
if ($this->schema === null)
{
$this->app->enqueueMessage('We failed to find/load the Schema class', 'warning');
return;
}
// try to load the update the tables with the schema class
try
{
$messages = $this->schema->update();
}
catch (\Exception $e)
{
$this->app->enqueueMessage($e->getMessage(), 'warning');
return;
}
foreach ($messages as $message)
{
$this->app->enqueueMessage($message, 'message');
}
}
/**
* Initialize the needed class instances if needed
*
* @return void
* @since 3.2.2
*/
protected function initializeInstances(): void
{
if ($this->schema !== null)
{
return;
}
if ($this->table === null)
{
$this->setTableInstance();
}
$this->setSchemaInstance();
}
/**
* set the schema class instance
*
* @return void
* @since 3.2.2
*/
protected function setSchemaInstance(): void
{
// make sure the class is loaded
if (ClassHelper::exists(
$this->getSchemaClass(), $this->getCode(), $this->getPowerPath()
))
{
// instantiate the schema class
$this->schema = new ($this->getSchemaClass())($this->table);
}
}
/**
* set the table class instance
*
* @return void
* @since 3.2.2
*/
protected function setTableInstance(): void
{
// make sure the class is loaded
if (ClassHelper::exists(
$this->getTableClass(), $this->getCode(), $this->getPowerPath()
))
{
// instantiate the table class
$this->table = new ($this->getTableClass())();
}
}
/**
* Get the targeted component code
*
* @return string
* @since 3.2.2
*/
abstract protected function getCode(): string;
/**
* Get the targeted component power path
*
* @return string
* @since 3.2.2
*/
abstract protected function getPowerPath(): string;
/**
* Get the fully qualified name of the schema class.
*
* @return string
* @since 3.2.2
*/
abstract protected function getSchemaClass(): string;
/**
* Get the fully qualified name of the table class.
*
* @return string
* @since 3.2.2
*/
abstract protected function getTableClass(): string;
}

View File

@ -0,0 +1,165 @@
/**
* The Table Class.
*
* @var Table|null
* @since 3.2.2
*/
protected ?Table $table;
/**
* The Schema Class.
*
* @var Schema|null
* @since 3.2.2
*/
protected ?Schema $schema;
/**
* Application object.
*
* @var CMSApplication
* @since 3.2.2
**/
protected CMSApplication $app;
/**
* Constructor.
*
* @param Schema|null $schema The Schema Class.
* @param Table|null $table The Table Class.
* @param CMSApplication|null $app The app object.
*
* @throws \Exception
* @since 3.2.2
*/
public function __construct(?Schema $schema = null, ?Table $table = null, ?CMSApplication $app = null)
{
$this->schema = $schema;
$this->table = $table;
$this->app = $app ?: Factory::getApplication();
// Validate classes are set
// Since this class is often called from outside a container
$this->initializeInstances();
// I don't care! I have more important thing to do, maybe later... (last updated in 1983 ;)
}
/**
* Make sure that the database schema is up-to-date.
*
* @return void
* @since 3.2.2
*/
public function run(): void
{
if ($this->schema === null)
{
$this->app->enqueueMessage('We failed to find/load the Schema class', 'warning');
return;
}
// try to load the update the tables with the schema class
try
{
$messages = $this->schema->update();
}
catch (\Exception $e)
{
$this->app->enqueueMessage($e->getMessage(), 'warning');
return;
}
foreach ($messages as $message)
{
$this->app->enqueueMessage($message, 'message');
}
}
/**
* Initialize the needed class instances if needed
*
* @return void
* @since 3.2.2
*/
protected function initializeInstances(): void
{
if ($this->schema !== null)
{
return;
}
if ($this->table === null)
{
$this->setTableInstance();
}
$this->setSchemaInstance();
}
/**
* set the schema class instance
*
* @return void
* @since 3.2.2
*/
protected function setSchemaInstance(): void
{
// make sure the class is loaded
if (ClassHelper::exists(
$this->getSchemaClass(), $this->getCode(), $this->getPowerPath()
))
{
// instantiate the schema class
$this->schema = new ($this->getSchemaClass())($this->table);
}
}
/**
* set the table class instance
*
* @return void
* @since 3.2.2
*/
protected function setTableInstance(): void
{
// make sure the class is loaded
if (ClassHelper::exists(
$this->getTableClass(), $this->getCode(), $this->getPowerPath()
))
{
// instantiate the table class
$this->table = new ($this->getTableClass())();
}
}
/**
* Get the targeted component code
*
* @return string
* @since 3.2.2
*/
abstract protected function getCode(): string;
/**
* Get the targeted component power path
*
* @return string
* @since 3.2.2
*/
abstract protected function getPowerPath(): string;
/**
* Get the fully qualified name of the schema class.
*
* @return string
* @since 3.2.2
*/
abstract protected function getSchemaClass(): string;
/**
* Get the fully qualified name of the table class.
*
* @return string
* @since 3.2.2
*/
abstract protected function getTableClass(): string;

View File

@ -2,31 +2,33 @@
"add_head": "1", "add_head": "1",
"add_licensing_template": "2", "add_licensing_template": "2",
"extends": "", "extends": "",
"guid": "cddcac51-9a46-47c4-ba59-105c70453bd6", "guid": "5f0205fa-5c43-424a-af7d-abc943c17c8c",
"implements": null, "implements": [
"b6e9854c-3672-42ec-8843-26c24b4635bd"
],
"load_selection": null, "load_selection": null,
"name": "FilterHelper", "name": "SchemaChecker",
"power_version": "1.0.0", "power_version": "1.0.0",
"system_name": "JCB.Utilities.FilterHelper", "system_name": "VDM.SchemaChecker",
"type": "abstract class", "type": "abstract class",
"use_selection": { "use_selection": {
"use_selection0": { "use_selection0": {
"use": "0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a", "use": "4dd11b9b-3c64-460b-aaa6-62ba467db7aa",
"as": "default" "as": "Schema"
}, },
"use_selection1": { "use_selection1": {
"use": "4b225c51-d293-48e4-b3f6-5136cf5c3f18", "use": "2da6d6c4-eb29-4d69-8bc2-36d96e916adf",
"as": "default" "as": "Table"
}, },
"use_selection2": { "use_selection2": {
"use": "db87c339-5bb6-4291-a7ef-2c48ea1b06bc", "use": "13c2cac1-a70d-42d7-99fc-eb7ac3443069",
"as": "default" "as": "default"
} }
}, },
"extendsinterfaces": null, "extendsinterfaces": null,
"namespace": "[[[NamespacePrefix]]]\\Joomla\\Componentbuilder.Utilities.FilterHelper", "namespace": "[[[NamespacePrefix]]]\\Joomla\\Abstraction.SchemaChecker",
"description": "Filter Helper\r\n\r\n@since 3.2.0", "description": "Schema Checker\r\n\r\n@since 3.2.2",
"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", "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\\CMS\\Factory;\r\nuse Joomla\\CMS\\Language\\Text;", "head": "use Joomla\\CMS\\Factory;\r\nuse Joomla\\CMS\\Application\\CMSApplication;",
"composer": "" "composer": ""
} }

View File

@ -8,7 +8,7 @@
``` ```
# abstract class Helper (Details) # abstract class Helper (Details)
> namespace: **VDM\Joomla\Utilities\Component** > namespace: **VDM\Joomla\Utilities\Component**
> extends: ****
```uml ```uml
@startuml @startuml
abstract Helper #Orange { abstract Helper #Orange {
@ -94,6 +94,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---640b5352_fb09_425f_a26e_cd44eda03f15---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# abstract class Base64Helper (Details) # abstract class Base64Helper (Details)
> namespace: **VDM\Joomla\Utilities** > namespace: **VDM\Joomla\Utilities**
> extends: ****
```uml ```uml
@startuml @startuml
abstract Base64Helper #Orange { abstract Base64Helper #Orange {
@ -30,6 +30,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---64a6ff6c_069c_4a11_a76b_db5e36c27690---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -9,6 +9,7 @@
# interface Registryinterface (Details) # interface Registryinterface (Details)
> namespace: **VDM\Joomla\Interfaces** > namespace: **VDM\Joomla\Interfaces**
> extends: **Activeregistryinterface** > extends: **Activeregistryinterface**
```uml ```uml
@startuml @startuml
interface Registryinterface #Lavender { interface Registryinterface #Lavender {
@ -73,6 +74,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---64e291c2_11f1_423d_a44d_837cc12cc017---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -0,0 +1,52 @@
```
██████╗ ██████╗ ██╗ ██╗███████╗██████╗
██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔══██╗
██████╔╝██║ ██║██║ █╗ ██║█████╗ ██████╔╝
██╔═══╝ ██║ ██║██║███╗██║██╔══╝ ██╔══██╗
██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║
╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
```
# interface ItemInterface (Details)
> namespace: **VDM\Joomla\Interfaces\Readme**
```uml
@startuml
interface ItemInterface #Lavender {
+ get(object $item) : string
}
note right of ItemInterface::get
Get an item readme
since: 3.2.2
return: string
end note
@enduml
```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---65a0f81a_14fc_4870_9382_b8d830b19937---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
---
```
██╗ ██████╗██████╗
██║██╔════╝██╔══██╗
██║██║ ██████╔╝
██ ██║██║ ██╔══██╗
╚█████╔╝╚██████╗██████╔╝
╚════╝ ╚═════╝╚═════╝
```
> Build with [Joomla Component Builder](https://git.vdm.dev/joomla/Component-Builder)

View File

@ -0,0 +1,32 @@
<?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\Readme;
/**
* Item Readme Interface
*
* @since 3.2.2
*/
interface ItemInterface
{
/**
* Get an item readme
*
* @param object $item An item details.
*
* @return string
* @since 3.2.2
*/
public function get(object $item): string;
}

View File

@ -0,0 +1,9 @@
/**
* Get an item readme
*
* @param object $item An item details.
*
* @return string
* @since 3.2.2
*/
public function get(object $item): string;

View File

@ -0,0 +1,19 @@
{
"add_head": "0",
"add_licensing_template": "2",
"extends": "",
"guid": "65a0f81a-14fc-4870-9382-b8d830b19937",
"implements": null,
"load_selection": null,
"name": "ItemInterface",
"power_version": "1.0.0",
"system_name": "VDM.Interfaces.Readme.ItemInterface",
"type": "interface",
"use_selection": null,
"extendsinterfaces": null,
"namespace": "[[[NamespacePrefix]]]\\Joomla\\Interfaces.Readme.ItemInterface",
"description": "Item Readme Interface\r\n\r\n@since 3.2.2",
"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": ""
}

View File

@ -8,7 +8,7 @@
``` ```
# interface UpdateInterface (Details) # interface UpdateInterface (Details)
> namespace: **VDM\Joomla\Interfaces\Data** > namespace: **VDM\Joomla\Interfaces\Data**
> extends: ****
```uml ```uml
@startuml @startuml
interface UpdateInterface #Lavender { interface UpdateInterface #Lavender {
@ -84,6 +84,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---68a41264_64c0_441a_a3d8_8a5e557b1883---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# abstract class Database (Details) # abstract class Database (Details)
> namespace: **VDM\Joomla\Abstraction** > namespace: **VDM\Joomla\Abstraction**
> extends: ****
```uml ```uml
@startuml @startuml
abstract Database #Orange { abstract Database #Orange {
@ -43,6 +43,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---6cbef8f8_4813_48e3_b05a_65e1aea95171---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -0,0 +1,77 @@
```
██████╗ ██████╗ ██╗ ██╗███████╗██████╗
██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔══██╗
██████╔╝██║ ██║██║ █╗ ██║█████╗ ██████╔╝
██╔═══╝ ██║ ██║██║███╗██║██╔══╝ ██╔══██╗
██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║
╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
```
# final class SchemaChecker (Details)
> namespace: **VDM\Joomla\Componentbuilder\Table**
> extends: **ExtendingSchemaChecker**
```uml
@startuml
class SchemaChecker << (F,LightGreen) >> #RoyalBlue {
# getCode() : string
# getPowerPath() : string
# getSchemaClass() : string
# getTableClass() : string
}
note right of SchemaChecker::getCode
Get the targeted component code
since: 3.2.2
return: string
end note
note right of SchemaChecker::getPowerPath
Get the targeted component power path
since: 3.2.2
return: string
end note
note right of SchemaChecker::getSchemaClass
Get the fully qualified name of the schema class.
since: 3.2.2
return: string
end note
note right of SchemaChecker::getTableClass
Get the fully qualified name of the table class.
since: 3.2.2
return: string
end note
@enduml
```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---709d7294_9a43_46e2_b64e_d16a16f0eab1---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
---
```
██╗ ██████╗██████╗
██║██╔════╝██╔══██╗
██║██║ ██████╔╝
██ ██║██║ ██╔══██╗
╚█████╔╝╚██████╗██████╔╝
╚════╝ ╚═════╝╚═════╝
```
> Build with [Joomla Component Builder](https://git.vdm.dev/joomla/Component-Builder)

View File

@ -0,0 +1,72 @@
<?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\Table;
use VDM\Joomla\Componentbuilder\Table;
use VDM\Joomla\Componentbuilder\Table\Schema;
use VDM\Joomla\Interfaces\SchemaCheckerInterface;
use VDM\Joomla\Abstraction\SchemaChecker as ExtendingSchemaChecker;
/**
* Componentbuilder Tables Schema Checker
*
* @since 3.2.2
*/
final class SchemaChecker extends ExtendingSchemaChecker implements SchemaCheckerInterface
{
/**
* Get the targeted component code
*
* @return string
* @since 3.2.2
*/
protected function getCode(): string
{
return 'componentbuilder';
}
/**
* Get the targeted component power path
*
* @return string
* @since 3.2.2
*/
protected function getPowerPath(): string
{
return 'src/Helper/PowerloaderHelper.php';
}
/**
* Get the fully qualified name of the schema class.
*
* @return string
* @since 3.2.2
*/
protected function getSchemaClass(): string
{
return Schema::class;
}
/**
* Get the fully qualified name of the table class.
*
* @return string
* @since 3.2.2
*/
protected function getTableClass(): string
{
return Table::class;
}
}

View File

@ -0,0 +1,43 @@
/**
* Get the targeted component code
*
* @return string
* @since 3.2.2
*/
protected function getCode(): string
{
return '[[[component]]]';
}
/**
* Get the targeted component power path
*
* @return string
* @since 3.2.2
*/
protected function getPowerPath(): string
{
return '[[[POWERLOADERPATH]]]';
}
/**
* Get the fully qualified name of the schema class.
*
* @return string
* @since 3.2.2
*/
protected function getSchemaClass(): string
{
return Schema::class;
}
/**
* Get the fully qualified name of the table class.
*
* @return string
* @since 3.2.2
*/
protected function getTableClass(): string
{
return Table::class;
}

View File

@ -0,0 +1,30 @@
{
"add_head": "0",
"add_licensing_template": "2",
"extends": "5f0205fa-5c43-424a-af7d-abc943c17c8c",
"guid": "709d7294-9a43-46e2-b64e-d16a16f0eab1",
"implements": [
"b6e9854c-3672-42ec-8843-26c24b4635bd"
],
"load_selection": null,
"name": "SchemaChecker",
"power_version": "2.0.0",
"system_name": "VDM.Table.SchemaChecker",
"type": "final class",
"use_selection": {
"use_selection0": {
"use": "bfd1d6d5-56c1-4fe9-9fee-1c5910e1f5d8",
"as": "default"
},
"use_selection1": {
"use": "b3d2ec33-76d4-4c3b-bb2c-86ac14a221ce",
"as": "default"
}
},
"extendsinterfaces": null,
"namespace": "[[[NamespacePrefix]]]\\Joomla\\[[[ComponentNamespace]]].Table.SchemaChecker",
"description": "[[[Component]]] Tables Schema Checker\r\n\r\n@since 3.2.2",
"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": ""
}

View File

@ -8,7 +8,7 @@
``` ```
# interface UpdateInterface (Details) # interface UpdateInterface (Details)
> namespace: **VDM\Joomla\Interfaces** > namespace: **VDM\Joomla\Interfaces**
> extends: ****
```uml ```uml
@startuml @startuml
interface UpdateInterface #Lavender { interface UpdateInterface #Lavender {
@ -71,6 +71,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---7179fde6_1e51_4b51_8545_7ca18f74a0f4---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# interface ItemsInterface (Details) # interface ItemsInterface (Details)
> namespace: **VDM\Joomla\Interfaces\Data** > namespace: **VDM\Joomla\Interfaces\Data**
> extends: ****
```uml ```uml
@startuml @startuml
interface ItemsInterface #Lavender { interface ItemsInterface #Lavender {
@ -70,6 +70,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---7212e4db_371f_4cfd_8122_32e9bb100d83---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -6,12 +6,12 @@
██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║ ██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║
╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
``` ```
# class Remote (Details) # class Get (Details)
> namespace: **VDM\Joomla\Data** > namespace: **VDM\Joomla\Data\Remote**
> extends: ****
```uml ```uml
@startuml @startuml
class Remote #Gold { class Get #Gold {
# Grep $grep # Grep $grep
# Item $item # Item $item
# string $table # string $table
@ -19,11 +19,11 @@ class Remote #Gold {
+ table(string $table) : self + table(string $table) : self
+ init() : bool + init() : bool
+ reset(array $items) : bool + reset(array $items) : bool
+ load(string $guid, array $order = ['remote', 'local'], ...) : bool + item(string $guid, array $order = ['remote', 'local'], ...) : bool
+ getTable() : string + getTable() : string
} }
note right of Remote::__construct note right of Get::__construct
Constructor. Constructor.
since: 3.2.0 since: 3.2.0
@ -34,29 +34,29 @@ note right of Remote::__construct
?string $table = null ?string $table = null
end note end note
note right of Remote::table note right of Get::table
Set the current active table Set the current active table
since: 3.2.2 since: 3.2.2
return: self return: self
end note end note
note right of Remote::init note right of Get::init
Init all items not found in database Init all items not found in database
since: 3.2.0 since: 3.2.0
return: bool return: bool
end note end note
note right of Remote::reset note right of Get::reset
Reset the items Reset the items
since: 3.2.0 since: 3.2.0
return: bool return: bool
end note end note
note right of Remote::load note right of Get::item
Load a item Load an item
since: 3.2.0 since: 3.2.0
return: bool return: bool
@ -67,7 +67,7 @@ note right of Remote::load
?string $action = null ?string $action = null
end note end note
note right of Remote::getTable note right of Get::getTable
Get the current active table Get the current active table
since: 3.2.2 since: 3.2.2
@ -77,6 +77,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---728ee726_3f0f_4762_899d_f8c9430cee58---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -9,20 +9,20 @@
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
namespace VDM\Joomla\Data; namespace VDM\Joomla\Data\Remote;
use VDM\Joomla\Interfaces\GrepInterface as Grep; use VDM\Joomla\Interfaces\GrepInterface as Grep;
use VDM\Joomla\Interfaces\Data\ItemInterface as Item; use VDM\Joomla\Interfaces\Data\ItemInterface as Item;
use VDM\Joomla\Interfaces\Data\RemoteInterface; use VDM\Joomla\Interfaces\Data\RemoteGetInterface;
/** /**
* Load data based on global unique ids from remote system * Get data based on global unique ids from remote system
* *
* @since 3.2.0 * @since 3.2.0
*/ */
class Remote implements RemoteInterface class Get implements RemoteGetInterface
{ {
/** /**
* The Grep Class. * The Grep Class.
@ -90,7 +90,7 @@ class Remote implements RemoteInterface
*/ */
public function init(): bool public function init(): bool
{ {
if (($items = $this->grep->getRemotePowersGuid()) !== null) if (($items = $this->grep->getRemoteGuid()) !== null)
{ {
foreach($items as $guid) foreach($items as $guid)
{ {
@ -126,7 +126,7 @@ class Remote implements RemoteInterface
foreach($items as $guid) foreach($items as $guid)
{ {
if (!$this->load($guid, ['remote'])) if (!$this->item($guid, ['remote']))
{ {
$success = false; $success = false;
} }
@ -136,7 +136,7 @@ class Remote implements RemoteInterface
} }
/** /**
* Load a item * Load an item
* *
* @param string $guid The global unique id of the item * @param string $guid The global unique id of the item
* @param array $order The search order * @param array $order The search order
@ -145,7 +145,7 @@ class Remote implements RemoteInterface
* @return bool * @return bool
* @since 3.2.0 * @since 3.2.0
*/ */
public function load(string $guid, array $order = ['remote', 'local'], ?string $action = null): bool public function item(string $guid, array $order = ['remote', 'local'], ?string $action = null): bool
{ {
if (($item = $this->grep->get($guid, $order)) !== null) if (($item = $this->grep->get($guid, $order)) !== null)
{ {

View File

@ -64,7 +64,7 @@
*/ */
public function init(): bool public function init(): bool
{ {
if (($items = $this->grep->getRemotePowersGuid()) !== null) if (($items = $this->grep->getRemoteGuid()) !== null)
{ {
foreach($items as $guid) foreach($items as $guid)
{ {
@ -100,7 +100,7 @@
foreach($items as $guid) foreach($items as $guid)
{ {
if (!$this->load($guid, ['remote'])) if (!$this->item($guid, ['remote']))
{ {
$success = false; $success = false;
} }
@ -110,7 +110,7 @@
} }
/** /**
* Load a item * Load an item
* *
* @param string $guid The global unique id of the item * @param string $guid The global unique id of the item
* @param array $order The search order * @param array $order The search order
@ -119,7 +119,7 @@
* @return bool * @return bool
* @since 3.2.0 * @since 3.2.0
*/ */
public function load(string $guid, array $order = ['remote', 'local'], ?string $action = null): bool public function item(string $guid, array $order = ['remote', 'local'], ?string $action = null): bool
{ {
if (($item = $this->grep->get($guid, $order)) !== null) if (($item = $this->grep->get($guid, $order)) !== null)
{ {

View File

@ -7,9 +7,9 @@
"51de80f2-2868-4c2c-8198-ef79349e9bd7" "51de80f2-2868-4c2c-8198-ef79349e9bd7"
], ],
"load_selection": null, "load_selection": null,
"name": "Remote", "name": "Get",
"power_version": "1.0.0", "power_version": "1.0.0",
"system_name": "VDM.Data.Remote", "system_name": "VDM.Data.Remote.Get",
"type": "class", "type": "class",
"use_selection": { "use_selection": {
"use_selection0": { "use_selection0": {
@ -22,8 +22,8 @@
} }
}, },
"extendsinterfaces": null, "extendsinterfaces": null,
"namespace": "[[[NamespacePrefix]]]\\Joomla\\Data.Remote", "namespace": "[[[NamespacePrefix]]]\\Joomla\\Data.Remote.Get",
"description": "Load data based on global unique ids from remote system\r\n\r\n@since 3.2.0", "description": "Get data based on global unique ids from remote system\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", "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": "", "head": "",
"composer": "" "composer": ""

View File

@ -9,6 +9,7 @@
# final class Upsert (Details) # final class Upsert (Details)
> namespace: **VDM\Joomla\Model** > namespace: **VDM\Joomla\Model**
> extends: **Model** > extends: **Model**
```uml ```uml
@startuml @startuml
class Upsert << (F,LightGreen) >> #RoyalBlue { class Upsert << (F,LightGreen) >> #RoyalBlue {
@ -57,6 +58,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---7c1fb50f_8fb1_4627_8705_6fedf7182ca5---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# trait ToString (Details) # trait ToString (Details)
> namespace: **VDM\Joomla\Abstraction\Registry\Traits** > namespace: **VDM\Joomla\Abstraction\Registry\Traits**
> extends: ****
```uml ```uml
@startuml @startuml
class ToString << (T,Orange) >> #Turquoise { class ToString << (T,Orange) >> #Turquoise {
@ -25,6 +25,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---7d494d91_ab60_43cd_aecf_d50e07f7f30e---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -9,6 +9,7 @@
# abstract class Registry (Details) # abstract class Registry (Details)
> namespace: **VDM\Joomla\Abstraction** > namespace: **VDM\Joomla\Abstraction**
> extends: **ActiveRegistry** > extends: **ActiveRegistry**
```uml ```uml
@startuml @startuml
abstract Registry #Orange { abstract Registry #Orange {
@ -82,6 +83,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---7e822c03_1b20_41d1_9427_f5b8d5836af7---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# final class Subform (Details) # final class Subform (Details)
> namespace: **VDM\Joomla\Data** > namespace: **VDM\Joomla\Data**
> extends: ****
```uml ```uml
@startuml @startuml
class Subform << (F,LightGreen) >> #RoyalBlue { class Subform << (F,LightGreen) >> #RoyalBlue {
@ -125,6 +125,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---85785701_07b2_4f81_bc1e_0f423700c254---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# interface ModelInterface (Details) # interface ModelInterface (Details)
> namespace: **VDM\Joomla\Interfaces** > namespace: **VDM\Joomla\Interfaces**
> extends: ****
```uml ```uml
@startuml @startuml
interface ModelInterface #Lavender { interface ModelInterface #Lavender {
@ -114,6 +114,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---8aef58c1_3f70_4bd4_b9e4_3f29fcd41cff---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# class Update (Details) # class Update (Details)
> namespace: **VDM\Joomla\Data\Action** > namespace: **VDM\Joomla\Data\Action**
> extends: ****
```uml ```uml
@startuml @startuml
class Update #Gold { class Update #Gold {
@ -99,6 +99,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---8f83fb79_f92b_4f1f_952b_325f6c22d11e---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# abstract class ObjectHelper (Details) # abstract class ObjectHelper (Details)
> namespace: **VDM\Joomla\Utilities** > namespace: **VDM\Joomla\Utilities**
> extends: ****
```uml ```uml
@startuml @startuml
abstract ObjectHelper #Orange { abstract ObjectHelper #Orange {
@ -35,6 +35,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---91004529_94a9_4590_b842_e7c6b624ecf5---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# final class Item (Details) # final class Item (Details)
> namespace: **VDM\Joomla\Data** > namespace: **VDM\Joomla\Data**
> extends: ****
```uml ```uml
@startuml @startuml
class Item << (F,LightGreen) >> #RoyalBlue { class Item << (F,LightGreen) >> #RoyalBlue {
@ -120,6 +120,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---9206082e_a3f7_472e_98b2_de90d06cbdcd---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -9,6 +9,7 @@
# final class Delete (Details) # final class Delete (Details)
> namespace: **VDM\Joomla\Database** > namespace: **VDM\Joomla\Database**
> extends: **Database** > extends: **Database**
```uml ```uml
@startuml @startuml
class Delete << (F,LightGreen) >> #RoyalBlue { class Delete << (F,LightGreen) >> #RoyalBlue {
@ -33,6 +34,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---92291f1f_f248_4ec0_9f2a_3d47c49eeac1---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# interface DeleteInterface (Details) # interface DeleteInterface (Details)
> namespace: **VDM\Joomla\Interfaces** > namespace: **VDM\Joomla\Interfaces**
> extends: ****
```uml ```uml
@startuml @startuml
interface DeleteInterface #Lavender { interface DeleteInterface #Lavender {
@ -33,6 +33,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---9c3aa650_e536_4eea_a2d4_73cc3e184aa9---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# abstract class GuidHelper (Details) # abstract class GuidHelper (Details)
> namespace: **VDM\Joomla\Utilities** > namespace: **VDM\Joomla\Utilities**
> extends: ****
```uml ```uml
@startuml @startuml
abstract GuidHelper #Orange { abstract GuidHelper #Orange {
@ -68,6 +68,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---9c513baf_b279_43fd_ae29_a585c8cbc4f0---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -9,6 +9,7 @@
# abstract class Factory (Details) # abstract class Factory (Details)
> namespace: **VDM\Joomla\Data** > namespace: **VDM\Joomla\Data**
> extends: **ExtendingFactory** > extends: **ExtendingFactory**
```uml ```uml
@startuml @startuml
abstract Factory #Orange { abstract Factory #Orange {
@ -25,6 +26,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---9d76b8dc_3883_4755_b11c_131d19ca8a53---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# abstract class FieldHelper (Details) # abstract class FieldHelper (Details)
> namespace: **VDM\Joomla\Utilities\String** > namespace: **VDM\Joomla\Utilities\String**
> extends: ****
```uml ```uml
@startuml @startuml
abstract FieldHelper #Orange { abstract FieldHelper #Orange {
@ -30,6 +30,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---9ef0eb24_aae4_4f5a_99af_d724db44808f---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# abstract class FileHelper (Details) # abstract class FileHelper (Details)
> namespace: **VDM\Joomla\Utilities** > namespace: **VDM\Joomla\Utilities**
> extends: ****
```uml ```uml
@startuml @startuml
abstract FileHelper #Orange { abstract FileHelper #Orange {
@ -74,6 +74,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---a223b31e_ea1d_4cdf_92ae_5f9becffaff0---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# class Insert (Details) # class Insert (Details)
> namespace: **VDM\Joomla\Data\Action** > namespace: **VDM\Joomla\Data\Action**
> extends: ****
```uml ```uml
@startuml @startuml
class Insert #Gold { class Insert #Gold {
@ -99,6 +99,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---a455d916_cfe4_41df_9245_bafb709aacdb---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# class Data (Details) # class Data (Details)
> namespace: **VDM\Joomla\Service** > namespace: **VDM\Joomla\Service**
> extends: ****
```uml ```uml
@startuml @startuml
class Data #Gold { class Data #Gold {
@ -89,6 +89,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---a5daf189_3345_4b13_8716_c51f686f545b---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# abstract class TypeHelper (Details) # abstract class TypeHelper (Details)
> namespace: **VDM\Joomla\Utilities\String** > namespace: **VDM\Joomla\Utilities\String**
> extends: ****
```uml ```uml
@startuml @startuml
abstract TypeHelper #Orange { abstract TypeHelper #Orange {
@ -25,6 +25,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---a8935cbe_7701_40dc_bfd5_675f2d600954---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# interface InsertInterface (Details) # interface InsertInterface (Details)
> namespace: **VDM\Joomla\Interfaces** > namespace: **VDM\Joomla\Interfaces**
> extends: ****
```uml ```uml
@startuml @startuml
interface InsertInterface #Lavender { interface InsertInterface #Lavender {
@ -67,6 +67,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---ad12ca1c_d3ce_4e7f_88c5_c6c92bdedc48---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# interface Activeregistryinterface (Details) # interface Activeregistryinterface (Details)
> namespace: **VDM\Joomla\Interfaces** > namespace: **VDM\Joomla\Interfaces**
> extends: ****
```uml ```uml
@startuml @startuml
interface Activeregistryinterface #Lavender { interface Activeregistryinterface #Lavender {
@ -81,6 +81,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---af0eedbe_603b_4671_8e5a_28165d88254b---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -9,6 +9,7 @@
# final class Schema (Details) # final class Schema (Details)
> namespace: **VDM\Joomla\Componentbuilder\Table** > namespace: **VDM\Joomla\Componentbuilder\Table**
> extends: **ExtendingSchema** > extends: **ExtendingSchema**
```uml ```uml
@startuml @startuml
class Schema << (F,LightGreen) >> #RoyalBlue { class Schema << (F,LightGreen) >> #RoyalBlue {
@ -32,6 +33,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---b3d2ec33_76d4_4c3b_bb2c_86ac14a221ce---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -18,7 +18,7 @@
} }
}, },
"extendsinterfaces": null, "extendsinterfaces": null,
"namespace": "[[[NamespacePrefix]]]\\Joomla\\[[[Component]]].Table.Schema", "namespace": "[[[NamespacePrefix]]]\\Joomla\\[[[ComponentNamespace]]].Table.Schema",
"description": "[[[Component]]] Tables Schema\r\n\r\n@since 3.2.1", "description": "[[[Component]]] Tables Schema\r\n\r\n@since 3.2.1",
"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", "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": "", "head": "",

View File

@ -0,0 +1,52 @@
```
██████╗ ██████╗ ██╗ ██╗███████╗██████╗
██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔══██╗
██████╔╝██║ ██║██║ █╗ ██║█████╗ ██████╔╝
██╔═══╝ ██║ ██║██║███╗██║██╔══╝ ██╔══██╗
██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║
╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
```
# interface SchemaCheckerInterface (Details)
> namespace: **VDM\Joomla\Interfaces**
```uml
@startuml
interface SchemaCheckerInterface #Lavender {
+ run() : void
}
note right of SchemaCheckerInterface::run
Make sure that the database schema is up-to-date.
since: 3.2.2
return: void
end note
@enduml
```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---b6e9854c_3672_42ec_8843_26c24b4635bd---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
---
```
██╗ ██████╗██████╗
██║██╔════╝██╔══██╗
██║██║ ██████╔╝
██ ██║██║ ██╔══██╗
╚█████╔╝╚██████╗██████╔╝
╚════╝ ╚═════╝╚═════╝
```
> Build with [Joomla Component Builder](https://git.vdm.dev/joomla/Component-Builder)

View File

@ -0,0 +1,30 @@
<?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;
/**
* Schema Checker Interface
*
* @since 3.2.2
*/
interface SchemaCheckerInterface
{
/**
* Make sure that the database schema is up-to-date.
*
* @return void
* @since 3.2.2
*/
public function run(): void;
}

View File

@ -0,0 +1,7 @@
/**
* Make sure that the database schema is up-to-date.
*
* @return void
* @since 3.2.2
*/
public function run(): void;

View File

@ -0,0 +1,19 @@
{
"add_head": "0",
"add_licensing_template": "2",
"extends": "",
"guid": "b6e9854c-3672-42ec-8843-26c24b4635bd",
"implements": null,
"load_selection": null,
"name": "SchemaCheckerInterface",
"power_version": "1.0.0",
"system_name": "VDM.SchemaCheckerInterface",
"type": "interface",
"use_selection": null,
"extendsinterfaces": null,
"namespace": "[[[NamespacePrefix]]]\\Joomla\\Interfaces.SchemaCheckerInterface",
"description": "Schema Checker Interface\r\n\r\n@since 3.2.2",
"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": ""
}

View File

@ -9,6 +9,7 @@
# abstract class BaseRegistry (Details) # abstract class BaseRegistry (Details)
> namespace: **VDM\Joomla\Componentbuilder\Abstraction** > namespace: **VDM\Joomla\Componentbuilder\Abstraction**
> extends: **JoomlaRegistry** > extends: **JoomlaRegistry**
```uml ```uml
@startuml @startuml
abstract BaseRegistry #Orange { abstract BaseRegistry #Orange {
@ -57,6 +58,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---b84e947d_2a13_44f7_ac0f_3902ae55ae0c---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -13,7 +13,7 @@
"type": "abstract class", "type": "abstract class",
"use_selection": null, "use_selection": null,
"extendsinterfaces": null, "extendsinterfaces": null,
"namespace": "[[[NamespacePrefix]]]\\Joomla\\Componentbuilder.Abstraction.BaseRegistry", "namespace": "[[[NamespacePrefix]]]\\Joomla\\[[[ComponentNamespace]]].Abstraction.BaseRegistry",
"description": "Registry\r\n\r\nSo we have full control over this class\r\n\r\n@since 3.2.0", "description": "Registry\r\n\r\nSo we have full control over this class\r\n\r\n@since 3.2.0",
"implements_custom": "\\JsonSerializable, \\ArrayAccess, \\IteratorAggregate, \\Countable", "implements_custom": "\\JsonSerializable, \\ArrayAccess, \\IteratorAggregate, \\Countable",
"extends_custom": "JoomlaRegistry", "extends_custom": "JoomlaRegistry",

View File

@ -9,6 +9,7 @@
# final class Load (Details) # final class Load (Details)
> namespace: **VDM\Joomla\Model** > namespace: **VDM\Joomla\Model**
> extends: **Model** > extends: **Model**
```uml ```uml
@startuml @startuml
class Load << (F,LightGreen) >> #RoyalBlue { class Load << (F,LightGreen) >> #RoyalBlue {
@ -57,6 +58,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---bb29a833_73f7_4283_9327_bc7e41f0723b---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -8,7 +8,7 @@
``` ```
# interface MultiSubformInterface (Details) # interface MultiSubformInterface (Details)
> namespace: **VDM\Joomla\Interfaces\Data** > namespace: **VDM\Joomla\Interfaces\Data**
> extends: ****
```uml ```uml
@startuml @startuml
interface MultiSubformInterface #Lavender { interface MultiSubformInterface #Lavender {
@ -65,6 +65,20 @@ end note
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---bb30f709_53d2_446a_ab3d_300fe6de0bc8---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -9,6 +9,7 @@
# final class Table (Details) # final class Table (Details)
> namespace: **VDM\Joomla\Componentbuilder** > namespace: **VDM\Joomla\Componentbuilder**
> extends: **BaseTable** > extends: **BaseTable**
```uml ```uml
@startuml @startuml
class Table << (F,LightGreen) >> #RoyalBlue { class Table << (F,LightGreen) >> #RoyalBlue {
@ -17,6 +18,20 @@ class Table << (F,LightGreen) >> #RoyalBlue {
@enduml @enduml
``` ```
The Power feature in JCB allows you to write PHP classes and their implementations, making it easy to include them in your Joomla project. JCB handles linking, autoloading, namespacing, and folder structure creation for you.
By using the SPK (Super Power Key) in your custom code (replacing the class name in your code with the SPK), JCB will automatically pull the power from the repository into your project. This makes it available in your JCB instance, allowing you to edit it and include the class in your generated Joomla component.
JCB uses placeholders like [[[`NamespacePrefix`]]] and [[[`ComponentNamespace`]]] in namespacing to prevent collisions and improve reusability across different JCB systems. You can also set the **JCB powers path** globally or per component under the **Dynamic Integration** tab, providing flexibility and easy maintainability.
To add this specific Power to your project in JCB:
> simply use this SPK
```
Super---bfd1d6d5_56c1_4fe9_9fee_1c5910e1f5d8---Power
```
> remember to replace the `---` with `___` to activate this Power in your code
--- ---
``` ```
██╗ ██████╗██████╗ ██╗ ██████╗██████╗

View File

@ -1558,7 +1558,6 @@ final class Table extends BaseTable implements Tableinterface
'tab_name' => 'publishing', 'tab_name' => 'publishing',
'db' => [ 'db' => [
'type' => 'TEXT', 'type' => 'TEXT',
'default' => '',
], ],
], ],
'metadesc' => [ 'metadesc' => [
@ -1570,7 +1569,6 @@ final class Table extends BaseTable implements Tableinterface
'tab_name' => 'publishing', 'tab_name' => 'publishing',
'db' => [ 'db' => [
'type' => 'TEXT', 'type' => 'TEXT',
'default' => '',
], ],
], ],
'metadata' => [ 'metadata' => [
@ -1582,7 +1580,6 @@ final class Table extends BaseTable implements Tableinterface
'tab_name' => 'publishing', 'tab_name' => 'publishing',
'db' => [ 'db' => [
'type' => 'TEXT', 'type' => 'TEXT',
'default' => '',
], ],
], ],
], ],

Some files were not shown because too many files have changed in this diff Show More