diff --git a/src/06f8eada-d59b-441c-b287-0aea1793da5a/README.md b/src/06f8eada-d59b-441c-b287-0aea1793da5a/README.md index 116c368..c6774d4 100644 --- a/src/06f8eada-d59b-441c-b287-0aea1793da5a/README.md +++ b/src/06f8eada-d59b-441c-b287-0aea1793da5a/README.md @@ -15,6 +15,8 @@ class Load << (F,LightGreen) >> #Green { + items(array $select, array $tables, ...) : ?array + row(array $select, array $tables, ...) : ?array + item(array $select, array $tables, ...) : ?object + + max(string $field, array $tables, ...) : ?int + + count(array $tables, array $filter) : ?int + value(array $select, array $tables, ...) : mixed # many(array $select, array $tables, ...) : bool # one(array $select, array $tables, ...) : bool @@ -75,6 +77,25 @@ note left of Load::item ?array $order = null end note +note right of Load::max + Get the max value based on a filtered result from a given table + + since: 3.2.0 + return: ?int + + arguments: + string $field + array $tables + array $filter +end note + +note left of Load::count + Count the number of items based on filter result from a given table + + since: 3.2.0 + return: ?int +end note + note right of Load::value Load one value from a row diff --git a/src/06f8eada-d59b-441c-b287-0aea1793da5a/code.php b/src/06f8eada-d59b-441c-b287-0aea1793da5a/code.php index 5141ca2..5d88778 100644 --- a/src/06f8eada-d59b-441c-b287-0aea1793da5a/code.php +++ b/src/06f8eada-d59b-441c-b287-0aea1793da5a/code.php @@ -144,6 +144,71 @@ final class Load extends Database implements LoadInterface return null; } + /** + * Get the max value based on a filtered result from a given table + * + * @param string $field The field key + * @param string $tables The tables + * @param array $filter The filter keys + * + * @return int|null + * @since 3.2.0 + **/ + public function max($field, array $tables, array $filter): ?int + { + // only do check if we have the table set + if (isset($tables['a'])) + { + // get the query + $query = $this->query(["all" => "MAX(`$field`)"], $tables, $filter); + + // Load the max number + $this->db->setQuery($query); + $this->db->execute(); + + // check if we have values + if ($this->db->getNumRows()) + { + return (int) $this->db->loadResult(); + } + } + + // data does not exist + return null; + } + + /** + * Count the number of items based on filter result from a given table + * + * @param string $tables The table + * @param array $filter The filter keys + * + * @return int|null + * @since 3.2.0 + **/ + public function count(array $tables, array $filter): ?int + { + // only do check if we have the table set + if (isset($tables['a'])) + { + // get the query + $query = $this->query(["all" => 'COUNT(*)'], $tables, $filter); + + // Load the max number + $this->db->setQuery($query); + $this->db->execute(); + + // check if we have values + if ($this->db->getNumRows()) + { + return (int) $this->db->loadResult(); + } + } + + // data does not exist + return null; + } + /** * Load one value from a row * diff --git a/src/06f8eada-d59b-441c-b287-0aea1793da5a/code.power b/src/06f8eada-d59b-441c-b287-0aea1793da5a/code.power index 8a3110b..2444d8f 100644 --- a/src/06f8eada-d59b-441c-b287-0aea1793da5a/code.power +++ b/src/06f8eada-d59b-441c-b287-0aea1793da5a/code.power @@ -118,6 +118,71 @@ return null; } + /** + * Get the max value based on a filtered result from a given table + * + * @param string $field The field key + * @param string $tables The tables + * @param array $filter The filter keys + * + * @return int|null + * @since 3.2.0 + **/ + public function max($field, array $tables, array $filter): ?int + { + // only do check if we have the table set + if (isset($tables['a'])) + { + // get the query + $query = $this->query(["all" => "MAX(`$field`)"], $tables, $filter); + + // Load the max number + $this->db->setQuery($query); + $this->db->execute(); + + // check if we have values + if ($this->db->getNumRows()) + { + return (int) $this->db->loadResult(); + } + } + + // data does not exist + return null; + } + + /** + * Count the number of items based on filter result from a given table + * + * @param string $tables The table + * @param array $filter The filter keys + * + * @return int|null + * @since 3.2.0 + **/ + public function count(array $tables, array $filter): ?int + { + // only do check if we have the table set + if (isset($tables['a'])) + { + // get the query + $query = $this->query(["all" => 'COUNT(*)'], $tables, $filter); + + // Load the max number + $this->db->setQuery($query); + $this->db->execute(); + + // check if we have values + if ($this->db->getNumRows()) + { + return (int) $this->db->loadResult(); + } + } + + // data does not exist + return null; + } + /** * Load one value from a row * diff --git a/src/2ad31f74-f579-499d-b98b-c4f54fd615dd/README.md b/src/2ad31f74-f579-499d-b98b-c4f54fd615dd/README.md index 33acf9c..3d933eb 100644 --- a/src/2ad31f74-f579-499d-b98b-c4f54fd615dd/README.md +++ b/src/2ad31f74-f579-499d-b98b-c4f54fd615dd/README.md @@ -15,6 +15,8 @@ interface LoadInterface #Lavender { + items(array $select, array $tables, ...) : ?array + row(array $select, array $tables, ...) : ?array + item(array $select, array $tables, ...) : ?object + + max(string $field, array $tables, ...) : ?int + + count(array $tables, array $filter) : ?int + value(array $select, array $tables, ...) : mixed } @@ -72,6 +74,25 @@ note right of LoadInterface::item ?array $order = null end note +note right of LoadInterface::max + Get the max value based on a filtered result from a given table + + since: 3.2.0 + return: ?int + + arguments: + string $field + array $tables + array $filter +end note + +note right of LoadInterface::count + Count the number of items based on filter result from a given table + + since: 3.2.0 + return: ?int +end note + note right of LoadInterface::value Load one value from a row diff --git a/src/2ad31f74-f579-499d-b98b-c4f54fd615dd/code.php b/src/2ad31f74-f579-499d-b98b-c4f54fd615dd/code.php index efaa5ba..31017c5 100644 --- a/src/2ad31f74-f579-499d-b98b-c4f54fd615dd/code.php +++ b/src/2ad31f74-f579-499d-b98b-c4f54fd615dd/code.php @@ -75,6 +75,29 @@ interface LoadInterface **/ public function item(array $select, array $tables, ?array $where = null, ?array $order = null): ?object; + /** + * Get the max value based on a filtered result from a given table + * + * @param string $field The field key + * @param string $tables The table + * @param array $filter The filter keys + * + * @return int|null + * @since 3.2.0 + **/ + public function max($field, array $tables, array $filter): ?int; + + /** + * Count the number of items based on filter result from a given table + * + * @param string $tables The table + * @param array $filter The filter keys + * + * @return int|null + * @since 3.2.0 + **/ + public function count(array $tables, array $filter): ?int; + /** * Load one value from a row * @@ -86,7 +109,6 @@ interface LoadInterface * @return mixed * @since 3.2.0 **/ - public function value(array $select, array $tables, ?array $where = null, ?array $order = null); - + public function value(array $select, array $tables, ?array $where = null, ?array $order = null); } diff --git a/src/2ad31f74-f579-499d-b98b-c4f54fd615dd/code.power b/src/2ad31f74-f579-499d-b98b-c4f54fd615dd/code.power index bee23d7..46ae072 100644 --- a/src/2ad31f74-f579-499d-b98b-c4f54fd615dd/code.power +++ b/src/2ad31f74-f579-499d-b98b-c4f54fd615dd/code.power @@ -54,6 +54,29 @@ **/ public function item(array $select, array $tables, ?array $where = null, ?array $order = null): ?object; + /** + * Get the max value based on a filtered result from a given table + * + * @param string $field The field key + * @param string $tables The table + * @param array $filter The filter keys + * + * @return int|null + * @since 3.2.0 + **/ + public function max($field, array $tables, array $filter): ?int; + + /** + * Count the number of items based on filter result from a given table + * + * @param string $tables The table + * @param array $filter The filter keys + * + * @return int|null + * @since 3.2.0 + **/ + public function count(array $tables, array $filter): ?int; + /** * Load one value from a row * @@ -65,4 +88,4 @@ * @return mixed * @since 3.2.0 **/ - public function value(array $select, array $tables, ?array $where = null, ?array $order = null); + public function value(array $select, array $tables, ?array $where = null, ?array $order = null); \ No newline at end of file diff --git a/src/524eb8f6-38d4-47dc-92ad-98b94e099ac0/code.php b/src/524eb8f6-38d4-47dc-92ad-98b94e099ac0/code.php index 5a2152d..bf7611a 100644 --- a/src/524eb8f6-38d4-47dc-92ad-98b94e099ac0/code.php +++ b/src/524eb8f6-38d4-47dc-92ad-98b94e099ac0/code.php @@ -204,7 +204,7 @@ final class Insert extends Database implements InsertInterface $add_version = true; } - if (!isset($columns['version'])) + if (!isset($columns['published'])) { $columns['published'] = ' (o_O) '; $add_published = true; diff --git a/src/524eb8f6-38d4-47dc-92ad-98b94e099ac0/code.power b/src/524eb8f6-38d4-47dc-92ad-98b94e099ac0/code.power index 932de0d..a3f4acf 100644 --- a/src/524eb8f6-38d4-47dc-92ad-98b94e099ac0/code.power +++ b/src/524eb8f6-38d4-47dc-92ad-98b94e099ac0/code.power @@ -177,7 +177,7 @@ $add_version = true; } - if (!isset($columns['version'])) + if (!isset($columns['published'])) { $columns['published'] = ' (o_O) '; $add_published = true; diff --git a/src/584747d1-3a86-453d-b7a3-a2219de8d777/README.md b/src/584747d1-3a86-453d-b7a3-a2219de8d777/README.md index d910e0c..77a2b0a 100644 --- a/src/584747d1-3a86-453d-b7a3-a2219de8d777/README.md +++ b/src/584747d1-3a86-453d-b7a3-a2219de8d777/README.md @@ -15,9 +15,9 @@ abstract Model #Orange { # Table $table + __construct(Table $table) + {abstract} value(mixed $value, string $field, ...) : mixed - + item(object $item, ?string $table = null) : ?object + + item(?object $item, ?string $table = null) : ?object + items(?array $items = null, ?string $table = null) : ?array - + row(array $item, ?string $table = null) : ?array + + row(?array $item, ?string $table = null) : ?array + rows(?array $items = null, ?string $table = null) : ?array + last(?string $table = null) : ?int # getTableFields(string $table, bool $default = false) : ?array diff --git a/src/584747d1-3a86-453d-b7a3-a2219de8d777/code.php b/src/584747d1-3a86-453d-b7a3-a2219de8d777/code.php index 9785bf3..9321eef 100644 --- a/src/584747d1-3a86-453d-b7a3-a2219de8d777/code.php +++ b/src/584747d1-3a86-453d-b7a3-a2219de8d777/code.php @@ -69,14 +69,20 @@ abstract class Model * Model the values of an item * Example: $this->item(Object, 'table_name'); * - * @param object $item The item object + * @param object|null $item The item object * @param string|null $table The table * * @return object|null * @since 3.2.0 */ - public function item(object $item, ?string $table = null): ?object + public function item(?object $item, ?string $table = null): ?object { + // we must have an object + if (empty($item)) + { + return null; + } + // set the table name if (empty($table)) { @@ -172,14 +178,20 @@ abstract class Model * Model the values of an row * Example: $this->item(Array, 'table_name'); * - * @param array $item The item array + * @param array|null $item The item array * @param string|null $table The table * * @return array|null * @since 3.2.0 */ - public function row(array $item, ?string $table = null): ?array + public function row(?array $item, ?string $table = null): ?array { + // we must have an array + if (empty($item)) + { + return null; + } + // set the table name if (empty($table)) { diff --git a/src/584747d1-3a86-453d-b7a3-a2219de8d777/code.power b/src/584747d1-3a86-453d-b7a3-a2219de8d777/code.power index 4cb2eb3..ad41542 100644 --- a/src/584747d1-3a86-453d-b7a3-a2219de8d777/code.power +++ b/src/584747d1-3a86-453d-b7a3-a2219de8d777/code.power @@ -43,14 +43,20 @@ * Model the values of an item * Example: $this->item(Object, 'table_name'); * - * @param object $item The item object + * @param object|null $item The item object * @param string|null $table The table * * @return object|null * @since 3.2.0 */ - public function item(object $item, ?string $table = null): ?object + public function item(?object $item, ?string $table = null): ?object { + // we must have an object + if (empty($item)) + { + return null; + } + // set the table name if (empty($table)) { @@ -146,14 +152,20 @@ * Model the values of an row * Example: $this->item(Array, 'table_name'); * - * @param array $item The item array + * @param array|null $item The item array * @param string|null $table The table * * @return array|null * @since 3.2.0 */ - public function row(array $item, ?string $table = null): ?array + public function row(?array $item, ?string $table = null): ?array { + // we must have an array + if (empty($item)) + { + return null; + } + // set the table name if (empty($table)) { diff --git a/src/a223b31e-ea1d-4cdf-92ae-5f9becffaff0/code.php b/src/a223b31e-ea1d-4cdf-92ae-5f9becffaff0/code.php index 1385775..7bbc782 100644 --- a/src/a223b31e-ea1d-4cdf-92ae-5f9becffaff0/code.php +++ b/src/a223b31e-ea1d-4cdf-92ae-5f9becffaff0/code.php @@ -132,7 +132,7 @@ abstract class FileHelper elseif (!self::$curlError) { // set the notice - Factory::getApplication()->enqueueMessage(Text::_('COM_COMPONENTBUILDER_HTWOCURL_NOT_FOUNDHTWOPPLEASE_SETUP_CURL_ON_YOUR_SYSTEM_OR_BCOMPONENTBUILDERB_WILL_NOT_FUNCTION_CORRECTLYP'), 'Error'); + Factory::getApplication()->enqueueMessage(Text::_('COM_GETBIBLE_HTWOCURL_NOT_FOUNDHTWOPPLEASE_SETUP_CURL_ON_YOUR_SYSTEM_OR_BGETBIBLEB_WILL_NOT_FUNCTION_CORRECTLYP'), 'Error'); // load this notice only once self::$curlError = true; } diff --git a/src/e0f6ddbe-2a35-4537-942c-faff2ebd04f6/README.md b/src/e0f6ddbe-2a35-4537-942c-faff2ebd04f6/README.md index b97b282..a65522c 100644 --- a/src/e0f6ddbe-2a35-4537-942c-faff2ebd04f6/README.md +++ b/src/e0f6ddbe-2a35-4537-942c-faff2ebd04f6/README.md @@ -19,6 +19,9 @@ abstract BaseTable #Orange { + exist(string $table, ?string $field = null) : bool + fields(string $table, bool $default = false) : ?array # addDefault(array $fields) : array + # isDefault(string $field) : bool + # getDefault(string $field) : ?array + # getDefaultKey(string $field, string $key) : ?string } note right of BaseTable::get @@ -40,7 +43,7 @@ Example: $this->get('All'); ?string $key = null end note -note right of BaseTable::title +note left of BaseTable::title Get title field from an area/view/table since: 3.2.0 @@ -54,7 +57,7 @@ note right of BaseTable::titleName return: string end note -note right of BaseTable::tables +note left of BaseTable::tables Get all tables since: 3.2.0 @@ -68,7 +71,7 @@ note right of BaseTable::exist return: bool end note -note right of BaseTable::fields +note left of BaseTable::fields Get all fields of an area/view/table since: 3.2.0 @@ -81,6 +84,27 @@ note right of BaseTable::addDefault since: 3.2.0 return: array end note + +note left of BaseTable::isDefault + Check if the field is a default field + + since: 3.2.0 + return: bool +end note + +note right of BaseTable::getDefault + Get a default field + + since: 3.2.0 + return: ?array +end note + +note left of BaseTable::getDefaultKey + Get a default field property + + since: 3.2.0 + return: ?string +end note @enduml ``` diff --git a/src/e0f6ddbe-2a35-4537-942c-faff2ebd04f6/code.php b/src/e0f6ddbe-2a35-4537-942c-faff2ebd04f6/code.php index f9a2df7..468645b 100644 --- a/src/e0f6ddbe-2a35-4537-942c-faff2ebd04f6/code.php +++ b/src/e0f6ddbe-2a35-4537-942c-faff2ebd04f6/code.php @@ -30,6 +30,97 @@ abstract class BaseTable implements Tableinterface **/ protected array $tables; + /** + * All default fields + * + * @var array + * @since 3.2.0 + **/ + protected array $defaults = [ + 'id' => [ + 'order' => -1, + 'name' => 'id', + 'label' => 'ID', + 'type' => 'text', + 'title' => false, + 'list' => NULL, + 'store' => NULL, + 'tab_name' => NULL + ], + 'ordering' => [ + 'name' => 'ordering', + 'label' => 'Ordering', + 'type' => 'number', + 'title' => false, + 'list' => NULL, + 'store' => NULL, + 'tab_name' => NULL + ], + 'published' => [ + 'name' => 'published', + 'label' => 'Status', + 'type' => 'list', + 'title' => false, + 'list' => NULL, + 'store' => NULL, + 'tab_name' => NULL + ], + 'modified_by' => [ + 'name' => 'modified_by', + 'label' => 'Modified by', + 'type' => 'user', + 'title' => false, + 'list' => NULL, + 'store' => NULL, + 'tab_name' => NULL + ], + 'modified' => [ + 'name' => 'modified', + 'label' => 'Modified', + 'type' => 'calendar', + 'title' => false, + 'list' => NULL, + 'store' => NULL, + 'tab_name' => NULL + ], + 'created_by' => [ + 'name' => 'created_by', + 'label' => 'Created by', + 'type' => 'user', + 'title' => false, + 'list' => NULL, + 'store' => NULL, + 'tab_name' => NULL + ], + 'created' => [ + 'name' => 'created', + 'label' => 'Created', + 'type' => 'calendar', + 'title' => false, + 'list' => NULL, + 'store' => NULL, + 'tab_name' => NULL + ], + 'hits' => [ + 'name' => 'hits', + 'label' => 'Hits', + 'type' => 'number', + 'title' => false, + 'list' => NULL, + 'store' => NULL, + 'tab_name' => NULL + ], + 'version' => [ + 'name' => 'version', + 'label' => 'Version', + 'type' => 'text', + 'title' => false, + 'list' => NULL, + 'store' => NULL, + 'tab_name' => NULL + ] + ]; + /** * Get any value from a item/field/column of an area/view/table * Example: $this->get('table_name', 'field_name', 'value_key'); @@ -57,7 +148,8 @@ abstract class BaseTable implements Tableinterface { return $this->tables[$table][$field][$key]; } - return null; + + return $this->getDefaultKey($field, $key); } // return the item/field/column of an area/view/table elseif (is_string($field)) @@ -66,7 +158,8 @@ abstract class BaseTable implements Tableinterface { return $this->tables[$table][$field]; } - return null; + + return $this->getDefault($field); } // return an area/view/table elseif ($table !== 'All') @@ -167,7 +260,7 @@ abstract class BaseTable implements Tableinterface } } - return false; + return $this->isDefault($field); } /** @@ -201,7 +294,7 @@ abstract class BaseTable implements Tableinterface /** * Add the default fields * - * @param array $fields The table dynamic fields + * @param array $fields The table dynamic fields * * @return array Fields (with defaults added) * @since 3.2.0 @@ -209,17 +302,63 @@ abstract class BaseTable implements Tableinterface protected function addDefault(array $fields): array { // add default fields - array_unshift($fields, 'id'); - $fields[] = 'ordering'; - $fields[] = 'published'; - $fields[] = 'modified_by'; - $fields[] = 'modified'; - $fields[] = 'created_by'; - $fields[] = 'created'; - $fields[] = 'hits'; - $fields[] = 'version'; + foreach ($this->defaults as $default) + { + // used just for loading the fields + $order = $default['order'] ?? 1; + unset($default['order']); + + if ($order < 0) + { + array_unshift($fields, $default['name']); + } + else + { + $fields[] = $default['name']; + } + } return $fields; + } + + /** + * Check if the field is a default field + * + * @param string $field The field to check + * + * @return bool True if a default field + * @since 3.2.0 + */ + protected function isDefault(string $field): bool + { + return isset($this->defaults[$field]); + } + + /** + * Get a default field + * + * @param string $field The field to check + * + * @return array|null True if a default field + * @since 3.2.0 + */ + protected function getDefault(string $field): ?array + { + return $this->defaults[$field] ?? null; + } + + /** + * Get a default field property + * + * @param string $field The field to check + * @param string $key The field key/property to check + * + * @return string|null String value if a default field property exist + * @since 3.2.0 + */ + protected function getDefaultKey(string $field, string $key): ?string + { + return $this->defaults[$field][$key] ?? null; } } diff --git a/src/e0f6ddbe-2a35-4537-942c-faff2ebd04f6/code.power b/src/e0f6ddbe-2a35-4537-942c-faff2ebd04f6/code.power index 64dc19c..7de1cb4 100644 --- a/src/e0f6ddbe-2a35-4537-942c-faff2ebd04f6/code.power +++ b/src/e0f6ddbe-2a35-4537-942c-faff2ebd04f6/code.power @@ -6,6 +6,97 @@ **/ protected array $tables; + /** + * All default fields + * + * @var array + * @since 3.2.0 + **/ + protected array $defaults = [ + 'id' => [ + 'order' => -1, + 'name' => 'id', + 'label' => 'ID', + 'type' => 'text', + 'title' => false, + 'list' => NULL, + 'store' => NULL, + 'tab_name' => NULL + ], + 'ordering' => [ + 'name' => 'ordering', + 'label' => 'Ordering', + 'type' => 'number', + 'title' => false, + 'list' => NULL, + 'store' => NULL, + 'tab_name' => NULL + ], + 'published' => [ + 'name' => 'published', + 'label' => 'Status', + 'type' => 'list', + 'title' => false, + 'list' => NULL, + 'store' => NULL, + 'tab_name' => NULL + ], + 'modified_by' => [ + 'name' => 'modified_by', + 'label' => 'Modified by', + 'type' => 'user', + 'title' => false, + 'list' => NULL, + 'store' => NULL, + 'tab_name' => NULL + ], + 'modified' => [ + 'name' => 'modified', + 'label' => 'Modified', + 'type' => 'calendar', + 'title' => false, + 'list' => NULL, + 'store' => NULL, + 'tab_name' => NULL + ], + 'created_by' => [ + 'name' => 'created_by', + 'label' => 'Created by', + 'type' => 'user', + 'title' => false, + 'list' => NULL, + 'store' => NULL, + 'tab_name' => NULL + ], + 'created' => [ + 'name' => 'created', + 'label' => 'Created', + 'type' => 'calendar', + 'title' => false, + 'list' => NULL, + 'store' => NULL, + 'tab_name' => NULL + ], + 'hits' => [ + 'name' => 'hits', + 'label' => 'Hits', + 'type' => 'number', + 'title' => false, + 'list' => NULL, + 'store' => NULL, + 'tab_name' => NULL + ], + 'version' => [ + 'name' => 'version', + 'label' => 'Version', + 'type' => 'text', + 'title' => false, + 'list' => NULL, + 'store' => NULL, + 'tab_name' => NULL + ] + ]; + /** * Get any value from a item/field/column of an area/view/table * Example: $this->get('table_name', 'field_name', 'value_key'); @@ -33,7 +124,8 @@ { return $this->tables[$table][$field][$key]; } - return null; + + return $this->getDefaultKey($field, $key); } // return the item/field/column of an area/view/table elseif (is_string($field)) @@ -42,7 +134,8 @@ { return $this->tables[$table][$field]; } - return null; + + return $this->getDefault($field); } // return an area/view/table elseif ($table !== 'All') @@ -143,7 +236,7 @@ } } - return false; + return $this->isDefault($field); } /** @@ -177,7 +270,7 @@ /** * Add the default fields * - * @param array $fields The table dynamic fields + * @param array $fields The table dynamic fields * * @return array Fields (with defaults added) * @since 3.2.0 @@ -185,15 +278,61 @@ protected function addDefault(array $fields): array { // add default fields - array_unshift($fields, 'id'); - $fields[] = 'ordering'; - $fields[] = 'published'; - $fields[] = 'modified_by'; - $fields[] = 'modified'; - $fields[] = 'created_by'; - $fields[] = 'created'; - $fields[] = 'hits'; - $fields[] = 'version'; + foreach ($this->defaults as $default) + { + // used just for loading the fields + $order = $default['order'] ?? 1; + unset($default['order']); + + if ($order < 0) + { + array_unshift($fields, $default['name']); + } + else + { + $fields[] = $default['name']; + } + } return $fields; + } + + /** + * Check if the field is a default field + * + * @param string $field The field to check + * + * @return bool True if a default field + * @since 3.2.0 + */ + protected function isDefault(string $field): bool + { + return isset($this->defaults[$field]); + } + + /** + * Get a default field + * + * @param string $field The field to check + * + * @return array|null True if a default field + * @since 3.2.0 + */ + protected function getDefault(string $field): ?array + { + return $this->defaults[$field] ?? null; + } + + /** + * Get a default field property + * + * @param string $field The field to check + * @param string $key The field key/property to check + * + * @return string|null String value if a default field property exist + * @since 3.2.0 + */ + protected function getDefaultKey(string $field, string $key): ?string + { + return $this->defaults[$field][$key] ?? null; } \ No newline at end of file