<?php /** * @package Sven.Bluege * @subpackage com_eventgallery * * @copyright Copyright (C) 2005 - 2019 Sven Bluege All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ // Check to ensure this file is included in Joomla! defined('_JEXEC') or die(); /** * Class EventgalleryLibraryDatabaseLocalizablestring handles a string which contains multiple languages. * As of now this string has to be json encoded and contains key value pairs where the key is the locale like en_US or de_DE */ class EventgalleryLibraryDatabaseLocalizablestring { var $_entries = NULL; var $_jsonstring = NULL; function __construct($jsonstring) { $this->_jsonstring = $jsonstring; $this->_entries = json_decode($jsonstring); } /** * @return string returns the encoded entries so you can store them into a database. */ public function getEncodedString() { return json_encode($this->_entries); } /** * @param string $langTag the language tag you want to get the value for. If the tag is null, * the current lang is used. If no value is available for the given language it tries to use * the system default language for the front end. * * @return string the value for the given language. */ public function get($langTag = NULL) { if ($langTag == NULL) { $lang = JFactory::getLanguage(); $langTag = $lang->getTag(); } /** * @var \Joomla\Registry\Registry $languageParams */ $languageParams = JComponentHelper::getParams('com_languages'); $defaultLanguageTag = $languageParams->get('site'); if (isset($this->_entries->$langTag)) { $value = $this->_entries->$langTag; if (strlen(trim($value))>0) { return $value; } } if (isset($this->_entries->$defaultLanguageTag)) { return $this->_entries->$defaultLanguageTag; } // if we have languages, but nothing for the requested language, // we return an empty string instead of the original json string if (isset($this->_entries) && count((array)$this->_entries)>0) { return ""; } return $this->_jsonstring; } /** * @param string $langTag the language tag like en_US or de_DE * @param string $value the value for the specified language */ public function set($langTag, $value) { if ($value == NULL || $langTag == NULL) { return; } $this->_entries->$langTag = $value; } /** * Filter a localizable string so nobody adds strange stuff here. We simply route this through * JComponentHelper::filterText but keep the JSON structure * * @param $text * @return string */ public static function filterText($text) { $obj = json_decode($text); if ($obj != null) { foreach ($obj as $key => $value) { $obj->$key = JComponentHelper::filterText($value); } return json_encode($obj); } // in case this is an invalid JSON string we still clean this text up return JComponentHelper::filterText($text); } }