update 2023-07-13 12:31:27
This commit is contained in:
parent
b7cba4643e
commit
1f6cb785ee
@ -11,11 +11,13 @@
|
||||
```uml
|
||||
@startuml
|
||||
class Response << (F,LightGreen) >> #Green {
|
||||
# Translation $translation
|
||||
# Chapter $chapter
|
||||
# Prompt $prompt
|
||||
# Load $load
|
||||
# Config $config
|
||||
# array $responses
|
||||
+ __construct(Prompt $prompt, Load $load, ...)
|
||||
+ __construct(Translation $translation, Chapter $chapter, ...)
|
||||
+ get(?string $guid = null) : ?object
|
||||
}
|
||||
|
||||
@ -25,6 +27,8 @@ note right of Response::__construct
|
||||
since: 2.0.1
|
||||
|
||||
arguments:
|
||||
Translation $translation
|
||||
Chapter $chapter
|
||||
Prompt $prompt
|
||||
Load $load
|
||||
Config $config
|
||||
|
@ -12,6 +12,9 @@
|
||||
namespace VDM\Joomla\GetBible\Data;
|
||||
|
||||
|
||||
use VDM\Joomla\GetBible\Data\Translation;
|
||||
use VDM\Joomla\GetBible\Data\Chapter;
|
||||
use VDM\Joomla\GetBible\Data\Prompt;
|
||||
use VDM\Joomla\GetBible\Database\Load;
|
||||
use VDM\Joomla\GetBible\Openai\Config;
|
||||
|
||||
@ -23,6 +26,22 @@ use VDM\Joomla\GetBible\Openai\Config;
|
||||
*/
|
||||
final class Response
|
||||
{
|
||||
/**
|
||||
* The Translation class
|
||||
*
|
||||
* @var Translation
|
||||
* @since 2.0.1
|
||||
*/
|
||||
protected Translation $translation;
|
||||
|
||||
/**
|
||||
* The Chapter class
|
||||
*
|
||||
* @var Chapter
|
||||
* @since 2.0.1
|
||||
*/
|
||||
protected Chapter $chapter;
|
||||
|
||||
/**
|
||||
* The Prompt class
|
||||
*
|
||||
@ -58,14 +77,18 @@ final class Response
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param Translation $translation The translation object.
|
||||
* @param Chapter $chapter The chapter object.
|
||||
* @param Prompt $prompt The prompt object.
|
||||
* @param Load $load The load object.
|
||||
* @param Config $config The config object.
|
||||
*
|
||||
* @since 2.0.1
|
||||
*/
|
||||
public function __construct(Prompt $prompt, Load $load, Config $config)
|
||||
public function __construct(Translation $translation, Chapter $chapter, Prompt $prompt, Load $load, Config $config)
|
||||
{
|
||||
$this->translation = $translation;
|
||||
$this->chapter = $chapter;
|
||||
$this->prompt = $prompt;
|
||||
$this->load = $load;
|
||||
$this->config = $config;
|
||||
@ -84,7 +107,7 @@ final class Response
|
||||
// get the cache behaviour
|
||||
$cache = $this->prompt->getCacheBehaviour();
|
||||
|
||||
if (empty($cache))
|
||||
if (empty($cache) || ($cache != 1 && $cache != 2))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
@ -103,6 +126,29 @@ final class Response
|
||||
|
||||
$query = ['prompt' => $guid];
|
||||
|
||||
// Basic Caching - Words/Language
|
||||
if ($cache == 1)
|
||||
{
|
||||
// any empty string so cause no value to be returned
|
||||
$query['language'] = $this->translation->getLanguage() ?? 'none__found';
|
||||
$query['selected_words'] = $this->chapter->getWordText() ?? 'none__found';
|
||||
}
|
||||
// Advanced Caching - Verse/Contex
|
||||
else
|
||||
{
|
||||
// any empty string so cause no value to be returned
|
||||
$query['abbreviation'] = $this->translation->getAbbreviation() ?? 'none__found';
|
||||
$query['book'] = $this->chapter->getBookNumber() ?? 'none__found';
|
||||
$query['chapter'] = $this->chapter->getChapterNumber() ?? 'none__found';
|
||||
$query['verse'] = $this->chapter->getVerseNumber() ?? 'none__found';
|
||||
|
||||
// get the integration
|
||||
$integration = $this->prompt->getIntegration();
|
||||
if ($integration == 1 || $integration == 3)
|
||||
{
|
||||
$query['words'] = $this->chapter->getWordNumber() ?? 'none__found';
|
||||
}
|
||||
}
|
||||
$bucket = $this->load->items($query, 'open_ai_response');
|
||||
|
||||
if (is_array($bucket) && $bucket !== [])
|
||||
|
@ -1,3 +1,19 @@
|
||||
/**
|
||||
* The Translation class
|
||||
*
|
||||
* @var Translation
|
||||
* @since 2.0.1
|
||||
*/
|
||||
protected Translation $translation;
|
||||
|
||||
/**
|
||||
* The Chapter class
|
||||
*
|
||||
* @var Chapter
|
||||
* @since 2.0.1
|
||||
*/
|
||||
protected Chapter $chapter;
|
||||
|
||||
/**
|
||||
* The Prompt class
|
||||
*
|
||||
@ -33,14 +49,18 @@
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param Translation $translation The translation object.
|
||||
* @param Chapter $chapter The chapter object.
|
||||
* @param Prompt $prompt The prompt object.
|
||||
* @param Load $load The load object.
|
||||
* @param Config $config The config object.
|
||||
*
|
||||
* @since 2.0.1
|
||||
*/
|
||||
public function __construct(Prompt $prompt, Load $load, Config $config)
|
||||
public function __construct(Translation $translation, Chapter $chapter, Prompt $prompt, Load $load, Config $config)
|
||||
{
|
||||
$this->translation = $translation;
|
||||
$this->chapter = $chapter;
|
||||
$this->prompt = $prompt;
|
||||
$this->load = $load;
|
||||
$this->config = $config;
|
||||
@ -59,7 +79,7 @@
|
||||
// get the cache behaviour
|
||||
$cache = $this->prompt->getCacheBehaviour();
|
||||
|
||||
if (empty($cache))
|
||||
if (empty($cache) || ($cache != 1 && $cache != 2))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
@ -78,6 +98,29 @@
|
||||
|
||||
$query = ['prompt' => $guid];
|
||||
|
||||
// Basic Caching - Words/Language
|
||||
if ($cache == 1)
|
||||
{
|
||||
// any empty string so cause no value to be returned
|
||||
$query['language'] = $this->translation->getLanguage() ?? 'none__found';
|
||||
$query['selected_words'] = $this->chapter->getWordText() ?? 'none__found';
|
||||
}
|
||||
// Advanced Caching - Verse/Contex
|
||||
else
|
||||
{
|
||||
// any empty string so cause no value to be returned
|
||||
$query['abbreviation'] = $this->translation->getAbbreviation() ?? 'none__found';
|
||||
$query['book'] = $this->chapter->getBookNumber() ?? 'none__found';
|
||||
$query['chapter'] = $this->chapter->getChapterNumber() ?? 'none__found';
|
||||
$query['verse'] = $this->chapter->getVerseNumber() ?? 'none__found';
|
||||
|
||||
// get the integration
|
||||
$integration = $this->prompt->getIntegration();
|
||||
if ($integration == 1 || $integration == 3)
|
||||
{
|
||||
$query['words'] = $this->chapter->getWordNumber() ?? 'none__found';
|
||||
}
|
||||
}
|
||||
$bucket = $this->load->items($query, 'open_ai_response');
|
||||
|
||||
if (is_array($bucket) && $bucket !== [])
|
||||
|
@ -11,10 +11,22 @@
|
||||
"type": "final class",
|
||||
"use_selection": {
|
||||
"use_selection0": {
|
||||
"use": "c03b9c61-17d3-4774-a335-783903719f83",
|
||||
"use": "c4098e1a-46dd-4d60-9277-b3668a09edc8",
|
||||
"as": "default"
|
||||
},
|
||||
"use_selection1": {
|
||||
"use": "4a4c786d-51f4-421a-aa61-262dfd071880",
|
||||
"as": "default"
|
||||
},
|
||||
"use_selection2": {
|
||||
"use": "3f785d63-a592-463d-9f5f-b2b5a8edd561",
|
||||
"as": "default"
|
||||
},
|
||||
"use_selection3": {
|
||||
"use": "c03b9c61-17d3-4774-a335-783903719f83",
|
||||
"as": "default"
|
||||
},
|
||||
"use_selection4": {
|
||||
"use": "3af7864b-f1f3-491e-b16f-0504f890086d",
|
||||
"as": "default"
|
||||
}
|
||||
|
@ -32,6 +32,7 @@ class Chapter << (F,LightGreen) >> #Green {
|
||||
- processVerses(?string $abbreviation, ?int $book, ...) : string
|
||||
- processVersesArray(?string $abbreviation, ?int $book, ...) : ?array
|
||||
- extractVerseNumbers(string $verseNumber) : array
|
||||
- validateSelectedVerses(array $verseNumbers) : string
|
||||
- getTextFromVerses(array $verses, array $verseNumber) : array
|
||||
- getArrayFromVerses(array $verses, array $verseNumber) : array
|
||||
- getWordNumberArray(?string $abbreviation = null, ?int $book = null, ...) : ?array
|
||||
@ -240,21 +241,28 @@ note right of Chapter::extractVerseNumbers
|
||||
return: array
|
||||
end note
|
||||
|
||||
note left of Chapter::getTextFromVerses
|
||||
note left of Chapter::validateSelectedVerses
|
||||
Validate that these verse numbers exist in chapter
|
||||
|
||||
since: 2.0.1
|
||||
return: string
|
||||
end note
|
||||
|
||||
note right of Chapter::getTextFromVerses
|
||||
Get the verse text from the verses array based on the verse numbers
|
||||
|
||||
since: 2.0.1
|
||||
return: array
|
||||
end note
|
||||
|
||||
note right of Chapter::getArrayFromVerses
|
||||
note left of Chapter::getArrayFromVerses
|
||||
Get the verses array based on the verse numbers
|
||||
|
||||
since: 2.0.1
|
||||
return: array
|
||||
end note
|
||||
|
||||
note left of Chapter::getWordNumberArray
|
||||
note right of Chapter::getWordNumberArray
|
||||
Get the word number/s
|
||||
|
||||
since: 2.0.1
|
||||
@ -266,35 +274,35 @@ note left of Chapter::getWordNumberArray
|
||||
?int $chapter = null
|
||||
end note
|
||||
|
||||
note right of Chapter::splitAndTrim
|
||||
note left of Chapter::splitAndTrim
|
||||
Split verse or words by '-' and trim each element.
|
||||
|
||||
since: 2.0.1
|
||||
return: array
|
||||
end note
|
||||
|
||||
note left of Chapter::buildWordNumberArray
|
||||
note right of Chapter::buildWordNumberArray
|
||||
Build word number array from verse and words.
|
||||
|
||||
since: 2.0.1
|
||||
return: array
|
||||
end note
|
||||
|
||||
note right of Chapter::wordNumberArrayToString
|
||||
note left of Chapter::wordNumberArrayToString
|
||||
Converts word number array to string.
|
||||
|
||||
since: 2.0.1
|
||||
return: string
|
||||
end note
|
||||
|
||||
note left of Chapter::buildWordArray
|
||||
note right of Chapter::buildWordArray
|
||||
Build word array from verse and words.
|
||||
|
||||
since: 2.0.1
|
||||
return: array
|
||||
end note
|
||||
|
||||
note right of Chapter::wordArrayToString
|
||||
note left of Chapter::wordArrayToString
|
||||
Converts word array to string.
|
||||
|
||||
since: 2.0.1
|
||||
|
@ -196,26 +196,27 @@ final class Chapter
|
||||
return '';
|
||||
}
|
||||
|
||||
$verse_bucket = [];
|
||||
if (strpos($verse, '-') !== false)
|
||||
{
|
||||
$verses = $this->splitAndTrim($verse);
|
||||
$minVerse = min($verses);
|
||||
$maxVerse = max($verses);
|
||||
$min_verse = min($verses);
|
||||
$max_verse = max($verses);
|
||||
|
||||
if ($minVerse == $maxVerse)
|
||||
$verse_bucket[] = $min_verse;
|
||||
if ($min_verse != $max_verse)
|
||||
{
|
||||
$verse_number = $minVerse;
|
||||
}
|
||||
else
|
||||
{
|
||||
$verse_number = $minVerse . '-' . $maxVerse;
|
||||
$verse_bucket[] = $max_verse;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$verse_number = trim($verse);
|
||||
$verse_bucket[] = trim($verse);
|
||||
}
|
||||
|
||||
// validate that this chapter has these verses
|
||||
$verse_number = $this->validateSelectedVerses($verse_bucket);
|
||||
|
||||
$this->get($abbreviation, $book, $chapter)->verse_number = $verse_number;
|
||||
|
||||
return $verse_number;
|
||||
@ -596,6 +597,44 @@ final class Chapter
|
||||
return [trim($verseNumber)];
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate that these verse numbers exist in chapter
|
||||
*
|
||||
* @param array $verseNumbers The selected verse numbers
|
||||
*
|
||||
* @return string The the valid verse numbers or empty string
|
||||
* @since 2.0.1
|
||||
*/
|
||||
private function validateSelectedVerses(array $verseNumbers): string
|
||||
{
|
||||
$verses = $this->get()->verses ?? null;
|
||||
|
||||
if (empty($verses) || !is_array($verses))
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
$valid = [];
|
||||
foreach ($verses as $verse)
|
||||
{
|
||||
if (isset($verseNumbers[0]) && $verse->verse == $verseNumbers[0])
|
||||
{
|
||||
$valid[] = $verseNumbers[0];
|
||||
}
|
||||
elseif (isset($verseNumbers[1]) && $verse->verse == $verseNumbers[1])
|
||||
{
|
||||
$valid[] = $verseNumbers[1];
|
||||
}
|
||||
}
|
||||
|
||||
if ($valid !== [])
|
||||
{
|
||||
return implode('-', $valid);
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the verse text from the verses array based on the verse numbers
|
||||
*
|
||||
@ -777,10 +816,17 @@ final class Chapter
|
||||
{
|
||||
$word_number = [];
|
||||
|
||||
if (count($wordNumberArray) == 1)
|
||||
{
|
||||
$word_number[] = implode(',', array_values($wordNumberArray)[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach ($wordNumberArray as $verse => $words)
|
||||
{
|
||||
$word_number[] = $verse . ':' . implode(',', $words);
|
||||
}
|
||||
}
|
||||
|
||||
return implode(';', $word_number);
|
||||
}
|
||||
|
@ -170,26 +170,27 @@
|
||||
return '';
|
||||
}
|
||||
|
||||
$verse_bucket = [];
|
||||
if (strpos($verse, '-') !== false)
|
||||
{
|
||||
$verses = $this->splitAndTrim($verse);
|
||||
$minVerse = min($verses);
|
||||
$maxVerse = max($verses);
|
||||
$min_verse = min($verses);
|
||||
$max_verse = max($verses);
|
||||
|
||||
if ($minVerse == $maxVerse)
|
||||
$verse_bucket[] = $min_verse;
|
||||
if ($min_verse != $max_verse)
|
||||
{
|
||||
$verse_number = $minVerse;
|
||||
}
|
||||
else
|
||||
{
|
||||
$verse_number = $minVerse . '-' . $maxVerse;
|
||||
$verse_bucket[] = $max_verse;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$verse_number = trim($verse);
|
||||
$verse_bucket[] = trim($verse);
|
||||
}
|
||||
|
||||
// validate that this chapter has these verses
|
||||
$verse_number = $this->validateSelectedVerses($verse_bucket);
|
||||
|
||||
$this->get($abbreviation, $book, $chapter)->verse_number = $verse_number;
|
||||
|
||||
return $verse_number;
|
||||
@ -570,6 +571,44 @@
|
||||
return [trim($verseNumber)];
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate that these verse numbers exist in chapter
|
||||
*
|
||||
* @param array $verseNumbers The selected verse numbers
|
||||
*
|
||||
* @return string The the valid verse numbers or empty string
|
||||
* @since 2.0.1
|
||||
*/
|
||||
private function validateSelectedVerses(array $verseNumbers): string
|
||||
{
|
||||
$verses = $this->get()->verses ?? null;
|
||||
|
||||
if (empty($verses) || !is_array($verses))
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
$valid = [];
|
||||
foreach ($verses as $verse)
|
||||
{
|
||||
if (isset($verseNumbers[0]) && $verse->verse == $verseNumbers[0])
|
||||
{
|
||||
$valid[] = $verseNumbers[0];
|
||||
}
|
||||
elseif (isset($verseNumbers[1]) && $verse->verse == $verseNumbers[1])
|
||||
{
|
||||
$valid[] = $verseNumbers[1];
|
||||
}
|
||||
}
|
||||
|
||||
if ($valid !== [])
|
||||
{
|
||||
return implode('-', $valid);
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the verse text from the verses array based on the verse numbers
|
||||
*
|
||||
@ -751,10 +790,17 @@
|
||||
{
|
||||
$word_number = [];
|
||||
|
||||
if (count($wordNumberArray) == 1)
|
||||
{
|
||||
$word_number[] = implode(',', array_values($wordNumberArray)[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach ($wordNumberArray as $verse => $words)
|
||||
{
|
||||
$word_number[] = $verse . ':' . implode(',', $words);
|
||||
}
|
||||
}
|
||||
|
||||
return implode(';', $word_number);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user