forked from joomla/super-powers
Update 2024-09-15 17:57:10
This commit is contained in:
parent
599c54d774
commit
c67a23df10
@ -36,6 +36,7 @@ note right of SubformInterface::get
|
|||||||
string $linkKey
|
string $linkKey
|
||||||
string $field
|
string $field
|
||||||
array $get
|
array $get
|
||||||
|
bool $multi = true
|
||||||
end note
|
end note
|
||||||
|
|
||||||
note right of SubformInterface::set
|
note right of SubformInterface::set
|
||||||
|
@ -36,11 +36,12 @@ interface SubformInterface
|
|||||||
* @param string $linkKey The link key on which the items where linked in the child table.
|
* @param string $linkKey The link key on which the items where linked in the child table.
|
||||||
* @param string $field The parent field name of the subform in the parent view.
|
* @param string $field The parent field name of the subform in the parent view.
|
||||||
* @param array $get The array SET of the keys of each row in the subform.
|
* @param array $get The array SET of the keys of each row in the subform.
|
||||||
|
* @param bool $multi The switch to return a multiple set.
|
||||||
*
|
*
|
||||||
* @return array|null The subform
|
* @return array|null The subform
|
||||||
* @since 3.2.2
|
* @since 3.2.2
|
||||||
*/
|
*/
|
||||||
public function get(string $linkValue, string $linkKey, string $field, array $get): ?array;
|
public function get(string $linkValue, string $linkKey, string $field, array $get, bool $multi = true): ?array;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a subform items
|
* Set a subform items
|
||||||
|
@ -15,11 +15,12 @@
|
|||||||
* @param string $linkKey The link key on which the items where linked in the child table.
|
* @param string $linkKey The link key on which the items where linked in the child table.
|
||||||
* @param string $field The parent field name of the subform in the parent view.
|
* @param string $field The parent field name of the subform in the parent view.
|
||||||
* @param array $get The array SET of the keys of each row in the subform.
|
* @param array $get The array SET of the keys of each row in the subform.
|
||||||
|
* @param bool $multi The switch to return a multiple set.
|
||||||
*
|
*
|
||||||
* @return array|null The subform
|
* @return array|null The subform
|
||||||
* @since 3.2.2
|
* @since 3.2.2
|
||||||
*/
|
*/
|
||||||
public function get(string $linkValue, string $linkKey, string $field, array $get): ?array;
|
public function get(string $linkValue, string $linkKey, string $field, array $get, bool $multi = true): ?array;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a subform items
|
* Set a subform items
|
||||||
|
@ -432,7 +432,20 @@ abstract class UserHelper
|
|||||||
*/
|
*/
|
||||||
private static function handlePostRegistration(int $userId, int $autologin, array $credentials): int
|
private static function handlePostRegistration(int $userId, int $autologin, array $credentials): int
|
||||||
{
|
{
|
||||||
if ($autologin && isset($credentials['password']))
|
// make sure user is it the correct groups
|
||||||
|
if ($userId > 0 && !empty($credentials['groups']))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
JoomlaUserHelper::setUserGroups($userId, $credentials['groups']);
|
||||||
|
}
|
||||||
|
catch (\Exception $e)
|
||||||
|
{
|
||||||
|
// we might need say something
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($autologin && !empty($credentials['password']))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -398,7 +398,20 @@
|
|||||||
*/
|
*/
|
||||||
private static function handlePostRegistration(int $userId, int $autologin, array $credentials): int
|
private static function handlePostRegistration(int $userId, int $autologin, array $credentials): int
|
||||||
{
|
{
|
||||||
if ($autologin && isset($credentials['password']))
|
// make sure user is it the correct groups
|
||||||
|
if ($userId > 0 && !empty($credentials['groups']))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
JoomlaUserHelper::setUserGroups($userId, $credentials['groups']);
|
||||||
|
}
|
||||||
|
catch (\Exception $e)
|
||||||
|
{
|
||||||
|
// we might need say something
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($autologin && !empty($credentials['password']))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -22,6 +22,7 @@ class Subform << (F,LightGreen) >> #RoyalBlue {
|
|||||||
- purge(array $items, string $indexKey, ...) : void
|
- purge(array $items, string $indexKey, ...) : void
|
||||||
- converter(array $items, array $keySet, ...) : array
|
- converter(array $items, array $keySet, ...) : array
|
||||||
- process(mixed $items, string $indexKey, ...) : array
|
- process(mixed $items, string $indexKey, ...) : array
|
||||||
|
- isMultipleSets(array $array) : bool
|
||||||
}
|
}
|
||||||
|
|
||||||
note right of Subform::__construct
|
note right of Subform::__construct
|
||||||
@ -48,6 +49,7 @@ note right of Subform::get
|
|||||||
string $linkKey
|
string $linkKey
|
||||||
string $field
|
string $field
|
||||||
array $get
|
array $get
|
||||||
|
bool $multi = true
|
||||||
end note
|
end note
|
||||||
|
|
||||||
note left of Subform::set
|
note left of Subform::set
|
||||||
@ -94,6 +96,7 @@ and sets them by association with a specified key and an incrementing integer.
|
|||||||
array $items
|
array $items
|
||||||
array $keySet
|
array $keySet
|
||||||
string $field
|
string $field
|
||||||
|
bool $multi
|
||||||
end note
|
end note
|
||||||
|
|
||||||
note left of Subform::process
|
note left of Subform::process
|
||||||
@ -109,6 +112,13 @@ note left of Subform::process
|
|||||||
string $linkValue
|
string $linkValue
|
||||||
end note
|
end note
|
||||||
|
|
||||||
|
note right of Subform::isMultipleSets
|
||||||
|
Function to determine if the array consists of multiple data sets (arrays of arrays).
|
||||||
|
|
||||||
|
since: 5.0.2
|
||||||
|
return: bool
|
||||||
|
end note
|
||||||
|
|
||||||
@enduml
|
@enduml
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -86,16 +86,17 @@ final class Subform implements GuidInterface, SubformInterface
|
|||||||
* @param string $linkValue The value of the link key in child table.
|
* @param string $linkValue The value of the link key in child table.
|
||||||
* @param string $linkKey The link key on which the items where linked in the child table.
|
* @param string $linkKey The link key on which the items where linked in the child table.
|
||||||
* @param string $field The parent field name of the subform in the parent view.
|
* @param string $field The parent field name of the subform in the parent view.
|
||||||
* @param array $get The array get:set of the keys of each row in the subform.
|
* @param array $get The array SET of the keys of each row in the subform.
|
||||||
|
* @param bool $multi The switch to return a multiple set.
|
||||||
*
|
*
|
||||||
* @return array|null The subform
|
* @return array|null The subform
|
||||||
* @since 3.2.2
|
* @since 3.2.2
|
||||||
*/
|
*/
|
||||||
public function get(string $linkValue, string $linkKey, string $field, array $get): ?array
|
public function get(string $linkValue, string $linkKey, string $field, array $get, bool $multi = true): ?array
|
||||||
{
|
{
|
||||||
if (($items = $this->items->table($this->getTable())->get([$linkValue], $linkKey)) !== null)
|
if (($items = $this->items->table($this->getTable())->get([$linkValue], $linkKey)) !== null)
|
||||||
{
|
{
|
||||||
return $this->converter($items, $get, $field);
|
return $this->converter($items, $get, $field, $multi);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -188,11 +189,12 @@ final class Subform implements GuidInterface, SubformInterface
|
|||||||
* @param array $items Array of objects or arrays to be filtered.
|
* @param array $items Array of objects or arrays to be filtered.
|
||||||
* @param array $keySet Array of keys to retain in each item.
|
* @param array $keySet Array of keys to retain in each item.
|
||||||
* @param string $field The field prefix for the resulting associative array.
|
* @param string $field The field prefix for the resulting associative array.
|
||||||
|
* @param bool $multi The switch to return a multiple set.
|
||||||
*
|
*
|
||||||
* @return array Array of filtered arrays set by association.
|
* @return array Array of filtered arrays set by association.
|
||||||
* @since 3.2.2
|
* @since 3.2.2
|
||||||
*/
|
*/
|
||||||
private function converter(array $items, array $keySet, string $field): array
|
private function converter(array $items, array $keySet, string $field, bool $multi): array
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Filters keys for a single item and converts it to an array.
|
* Filters keys for a single item and converts it to an array.
|
||||||
@ -218,6 +220,10 @@ final class Subform implements GuidInterface, SubformInterface
|
|||||||
$result = [];
|
$result = [];
|
||||||
foreach ($items as $index => $item)
|
foreach ($items as $index => $item)
|
||||||
{
|
{
|
||||||
|
if (!$multi)
|
||||||
|
{
|
||||||
|
return $filterKeys($item, $keySet);
|
||||||
|
}
|
||||||
$filteredArray = $filterKeys($item, $keySet);
|
$filteredArray = $filterKeys($item, $keySet);
|
||||||
$result[$field . $index] = $filteredArray;
|
$result[$field . $index] = $filteredArray;
|
||||||
}
|
}
|
||||||
@ -239,6 +245,11 @@ final class Subform implements GuidInterface, SubformInterface
|
|||||||
private function process($items, string $indexKey, string $linkKey, string $linkValue): array
|
private function process($items, string $indexKey, string $linkKey, string $linkValue): array
|
||||||
{
|
{
|
||||||
$items = is_array($items) ? $items : [];
|
$items = is_array($items) ? $items : [];
|
||||||
|
if ($items !== [] && !$this->isMultipleSets($items))
|
||||||
|
{
|
||||||
|
$items = [$items];
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($items as &$item)
|
foreach ($items as &$item)
|
||||||
{
|
{
|
||||||
$value = $item[$indexKey] ?? '';
|
$value = $item[$indexKey] ?? '';
|
||||||
@ -266,5 +277,28 @@ final class Subform implements GuidInterface, SubformInterface
|
|||||||
|
|
||||||
return array_values($items);
|
return array_values($items);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function to determine if the array consists of multiple data sets (arrays of arrays).
|
||||||
|
*
|
||||||
|
* @param array $array The input array to be checked.
|
||||||
|
*
|
||||||
|
* @return bool True if the array contains only arrays (multiple data sets), false otherwise.
|
||||||
|
* @since 5.0.2
|
||||||
|
*/
|
||||||
|
private function isMultipleSets(array $array): bool
|
||||||
|
{
|
||||||
|
foreach ($array as $element)
|
||||||
|
{
|
||||||
|
// As soon as we find a non-array element, return false
|
||||||
|
if (!is_array($element))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If all elements are arrays, return true
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,16 +59,17 @@
|
|||||||
* @param string $linkValue The value of the link key in child table.
|
* @param string $linkValue The value of the link key in child table.
|
||||||
* @param string $linkKey The link key on which the items where linked in the child table.
|
* @param string $linkKey The link key on which the items where linked in the child table.
|
||||||
* @param string $field The parent field name of the subform in the parent view.
|
* @param string $field The parent field name of the subform in the parent view.
|
||||||
* @param array $get The array get:set of the keys of each row in the subform.
|
* @param array $get The array SET of the keys of each row in the subform.
|
||||||
|
* @param bool $multi The switch to return a multiple set.
|
||||||
*
|
*
|
||||||
* @return array|null The subform
|
* @return array|null The subform
|
||||||
* @since 3.2.2
|
* @since 3.2.2
|
||||||
*/
|
*/
|
||||||
public function get(string $linkValue, string $linkKey, string $field, array $get): ?array
|
public function get(string $linkValue, string $linkKey, string $field, array $get, bool $multi = true): ?array
|
||||||
{
|
{
|
||||||
if (($items = $this->items->table($this->getTable())->get([$linkValue], $linkKey)) !== null)
|
if (($items = $this->items->table($this->getTable())->get([$linkValue], $linkKey)) !== null)
|
||||||
{
|
{
|
||||||
return $this->converter($items, $get, $field);
|
return $this->converter($items, $get, $field, $multi);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -161,11 +162,12 @@
|
|||||||
* @param array $items Array of objects or arrays to be filtered.
|
* @param array $items Array of objects or arrays to be filtered.
|
||||||
* @param array $keySet Array of keys to retain in each item.
|
* @param array $keySet Array of keys to retain in each item.
|
||||||
* @param string $field The field prefix for the resulting associative array.
|
* @param string $field The field prefix for the resulting associative array.
|
||||||
|
* @param bool $multi The switch to return a multiple set.
|
||||||
*
|
*
|
||||||
* @return array Array of filtered arrays set by association.
|
* @return array Array of filtered arrays set by association.
|
||||||
* @since 3.2.2
|
* @since 3.2.2
|
||||||
*/
|
*/
|
||||||
private function converter(array $items, array $keySet, string $field): array
|
private function converter(array $items, array $keySet, string $field, bool $multi): array
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Filters keys for a single item and converts it to an array.
|
* Filters keys for a single item and converts it to an array.
|
||||||
@ -191,6 +193,10 @@
|
|||||||
$result = [];
|
$result = [];
|
||||||
foreach ($items as $index => $item)
|
foreach ($items as $index => $item)
|
||||||
{
|
{
|
||||||
|
if (!$multi)
|
||||||
|
{
|
||||||
|
return $filterKeys($item, $keySet);
|
||||||
|
}
|
||||||
$filteredArray = $filterKeys($item, $keySet);
|
$filteredArray = $filterKeys($item, $keySet);
|
||||||
$result[$field . $index] = $filteredArray;
|
$result[$field . $index] = $filteredArray;
|
||||||
}
|
}
|
||||||
@ -212,6 +218,11 @@
|
|||||||
private function process($items, string $indexKey, string $linkKey, string $linkValue): array
|
private function process($items, string $indexKey, string $linkKey, string $linkValue): array
|
||||||
{
|
{
|
||||||
$items = is_array($items) ? $items : [];
|
$items = is_array($items) ? $items : [];
|
||||||
|
if ($items !== [] && !$this->isMultipleSets($items))
|
||||||
|
{
|
||||||
|
$items = [$items];
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($items as &$item)
|
foreach ($items as &$item)
|
||||||
{
|
{
|
||||||
$value = $item[$indexKey] ?? '';
|
$value = $item[$indexKey] ?? '';
|
||||||
@ -239,3 +250,26 @@
|
|||||||
|
|
||||||
return array_values($items);
|
return array_values($items);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function to determine if the array consists of multiple data sets (arrays of arrays).
|
||||||
|
*
|
||||||
|
* @param array $array The input array to be checked.
|
||||||
|
*
|
||||||
|
* @return bool True if the array contains only arrays (multiple data sets), false otherwise.
|
||||||
|
* @since 5.0.2
|
||||||
|
*/
|
||||||
|
private function isMultipleSets(array $array): bool
|
||||||
|
{
|
||||||
|
foreach ($array as $element)
|
||||||
|
{
|
||||||
|
// As soon as we find a non-array element, return false
|
||||||
|
if (!is_array($element))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If all elements are arrays, return true
|
||||||
|
return true;
|
||||||
|
}
|
@ -18,6 +18,7 @@ class Display << (F,LightGreen) >> #RoyalBlue {
|
|||||||
# array $fileTypeTasks
|
# array $fileTypeTasks
|
||||||
+ __construct(Item $item, Items $items)
|
+ __construct(Item $item, Items $items)
|
||||||
+ get(string $entity, string $target) : ?array
|
+ get(string $entity, string $target) : ?array
|
||||||
|
# setFileTypeName(object $file) : void
|
||||||
# setFileTypeTask(object $file) : void
|
# setFileTypeTask(object $file) : void
|
||||||
# setFileDownloadLink(object $file) : void
|
# setFileDownloadLink(object $file) : void
|
||||||
# getFileTypeTask(object $data) : string
|
# getFileTypeTask(object $data) : string
|
||||||
@ -37,8 +38,15 @@ note right of Display::get
|
|||||||
return: ?array
|
return: ?array
|
||||||
end note
|
end note
|
||||||
|
|
||||||
|
note right of Display::setFileTypeName
|
||||||
|
Add the file type name to this file
|
||||||
|
|
||||||
|
since: 5.0.2
|
||||||
|
return: void
|
||||||
|
end note
|
||||||
|
|
||||||
note right of Display::setFileTypeTask
|
note right of Display::setFileTypeTask
|
||||||
Add the file type details to this file
|
Add the file type task to this file
|
||||||
|
|
||||||
since: 5.0.2
|
since: 5.0.2
|
||||||
return: void
|
return: void
|
||||||
|
@ -91,9 +91,8 @@ final class Display
|
|||||||
unset($files[$n]);
|
unset($files[$n]);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// set the file type task
|
|
||||||
$this->setFileTypeTask($file);
|
$this->setFileTypeTask($file);
|
||||||
// set the file download link
|
$this->setFileTypeName($file);
|
||||||
$this->setFileDownloadLink($file);
|
$this->setFileDownloadLink($file);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -105,7 +104,27 @@ final class Display
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add the file type details to this file
|
* Add the file type name to this file
|
||||||
|
*
|
||||||
|
* @param object $file The file being updated
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
* @since 5.0.2
|
||||||
|
*/
|
||||||
|
protected function setFileTypeName(object &$file): void
|
||||||
|
{
|
||||||
|
if (($fileType = $this->getFileType($file->file_type ?? null)) !== null)
|
||||||
|
{
|
||||||
|
$file->type_name = $fileType->name;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$file->type_name = 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add the file type task to this file
|
||||||
*
|
*
|
||||||
* @param object $file The file being updated
|
* @param object $file The file being updated
|
||||||
*
|
*
|
||||||
|
@ -64,9 +64,8 @@
|
|||||||
unset($files[$n]);
|
unset($files[$n]);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// set the file type task
|
|
||||||
$this->setFileTypeTask($file);
|
$this->setFileTypeTask($file);
|
||||||
// set the file download link
|
$this->setFileTypeName($file);
|
||||||
$this->setFileDownloadLink($file);
|
$this->setFileDownloadLink($file);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -78,7 +77,27 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add the file type details to this file
|
* Add the file type name to this file
|
||||||
|
*
|
||||||
|
* @param object $file The file being updated
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
* @since 5.0.2
|
||||||
|
*/
|
||||||
|
protected function setFileTypeName(object &$file): void
|
||||||
|
{
|
||||||
|
if (($fileType = $this->getFileType($file->file_type ?? null)) !== null)
|
||||||
|
{
|
||||||
|
$file->type_name = $fileType->name;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$file->type_name = 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add the file type task to this file
|
||||||
*
|
*
|
||||||
* @param object $file The file being updated
|
* @param object $file The file being updated
|
||||||
*
|
*
|
||||||
|
@ -10,11 +10,11 @@
|
|||||||
"system_name": "Joomla.File.Display",
|
"system_name": "Joomla.File.Display",
|
||||||
"type": "final class",
|
"type": "final class",
|
||||||
"use_selection": {
|
"use_selection": {
|
||||||
"use_selection1": {
|
"use_selection0": {
|
||||||
"use": "05744dd3-4030-4cf8-8dda-a93ab809b473",
|
"use": "05744dd3-4030-4cf8-8dda-a93ab809b473",
|
||||||
"as": "Item"
|
"as": "Item"
|
||||||
},
|
},
|
||||||
"use_selection0": {
|
"use_selection1": {
|
||||||
"use": "7212e4db-371f-4cfd-8122-32e9bb100d83",
|
"use": "7212e4db-371f-4cfd-8122-32e9bb100d83",
|
||||||
"as": "Items"
|
"as": "Items"
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user