/** * Searches for languagesets containing the current systemid. either as a language or a referenced record. * Called whenever a records was deleted using the common methods. * Implement this method to be notified when a record is deleted, e.g. to to additional cleanups afterwards. * There's no need to register the listener, this is done automatically. * Make sure to return a matching boolean-value, otherwise the transaction may be rolled back. * * @param string $strEventName * @param array $arrArguments * * @return bool */ public function handleEvent($strEventName, array $arrArguments) { //unwrap arguments list($strSystemid, $strSourceClass) = $arrArguments; if ($strSourceClass == "class_module_languages_language") { //if we have just one language remaining, set this one as default $arrObjLanguages = class_module_languages_language::getObjectList(); if (count($arrObjLanguages) == 1) { $objOneLanguage = $arrObjLanguages[0]; $objOneLanguage->setBitDefault(1); $objOneLanguage->updateObjectToDb(); } //check if the current active one was deleted. if, then reset. #kajona trace id 613 $objLanguage = new class_module_languages_language(); $arrLangs = class_module_languages_language::getObjectList(); $arrFiltered = array_filter($arrLangs, function (class_module_languages_language $objSingleLang) use($objLanguage) { return $objSingleLang->getStrName() == $objLanguage->getAdminLanguage(); }); if (count($arrFiltered) == 0 && count($arrLangs) > 0) { $objLanguage->setStrAdminLanguageToWorkOn($arrLangs[0]->getStrName()); } } //fire a plain query on the database, much faster then searching for matching records $strQuery = "DELETE FROM " . _dbprefix_ . "languages_languageset\n WHERE languageset_language = ?\n OR languageset_systemid = ?"; class_carrier::getInstance()->getObjDB()->_pQuery($strQuery, array($strSystemid, $strSystemid)); return true; }
/** * Returns the language to display contents or to edit contents on adminside * NOTE: THIS ARE THE CONTENTS, NOT THE TEXTS * * @return string */ public final function getStrAdminLanguageToWorkOn() { $objLanguage = new class_module_languages_language(); return $objLanguage->getAdminLanguage(); }
/** * Enables the common language switch, switching the backends language to work on. * If you want to create a custom switch, use setArrLanguageSwitchEntries and setStrOnChangeHandler * to customize all switch-content. * * @static */ public static function enableLanguageSwitch() { if (self::$arrLanguageSwitchEntries == null) { $arrObjLanguages = class_module_languages_language::getObjectList(true); if (count($arrObjLanguages) > 1) { self::$arrLanguageSwitchEntries = array(); foreach ($arrObjLanguages as $objOneLang) { self::$arrLanguageSwitchEntries[$objOneLang->getStrName()] = class_carrier::getInstance()->getObjLang()->getLang("lang_" . $objOneLang->getStrName(), "languages"); } $objLanguage = new class_module_languages_language(); self::$strActiveKey = $objLanguage->getAdminLanguage(); } } }