/**
  * 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;
 }
コード例 #2
0
ファイル: class_root.php プロジェクト: jinshana/kajonacms
 /**
  * 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();
 }
コード例 #3
0
 /**
  * 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();
         }
     }
 }