diff --git a/src/67f91b8b-7b48-4dbb-bbd5-7945c174622a/README.md b/src/67f91b8b-7b48-4dbb-bbd5-7945c174622a/README.md index 0974b46..2afc68a 100644 --- a/src/67f91b8b-7b48-4dbb-bbd5-7945c174622a/README.md +++ b/src/67f91b8b-7b48-4dbb-bbd5-7945c174622a/README.md @@ -16,10 +16,11 @@ class Tag << (F,LightGreen) >> #Green { # Update $update # Linker $linker + __construct(Load $load, Insert $insert, ...) - + set(string $name) : ?array - + delete(string $tag) : bool + + create(string $name, ?string $description) : ?array + + update(string $tag, string $name, ...) : ?array + + delete(string $tag) : ?array - get(string $linker, string $name) : ?array - - create(string $linker, string $name) : bool + - createTag(string $linker, string $name, ...) : bool } note right of Tag::__construct @@ -34,18 +35,30 @@ note right of Tag::__construct Linker $linker end note -note right of Tag::set - Set a tag +note right of Tag::create + Create a tag since: 2.0.1 return: ?array end note +note right of Tag::update + Update a tag + + since: 2.0.1 + return: ?array + + arguments: + string $tag + string $name + ?string $description +end note + note right of Tag::delete Delete a tag since: 2.0.1 - return: bool + return: ?array end note note right of Tag::get @@ -55,11 +68,16 @@ note right of Tag::get return: ?array end note -note right of Tag::create +note right of Tag::createTag Create a Tag since: 2.0.1 return: bool + + arguments: + string $linker + string $name + ?string $description end note @enduml diff --git a/src/67f91b8b-7b48-4dbb-bbd5-7945c174622a/code.php b/src/67f91b8b-7b48-4dbb-bbd5-7945c174622a/code.php index 61e343a..f63c48a 100644 --- a/src/67f91b8b-7b48-4dbb-bbd5-7945c174622a/code.php +++ b/src/67f91b8b-7b48-4dbb-bbd5-7945c174622a/code.php @@ -82,14 +82,15 @@ final class Tag } /** - * Set a tag + * Create a tag * - * @param string $name The tag name being created + * @param string $name The tag name being created + * @param string|null $description The tag description being created * * @return array|null Array of the tag values on success * @since 2.0.1 **/ - public function set(string $name): ?array + public function create(string $name, ?string $description): ?array { // make sure the linker has access if (($linker = $this->linker->get()) === null) @@ -101,6 +102,7 @@ final class Tag } // get tag if it exist + $name = trim($name); if (($tag = $this->get($linker, $name)) !== null) { // publish if not published @@ -111,15 +113,23 @@ final class Tag ]; } + // update the description if it does not match + $description = $description ?? ''; + $description = trim($description); + if ($tag->description !== $description && $this->update->value($description, 'description', $tag->id, 'id', 'tag')) + { + $tag->description = $description; + } + $tag->published = 1; - $tag->success = Text::_('COM_GETBIBLE_THE_TAG_WAS_SUCCESSFULLY_SET'); + $tag->success = Text::_('COM_GETBIBLE_THE_TAG_WAS_SUCCESSFULLY_REACTIVATED'); return (array) $tag; } // create a new tag - elseif ($this->create($linker, $name) + elseif (strlen($name) >= 2 && $this->createTag($linker, $name, $description) && ($tag = $this->get($linker, $name)) !== null) { - $tag->success = Text::_('COM_GETBIBLE_THE_TAG_WAS_SUCCESSFULLY_SET'); + $tag->success = Text::_('COM_GETBIBLE_THE_TAG_WAS_SUCCESSFULLY_CREATED'); return (array) $tag; } @@ -127,35 +137,105 @@ final class Tag } /** - * Delete a tag + * Update a tag * - * @param string $tag The tagged verse GUID value + * @param string $tag The tag GUID value + * @param string $name The tag name being created + * @param string|null $description The tag description being created * - * @return bool True on success + * @return array|null Array of the tag values on success * @since 2.0.1 **/ - public function delete(string $tag): bool + public function update(string $tag, string $name, ?string $description): ?array { // make sure the linker has access if (($linker = $this->linker->get()) === null) { - return false; + return [ + 'error' => Text::_("COM_GETBIBLE_WITHOUT_SELECTING_THE_CORRECT_FAVOURITE_VERSEBR_YOU_CANT_PERFORM_THE_INITIAL_ACTION"), + 'access_required' => true + ]; + } + + // get tag if it exist + $name = trim($name); + $tag = trim($tag); + if (($_tag = $this->load->item(['linker' => $linker, 'guid' => $tag], 'tag')) !== null) + { + // publish if not published + if ($_tag->published != 1 && !$this->update->value(1, 'published', $_tag->id, 'id', 'tag')) + { + return [ + 'error' => Text::_('COM_GETBIBLE_TAG_FOUND_BUT_COULD_NOT_BE_REACTIVATED') + ]; + } + + // update the description if it does not match + $description = $description ?? ''; + $description = trim($description); + if ($_tag->description !== $description && $this->update->value($description, 'description', $_tag->id, 'id', 'tag')) + { + $_tag->description = $description; + } + + // update the name if it does not match + if (strlen($name) >= 2 && $_tag->name !== $name && $this->update->value($name, 'name', $_tag->id, 'id', 'tag')) + { + $_tag->name = $name; + } + + $_tag->published = 1; + $_tag->success = Text::_('COM_GETBIBLE_THE_TAG_WAS_SUCCESSFULLY_UPDATED'); + return (array) $_tag; + } + //elseif (($_tag = $this->load->item(['guid' => $tag], 'tag')) !== null) + //{ + // we may need to add this + //} + + return [ + 'error' => Text::_("COM_GETBIBLE_THIS_TAG_DOESNT_BELONG_TO_YOU_THUS_YOU_CANNOT_EDIT_IT") + ]; + } + + /** + * Delete a tag + * + * @param string $tag The tagged verse GUID value + * + * @return array|null Array of the message on success + * @since 2.0.1 + **/ + public function delete(string $tag): ?array + { + // make sure the linker has access + if (($linker = $this->linker->get()) === null) + { + return [ + 'error' => Text::_("COM_GETBIBLE_WITHOUT_SELECTING_THE_CORRECT_FAVOURITE_VERSEBR_YOU_CANT_PERFORM_THE_INITIAL_ACTION"), + 'access_required' => true + ]; } // make sure the linker has access to delete this tag - if (($id = $this->load->value(['guid' => $tag, 'linker' => $linker], 'id', 'tag')) !== null && $id > 0) + if (($id = $this->load->value(['guid' => $tag, 'linker' => $linker], 'id', 'tag')) !== null && $id > 0 + && $this->update->value(-2, 'published', $id, 'id', 'tag')) { - return $this->update->value(-2, 'published', $id, 'id', 'tag'); + return [ + 'success' => Text::_('COM_GETBIBLE_TAG_SUCCESSFULLY_DELETED') + ]; } - return false; + return [ + 'error' => Text::_("COM_GETBIBLE_THIS_TAG_DOESNT_BELONG_TO_YOU_THUS_YOU_CANNOT_DELETE_IT") + ]; } /** * Get a tag * - * @param string $linker The linker GUID value - * @param string $name The tag name + * @param string $linker The linker GUID value + * @param string $name The tag name * * @return array|null Array of the tagged verse values on success * @since 2.0.1 @@ -180,15 +260,17 @@ final class Tag /** * Create a Tag * - * @param string $linker The linker GUID value - * @param string $name The tag name + * @param string $linker The linker GUID value + * @param string $name The tag name + * @param string|null $description The tag description being created * * @return bool True on success * @since 2.0.1 **/ - private function create( + private function createTag( string $linker, - string $name + string $name, + ?string $description ): bool { $guid = (string) GuidHelper::get(); @@ -202,6 +284,7 @@ final class Tag 'access' => 0, 'linker' => $linker, 'name' => $name, + 'description' => $description ?? '', 'guid' => $guid ], 'tag'); } diff --git a/src/67f91b8b-7b48-4dbb-bbd5-7945c174622a/code.power b/src/67f91b8b-7b48-4dbb-bbd5-7945c174622a/code.power index a1fac1c..4cd933a 100644 --- a/src/67f91b8b-7b48-4dbb-bbd5-7945c174622a/code.power +++ b/src/67f91b8b-7b48-4dbb-bbd5-7945c174622a/code.power @@ -53,14 +53,15 @@ } /** - * Set a tag + * Create a tag * - * @param string $name The tag name being created + * @param string $name The tag name being created + * @param string|null $description The tag description being created * * @return array|null Array of the tag values on success * @since 2.0.1 **/ - public function set(string $name): ?array + public function create(string $name, ?string $description): ?array { // make sure the linker has access if (($linker = $this->linker->get()) === null) @@ -72,6 +73,7 @@ } // get tag if it exist + $name = trim($name); if (($tag = $this->get($linker, $name)) !== null) { // publish if not published @@ -82,15 +84,23 @@ ]; } + // update the description if it does not match + $description = $description ?? ''; + $description = trim($description); + if ($tag->description !== $description && $this->update->value($description, 'description', $tag->id, 'id', 'tag')) + { + $tag->description = $description; + } + $tag->published = 1; - $tag->success = Text::_('The tag was successfully set.'); + $tag->success = Text::_('The tag was successfully reactivated.'); return (array) $tag; } // create a new tag - elseif ($this->create($linker, $name) + elseif (strlen($name) >= 2 && $this->createTag($linker, $name, $description) && ($tag = $this->get($linker, $name)) !== null) { - $tag->success = Text::_('The tag was successfully set.'); + $tag->success = Text::_('The tag was successfully created.'); return (array) $tag; } @@ -98,35 +108,105 @@ } /** - * Delete a tag + * Update a tag * - * @param string $tag The tagged verse GUID value + * @param string $tag The tag GUID value + * @param string $name The tag name being created + * @param string|null $description The tag description being created * - * @return bool True on success + * @return array|null Array of the tag values on success * @since 2.0.1 **/ - public function delete(string $tag): bool + public function update(string $tag, string $name, ?string $description): ?array { // make sure the linker has access if (($linker = $this->linker->get()) === null) { - return false; + return [ + 'error' => Text::_("Without selecting the correct favourite verse,
you can't perform the initial action."), + 'access_required' => true + ]; + } + + // get tag if it exist + $name = trim($name); + $tag = trim($tag); + if (($_tag = $this->load->item(['linker' => $linker, 'guid' => $tag], 'tag')) !== null) + { + // publish if not published + if ($_tag->published != 1 && !$this->update->value(1, 'published', $_tag->id, 'id', 'tag')) + { + return [ + 'error' => Text::_('Tag found, but could not be reactivated.') + ]; + } + + // update the description if it does not match + $description = $description ?? ''; + $description = trim($description); + if ($_tag->description !== $description && $this->update->value($description, 'description', $_tag->id, 'id', 'tag')) + { + $_tag->description = $description; + } + + // update the name if it does not match + if (strlen($name) >= 2 && $_tag->name !== $name && $this->update->value($name, 'name', $_tag->id, 'id', 'tag')) + { + $_tag->name = $name; + } + + $_tag->published = 1; + $_tag->success = Text::_('The tag was successfully updated.'); + return (array) $_tag; + } + //elseif (($_tag = $this->load->item(['guid' => $tag], 'tag')) !== null) + //{ + // we may need to add this + //} + + return [ + 'error' => Text::_("This tag doesn't belong to you, thus you cannot edit it.") + ]; + } + + /** + * Delete a tag + * + * @param string $tag The tagged verse GUID value + * + * @return array|null Array of the message on success + * @since 2.0.1 + **/ + public function delete(string $tag): ?array + { + // make sure the linker has access + if (($linker = $this->linker->get()) === null) + { + return [ + 'error' => Text::_("Without selecting the correct favourite verse,
you can't perform the initial action."), + 'access_required' => true + ]; } // make sure the linker has access to delete this tag - if (($id = $this->load->value(['guid' => $tag, 'linker' => $linker], 'id', 'tag')) !== null && $id > 0) + if (($id = $this->load->value(['guid' => $tag, 'linker' => $linker], 'id', 'tag')) !== null && $id > 0 + && $this->update->value(-2, 'published', $id, 'id', 'tag')) { - return $this->update->value(-2, 'published', $id, 'id', 'tag'); + return [ + 'success' => Text::_('Tag successfully deleted.') + ]; } - return false; + return [ + 'error' => Text::_("This tag doesn't belong to you, thus you cannot delete it.") + ]; } /** * Get a tag * - * @param string $linker The linker GUID value - * @param string $name The tag name + * @param string $linker The linker GUID value + * @param string $name The tag name * * @return array|null Array of the tagged verse values on success * @since 2.0.1 @@ -151,15 +231,17 @@ /** * Create a Tag * - * @param string $linker The linker GUID value - * @param string $name The tag name + * @param string $linker The linker GUID value + * @param string $name The tag name + * @param string|null $description The tag description being created * * @return bool True on success * @since 2.0.1 **/ - private function create( + private function createTag( string $linker, - string $name + string $name, + ?string $description ): bool { $guid = (string) GuidHelper::get(); @@ -173,6 +255,7 @@ 'access' => 0, 'linker' => $linker, 'name' => $name, + 'description' => $description ?? '', 'guid' => $guid ], 'tag'); } \ No newline at end of file