update 2023-08-01 13:50:10
This commit is contained in:
parent
15eefe8f22
commit
7e7466b02e
@ -15,7 +15,9 @@ class Chapter << (F,LightGreen) >> #Green {
|
||||
# Verses $verses
|
||||
+ __construct(Load $load, Insert $insert, ...)
|
||||
+ sync(string $translation, int $book, ...) : bool
|
||||
+ names(array $books) : bool
|
||||
- chapter(string $translation, int $book, ...) : bool
|
||||
- chapters(string $translation, int $book, ...) : bool
|
||||
- verses(string $translation, int $book, ...) : bool
|
||||
- update(string $translation, int $book, ...) : bool
|
||||
- hash(string $hash) : bool
|
||||
@ -34,7 +36,7 @@ note right of Chapter::__construct
|
||||
Verses $verses
|
||||
end note
|
||||
|
||||
note right of Chapter::sync
|
||||
note left of Chapter::sync
|
||||
Sync the target being watched
|
||||
|
||||
since: 2.0.1
|
||||
@ -46,7 +48,14 @@ note right of Chapter::sync
|
||||
int $chapter
|
||||
end note
|
||||
|
||||
note right of Chapter::chapter
|
||||
note right of Chapter::names
|
||||
Update translation book chapter names
|
||||
|
||||
since: 2.0.1
|
||||
return: bool
|
||||
end note
|
||||
|
||||
note left of Chapter::chapter
|
||||
Load the chapter numbers
|
||||
|
||||
since: 2.0.1
|
||||
@ -58,7 +67,19 @@ note right of Chapter::chapter
|
||||
int $chapter
|
||||
end note
|
||||
|
||||
note right of Chapter::verses
|
||||
note right of Chapter::chapters
|
||||
Trigger the update of the chapters of a translation-book
|
||||
|
||||
since: 2.0.1
|
||||
return: bool
|
||||
|
||||
arguments:
|
||||
string $translation
|
||||
int $book
|
||||
bool $updateHash = false
|
||||
end note
|
||||
|
||||
note left of Chapter::verses
|
||||
Load verses
|
||||
|
||||
since: 2.0.1
|
||||
@ -82,7 +103,7 @@ note right of Chapter::update
|
||||
int $chapter
|
||||
end note
|
||||
|
||||
note right of Chapter::hash
|
||||
note left of Chapter::hash
|
||||
Trigger the update of a chapter hash value
|
||||
|
||||
since: 2.0.1
|
||||
|
@ -111,6 +111,32 @@ final class Chapter extends Watcher
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update translation book chapter names
|
||||
*
|
||||
* @param array $books The books ids.
|
||||
*
|
||||
* @return bool True on success
|
||||
* @since 2.0.1
|
||||
*/
|
||||
public function names(array $books): bool
|
||||
{
|
||||
foreach ($books as $book)
|
||||
{
|
||||
if (($_book = $this->load->item(['id' => $book], 'book')) === null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!$this->chapters($_book->abbreviation, $_book->nr))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Load the chapter numbers
|
||||
*
|
||||
@ -156,6 +182,80 @@ final class Chapter extends Watcher
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Trigger the update of the chapters of a translation-book
|
||||
*
|
||||
* @param string $translation The translation.
|
||||
* @param int $book The book number.
|
||||
* @param bool $updateHash The switch to update the hash.
|
||||
*
|
||||
* @return bool True if update was a success
|
||||
* @since 2.0.1
|
||||
*/
|
||||
private function chapters(string $translation, int $book, bool $updateHash = false): bool
|
||||
{
|
||||
// load all the verses from the local database
|
||||
$inserted = false;
|
||||
|
||||
// get verses from the API
|
||||
if (($api = $this->chapters->list($translation, $book)) === null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (($chapters = $this->load->items(
|
||||
['abbreviation' => $translation, 'book_nr' => $book],
|
||||
'chapter'
|
||||
)) !== null)
|
||||
{
|
||||
$update = [];
|
||||
$insert = [];
|
||||
$match = ['key' => 'book_nr', 'value' => ''];
|
||||
|
||||
// dynamic update all verse objects
|
||||
foreach ($api as $chapter)
|
||||
{
|
||||
// hash must only update/set if
|
||||
// verses are also updated/set
|
||||
if (!$updateHash)
|
||||
{
|
||||
unset($chapter->sha);
|
||||
}
|
||||
|
||||
// check if the verse exist
|
||||
$match['value'] = (string) $chapter->book_nr;
|
||||
if (($object = $this->getTarget($match, $chapters)) !== null)
|
||||
{
|
||||
$chapter->id = $object->id;
|
||||
$chapter->modified = $this->today;
|
||||
$update[] = $chapter;
|
||||
}
|
||||
else
|
||||
{
|
||||
$insert[] = $chapter;
|
||||
}
|
||||
}
|
||||
|
||||
// check if we have values to insert
|
||||
if ($insert !== [])
|
||||
{
|
||||
$inserted = $this->insert->items($insert, 'chapter');
|
||||
}
|
||||
|
||||
// update the local chapters
|
||||
if ($update !== [] && $this->update->items($update, 'id', 'chapter'))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$inserted = $this->insert->items((array) $api, 'chapter');
|
||||
}
|
||||
|
||||
return $inserted;
|
||||
}
|
||||
|
||||
/**
|
||||
* Load verses
|
||||
*
|
||||
@ -208,17 +308,20 @@ final class Chapter extends Watcher
|
||||
private function update(string $translation, int $book, int $chapter): bool
|
||||
{
|
||||
// load all the verses from the local database
|
||||
if (($verses = $this->load->items(
|
||||
['abbreviation' => $translation, 'book_nr' => $book, 'chapter' => $chapter],
|
||||
'verse'
|
||||
)) !== null)
|
||||
{
|
||||
$inserted = false;
|
||||
|
||||
// get verses from the API
|
||||
if (($api = $this->verses->get($translation, $book, $chapter)) === null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (($verses = $this->load->items(
|
||||
['abbreviation' => $translation, 'book_nr' => $book, 'chapter' => $chapter],
|
||||
'verse'
|
||||
)) !== null)
|
||||
{
|
||||
|
||||
$update = [];
|
||||
$insert = [];
|
||||
$match = ['key' => 'verse', 'value' => ''];
|
||||
@ -228,7 +331,7 @@ final class Chapter extends Watcher
|
||||
{
|
||||
// check if the verse exist
|
||||
$match['value'] = (string) $verse->verse;
|
||||
if (($object = $this->getTarget($match, $verses)) !== null)
|
||||
if ($verses !== null && ($object = $this->getTarget($match, $verses)) !== null)
|
||||
{
|
||||
$verse->id = $object->id;
|
||||
$verse->modified = $this->today;
|
||||
@ -243,7 +346,12 @@ final class Chapter extends Watcher
|
||||
// check if we have values to insert
|
||||
if ($insert !== [])
|
||||
{
|
||||
$this->insert->items($insert, 'verse');
|
||||
$_insert = ['book_nr' => $book, 'abbreviation' => $translation];
|
||||
array_walk($insert, function ($item, $key) use ($_insert) {
|
||||
foreach ($_insert as $k => $v) { $item->$k = $v; }
|
||||
});
|
||||
|
||||
$inserted = $this->insert->items($insert, 'verse');
|
||||
}
|
||||
|
||||
// update the local verses
|
||||
@ -252,8 +360,17 @@ final class Chapter extends Watcher
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$insert = ['book_nr' => $book, 'abbreviation' => $translation];
|
||||
array_walk($api->verses, function ($item, $key) use ($insert) {
|
||||
foreach ($insert as $k => $v) { $item->$k = $v; }
|
||||
});
|
||||
|
||||
return false;
|
||||
$inserted = $this->insert->items((array) $api->verses, 'verse');
|
||||
}
|
||||
|
||||
return $inserted;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -82,6 +82,32 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update translation book chapter names
|
||||
*
|
||||
* @param array $books The books ids.
|
||||
*
|
||||
* @return bool True on success
|
||||
* @since 2.0.1
|
||||
*/
|
||||
public function names(array $books): bool
|
||||
{
|
||||
foreach ($books as $book)
|
||||
{
|
||||
if (($_book = $this->load->item(['id' => $book], 'book')) === null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!$this->chapters($_book->abbreviation, $_book->nr))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Load the chapter numbers
|
||||
*
|
||||
@ -127,6 +153,80 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Trigger the update of the chapters of a translation-book
|
||||
*
|
||||
* @param string $translation The translation.
|
||||
* @param int $book The book number.
|
||||
* @param bool $updateHash The switch to update the hash.
|
||||
*
|
||||
* @return bool True if update was a success
|
||||
* @since 2.0.1
|
||||
*/
|
||||
private function chapters(string $translation, int $book, bool $updateHash = false): bool
|
||||
{
|
||||
// load all the verses from the local database
|
||||
$inserted = false;
|
||||
|
||||
// get verses from the API
|
||||
if (($api = $this->chapters->list($translation, $book)) === null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (($chapters = $this->load->items(
|
||||
['abbreviation' => $translation, 'book_nr' => $book],
|
||||
'chapter'
|
||||
)) !== null)
|
||||
{
|
||||
$update = [];
|
||||
$insert = [];
|
||||
$match = ['key' => 'book_nr', 'value' => ''];
|
||||
|
||||
// dynamic update all verse objects
|
||||
foreach ($api as $chapter)
|
||||
{
|
||||
// hash must only update/set if
|
||||
// verses are also updated/set
|
||||
if (!$updateHash)
|
||||
{
|
||||
unset($chapter->sha);
|
||||
}
|
||||
|
||||
// check if the verse exist
|
||||
$match['value'] = (string) $chapter->book_nr;
|
||||
if (($object = $this->getTarget($match, $chapters)) !== null)
|
||||
{
|
||||
$chapter->id = $object->id;
|
||||
$chapter->modified = $this->today;
|
||||
$update[] = $chapter;
|
||||
}
|
||||
else
|
||||
{
|
||||
$insert[] = $chapter;
|
||||
}
|
||||
}
|
||||
|
||||
// check if we have values to insert
|
||||
if ($insert !== [])
|
||||
{
|
||||
$inserted = $this->insert->items($insert, 'chapter');
|
||||
}
|
||||
|
||||
// update the local chapters
|
||||
if ($update !== [] && $this->update->items($update, 'id', 'chapter'))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$inserted = $this->insert->items((array) $api, 'chapter');
|
||||
}
|
||||
|
||||
return $inserted;
|
||||
}
|
||||
|
||||
/**
|
||||
* Load verses
|
||||
*
|
||||
@ -179,17 +279,20 @@
|
||||
private function update(string $translation, int $book, int $chapter): bool
|
||||
{
|
||||
// load all the verses from the local database
|
||||
if (($verses = $this->load->items(
|
||||
['abbreviation' => $translation, 'book_nr' => $book, 'chapter' => $chapter],
|
||||
'verse'
|
||||
)) !== null)
|
||||
{
|
||||
$inserted = false;
|
||||
|
||||
// get verses from the API
|
||||
if (($api = $this->verses->get($translation, $book, $chapter)) === null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (($verses = $this->load->items(
|
||||
['abbreviation' => $translation, 'book_nr' => $book, 'chapter' => $chapter],
|
||||
'verse'
|
||||
)) !== null)
|
||||
{
|
||||
|
||||
$update = [];
|
||||
$insert = [];
|
||||
$match = ['key' => 'verse', 'value' => ''];
|
||||
@ -199,7 +302,7 @@
|
||||
{
|
||||
// check if the verse exist
|
||||
$match['value'] = (string) $verse->verse;
|
||||
if (($object = $this->getTarget($match, $verses)) !== null)
|
||||
if ($verses !== null && ($object = $this->getTarget($match, $verses)) !== null)
|
||||
{
|
||||
$verse->id = $object->id;
|
||||
$verse->modified = $this->today;
|
||||
@ -214,7 +317,12 @@
|
||||
// check if we have values to insert
|
||||
if ($insert !== [])
|
||||
{
|
||||
$this->insert->items($insert, 'verse');
|
||||
$_insert = ['book_nr' => $book, 'abbreviation' => $translation];
|
||||
array_walk($insert, function ($item, $key) use ($_insert) {
|
||||
foreach ($_insert as $k => $v) { $item->$k = $v; }
|
||||
});
|
||||
|
||||
$inserted = $this->insert->items($insert, 'verse');
|
||||
}
|
||||
|
||||
// update the local verses
|
||||
@ -223,8 +331,17 @@
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$insert = ['book_nr' => $book, 'abbreviation' => $translation];
|
||||
array_walk($api->verses, function ($item, $key) use ($insert) {
|
||||
foreach ($insert as $k => $v) { $item->$k = $v; }
|
||||
});
|
||||
|
||||
return false;
|
||||
$inserted = $this->insert->items((array) $api->verses, 'verse');
|
||||
}
|
||||
|
||||
return $inserted;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -168,7 +168,7 @@ final class Translation extends Watcher
|
||||
{
|
||||
// check if the verse exist
|
||||
$match['value'] = $translation->abbreviation ?? null;
|
||||
if (($object = $this->getTarget($match, $local_translations)) !== null)
|
||||
if ($local_translations !== null && ($object = $this->getTarget($match, $local_translations)) !== null)
|
||||
{
|
||||
$translation->id = $object->id;
|
||||
$translation->created = $this->today;
|
||||
|
@ -140,7 +140,7 @@
|
||||
{
|
||||
// check if the verse exist
|
||||
$match['value'] = $translation->abbreviation ?? null;
|
||||
if (($object = $this->getTarget($match, $local_translations)) !== null)
|
||||
if ($local_translations !== null && ($object = $this->getTarget($match, $local_translations)) !== null)
|
||||
{
|
||||
$translation->id = $object->id;
|
||||
$translation->created = $this->today;
|
||||
|
Loading…
x
Reference in New Issue
Block a user