/** * Adds or updates new key and value * * @param int $languageId * @param string $prefix * @param string $key * @param string $value * @param bool $generateCache * * @return BOL_LanguageValue * * @throws LogicException */ public function addOrUpdateValue($languageId, $prefix, $key, $value, $generateCache = true) { $prefixDto = $this->prefixDao->findByPrefix($prefix); if ($prefixDto == null) { throw new LogicException("Prefix `{$prefix}` not found!"); } $keyDto = $this->findKey($prefix, $key); if ($keyDto === null) { $keyDto = new BOL_LanguageKey(); $keyDto->setPrefixId($prefixDto->id)->setKey($key); $this->keyDao->save($keyDto); } $valueDto = $this->findValue($languageId, $keyDto->id); if ($valueDto === null) { $valueDto = new BOL_LanguageValue(); } $valueDto->setLanguageId($languageId)->setKeyId($keyDto->getId())->setValue($value); $this->valueDao->save($valueDto); if ($generateCache) { $this->generateCache($valueDto->languageId); } return $valueDto; }