/** * Generates a new entry in the log-table * * @param string $strSeachterm * * @return bool * @static */ public static function generateLogEntry($strSeachterm) { $objLanguage = new class_module_languages_language(); $strLanguage = $objLanguage->getStrPortalLanguage(); $strQuery = "INSERT INTO " . _dbprefix_ . "search_log \n (search_log_id, search_log_date, search_log_query, search_log_language) VALUES\n (?, ?, ?, ? )"; return class_carrier::getInstance()->getObjDB()->_pQuery($strQuery, array(generateSystemid(), (int) time(), $strSeachterm, $strLanguage)); }
/** * * Does the hard work: installs the module and registers needed constants * * @return string */ public function install() { $strReturn = ""; $strReturn .= "Assigning null-properties and elements to the default language.\n"; if ($this->strContentLanguage == "de") { $strReturn .= " Target language: de\n"; if (class_exists("class_module_pages_page", false) || class_classloader::getInstance()->loadClass("class_module_pages_page") !== false) { class_module_pages_page::assignNullProperties("de", true); } if (class_exists("class_module_pages_pageelement", false) || class_classloader::getInstance()->loadClass("class_module_pages_pageelement") !== false) { class_module_pages_pageelement::assignNullElements("de"); } $objLang = new class_module_languages_language(); $objLang->setStrAdminLanguageToWorkOn("de"); } else { $strReturn .= " Target language: en\n"; if (class_exists("class_module_pages_page", false) || class_classloader::getInstance()->loadClass("class_module_pages_page") !== false) { class_module_pages_page::assignNullProperties("en", true); } if (class_exists("class_module_pages_pageelement", false) || class_classloader::getInstance()->loadClass("class_module_pages_pageelement") !== false) { class_module_pages_pageelement::assignNullElements("en"); } $objLang = new class_module_languages_language(); $objLang->setStrAdminLanguageToWorkOn("en"); } return $strReturn; }
/** * 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; }
/** * @inheritDoc */ public function generateFieldsFromObject() { parent::generateFieldsFromObject(); $objNews = $this->getObjSourceobject(); if ($objNews->getSystemid() != class_module_system_module::getModuleByName("news")->getSystemid()) { //search the languages maintained $objLanguageManager = class_module_languages_languageset::getLanguagesetForSystemid($objNews->getSystemid()); if ($objLanguageManager != null) { $arrMaintained = $objLanguageManager->getArrLanguageSet(); $arrDD = array(); foreach ($arrMaintained as $strLanguageId => $strSystemid) { $objLanguage = new class_module_languages_language($strLanguageId); $arrDD[$strSystemid] = $this->getLang("lang_" . $objLanguage->getStrName(), "languages"); } class_module_languages_admin::enableLanguageSwitch(); class_module_languages_admin::setArrLanguageSwitchEntries($arrDD); class_module_languages_admin::setStrOnChangeHandler("window.location='" . class_link::getLinkAdminHref("news", "editNews") . (class_module_system_setting::getConfigValue("_system_mod_rewrite_") == "true" ? "?" : "&") . "systemid='+this.value+'&pe=" . class_carrier::getInstance()->getParam("pe") . "';"); class_module_languages_admin::setStrActiveKey($objNews->getSystemid()); } } $arrCats = class_module_news_category::getObjectList(); if (count($arrCats) > 0) { $arrKeyValues = array(); /** @var class_module_news_category $objOneCat */ foreach ($arrCats as $objOneCat) { $arrKeyValues[$objOneCat->getSystemid()] = $objOneCat->getStrDisplayName(); } $this->getField("cats")->setStrLabel($this->getLang("commons_categories"))->setArrKeyValues($arrKeyValues); } if (class_module_system_setting::getConfigValue("_news_news_datetime_") == "true") { $this->addField(new class_formentry_datetime($this->getStrFormname(), "objDateStart", $objNews), "datestart")->setBitMandatory(true)->setStrLabel($this->getLang("form_news_datestart")); $this->addField(new class_formentry_datetime($this->getStrFormname(), "objDateEnd", $objNews), "dateend")->setStrLabel($this->getLang("form_news_dateend")); $this->addField(new class_formentry_datetime($this->getStrFormname(), "objDateSpecial", $objNews), "datespecial")->setStrLabel($this->getLang("form_news_datespecial")); } }
/** * This generic method is called in case of dispatched events. * The first param is the name of the event, the second argument is an array of * event-specific arguments. * Make sure to return a matching boolean value, indicating if the event-process was successful or not. The event source may * depend on a valid return value. * * @param string $strEventIdentifier * @param array $arrArguments * * @return bool */ public function handleEvent($strEventIdentifier, array $arrArguments) { /** @var class_request_entrypoint_enum $objEntrypoint */ $objEntrypoint = $arrArguments[0]; if ($objEntrypoint->equals(class_request_entrypoint_enum::INDEX()) && class_carrier::getInstance()->getParam("admin") == "") { //process stats request $objStats = class_module_system_module::getModuleByName("stats"); if ($objStats != null) { //Collect Data $objLanguage = new class_module_languages_language(); $objStats = new class_module_stats_worker(); $objStats->createStatsEntry(getServer("REMOTE_ADDR"), time(), class_carrier::getInstance()->getParam("page"), rtrim(getServer("HTTP_REFERER"), "/"), getServer("HTTP_USER_AGENT"), $objLanguage->getPortalLanguage()); } } }
/** * Returns the ready switch-htmlcode * * @return string */ public function loadData() { //fallback for old elements not yet using the template if (!isset($this->arrElementData["char1"]) || $this->arrElementData["char1"] == "") { $this->arrElementData["char1"] = "languageswitch.tpl"; } $arrObjLanguages = class_module_languages_language::getObjectList(true); //load the languageset in order to generate more specific switches $objLanguageset = class_module_languages_languageset::getLanguagesetForSystemid($this->getParam("systemid")); //Iterate over all languages $strRows = ""; foreach ($arrObjLanguages as $objOneLanguage) { //Check, if the current page has elements $objPage = class_module_pages_page::getPageByName($this->getPagename()); $objPage->setStrLanguage($objOneLanguage->getStrName()); if ($objPage === null) { continue; } if ((int) $objPage->getNumberOfElementsOnPage(true) == 0) { continue; } $strTargetSystemid = null; if ($objLanguageset != null) { $strTargetSystemid = $objLanguageset->getSystemidForLanguageid($objOneLanguage->getSystemid()); } //the languageswitch is content aware. check if the target id is a news-entry $strSeoAddon = ""; if (validateSystemid($strTargetSystemid)) { $objRecord = class_objectfactory::getInstance()->getObject($strTargetSystemid); $strSeoAddon = $objRecord->getStrDisplayName(); } //and the link $arrTemplate = array(); if ($strTargetSystemid === null) { $arrTemplate["href"] = getLinkPortalHref($objPage->getStrName(), "", "", "", "", $objOneLanguage->getStrName(), $strSeoAddon); } else { $arrTemplate["href"] = getLinkPortalHref($objPage->getStrName(), "", $this->getAction(), "", $strTargetSystemid, $objOneLanguage->getStrName(), $strSeoAddon); } $arrTemplate["langname_short"] = $objOneLanguage->getStrName(); $arrTemplate["langname_long"] = $this->getLang("lang_" . $objOneLanguage->getStrName()); $strTemplateRowID = $this->objTemplate->readTemplate("/element_languageswitch/" . $this->arrElementData["char1"], "languageswitch_entry"); $strTemplateActiveRowID = $this->objTemplate->readTemplate("/element_languageswitch/" . $this->arrElementData["char1"], "languageswitch_entry_active"); if ($objOneLanguage->getStrName() == $this->getStrPortalLanguage()) { $strRows .= $this->fillTemplate($arrTemplate, $strTemplateActiveRowID); } else { $strRows .= $this->fillTemplate($arrTemplate, $strTemplateRowID); } } $strTemplateWrapperID = $this->objTemplate->readTemplate("/element_languageswitch/" . $this->arrElementData["char1"], "languageswitch_wrapper"); return $this->fillTemplate(array("languageswitch_entries" => $strRows), $strTemplateWrapperID); }
/** * Generates the link to create an element at a placeholder not yet existing * * @param string $strSystemid * @param string $strPlaceholder * @param class_module_pages_element $objElement * * @return string * @static */ public static function getPortaleditorNewCode($strSystemid, $strPlaceholder, class_module_pages_element $objElement) { $strReturn = ""; if (class_carrier::getInstance()->getObjRights()->rightEdit($strSystemid) && class_carrier::getInstance()->getObjSession()->isAdmin()) { //switch the text-language temporary $strPortalLanguage = class_carrier::getInstance()->getObjLang()->getStrTextLanguage(); class_carrier::getInstance()->getObjLang()->setStrTextLanguage(class_carrier::getInstance()->getObjSession()->getAdminLanguage()); //fetch the language to set the correct admin-lang $objLanguages = new class_module_languages_language(); $strAdminLangParam = "&language=" . $objLanguages->getPortalLanguage(); $strElementHref = class_link::getLinkAdminHref("pages_content", "new", "&systemid=" . $strSystemid . $strAdminLangParam . "&placeholder=" . $strPlaceholder . "&element=" . $objElement->getStrName() . "&pe=1"); $strReturn = class_carrier::getInstance()->getObjToolkit("portal")->getPeNewButton($strPlaceholder, $objElement->getStrDisplayName(), $strElementHref); //reset the portal texts language class_carrier::getInstance()->getObjLang()->setStrTextLanguage($strPortalLanguage); } return $strReturn; }
/** * Triggers all subelements in order to fetch the additional navigation * entries. * * @param class_module_pages_page $objPage * * @see class_element_portal::getNavigationEntries() * @return class_module_navigation_point[]|array * @since 4.0 */ private static function getAdditionalEntriesForPage(class_module_pages_page $objPage) { $arrReturn = array(); $objLanguage = new class_module_languages_language(); $arrPlainElements = class_module_pages_pageelement::getPlainElementsOnPage($objPage->getSystemid(), true, $objLanguage->getStrPortalLanguage()); $strOldPageName = $objPage->getParam("page"); foreach ($arrPlainElements as $arrOneElementOnPage) { //Build the class-name for the object $strClassname = uniSubstr($arrOneElementOnPage["element_class_portal"], 0, -4); if ($strClassname::providesNavigationEntries()) { /** @var class_element_portal $objElement */ $objElement = new $strClassname(new class_module_pages_pageelement($arrOneElementOnPage["system_id"])); $objElement->setParam("page", $objPage->getStrName()); $arrNavigationPoints = $objElement->getNavigationEntries(); if ($arrNavigationPoints !== false) { $arrReturn = array_merge($arrReturn, $arrNavigationPoints); } } } $objPage->setParam("page", $strOldPageName); return $arrReturn; }
/** * 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(); } } }
/** * @return string * @deprecated use class_module_languages_language directly * @see class_module_languages_language::getPortalLanguage() */ protected function getStrPortalLanguage() { $objLanguage = new class_module_languages_language(); return $objLanguage->getPortalLanguage(); }
/** * Since the portal may be split in different languages, * return the content lang of the current record using the common * abbreviation such as "de" or "en". * If the content is not assigned to any language, return "" instead (e.g. a single image). * * @return mixed */ public function getContentLang() { //see if the entry is assigned to a language $objSet = class_module_languages_languageset::getLanguagesetForSystemid($this->getSystemid()); if ($objSet != null && $objSet->getLanguageidForSystemid($this->getSystemid()) !== null) { $objLang = new class_module_languages_language($objSet->getLanguageidForSystemid($this->getSystemid())); return $objLang->getStrName(); } return ""; }
/** * Provides a form to set up the params needed to copy a single element from one placeholder to another. * Collects the target language, the target page and the target placeholder, invokes the copy-procedure. * * @throws class_exception * @return string , "" in case of success * @permissions edit */ protected function actionCopyElement() { $strReturn = ""; $this->setArrModuleEntry("template", "/folderview.tpl"); $objSourceElement = new class_module_pages_pageelement($this->getSystemid()); if ($objSourceElement->rightEdit($this->getSystemid())) { $objLang = null; if ($this->getParam("copyElement_language") != "") { $objLang = new class_module_languages_language($this->getParam("copyElement_language")); } else { $objLang = class_module_languages_language::getLanguageByName($this->getLanguageToWorkOn()); } $objPage = null; if ($this->getParam("copyElement_page") != "") { $objPage = class_module_pages_page::getPageByName($this->getParam("copyElement_page")); if ($objPage == null) { throw new class_exception("failed to load page " . $this->getParam("copyElement_page"), class_exception::$level_ERROR); } $objPage->setStrLanguage($objLang->getStrName()); $objPage->initObject(); } else { $objPage = new class_module_pages_page($objSourceElement->getPrevId()); } //form header $strReturn .= $this->objToolkit->formHeader(class_link::getLinkAdminHref("pages_content", "copyElement"), "formCopyElement"); $strReturn .= $this->objToolkit->formInputHidden("copyElement_doCopy", 1); $strReturn .= $this->objToolkit->formInputHidden("systemid", $this->getSystemid()); $strReturn .= $this->objToolkit->formHeadline($this->getLang("copyElement_element") . " " . $objSourceElement->getStrName() . "_" . $objSourceElement->getStrElement() . " (" . $objSourceElement->getStrTitle() . ")"); //step one: language selection $arrLanguages = class_module_languages_language::getObjectList(true); $arrLanguageDD = array(); foreach ($arrLanguages as $objSingleLanguage) { $arrLanguageDD[$objSingleLanguage->getSystemid()] = $this->getLang("lang_" . $objSingleLanguage->getStrName(), "languages"); } $strReturn .= $this->objToolkit->formInputDropdown("copyElement_language", $arrLanguageDD, $this->getLang("copyElement_language"), $objLang->getSystemid()); //step two: page selection $strReturn .= $this->objToolkit->formInputPageSelector("copyElement_page", $this->getLang("copyElement_page"), $objPage->getStrName(), "inputText", false); //step three: placeholder-selection //here comes the tricky part. load the template, analyze the placeholders and validate all those against things like repeatable and more... $strTemplate = $objPage->getStrTemplate(); //load the placeholders $strTemplateId = $this->objTemplate->readTemplate("/module_pages/" . $strTemplate); $arrPlaceholders = $this->objTemplate->getElements($strTemplateId); $arrPlaceholdersDD = array(); foreach ($arrPlaceholders as $arrSinglePlaceholder) { foreach ($arrSinglePlaceholder["elementlist"] as $arrSinglePlaceholderlist) { if ($objSourceElement->getStrElement() == $arrSinglePlaceholderlist["element"]) { if ($objSourceElement->getIntRepeat() == 1) { //repeatable, ok in every case $arrPlaceholdersDD[$arrSinglePlaceholder["placeholder"]] = $arrSinglePlaceholder["placeholder"]; } else { //not repeatable - element already existing at placeholder? $arrElementsOnPage = class_module_pages_pageelement::getElementsOnPage($objPage->getSystemid(), false, $objLang->getStrName()); //loop in order to find same element-types - other elements may be possible due to piped placeholders, too $bitAdd = true; //var_dump($arrElementsOnPage); foreach ($arrElementsOnPage as $objSingleElementOnPage) { if ($objSingleElementOnPage->getStrElement() == $objSourceElement->getStrElement()) { $bitAdd = false; } } if ($bitAdd) { $arrPlaceholdersDD[$arrSinglePlaceholder["placeholder"]] = $arrSinglePlaceholder["placeholder"]; } } } } } $bitCopyingAllowed = true; if (count($arrPlaceholdersDD) == 0) { $strReturn .= $this->objToolkit->formTextRow($this->getLang("copyElement_err_placeholder")); $bitCopyingAllowed = false; } else { $strReturn .= $this->objToolkit->formInputDropdown("copyElement_placeholder", $arrPlaceholdersDD, $this->getLang("copyElement_placeholder")); } $strReturn .= $this->objToolkit->formTextRow($this->getLang("copyElement_template") . " " . $strTemplate); $strReturn .= $this->objToolkit->divider(); $strReturn .= $this->objToolkit->formInputSubmit($this->getLang("copyElement_submit"), "Submit", "", "inputSubmit", $bitCopyingAllowed); $strReturn .= $this->objToolkit->formClose(); $strReturn .= "\n <script type=\"text/javascript\">\n\n \$(function() {\n var reloadForm = function() {\n setTimeout( function() {\n document.getElementById('copyElement_doCopy').value = 0;\n var formElement = document.getElementById('formCopyElement');\n formElement.submit();\n }, 100);\n\n };\n\n\t KAJONA.admin.copyElement_page.bind('autocompleteselect', reloadForm);\n\n\t var languageField = document.getElementById('copyElement_language');\n\t languageField.onchange = reloadForm;\n\n var pageField = document.getElementById('copyElement_page');\n\t pageField.onchange = reloadForm;\n\t });\n\n </script>"; //any actions to take? if ($this->getParam("copyElement_doCopy") == 1) { $objNewElement = $objSourceElement->copyObject($objPage->getSystemid()); $objNewElement->setStrLanguage($objLang->getStrName()); $objNewElement->setStrPlaceholder($this->getParam("copyElement_placeholder")); if ($objNewElement->updateObjectToDb()) { $this->setSystemid($objNewElement->getSystemid()); $strReturn = ""; $this->adminReload(class_link::getLinkAdminHref("pages_content", "list", "systemid=" . $objNewElement->getPrevId() . "&blockAction=1&peClose=1")); } else { throw new class_exception("Error copying the pageelement " . $objSourceElement->getSystemid(), class_exception::$level_ERROR); } } } else { $strReturn = $this->getLang("commons_error_permissions"); } return $strReturn; }
public function install() { $strReturn = ""; $objManager = new class_orm_schemamanager(); // System table --------------------------------------------------------------------------------- $strReturn .= "Installing table system...\n"; $arrFields = array(); $arrFields["system_id"] = array("char20", false); $arrFields["system_prev_id"] = array("char20", false); $arrFields["system_module_nr"] = array("int", false); $arrFields["system_sort"] = array("int", true); $arrFields["system_owner"] = array("char20", true); $arrFields["system_create_date"] = array("long", true); $arrFields["system_lm_user"] = array("char20", true); $arrFields["system_lm_time"] = array("int", true); $arrFields["system_lock_id"] = array("char20", true); $arrFields["system_lock_time"] = array("int", true); $arrFields["system_status"] = array("int", true); $arrFields["system_class"] = array("char254", true); $arrFields["system_comment"] = array("char254", true); $arrFields["system_deleted"] = array("int", true); if (!$this->objDB->createTable("system", $arrFields, array("system_id"), array("system_prev_id", "system_module_nr", "system_sort", "system_owner", "system_create_date", "system_status", "system_lm_time", "system_lock_time", "system_deleted"))) { $strReturn .= "An error occurred! ...\n"; } //Rights table ---------------------------------------------------------------------------------- $strReturn .= "Installing table system_right...\n"; $arrFields = array(); $arrFields["right_id"] = array("char20", false); $arrFields["right_inherit"] = array("int", true); $arrFields["right_view"] = array("text", true); $arrFields["right_edit"] = array("text", true); $arrFields["right_delete"] = array("text", true); $arrFields["right_right"] = array("text", true); $arrFields["right_right1"] = array("text", true); $arrFields["right_right2"] = array("text", true); $arrFields["right_right3"] = array("text", true); $arrFields["right_right4"] = array("text", true); $arrFields["right_right5"] = array("text", true); $arrFields["right_changelog"] = array("text", true); if (!$this->objDB->createTable("system_right", $arrFields, array("right_id"))) { $strReturn .= "An error occurred! ...\n"; } // Modul table ---------------------------------------------------------------------------------- $strReturn .= "Installing table system_module...\n"; $objManager->createTable("class_module_system_module"); // Date table ----------------------------------------------------------------------------------- $strReturn .= "Installing table system_date...\n"; $arrFields = array(); $arrFields["system_date_id"] = array("char20", false); $arrFields["system_date_start"] = array("long", true); $arrFields["system_date_end"] = array("long", true); $arrFields["system_date_special"] = array("long", true); if (!$this->objDB->createTable("system_date", $arrFields, array("system_date_id"), array("system_date_start", "system_date_end", "system_date_special"))) { $strReturn .= "An error occurred! ...\n"; } // Config table --------------------------------------------------------------------------------- $strReturn .= "Installing table system_config...\n"; $arrFields = array(); $arrFields["system_config_id"] = array("char20", false); $arrFields["system_config_name"] = array("char254", true); $arrFields["system_config_value"] = array("char254", true); $arrFields["system_config_type"] = array("int", true); $arrFields["system_config_module"] = array("int", true); if (!$this->objDB->createTable("system_config", $arrFields, array("system_config_id"))) { $strReturn .= "An error occurred! ...\n"; } // User table ----------------------------------------------------------------------------------- $strReturn .= "Installing table user...\n"; $arrFields = array(); $arrFields["user_id"] = array("char20", false); $arrFields["user_username"] = array("char254", true); $arrFields["user_subsystem"] = array("char254", true); $arrFields["user_logins"] = array("int", true); $arrFields["user_lastlogin"] = array("int", true); $arrFields["user_active"] = array("int", true); $arrFields["user_admin"] = array("int", true); $arrFields["user_portal"] = array("int", true); $arrFields["user_deleted"] = array("int", true); $arrFields["user_admin_skin"] = array("char254", true); $arrFields["user_admin_language"] = array("char254", true); $arrFields["user_admin_module"] = array("char254", true); $arrFields["user_authcode"] = array("char20", true); $arrFields["user_items_per_page"] = array("int", true); if (!$this->objDB->createTable("user", $arrFields, array("user_id"), array("user_username", "user_subsystem", "user_active", "user_deleted"))) { $strReturn .= "An error occurred! ...\n"; } // User table kajona subsystem ----------------------------------------------------------------- $strReturn .= "Installing table user_kajona...\n"; $arrFields = array(); $arrFields["user_id"] = array("char20", false); $arrFields["user_pass"] = array("char254", true); $arrFields["user_salt"] = array("char20", true); $arrFields["user_email"] = array("char254", true); $arrFields["user_forename"] = array("char254", true); $arrFields["user_name"] = array("char254", true); $arrFields["user_street"] = array("char254", true); $arrFields["user_postal"] = array("char254", true); $arrFields["user_city"] = array("char254", true); $arrFields["user_tel"] = array("char254", true); $arrFields["user_mobile"] = array("char254", true); $arrFields["user_date"] = array("long", true); if (!$this->objDB->createTable("user_kajona", $arrFields, array("user_id"))) { $strReturn .= "An error occurred! ...\n"; } // User group table ----------------------------------------------------------------------------- $strReturn .= "Installing table user_group...\n"; $arrFields = array(); $arrFields["group_id"] = array("char20", false); $arrFields["group_name"] = array("char254", true); $arrFields["group_subsystem"] = array("char254", true); if (!$this->objDB->createTable("user_group", $arrFields, array("group_id"), array("group_name", "group_subsystem"))) { $strReturn .= "An error occurred! ...\n"; } $strReturn .= "Installing table user_group_kajona...\n"; $arrFields = array(); $arrFields["group_id"] = array("char20", false); $arrFields["group_desc"] = array("char254", true); if (!$this->objDB->createTable("user_group_kajona", $arrFields, array("group_id"))) { $strReturn .= "An error occurred! ...\n"; } // User group_members table --------------------------------------------------------------------- $strReturn .= "Installing table user_kajona_members...\n"; $arrFields = array(); $arrFields["group_member_group_kajona_id"] = array("char20", false); $arrFields["group_member_user_kajona_id"] = array("char20", false); if (!$this->objDB->createTable("user_kajona_members", $arrFields, array("group_member_group_kajona_id", "group_member_user_kajona_id"))) { $strReturn .= "An error occurred! ...\n"; } // User log table ------------------------------------------------------------------------------- $strReturn .= "Installing table user_log...\n"; $arrFields = array(); $arrFields["user_log_id"] = array("char20", false); $arrFields["user_log_userid"] = array("char254", true); $arrFields["user_log_date"] = array("long", true); $arrFields["user_log_status"] = array("int", true); $arrFields["user_log_ip"] = array("char20", true); $arrFields["user_log_sessid"] = array("char20", true); $arrFields["user_log_enddate"] = array("long", true); if (!$this->objDB->createTable("user_log", $arrFields, array("user_log_id"), array("user_log_sessid"))) { $strReturn .= "An error occurred! ...\n"; } // Sessionmgtm ---------------------------------------------------------------------------------- $strReturn .= "Installing table session...\n"; $arrFields = array(); $arrFields["session_id"] = array("char20", false); $arrFields["session_phpid"] = array("char254", true); $arrFields["session_userid"] = array("char20", true); $arrFields["session_groupids"] = array("text", true); $arrFields["session_releasetime"] = array("int", true); $arrFields["session_loginstatus"] = array("char254", true); $arrFields["session_loginprovider"] = array("char20", true); $arrFields["session_lasturl"] = array("char500", true); if (!$this->objDB->createTable("session", $arrFields, array("session_id"), array("session_phpid", "session_releasetime", "session_userid"))) { $strReturn .= "An error occurred! ...\n"; } // caching -------------------------------------------------------------------------------------- $strReturn .= "Installing table cache...\n"; $arrFields = array(); $arrFields["cache_id"] = array("char20", false); $arrFields["cache_source"] = array("char254", true); $arrFields["cache_hash1"] = array("char254", true); $arrFields["cache_hash2"] = array("char254", true); $arrFields["cache_language"] = array("char20", true); $arrFields["cache_content"] = array("longtext", true); $arrFields["cache_leasetime"] = array("int", true); $arrFields["cache_hits"] = array("int", true); if (!$this->objDB->createTable("cache", $arrFields, array("cache_id"), array("cache_source", "cache_hash1", "cache_leasetime", "cache_language"), false)) { $strReturn .= "An error occurred! ...\n"; } //languages ------------------------------------------------------------------------------------- $strReturn .= "Installing table languages...\n"; $objManager->createTable("class_module_languages_language"); $strReturn .= "Installing table languages_languageset...\n"; $arrFields = array(); $arrFields["languageset_id"] = array("char20", false); $arrFields["languageset_language"] = array("char20", true); $arrFields["languageset_systemid"] = array("char20", true); if (!$this->objDB->createTable("languages_languageset", $arrFields, array("languageset_id", "languageset_systemid"))) { $strReturn .= "An error occurred! ...\n"; } //aspects -------------------------------------------------------------------------------------- $strReturn .= "Installing table aspects...\n"; $objManager->createTable("class_module_system_aspect"); //changelog ------------------------------------------------------------------------------------- $strReturn .= "Installing table changelog...\n"; $this->installChangeTables(); //messages $strReturn .= "Installing table messages...\n"; $objManager->createTable("class_module_messaging_message"); $objManager->createTable("class_module_messaging_config"); //Now we have to register module by module //The Systemkernel $this->registerModule("system", _system_modul_id_, "", "class_module_system_admin.php", $this->objMetadata->getStrVersion(), true, "", "class_module_system_admin_xml.php"); //The Rightsmodule $this->registerModule("right", _system_modul_id_, "", "class_module_right_admin.php", $this->objMetadata->getStrVersion(), false); //The Usermodule $this->registerModule("user", _user_modul_id_, "", "class_module_user_admin.php", $this->objMetadata->getStrVersion(), true); //languages $this->registerModule("languages", _languages_modul_id_, "class_modul_languages_portal.php", "class_module_languages_admin.php", $this->objMetadata->getStrVersion(), true); //messaging $this->registerModule("messaging", _messaging_module_id_, "", "class_module_messaging_admin.php", $this->objMetadata->getStrVersion(), true); //Registering a few constants $strReturn .= "Registering system-constants...\n"; //And the default skin $this->registerConstant("_admin_skin_default_", "kajona_v4", class_module_system_setting::$int_TYPE_STRING, _user_modul_id_); //and a few system-settings $this->registerConstant("_system_portal_disable_", "false", class_module_system_setting::$int_TYPE_BOOL, _system_modul_id_); $this->registerConstant("_system_portal_disablepage_", "", class_module_system_setting::$int_TYPE_PAGE, _system_modul_id_); //New in 3.0: Number of db-dumps to hold $this->registerConstant("_system_dbdump_amount_", 5, class_module_system_setting::$int_TYPE_INT, _system_modul_id_); //new in 3.0: mod-rewrite on / off $this->registerConstant("_system_mod_rewrite_", "false", class_module_system_setting::$int_TYPE_BOOL, _system_modul_id_); //New Constant: Max time to lock records $this->registerConstant("_system_lock_maxtime_", 7200, class_module_system_setting::$int_TYPE_INT, _system_modul_id_); //Email to send error-reports $this->registerConstant("_system_admin_email_", $this->objSession->getSession("install_email"), class_module_system_setting::$int_TYPE_STRING, _system_modul_id_); $this->registerConstant("_system_email_defaultsender_", $this->objSession->getSession("install_email"), class_module_system_setting::$int_TYPE_STRING, _system_modul_id_); $this->registerConstant("_system_email_forcesender_", "false", class_module_system_setting::$int_TYPE_BOOL, _system_modul_id_); //3.0.2: user are allowed to change their settings? $this->registerConstant("_user_selfedit_", "true", class_module_system_setting::$int_TYPE_BOOL, _user_modul_id_); //3.1: nr of rows in admin $this->registerConstant("_admin_nr_of_rows_", 15, class_module_system_setting::$int_TYPE_INT, _system_modul_id_); $this->registerConstant("_admin_only_https_", "false", class_module_system_setting::$int_TYPE_BOOL, _system_modul_id_); //3.1: remoteloader max cachtime --> default 60 min $this->registerConstant("_remoteloader_max_cachetime_", 60 * 60, class_module_system_setting::$int_TYPE_INT, _system_modul_id_); //3.2: max session duration $this->registerConstant("_system_release_time_", 3600, class_module_system_setting::$int_TYPE_INT, _system_modul_id_); //3.4: cache buster to be able to flush the browsers cache (JS and CSS files) $this->registerConstant("_system_browser_cachebuster_", 0, class_module_system_setting::$int_TYPE_INT, _system_modul_id_); //3.4: Adding constant _system_graph_type_ indicating the chart-engine to use $this->registerConstant("_system_graph_type_", "jqplot", class_module_system_setting::$int_TYPE_STRING, _system_modul_id_); //3.4: Enabling or disabling the internal changehistory $this->registerConstant("_system_changehistory_enabled_", "false", class_module_system_setting::$int_TYPE_BOOL, _system_modul_id_); $this->registerConstant("_system_timezone_", "", class_module_system_setting::$int_TYPE_STRING, _system_modul_id_); //Creating the admin & guest groups $objAdminGroup = new class_module_user_group(); $objAdminGroup->setStrName("Admins"); $objAdminGroup->updateObjectToDb(); $strReturn .= "Registered Group Admins...\n"; $objGuestGroup = new class_module_user_group(); $objGuestGroup->setStrName("Guests"); $objGuestGroup->updateObjectToDb(); $strReturn .= "Registered Group Guests...\n"; //Systemid of guest-user & admin group $strGuestID = $objGuestGroup->getSystemid(); $strAdminID = $objAdminGroup->getSystemid(); $this->registerConstant("_guests_group_id_", $strGuestID, class_module_system_setting::$int_TYPE_STRING, _user_modul_id_); $this->registerConstant("_admins_group_id_", $strAdminID, class_module_system_setting::$int_TYPE_STRING, _user_modul_id_); //Create an root-record for the tree //So, lets generate the record $strQuery = "INSERT INTO " . _dbprefix_ . "system\n ( system_id, system_prev_id, system_module_nr, system_create_date, system_lm_time, system_status, system_sort, system_class) VALUES\n (?, ?, ?, ?, ?, ?, ?, ?)"; //Send the query to the db $this->objDB->_pQuery($strQuery, array(0, 0, _system_modul_id_, class_date::getCurrentTimestamp(), time(), 1, 1, "class_module_system_common")); //BUT: We have to modify the right-record of the root node, too $strGroupsAll = $strGuestID . "," . $strAdminID; $strGroupsAdmin = $strAdminID; $strQuery = "INSERT INTO " . _dbprefix_ . "system_right\n (right_id, right_inherit, right_view, right_edit, right_delete, right_right, right_right1, right_right2, right_right3, right_right4, right_right5, right_changelog) VALUES\n (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; $this->objDB->_pQuery($strQuery, array(0, 0, $strGroupsAll, $strGroupsAdmin, $strGroupsAdmin, $strGroupsAdmin, $strGroupsAdmin, $strGroupsAdmin, $strGroupsAdmin, $strGroupsAdmin, $strGroupsAdmin, $strGroupsAdmin)); $this->objDB->flushQueryCache(); $strReturn .= "Modified root-rights....\n"; class_carrier::getInstance()->getObjRights()->rebuildRightsStructure(); $strReturn .= "Rebuilt rights structures...\n"; //Creating an admin-user $strUsername = "******"; $strPassword = "******"; $strEmail = ""; //Login-Data given from installer? if ($this->objSession->getSession("install_username") !== false && $this->objSession->getSession("install_username") != "" && $this->objSession->getSession("install_password") !== false && $this->objSession->getSession("install_password") != "") { $strUsername = $this->objSession->getSession("install_username"); $strPassword = $this->objSession->getSession("install_password"); $strEmail = $this->objSession->getSession("install_email"); } //create a default language $strReturn .= "Creating new default-language\n"; $objLanguage = new class_module_languages_language(); if ($this->strContentLanguage == "de") { $objLanguage->setStrName("de"); } else { $objLanguage->setStrName("en"); } $objLanguage->setBitDefault(true); $objLanguage->updateObjectToDb(); $strReturn .= "ID of new language: " . $objLanguage->getSystemid() . "\n"; //the admin-language $strAdminLanguage = $this->objSession->getAdminLanguage(); //creating a new default-aspect $strReturn .= "Registering new default aspects...\n"; $objAspect = new class_module_system_aspect(); $objAspect->setStrName("content"); $objAspect->setBitDefault(true); $objAspect->updateObjectToDb(); class_module_system_aspect::setCurrentAspectId($objAspect->getSystemid()); $objAspect = new class_module_system_aspect(); $objAspect->setStrName("management"); $objAspect->updateObjectToDb(); $objUser = new class_module_user_user(); $objUser->setStrUsername($strUsername); $objUser->setIntActive(1); $objUser->setIntAdmin(1); $objUser->setStrAdminlanguage($strAdminLanguage); $objUser->updateObjectToDb(); $objUser->getObjSourceUser()->setStrPass($strPassword); $objUser->getObjSourceUser()->setStrEmail($strEmail); $objUser->getObjSourceUser()->updateObjectToDb(); $strReturn .= "Created User Admin: <strong>Username: "******", Password: ***********</strong> ...\n"; //The Admin should belong to the admin-Group $objAdminGroup->getObjSourceGroup()->addMember($objUser->getObjSourceUser()); $strReturn .= "Registered Admin in Admin-Group...\n"; $strReturn .= "Assigning modules to default aspects...\n"; $objModule = class_module_system_module::getModuleByName("system"); $objModule->setStrAspect(class_module_system_aspect::getAspectByName("management")->getSystemid()); $objModule->updateObjectToDb(); $objModule = class_module_system_module::getModuleByName("user"); $objModule->setStrAspect(class_module_system_aspect::getAspectByName("management")->getSystemid()); $objModule->updateObjectToDb(); $objModule = class_module_system_module::getModuleByName("languages"); $objModule->setStrAspect(class_module_system_aspect::getAspectByName("management")->getSystemid()); $objModule->updateObjectToDb(); $strReturn .= "Trying to copy the *.root files to top-level...\n"; $arrFiles = array("index.php", "image.php", "xml.php", ".htaccess", "v3_v4_postupdate.php"); foreach ($arrFiles as $strOneFile) { if (!file_exists(_realpath_ . "/" . $strOneFile) && is_file(class_resourceloader::getInstance()->getCorePathForModule("module_system", true) . "/module_system/" . $strOneFile . ".root")) { if (!copy(class_resourceloader::getInstance()->getCorePathForModule("module_system", true) . "/module_system/" . $strOneFile . ".root", _realpath_ . "/" . $strOneFile)) { $strReturn .= "<b>Copying " . $strOneFile . ".root to top level failed!!!</b>"; } } } $strReturn .= "Setting messaging to pos 1 in navigation.../n"; $objModule = class_module_system_module::getModuleByName("messaging"); $objModule->setAbsolutePosition(1); return $strReturn; }
/** * Determines the page-data to load. * This includes the evaluation of the current page-data and the fallback to another language or even the error-page * * @throws class_exception * @return class_module_pages_page */ private function getPageData() { $strPagename = $this->getPagename(); //Load the data of the page $objPageData = class_module_pages_page::getPageByName($strPagename); //check, if the page is enabled and if the rights are given, or if we want to load a preview of a page $bitErrorpage = false; if ($objPageData == null || ($objPageData->getIntRecordStatus() != 1 || !$objPageData->rightView())) { $bitErrorpage = true; } //but: if count != 0 && preview && rights: if ($bitErrorpage && $objPageData != null && $this->getParam("preview") == "1" && $objPageData->rightEdit()) { $bitErrorpage = false; } //check, if the template could be loaded try { if (!$bitErrorpage) { $this->objTemplate->readTemplate("/module_pages/" . $objPageData->getStrTemplate(), "", false, true); } } catch (class_exception $objException) { $bitErrorpage = true; } if ($bitErrorpage) { //Unfortunately, we have to load the errorpage //try to send the correct header //page not found if ($objPageData == null || $objPageData->getIntRecordStatus() != 1) { class_response_object::getInstance()->setStrStatusCode(class_http_statuscodes::SC_NOT_FOUND); } //user is not allowed to view the page if ($objPageData != null && !$objPageData->rightView()) { class_response_object::getInstance()->setStrStatusCode(class_http_statuscodes::SC_FORBIDDEN); } //check, if the page may be loaded using the default-language $strPreviousLang = $this->getStrPortalLanguage(); $objDefaultLang = class_module_languages_language::getDefaultLanguage(); if ($this->getStrPortalLanguage() != $objDefaultLang->getStrName()) { class_logger::getInstance()->addLogRow("Requested page " . $strPagename . " not existing in language " . $this->getStrPortalLanguage() . ", switch to fallback lang", class_logger::$levelWarning); $objDefaultLang->setStrPortalLanguage($objDefaultLang->getStrName()); $objPageData = class_module_pages_page::getPageByName($strPagename); $bitErrorpage = false; try { if ($objPageData != null) { $this->objTemplate->readTemplate("/module_pages/" . $objPageData->getStrTemplate(), "", false, true); } else { $bitErrorpage = true; } } catch (class_exception $objException) { $bitErrorpage = true; } if ($bitErrorpage) { $strPagename = class_module_system_setting::getConfigValue("_pages_errorpage_"); $this->setParam("page", class_module_system_setting::getConfigValue("_pages_errorpage_")); //revert to the old language - fallback didn't work $objDefaultLang->setStrPortalLanguage($strPreviousLang); } } else { $strPagename = class_module_system_setting::getConfigValue("_pages_errorpage_"); $this->setParam("page", class_module_system_setting::getConfigValue("_pages_errorpage_")); } $objPageData = class_module_pages_page::getPageByName($strPagename); //check, if the page is enabled and if the rights are given, too if ($objPageData == null || ($objPageData->getIntRecordStatus() != 1 || !$objPageData->rightView())) { //Whoops. Nothing to output here throw new class_exception("Requested Page " . $strPagename . " not existing, no errorpage created or set!", class_exception::$level_FATALERROR); } } return $objPageData; }
echo "<input type=\"hidden\" name=\"doinstall\" value=\"1\" />"; echo "<input type=\"submit\" value=\"Run Installer\" />"; echo "</form>"; if (issetPost("doinstall")) { $intStart = time(); $arrFiles = class_resourceloader::getInstance()->getFolderContent("/installer", array(".php"), false, function ($strFile) { return strpos($strFile, "installer_sc_") !== false && substr($strFile, -4) == ".php"; }); foreach (getPost("installer") as $strFilename => $strValue) { $strSearched = array_search($strFilename, $arrFiles); if ($strSearched !== false) { echo " \n\nfound installer " . $strFilename . " \n"; include_once _realpath_ . $strSearched; $strName = $strClass = "class_" . str_replace(".php", "", $strFilename); $objInstaller = new $strName(); $objLang = new class_module_languages_language(); if ($objInstaller instanceof interface_sc_installer) { $strModule = $objInstaller->getCorrespondingModule(); echo "Module " . $strModule . "...\n"; $objModule = class_module_system_module::getModuleByName($strModule); if ($objModule == null) { echo "\t... not installed!\n"; } else { echo "\t... installed.\n"; $objInstaller->setObjDb(class_carrier::getInstance()->getObjDB()); $objInstaller->setStrContentlanguage($objLang->getStrAdminLanguageToWorkOn()); echo $objInstaller->install(); } } } echo "time needed: " . round((time() - $intStart) / 60, 3) . " min\n\n\n";
/** * @return void */ protected function actionAssignToLanguageset() { $objNews = class_objectfactory::getInstance()->getObject($this->getSystemid()); if ($objNews->rightEdit()) { $objLanguageset = class_module_languages_languageset::getLanguagesetForSystemid($this->getSystemid()); $objTargetLanguage = new class_module_languages_language($this->getParam("languageset_language")); if ($objLanguageset == null && $objTargetLanguage->getStrName() != "") { $objLanguageset = new class_module_languages_languageset(); $objLanguageset->setSystemidForLanguageid($this->getSystemid(), $objTargetLanguage->getSystemid()); } $this->adminReload(class_link::getLinkAdminHref($this->getArrModule("modul"), "editLanguageset", "&systemid=" . $this->getSystemid())); } }
/** * 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(); }
/** * Return an on-lick link for the passed object. * This link is rendered by the portal search result generator, so * make sure the link is a valid portal page. * If you want to suppress the entry from the result, return an empty string instead. * If you want to add additional entries to the result set, clone the result and modify * the new instance to your needs. Pack them in an array and they'll be merged * into the result set afterwards. * Make sure to return the passed result-object in this array, too. * * @param class_search_result $objResult * * @see getLinkPortalHref() * @return mixed */ public function updateSearchResult(class_search_result $objResult) { $objLanguages = new class_module_languages_language(); $objORM = new class_orm_objectlist(); $strQuery = "SELECT page_name, page_id\r\n FROM " . _dbprefix_ . "element_downloads,\r\n " . _dbprefix_ . "page_element,\r\n " . _dbprefix_ . "page,\r\n " . _dbprefix_ . "system\r\n WHERE download_id = ?\r\n AND content_id = page_element_id\r\n AND content_id = system_id\r\n AND system_prev_id = page_id\r\n AND system_status = 1\r\n " . $objORM->getDeletedWhereRestriction() . "\r\n AND page_element_ph_language = ? "; $arrRows = $this->objDB->getPArray($strQuery, array($this->getRepositoryId(), $objResult->getObjSearch()->getStrPortalLangFilter())); $strQuery = "SELECT page_name, page_id\r\n FROM " . _dbprefix_ . "element_gallery,\r\n " . _dbprefix_ . "page_element,\r\n " . _dbprefix_ . "page,\r\n " . _dbprefix_ . "system\r\n WHERE gallery_id = ?\r\n AND content_id = page_element_id\r\n AND content_id = system_id\r\n AND system_prev_id = page_id\r\n AND system_status = 1\r\n " . $objORM->getDeletedWhereRestriction() . "\r\n AND page_element_ph_language = ? "; $arrRows = array_merge($arrRows, $this->objDB->getPArray($strQuery, array($this->getRepositoryId(), $objLanguages->getStrPortalLanguage()))); $arrReturn = array(); foreach ($arrRows as $arrOnePage) { if (!isset($arrOnePage["page_name"]) || $arrOnePage["page_name"] == "") { continue; } $objOneResult = clone $objResult; $objOneResult->setStrPagelink(class_link::getLinkPortal($arrOnePage["page_name"], "", "_self", $this->getStrDisplayName(), "mediaFolder", "&highlight=" . urlencode(html_entity_decode($objResult->getObjSearch()->getStrQuery(), ENT_QUOTES, "UTF-8")), $this->getPrevId(), "", "", $this->getStrDisplayName())); $objOneResult->setStrPagename($arrOnePage["page_name"]); $objOneResult->setStrDescription($this->getStrDescription()); $arrReturn[] = $objOneResult; } return $arrReturn; }
public function testPageElementDeleteSorting() { $objPage = new class_module_pages_page(); $objPage->setStrName("sortTest"); $objPage->updateObjectToDb(); $objLangugage = new class_module_languages_language(); $objPagelementb1 = new class_module_pages_pageelement(); $objPagelementb1->setStrPlaceholder("b_test"); $objPagelementb1->setStrName("b"); $objPagelementb1->setStrElement("row"); $objPagelementb1->setStrLanguage($objLangugage->getStrAdminLanguageToWorkOn()); $objPagelementb1->updateObjectToDb($objPage->getSystemid()); $objPagelementb2 = new class_module_pages_pageelement(); $objPagelementb2->setStrPlaceholder("b_test"); $objPagelementb2->setStrName("b"); $objPagelementb2->setStrElement("row"); $objPagelementb2->setStrLanguage($objLangugage->getStrAdminLanguageToWorkOn()); $objPagelementb2->updateObjectToDb($objPage->getSystemid()); $objPagelementb3 = new class_module_pages_pageelement(); $objPagelementb3->setStrPlaceholder("b_test"); $objPagelementb3->setStrName("b"); $objPagelementb3->setStrElement("row"); $objPagelementb3->setStrLanguage($objLangugage->getStrAdminLanguageToWorkOn()); $objPagelementb3->updateObjectToDb($objPage->getSystemid()); $arrElements = class_module_pages_pageelement::getElementsByPlaceholderAndPage($objPage->getSystemid(), "b_test", $objLangugage->getStrAdminLanguageToWorkOn(), false); $this->assertEquals(3, count($arrElements)); $this->assertEquals(1, $arrElements[0]->getIntSort()); $this->assertEquals($objPagelementb1->getSystemid(), $arrElements[0]->getSystemid()); $this->assertEquals(2, $arrElements[1]->getIntSort()); $this->assertEquals($objPagelementb2->getSystemid(), $arrElements[1]->getSystemid()); $this->assertEquals(3, $arrElements[2]->getIntSort()); $this->assertEquals($objPagelementb3->getSystemid(), $arrElements[2]->getSystemid()); $objPagelementb2->deleteObjectFromDatabase(); $this->flushDBCache(); $arrElements = class_module_pages_pageelement::getElementsByPlaceholderAndPage($objPage->getSystemid(), "b_test", $objLangugage->getStrAdminLanguageToWorkOn(), false); $this->assertEquals(2, count($arrElements)); $this->assertEquals(1, $arrElements[0]->getIntSort()); $this->assertEquals($objPagelementb1->getSystemid(), $arrElements[0]->getSystemid()); $this->assertEquals(2, $arrElements[1]->getIntSort()); $this->assertEquals($objPagelementb3->getSystemid(), $arrElements[1]->getSystemid()); $objPage->deleteObjectFromDatabase(); }
private function processSinglePage($arrPage, $bitReplaceExisting, $strTopFolderId) { $strReturn = ""; $arrMetadata = $arrPage["metadata"][0]; $arrElements = $arrPage["elements"][0]["element"]; //create page itself $strPagename = $arrMetadata["pagename"][0]["value"]; $strPrevId = ""; //check if the exported prev-values may be used $strImportPrevName = $arrMetadata["prevname"][0]["value"]; if ($strImportPrevName != "") { $objPage = class_module_pages_page::getPageByName($strImportPrevName); if ($objPage !== null) { $strPrevId = $objPage->getSystemid(); } } elseif (validateSystemid($arrMetadata["previd"][0]["value"])) { $objRoot = class_objectfactory::getInstance()->getObject($arrMetadata["previd"][0]["value"]); if ($objRoot !== null) { $strPrevId = $arrMetadata["previd"][0]["value"]; } } if ($strPrevId == "") { $strPrevId = $strTopFolderId; } //check if an existing page should be replaced if ($bitReplaceExisting) { $objPage = class_module_pages_page::getPageByName($strPagename); if ($objPage !== null) { $strPrevId = $objPage->getPrevId(); $objPage->deleteObject(); } class_carrier::getInstance()->getObjDB()->flushQueryCache(); } $objPage = new class_module_pages_page(); $objPage->setStrName($strPagename); $objPage->updateObjectToDb($strPrevId); $strPageId = $objPage->getSystemid(); $strReturn .= "created page " . $objPage->getStrName() . "\n"; //save propertysets $objLanguages = new class_module_languages_language(); $strCurrentLanguage = $objLanguages->getStrAdminLanguageToWorkOn(); $arrPropertysets = $arrMetadata["pageproperties"][0]["propertyset"]; foreach ($arrPropertysets as $arrOnePropSet) { class_carrier::getInstance()->getObjDB()->flushQueryCache(); $objLanguages->setStrAdminLanguageToWorkOn($arrOnePropSet["attributes"]["language"]); //reload page to save correct prop-sets $objPage = new class_module_pages_page($strPageId); $objPage->setStrLanguage($arrOnePropSet["language"][0]["value"]); $objPage->setStrBrowsername($arrOnePropSet["browsername"][0]["value"]); $objPage->setStrDesc($arrOnePropSet["description"][0]["value"]); $objPage->setStrKeywords($arrOnePropSet["keywords"][0]["value"]); $objPage->setStrTemplate($arrOnePropSet["template"][0]["value"]); $objPage->setStrSeostring($arrOnePropSet["seostring"][0]["value"]); $objPage->setStrLanguage($arrOnePropSet["language"][0]["value"]); $objPage->setStrAlias($arrOnePropSet["alias"][0]["value"]); $objPage->setStrTarget($arrOnePropSet["target"][0]["value"]); $objPage->setStrPath($arrOnePropSet["path"][0]["value"]); $objPage->updateObjectToDb(); $strReturn .= "saved propertyset for language " . $objPage->getStrLanguage() . "\n"; } $objLanguages->setStrAdminLanguageToWorkOn($strCurrentLanguage); //and import each element foreach ($arrElements as $arrSingleElement) { //validate if element exists $strElementName = $arrSingleElement["metadata"][0]["element"][0]["value"]; if (class_module_pages_element::getElement($strElementName) !== null) { $objElement = new class_module_pages_pageelement(); $objElement->setStrPlaceholder($arrSingleElement["metadata"][0]["placeholder"][0]["value"]); $objElement->setStrName($arrSingleElement["metadata"][0]["name"][0]["value"]); $objElement->setStrElement($arrSingleElement["metadata"][0]["element"][0]["value"]); $objElement->setStrTitle($arrSingleElement["metadata"][0]["title"][0]["value"]); $objElement->setStrLanguage($arrSingleElement["metadata"][0]["language"][0]["value"]); $objElement->updateObjectToDb($strPageId); //and the foreign table $strTable = $arrSingleElement["foreignTable"][0]["attributes"]["table"]; $arrValues = array(); foreach ($arrSingleElement["foreignTable"][0]["column"] as $arrColumn) { $arrValues[$arrColumn["attributes"]["name"]] = isset($arrColumn["value"]) ? $arrColumn["value"] : ""; } unset($arrValues["content_id"]); //and build the query itself $strQuery = "UPDATE " . class_carrier::getInstance()->getObjDB()->encloseTableName(_dbprefix_ . $strTable) . " SET "; $arrInsertValues = array(); $arrEscapes = array(); $arrColumns = class_carrier::getInstance()->getObjDB()->getColumnsOfTable(_dbprefix_ . $strTable); $arrColumns = array_map(function ($arrColumn) { return $arrColumn["columnName"]; }, $arrColumns); foreach ($arrValues as $strColumn => $strValue) { if (!in_array($strColumn, $arrColumns)) { continue; } $strQuery .= class_carrier::getInstance()->getObjDB()->encloseColumnName($strColumn) . " = ? ,"; $arrInsertValues[] = $strValue; $arrEscapes[] = false; } $strQuery = uniSubstr($strQuery, 0, -1); $strQuery .= " WHERE content_id = ?"; $arrInsertValues[] = $objElement->getSystemid(); class_carrier::getInstance()->getObjDB()->_pQuery($strQuery, $arrInsertValues, $arrEscapes); $strReturn .= "created element " . $objElement->getStrName() . "\n"; } else { $strReturn .= "error: element " . $strElementName . " not existing"; } } return $this->objToolkit->getPreformatted(array($strReturn)); }
/** * Creates a new languageset for the passed systemid and returns the new * instance. * If there's a languageset already existing, the languageset is loaded * instead of creating a new one. * * @param string $strSystemid * @param class_module_languages_language $objTargetLanguage * * @return class_module_languages_languageset */ public static function createLanguagesetForSystemid($strSystemid, $objTargetLanguage) { //already existing? $objLanguageset = class_module_languages_languageset::getLanguagesetForSystemid($strSystemid); if ($objLanguageset == null) { //create a new one $objLanguageset = new class_module_languages_languageset(""); $objLanguageset->setSystemidForLanguageid($strSystemid, $objTargetLanguage->getSystemid()); } else { if ($objLanguageset->getSystemidForLanguageid($objTargetLanguage->getSystemid()) == null) { //update the languageset $objLanguageset->setSystemidForLanguageid($strSystemid, $objTargetLanguage->getSystemid()); } } return new $objLanguageset(); }
/** * Helper to fetch the portal language * @return null|string */ private static function getStrPortalLanguage() { if (self::$strPortalLanguage == null) { $objLang = new class_module_languages_language(); self::$strPortalLanguage = $objLang->getStrPortalLanguage(); } return self::$strPortalLanguage; }
/** * Processes a portal-request * * @param string $strModule * @param string $strAction * @param string $strLanguageParam * * @throws class_exception * @return string */ private function processPortalRequest($strModule, $strAction, $strLanguageParam) { $strReturn = ""; //process language-param if (class_module_system_module::getModuleByName("languages") != null) { $objLanguage = new class_module_languages_language(); $objLanguage->setStrPortalLanguage($strLanguageParam); } //Load the portal parts $objModule = class_module_system_module::getModuleByName($strModule); if ($objModule != null) { if (_xmlLoader_) { if ($objModule->getStrXmlNamePortal() != "") { $strClassname = str_replace(".php", "", $objModule->getStrXmlNamePortal()); $objModuleRequested = new $strClassname(); $strReturn = $objModuleRequested->action($strAction); } else { $objModuleRequested = $objModule->getPortalInstanceOfConcreteModule(); $strReturn = $objModuleRequested->action($strAction); } } else { if ($strModule == "pages") { $strAction = ""; } //fill the history array to track actions $objHistory = new class_history(); $objHistory->setPortalHistory(); $objModuleRequested = $objModule->getPortalInstanceOfConcreteModule(); $strReturn = $objModuleRequested->action($strAction); } } else { if (_xmlLoader_ === false) { if (count(class_carrier::getInstance()->getObjDB()->getTables()) == 0 && file_exists(_realpath_ . "/installer.php")) { class_response_object::getInstance()->setStrRedirectUrl(_webpath_ . "/installer.php"); return ""; //throw new class_exception("Module Pages not installed, redirect to installer", class_exception::$level_ERROR); } } throw new class_exception("module " . $strModule . " not installed!", class_exception::$level_FATALERROR); } return $strReturn; }
private function createPageMetadata($strPageId, XMLWriter $objWriter) { //loop all languages if given $objLanguages = new class_module_languages_language(); $strCurrentLanguage = $objLanguages->getStrAdminLanguageToWorkOn(); $arrLanguages = class_module_languages_language::getObjectList(); foreach ($arrLanguages as $objOneLanguage) { $objLanguages->setStrAdminLanguageToWorkOn($objOneLanguage->getStrName()); $objPage = new class_module_pages_page($strPageId); $objWriter->startElement("propertyset"); $objWriter->startAttribute("language"); $objWriter->text($objOneLanguage->getStrName()); $objWriter->endAttribute(); $objWriter->startElement("browsername"); $objWriter->text($objPage->getStrBrowsername()); $objWriter->endElement(); $objWriter->startElement("description"); $objWriter->text($objPage->getStrDesc()); $objWriter->endElement(); $objWriter->startElement("keywords"); $objWriter->text($objPage->getStrKeywords()); $objWriter->endElement(); $objWriter->startElement("template"); $objWriter->text($objPage->getStrTemplate()); $objWriter->endElement(); $objWriter->startElement("seostring"); $objWriter->text($objPage->getStrSeostring()); $objWriter->endElement(); $objWriter->startElement("language"); $objWriter->text($objPage->getStrLanguage()); $objWriter->endElement(); $objWriter->startElement("alias"); $objWriter->text($objPage->getStrAlias()); $objWriter->endElement(); $objWriter->startElement("path"); $objWriter->text($objPage->getStrPath()); $objWriter->endElement(); $objWriter->startElement("target"); $objWriter->text($objPage->getStrTarget()); $objWriter->endElement(); //propertyset $objWriter->endElement(); } $objLanguages->setStrAdminLanguageToWorkOn($strCurrentLanguage); }
/** * Writes the passed language to the session, if the language exists * * @param string $strLanguage */ public function setStrAdminLanguageToWorkOn($strLanguage) { $objLanguage = class_module_languages_language::getLanguageByName($strLanguage); if ($objLanguage !== false) { if ($objLanguage->getIntRecordStatus() != 0) { if (!$this->objSession->getBitClosed()) { $this->objSession->setSession("adminLanguage", $objLanguage->getStrName()); } } } }