/**
* @return array|mixed
*/
public function getAllTranslations()
{
$cacheKey = static::getTableName() . "_data";
if (!($translations = Cache::load($cacheKey))) {
$itemClass = static::getItemClass();
$translations = [];
$select = $this->db->select();
// create base
$select->from([static::getTableName()]);
if ($this->onCreateQueryCallback) {
$closure = $this->onCreateQueryCallback;
$closure($select);
}
$translationsData = $this->db->fetchAll($select);
foreach ($translationsData as $t) {
if (!$translations[$t["key"]]) {
$translations[$t["key"]] = new $itemClass();
$translations[$t["key"]]->setKey($t["key"]);
}
$translations[$t["key"]]->addTranslation($t["language"], $t["text"]);
//for legacy support
if ($translations[$t["key"]]->getDate() < $t["creationDate"]) {
$translations[$t["key"]]->setDate($t["creationDate"]);
}
$translations[$t["key"]]->setCreationDate($t["creationDate"]);
$translations[$t["key"]]->setModificationDate($t["modificationDate"]);
}
Cache::save($translations, $cacheKey, ["translator", "translate"], 999);
}
return $translations;
}