/**
  * 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()));
     }
 }
Esempio n. 17
0
 /**
  * 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;
 }
Esempio n. 19
0
 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();
 }
Esempio n. 22
0
 /**
  * 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());
             }
         }
     }
 }