/**
  * Does the hard work: installs the module and registers needed constants
  *
  * @return string
  */
 public function install()
 {
     $strReturn = "";
     //search the master page
     $objMaster = class_module_pages_page::getPageByName("master");
     if ($objMaster != null) {
         $this->strMasterID = $objMaster->getSystemid();
     }
     if ($this->strMasterID != "") {
         $strReturn .= "Adding languageswitch to master page\n";
         $strReturn .= "ID of master page: " . $this->strMasterID . "\n";
         if (class_module_pages_element::getElement("languageswitch") != null) {
             $objPagelement = new class_module_pages_pageelement();
             $objPagelement->setStrPlaceholder("masterlanguageswitch_languageswitch");
             $objPagelement->setStrName("masterswitch");
             $objPagelement->setStrElement("languageswitch");
             $objPagelement->updateObjectToDb($this->strMasterID);
             $strElementId = $objPagelement->getSystemid();
             $strReturn .= "ID of element: " . $strElementId . "\n";
             $strReturn .= "Element created.\n";
             $strReturn .= "Setting languageswitch template...\n";
             $strQuery = "UPDATE " . _dbprefix_ . "element_universal\n                            SET char1 = ?\n                            WHERE content_id = ? ";
             $this->objDB->_pQuery($strQuery, array("languageswitch.tpl", $strElementId));
         }
     }
     return $strReturn;
 }
 /**
  * Returns the ready image-htmlcode
  *
  * @return string
  */
 public function loadData()
 {
     $strReturn = "";
     $strTemplate = $this->arrElementData["image_template"];
     //fallback
     if ($strTemplate == "") {
         $strTemplate = "image.tpl";
     }
     //choose template section
     if ($this->arrElementData["image_link"] != "") {
         $strTemplateID = $this->objTemplate->readTemplate("/element_image/" . $strTemplate, "image_link");
     } else {
         $strTemplateID = $this->objTemplate->readTemplate("/element_image/" . $strTemplate, "image");
     }
     $this->arrElementData["image_src"] = $this->arrElementData["image_image"];
     //TODO: rename db columns as well and remove this two lines
     $this->arrElementData["image_width"] = $this->arrElementData["image_x"];
     $this->arrElementData["image_height"] = $this->arrElementData["image_y"];
     //Link?
     if ($this->arrElementData["image_link"] != "") {
         //internal page?
         if (class_module_pages_page::getPageByName($this->arrElementData["image_link"]) !== null) {
             $this->arrElementData["link_href"] = getLinkPortalHref($this->arrElementData["image_link"], "");
         } else {
             $this->arrElementData["link_href"] = getLinkPortalHref("", $this->arrElementData["image_link"]);
         }
     }
     $strReturn .= $this->fillTemplate($this->arrElementData, $strTemplateID);
     return $strReturn;
 }
 /**
  * @param $strSearchterm
  * @param class_search_result[] $arrResults
  *
  * @return string
  */
 private function createSearchXML($strSearchterm, $arrResults)
 {
     $strReturn = "";
     $strReturn .= "<search>\n" . "    <searchterm>" . xmlSafeString($strSearchterm) . "</searchterm>\n" . "    <nrofresults>" . count($arrResults) . "</nrofresults>\n";
     //And now all results
     $intI = 0;
     $strReturn .= "    <resultset>\n";
     foreach ($arrResults as $objOneResult) {
         $objPage = class_module_pages_page::getPageByName($objOneResult->getStrPagename());
         if ($objPage === null || !$objPage->rightView() || $objPage->getIntRecordStatus() != 1) {
             continue;
         }
         if (++$intI > self::$INT_MAX_NR_OF_RESULTS) {
             break;
         }
         //create a correct link
         if ($objOneResult->getStrPagelink() == "") {
             $objOneResult->setStrPagelink(getLinkPortal($objOneResult->getStrPagename(), "", "_self", $objOneResult->getStrPagename(), "", "&highlight=" . $strSearchterm . "#" . $strSearchterm));
         }
         $strReturn .= "        <item>\n" . "            <pagename>" . $objOneResult->getStrPagename() . "</pagename>\n" . "            <pagelink>" . $objOneResult->getStrPagelink() . "</pagelink>\n" . "            <score>" . $objOneResult->getIntHits() . "</score>\n" . "            <description>" . xmlSafeString(uniStrTrim($objOneResult->getStrDescription(), 200)) . "</description>\n" . "        </item>\n";
     }
     $strReturn .= "    </resultset>\n";
     $strReturn .= "</search>";
     return $strReturn;
 }
 /**
  * Looks up the last modified-date of the current page
  *
  * @return string the prepared html-output
  */
 public function loadData()
 {
     $strReturn = "";
     //load the current page
     $objPage = class_module_pages_page::getPageByName($this->getPagename());
     if ($objPage != null) {
         $strReturn .= $this->getLang("lastmodified") . timeToString($objPage->getIntLmTime());
     }
     return $strReturn;
 }
 public function testImportExport()
 {
     class_carrier::getInstance()->getObjRights()->setBitTestMode(true);
     $strName = generateSystemid();
     $strBrowsername = generateSystemid();
     $strSeoString = generateSystemid();
     $strDesc = generateSystemid();
     $objPage = new class_module_pages_page();
     $objPage->setStrName($strName);
     $objPage->setStrBrowsername($strBrowsername);
     $objPage->setStrSeostring($strSeoString);
     $objPage->setStrDesc($strDesc);
     $objPage->setStrTemplate("standard.tpl");
     $objPage->updateObjectToDb();
     $strPagesystemid = $objPage->getSystemid();
     $objPagelement = new class_module_pages_pageelement();
     $objPagelement->setStrPlaceholder("text_paragraph");
     $objPagelement->setStrName("text");
     $objPagelement->setStrElement("paragraph");
     $objPagelement->updateObjectToDb($objPage->getSystemid());
     $objElement = new class_element_paragraph_admin($objPagelement->getSystemid());
     $objElement->setSystemid($objPagelement->getSystemid());
     $objElement->loadElementData();
     $objElement->setStrTitle("para_title");
     $objElement->updateForeignElement();
     $objPagelement = new class_module_pages_pageelement($objPagelement->getSystemid());
     class_carrier::getInstance()->setParam("pageExport", $strName);
     $objPageExport = new class_systemtask_pageexport();
     $objPageExport->executeTask();
     $objPage->deleteObjectFromDatabase();
     class_orm_rowcache::flushCache();
     class_db::getInstance()->flushQueryCache();
     $this->assertNull(class_module_pages_page::getPageByName($strName));
     $this->assertFileExists(_realpath_ . _projectpath_ . "/temp/" . $strPagesystemid . ".xml");
     class_carrier::getInstance()->setParam("pageimport_file", _projectpath_ . "/temp/" . $strPagesystemid . ".xml");
     $objImport = new class_systemtask_pageimport();
     $objImport->executeTask();
     $objPage = class_module_pages_page::getPageByName($strName);
     $this->assertNotNull($objPage);
     $this->assertEquals($objPage->getStrName(), $strName);
     $this->assertEquals($objPage->getStrDesc(), $strDesc);
     $this->assertEquals($objPage->getStrSeostring(), $strSeoString);
     $this->assertEquals($objPage->getStrBrowsername(), $strBrowsername);
     $objElements = class_module_pages_pageelement::getAllElementsOnPage($objPage->getSystemid());
     $this->assertEquals(1, count($objElements));
     $objElements = $objElements[0];
     $this->assertEquals($objElements->getStrClassAdmin(), "class_element_paragraph_admin.php");
     $objElement = $objElements->getConcreteAdminInstance();
     $objElement->setSystemid($objElements->getSystemid());
     $objElement->loadElementData();
     $this->assertEquals("para_title", $objElement->getStrTitle());
     $objPage->deleteObjectFromDatabase();
 }
 /**
  * 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);
 }
 /**
  * Calls the single search-functions, sorts the results an creates the output
  *
  * @return string
  * @permissions view
  */
 protected function actionSearch()
 {
     $strReturn = "";
     //Read the config
     $arrTemplate = array();
     $arrTemplate["hitlist"] = "";
     $strReturn .= $this->actionList();
     $objSearchCommons = new class_module_search_commons();
     $this->objSearchSearch->setBitPortalObjectFilter(true);
     $this->objSearchSearch->setStrPortalLangFilter($this->getStrPortalLanguage());
     /** @var $arrHitsSorted class_search_result[] */
     $arrHitsSorted = $objSearchCommons->doPortalSearch($this->objSearchSearch);
     //Resize Array to wanted size
     $arrHitsFilter = $this->objToolkit->pager($this->arrElementData["search_amount"], $this->getParam("pv") != "" ? (int) $this->getParam("pv") : 1, $this->getLang("commons_next"), $this->getLang("commons_back"), "search", $this->arrElementData["search_page"] != "" ? $this->arrElementData["search_page"] : $this->getPagename(), $arrHitsSorted, "&searchterm=" . urlencode(html_entity_decode($this->objSearchSearch->getStrQuery(), ENT_COMPAT, "UTF-8")));
     $strRowTemplateID = $this->objTemplate->readTemplate("/module_search/" . $this->arrElementData["search_template"], "search_hitlist_hit");
     /** @var $objHit class_search_result */
     foreach ($arrHitsFilter["arrData"] as $objHit) {
         if ($objHit->getStrPagename() == "master") {
             continue;
         }
         $objPage = class_module_pages_page::getPageByName($objHit->getStrPagename());
         if ($objPage === null || !$objPage->rightView() || $objPage->getIntRecordStatus() != 1) {
             continue;
         }
         $arrRow = array();
         if ($objHit->getStrPagelink() == "") {
             $arrRow["page_link"] = getLinkPortal($objHit->getStrPagename(), "", "_self", $objHit->getStrPagename(), "", "&highlight=" . urlencode(html_entity_decode($this->objSearchSearch->getStrQuery(), ENT_QUOTES, "UTF-8")) . "#" . uniStrtolower(urlencode(html_entity_decode($this->objSearchSearch->getStrQuery(), ENT_QUOTES, "UTF-8"))));
         } else {
             $arrRow["page_link"] = $objHit->getStrPagelink();
         }
         $arrRow["page_description"] = uniStrTrim($objHit->getStrDescription(), 200);
         $arrTemplate["hitlist"] .= $this->objTemplate->fillTemplate($arrRow, $strRowTemplateID, false);
     }
     //Collect global data
     $arrTemplate["search_term"] = $this->objSearchSearch->getStrQuery();
     $arrTemplate["search_nrresults"] = count($arrHitsSorted);
     $arrTemplate["link_forward"] = $arrHitsFilter["strForward"];
     $arrTemplate["link_back"] = $arrHitsFilter["strBack"];
     $arrTemplate["link_overview"] = $arrHitsFilter["strPages"];
     $strTemplateID = $this->objTemplate->readTemplate("/module_search/" . $this->arrElementData["search_template"], "search_hitlist");
     return $strReturn . $this->fillTemplate($arrTemplate, $strTemplateID);
 }
 /**
  * Does a little "make-up" to the contents
  *
  * @return string
  */
 public function loadData()
 {
     $strReturn = "";
     $strTemplate = $this->arrElementData["paragraph_template"];
     //fallback
     if ($strTemplate == "") {
         $strTemplate = "paragraph.tpl";
     }
     //choose template section
     $strTemplateSection = "paragraph";
     if ($this->arrElementData["paragraph_image"] != "" && $this->arrElementData["paragraph_link"] != "") {
         $strTemplateSection = "paragraph_image_link";
     } else {
         if ($this->arrElementData["paragraph_image"] != "" && $this->arrElementData["paragraph_link"] == "") {
             $strTemplateSection = "paragraph_image";
         } else {
             if ($this->arrElementData["paragraph_image"] == "" && $this->arrElementData["paragraph_link"] != "") {
                 $strTemplateSection = "paragraph_link";
             }
         }
     }
     $strTemplateID = $this->objTemplate->readTemplate("/element_paragraph/" . $strTemplate, $strTemplateSection);
     if ($this->arrElementData["paragraph_image"] != "") {
         //remove the webpath (was added for paragraphs saved pre 3.3.0)
         $this->arrElementData["paragraph_image"] = str_replace("_webpath_", "", $this->arrElementData["paragraph_image"]);
     }
     if ($this->arrElementData["paragraph_link"] != "") {
         //internal page?
         if (class_module_pages_page::getPageByName($this->arrElementData["paragraph_link"]) !== null) {
             $this->arrElementData["paragraph_link"] = getLinkPortalHref($this->arrElementData["paragraph_link"]);
         } else {
             $this->arrElementData["paragraph_link"] = getLinkPortalHref("", $this->arrElementData["paragraph_link"]);
         }
     }
     if ($this->arrElementData["paragraph_title"] != "") {
         $strTemplateTitleID = $this->objTemplate->readTemplate("/element_paragraph/" . $strTemplate, "paragraph_title_tag");
         $this->arrElementData["paragraph_title_tag"] = $this->fillTemplate($this->arrElementData, $strTemplateTitleID);
     }
     $strReturn .= $this->fillTemplate($this->arrElementData, $strTemplateID);
     return $strReturn;
 }
 /**
  * Does the hard work: installs the module and registers needed constants
  *
  */
 public function install()
 {
     $strReturn = "";
     //fetch navifolder-id
     $strNaviFolderId = "";
     $arrFolder = class_module_pages_folder::getFolderList();
     foreach ($arrFolder as $objOneFolder) {
         if ($objOneFolder->getStrName() == "mainnavigation") {
             $strNaviFolderId = $objOneFolder->getSystemid();
         }
     }
     //search the index page
     $objIndex = class_module_pages_page::getPageByName("index");
     $objMaster = class_module_pages_page::getPageByName("master");
     if ($objIndex != null) {
         $this->strIndexID = $objIndex->getSystemid();
     }
     if ($objMaster != null) {
         $this->strMasterID = $objMaster->getSystemid();
     }
     $strReturn .= "Creating new category...\n";
     $objNewsCategory = new class_module_news_category();
     $objNewsCategory->setStrTitle("TOP-News");
     $objNewsCategory->updateObjectToDb();
     $strCategoryID = $objNewsCategory->getSystemid();
     $strReturn .= "ID of new category: " . $strCategoryID . "\n";
     $strReturn .= "Creating news\n";
     $objNews = new class_module_news_news();
     if ($this->strContentLanguage == "de") {
         $objNews->setStrTitle("Erfolgreich installiert");
         $objNews->setStrText("Eine weitere Installation von Kajona V3 war erfolgreich. Für weitere Infomationen zu Kajona besuchen Sie www.kajona.de.");
         $objNews->setStrIntro("Kajona wurde erfolgreich installiert...");
     } else {
         $objNews->setStrTitle("Installation successful");
         $objNews->setStrText("Another installation of Kajona was successful. For further information, support or proposals, please visit our website: www.kajona.de");
         $objNews->setStrIntro("Kajona installed successfully...");
     }
     $objNews->setObjDateStart(new class_date());
     $objNews->setArrCats(array($strCategoryID));
     $objNews->updateObjectToDb();
     $strNewsId = $objNews->getSystemid();
     $strReturn .= "ID of new news: " . $strNewsId . "\n";
     $strReturn .= "Creating news\n";
     $objNews = new class_module_news_news();
     $objNews->setStrTitle("Sed non enim est");
     $objNews->setStrText("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non enim est, id hendrerit metus. Sed tempor quam sed ante viverra porta. Quisque sagittis egestas tortor, in euismod sapien iaculis at. Nullam vitae nunc tortor. Mauris justo lectus, bibendum et rutrum id, fringilla eget ipsum. Nullam volutpat sodales mollis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Duis tempor ante eget justo blandit imperdiet. Praesent ut risus tempus metus sagittis fermentum eget eu elit. Mauris consequat ornare massa, a rhoncus enim sodales auctor. Duis lacinia dignissim eros vel mollis. Etiam metus tortor, pellentesque eu ultricies sit amet, elementum et dolor. Proin tincidunt nunc id magna volutpat lobortis. Vivamus metus quam, accumsan eget vestibulum vel, rutrum sit amet mauris. Phasellus lectus leo, vulputate eget molestie et, consectetur nec urna. ");
     $objNews->setStrIntro("Quisque sagittis egestas tortor");
     $objNews->setObjDateStart(new class_date());
     $objNews->setArrCats(array($strCategoryID));
     $objNews->updateObjectToDb();
     $strNewsId = $objNews->getSystemid();
     $strReturn .= "ID of new news: " . $strNewsId . "\n";
     $strReturn .= "Adding news element to the master-page...\n";
     if ($this->strMasterID != "") {
         if (class_module_pages_element::getElement("news") != null) {
             $objPagelement = new class_module_pages_pageelement();
             $objPagelement->setStrPlaceholder("mastertopnews_news");
             $objPagelement->setStrName("mastertopnews");
             $objPagelement->setStrElement("news");
             $objPagelement->updateObjectToDb($this->strMasterID);
             $strElementId = $objPagelement->getSystemid();
             $strQuery = "UPDATE " . _dbprefix_ . "element_news\n                                SET news_category=?,\n                                    news_view = ?,\n                                    news_mode = ?,\n                                    news_order = ?,\n                                    news_amount = ?,\n                                    news_detailspage = ?,\n                                    news_template = ?\n                                WHERE content_id = ?";
             if ($this->objDB->_pQuery($strQuery, array($strCategoryID, 0, 0, 0, 10, "newsdetails", "demo.tpl", $strElementId))) {
                 $strReturn .= "Newselement created.\n";
             } else {
                 $strReturn .= "Error creating newselement.\n";
             }
         }
     }
     $strReturn .= "Creating news-detail\n";
     $objPage = new class_module_pages_page();
     $objPage->setStrName("newsdetails");
     $objPage->setStrBrowsername("News");
     $objPage->setStrTemplate("standard.tpl");
     $objPage->updateObjectToDb();
     $strNewsdetailsId = $objPage->getSystemid();
     $strReturn .= "ID of new page: " . $strNewsdetailsId . "\n";
     $strReturn .= "Adding newsdetails to new page\n";
     if (class_module_pages_element::getElement("news") != null) {
         $objPagelement = new class_module_pages_pageelement();
         $objPagelement->setStrPlaceholder("special_news|guestbook|downloads|gallery|galleryRandom|form|tellafriend|maps|search|navigation|faqs|postacomment|votings|userlist|rssfeed|tagto|portallogin|portalregistration|portalupload|directorybrowser|lastmodified|tagcloud|downloadstoplist|flash|mediaplayer|tags|eventmanager");
         $objPagelement->setStrName("special");
         $objPagelement->setStrElement("news");
         $objPagelement->updateObjectToDb($strNewsdetailsId);
         $strElementId = $objPagelement->getSystemid();
         $strQuery = "UPDATE " . _dbprefix_ . "element_news\n                            SET news_category=?,\n                                news_view = ?,\n                                news_mode = ?,\n                                news_order = ?,\n                                news_amount = ?,\n                                news_detailspage = ?,\n                                news_template = ?\n                            WHERE content_id = ?";
         if ($this->objDB->_pQuery($strQuery, array($strCategoryID, 1, 0, 0, 20, "index", "demo.tpl", $strElementId))) {
             $strReturn .= "Newselement created.\n";
         } else {
             $strReturn .= "Error creating newselement.\n";
         }
     }
     $strReturn .= "Adding headline-element to new page\n";
     if (class_module_pages_element::getElement("row") != null) {
         $objPagelement = new class_module_pages_pageelement();
         $objPagelement->setStrPlaceholder("headline_row");
         $objPagelement->setStrName("headline");
         $objPagelement->setStrElement("row");
         $objPagelement->updateObjectToDb($strNewsdetailsId);
         $strElementId = $objPagelement->getSystemid();
         $strQuery = "UPDATE " . _dbprefix_ . "element_paragraph\n                                SET paragraph_title = ?\n                                WHERE content_id = ?";
         if ($this->objDB->_pQuery($strQuery, array("News", $strElementId))) {
             $strReturn .= "Headline element created.\n";
         } else {
             $strReturn .= "Error creating headline element.\n";
         }
     }
     $strReturn .= "Creating news-list-pge\n";
     $objPage = new class_module_pages_page();
     $objPage->setStrName("news");
     $objPage->setStrBrowsername("News");
     $objPage->setStrTemplate("standard.tpl");
     $objPage->updateObjectToDb($strNaviFolderId);
     $strNewslistId = $objPage->getSystemid();
     $strReturn .= "ID of new page: " . $strNewsdetailsId . "\n";
     $strReturn .= "Adding newsdetails to new page\n";
     if (class_module_pages_element::getElement("news") != null) {
         $objPagelement = new class_module_pages_pageelement();
         $objPagelement->setStrPlaceholder("special_news|guestbook|downloads|gallery|galleryRandom|form|tellafriend|maps|search|navigation|faqs|postacomment|votings|userlist|rssfeed|tagto|portallogin|portalregistration|portalupload|directorybrowser|lastmodified|tagcloud|downloadstoplist|flash|mediaplayer|tags|eventmanager");
         $objPagelement->setStrName("special");
         $objPagelement->setStrElement("news");
         $objPagelement->updateObjectToDb($strNewslistId);
         $strElementId = $objPagelement->getSystemid();
         $strQuery = "UPDATE " . _dbprefix_ . "element_news\n                            SET news_category=?,\n                                news_view = ?,\n                                news_mode = ?,\n                                news_order = ?,\n                                news_amount = ?,\n                                news_detailspage = ?,\n                                news_template = ?\n                            WHERE content_id = ?";
         if ($this->objDB->_pQuery($strQuery, array($strCategoryID, 0, 0, 0, 20, "newsdetails", "demo.tpl", $strElementId))) {
             $strReturn .= "Newselement created.\n";
         } else {
             $strReturn .= "Error creating newselement.\n";
         }
     }
     $strReturn .= "Adding headline-element to new page\n";
     if (class_module_pages_element::getElement("row") != null) {
         $objPagelement = new class_module_pages_pageelement();
         $objPagelement->setStrPlaceholder("headline_row");
         $objPagelement->setStrName("headline");
         $objPagelement->setStrElement("row");
         $objPagelement->updateObjectToDb($strNewslistId);
         $strElementId = $objPagelement->getSystemid();
         $strQuery = "UPDATE " . _dbprefix_ . "element_paragraph\n                                SET paragraph_title = ?\n                                WHERE content_id = ?";
         if ($this->objDB->_pQuery($strQuery, array("Newslist", $strElementId))) {
             $strReturn .= "Headline element created.\n";
         } else {
             $strReturn .= "Error creating headline element.\n";
         }
     }
     $strReturn .= "Creating news-feed\n";
     $objNewsFeed = new class_module_news_feed();
     $objNewsFeed->setStrTitle("kajona news");
     $objNewsFeed->setStrUrlTitle("kajona_news");
     $objNewsFeed->setStrLink("http://www.kajona.de");
     if ($this->strContentLanguage == "de") {
         $objNewsFeed->setStrDesc("Dies ist ein Kajona demo news feed");
     } else {
         $objNewsFeed->setStrDesc("This is a Kajona demo news feed");
     }
     $objNewsFeed->setStrPage($objPage->getStrName());
     $objNewsFeed->setStrCat("0");
     $objNewsFeed->setIntAmount(25);
     $objNewsFeed->updateObjectToDb();
     $strNewsFeedId = $objNewsFeed->getSystemid();
     $strReturn .= "ID of new news-feed: " . $strNewsFeedId . "\n";
     $strReturn .= "Adding rating permissions...\n";
     class_carrier::getInstance()->getObjRights()->addGroupToRight(class_module_system_setting::getConfigValue("_guests_group_id_"), class_module_system_module::getModuleByName("news")->getSystemid(), class_rights::$STR_RIGHT_RIGHT3);
     return $strReturn;
 }
 /**
  * saves a post in the database and returns the post as html.
  * In case of missing fields, the form is returned again
  *
  * @return string
  * @permissons right1
  */
 protected function actionSavePost()
 {
     $strXMLContent = "";
     //validate needed fields
     if (!$this->validateForm()) {
         //Create form to reenter values
         $strTemplateID = $this->objTemplate->readTemplate("/module_postacomment/" . $this->getParam("comment_template"), "postacomment_form");
         $arrForm = array();
         $arrForm["formaction"] = class_link::getLinkPortalHref($this->getPagename(), "", "postComment", "", $this->getSystemid());
         $arrForm["comment_name"] = $this->getParam("comment_name");
         $arrForm["comment_subject"] = $this->getParam("comment_subject");
         $arrForm["comment_message"] = $this->getParam("comment_message");
         $arrForm["comment_template"] = $this->getParam("comment_template");
         $arrForm["comment_systemid"] = $this->getParam("comment_systemid");
         $arrForm["comment_page"] = $this->getParam("comment_page");
         $arrForm["validation_errors"] = $this->strErrors;
         foreach ($arrForm as $strKey => $strValue) {
             if (uniStrpos($strKey, "comment_") !== false) {
                 $arrForm[$strKey] = htmlspecialchars($strValue, ENT_QUOTES, "UTF-8", false);
             }
         }
         //texts
         $arrForm["postacomment_write_new"] = $this->getLang("postacomment_write_new");
         $arrForm["form_name_label"] = $this->getLang("form_name_label");
         $arrForm["form_subject_label"] = $this->getLang("form_subject_label");
         $arrForm["form_message_label"] = $this->getLang("form_message_label");
         $arrForm["form_captcha_label"] = $this->getLang("commons_captcha");
         $arrForm["form_captcha_reload_label"] = $this->getLang("commons_captcha_reload");
         $arrForm["form_submit_label"] = $this->getLang("form_submit_label");
         $strXMLContent .= $this->fillTemplate($arrForm, $strTemplateID);
     } else {
         //save the post to the db
         //pageid or systemid to filter?
         $strSystemidfilter = $this->getParam("comment_systemid");
         if (class_module_pages_page::getPageByName($this->getParam("comment_page")) !== null) {
             $strPagefilter = class_module_pages_page::getPageByName($this->getParam("comment_page"))->getSystemid();
         } else {
             $strPagefilter = "";
         }
         $objPost = new class_module_postacomment_post();
         $objPost->setStrUsername($this->getParam("comment_name"));
         $objPost->setStrTitle($this->getParam("comment_subject"));
         $objPost->setStrComment($this->getParam("comment_message"));
         $objPost->setStrAssignedPage($strPagefilter);
         $objPost->setStrAssignedSystemid($strSystemidfilter);
         $objPost->setStrAssignedLanguage($this->getStrPortalLanguage());
         $objPost->updateObjectToDb();
         $this->flushPageFromPagesCache($this->getPagename());
         $strMailtext = $this->getLang("new_comment_mail") . "\r\n\r\n" . $objPost->getStrComment() . "\r\n";
         $strMailtext .= class_link::getLinkAdminHref("postacomment", "edit", "&systemid=" . $objPost->getSystemid(), false);
         $objMessageHandler = new class_module_messaging_messagehandler();
         $arrGroups = array();
         $allGroups = class_module_user_group::getObjectList();
         foreach ($allGroups as $objOneGroup) {
             if (class_rights::getInstance()->checkPermissionForGroup($objOneGroup->getSystemid(), class_rights::$STR_RIGHT_EDIT, $this->getObjModule()->getSystemid())) {
                 $arrGroups[] = $objOneGroup;
             }
         }
         $objMessageHandler->sendMessage($strMailtext, $arrGroups, new class_messageprovider_postacomment());
         //reinit post -> encoded entities
         $objPost->initObject();
         //load the post as a new post to add it at top of the list
         $arrOnePost = array();
         $arrOnePost["postacomment_post_name"] = $objPost->getStrUsername();
         $arrOnePost["postacomment_post_subject"] = $objPost->getStrTitle();
         $arrOnePost["postacomment_post_message"] = $objPost->getStrComment();
         $arrOnePost["postacomment_post_systemid"] = $objPost->getSystemid();
         $arrOnePost["postacomment_post_date"] = timeToString($objPost->getIntDate(), true);
         $strTemplateID = $this->objTemplate->readTemplate("/module_postacomment/" . $this->getParam("comment_template"), "postacomment_post");
         $strXMLContent .= $this->objTemplate->fillTemplate($arrOnePost, $strTemplateID);
     }
     class_response_object::getInstance()->setStrResponseType(class_http_responsetypes::STR_TYPE_JSON);
     return $strXMLContent;
 }
Beispiel #11
0
 /**
  * Creates a raw Link for the portal (just the href)
  *
  * @param string $strPageI
  * @param string $strPageE
  * @param string $strAction
  * @param string $strParams
  * @param string $strSystemid
  * @param string $strLanguage
  * @param string $strSeoAddon Only used if using mod_rewrite
  * @return string
  */
 public static function getLinkPortalHref($strPageI, $strPageE = "", $strAction = "", $strParams = "", $strSystemid = "", $strLanguage = "", $strSeoAddon = "")
 {
     $strReturn = "";
     $bitInternal = true;
     //return "#" if neither an internal nor an external page is set
     if ($strPageI == "" && $strPageE == "") {
         return "#";
     }
     //Internal links are more important than external links!
     if ($strPageI == "" && $strPageE != "") {
         $bitInternal = false;
     }
     //create an array out of the params
     if ($strSystemid != "") {
         $strParams .= "&systemid=" . $strSystemid;
         $strSystemid = "";
     }
     $arrParams = self::parseParamsString($strParams, $strSystemid);
     // any anchors set to the page?
     $strAnchor = "";
     if (uniStrpos($strPageI, "#") !== false) {
         //get anchor, remove anchor from link
         $strAnchor = urlencode(uniSubstr($strPageI, uniStrpos($strPageI, "#") + 1));
         $strPageI = uniSubstr($strPageI, 0, uniStrpos($strPageI, "#"));
     }
     //urlencoding
     $strPageI = urlencode($strPageI);
     $strAction = urlencode($strAction);
     //more than one language installed?
     if ($strLanguage == "" && self::getIntNumberOfPortalLanguages() > 1) {
         $strLanguage = self::getStrPortalLanguage();
     } else {
         if ($strLanguage != "" && self::getIntNumberOfPortalLanguages() <= 1) {
             $strLanguage = "";
         }
     }
     $strHref = "";
     if ($bitInternal) {
         //check, if we could use mod_rewrite
         $bitRegularLink = true;
         if (class_module_system_setting::getConfigValue("_system_mod_rewrite_") == "true") {
             $strAddKeys = "";
             //used later to add seo-relevant keywords
             $objPage = class_module_pages_page::getPageByName($strPageI);
             if ($objPage !== null) {
                 if ($strLanguage != "") {
                     $objPage->setStrLanguage($strLanguage);
                     $objPage->initObject();
                 }
                 $strAddKeys = $objPage->getStrSeostring() . ($strSeoAddon != "" && $objPage->getStrSeostring() != "" ? "-" : "") . urlSafeString($strSeoAddon);
                 if (uniStrlen($strAddKeys) > 0 && uniStrlen($strAddKeys) <= 2) {
                     $strAddKeys .= "__";
                 }
                 //trim string
                 $strAddKeys = uniStrTrim($strAddKeys, 100, "");
                 if ($strLanguage != "") {
                     $strHref .= $strLanguage . "/";
                 }
                 $strPath = $objPage->getStrPath();
                 if ($strPath == "") {
                     $objPage->updatePath();
                     $strPath = $objPage->getStrPath();
                     $objPage->updateObjectToDb();
                 }
                 if ($strPath != "") {
                     $strHref .= $strPath . "/";
                 }
             }
             //ok, here we go. schema for rewrite_links: pagename.addKeywords.action.systemid.language.html
             //but: special case: just pagename & language
             if ($strAction == "" && $strSystemid == "" && $strAddKeys == "") {
                 $strHref .= $strPageI . ".html";
             } elseif ($strAction == "" && $strSystemid == "") {
                 $strHref .= $strPageI . ($strAddKeys == "" ? "" : "." . $strAddKeys) . ".html";
             } elseif ($strAction != "" && $strSystemid == "") {
                 $strHref .= $strPageI . "." . $strAddKeys . "." . $strAction . ".html";
             } else {
                 $strHref .= $strPageI . "." . $strAddKeys . "." . $strAction . "." . $strSystemid . ".html";
             }
             //params?
             if (count($arrParams) > 0) {
                 $strHref .= "?" . implode("&amp;", $arrParams);
             }
             // add anchor if given
             if ($strAnchor != "") {
                 $strHref .= "#" . $strAnchor;
             }
             //plus the domain as a prefix
             $strHref = "_webpath_" . "/" . $strHref;
             $bitRegularLink = false;
         }
         if ($bitRegularLink) {
             $strHref = "_indexpath_" . "?" . ($strPageI != "" ? "page=" . $strPageI : "") . "" . ($strSystemid != "" ? "&amp;systemid=" . $strSystemid : "") . ($strAction != "" ? "&amp;action=" . $strAction : "") . ($strLanguage != "" ? "&amp;language=" . $strLanguage : "") . (count($arrParams) > 0 ? "&amp;" . implode("&amp;", $arrParams) : "") . ($strAnchor != "" ? "#" . $strAnchor : "") . "";
         }
     } else {
         $strHref = $strPageE;
     }
     $strReturn .= $strHref;
     return $strReturn;
 }
Beispiel #12
0
 public function testHierarchicalSort()
 {
     $objRootPage = new class_module_pages_page();
     $objRootPage->setStrName("test1");
     $objRootPage->updateObjectToDb();
     $objPageL1 = new class_module_pages_page();
     $objPageL1->setStrName("layer_1");
     $objPageL1->updateObjectToDb($objRootPage->getSystemid());
     $objPageL2 = new class_module_pages_page();
     $objPageL2->setStrName("layer_2");
     $objPageL2->updateObjectToDb($objRootPage->getSystemid());
     $objPage = new class_module_pages_page();
     $objPage->setStrName("layer_1_1");
     $objPage->updateObjectToDb($objPageL1->getSystemid());
     $objPage = new class_module_pages_page();
     $objPage->setStrName("layer_1_2");
     $objPage->updateObjectToDb($objPageL1->getSystemid());
     $objPage = new class_module_pages_page();
     $objPage->setStrName("layer_1_3");
     $objPage->updateObjectToDb($objPageL1->getSystemid());
     $objPage = new class_module_pages_page();
     $objPage->setStrName("layer_2_1");
     $objPage->updateObjectToDb($objPageL2->getSystemid());
     $objPage = new class_module_pages_page();
     $objPage->setStrName("layer_2_2");
     $objPage->updateObjectToDb($objPageL2->getSystemid());
     $objPage = new class_module_pages_page();
     $objPage->setStrName("layer_2_3");
     $objPage->updateObjectToDb($objPageL2->getSystemid());
     $this->assertEquals(1, class_module_pages_page::getPageByName("layer_1")->getIntSort());
     $this->assertEquals(2, class_module_pages_page::getPageByName("layer_2")->getIntSort());
     $this->assertEquals(1, class_module_pages_page::getPageByName("layer_1_1")->getIntSort());
     $this->assertEquals(2, class_module_pages_page::getPageByName("layer_1_2")->getIntSort());
     $this->assertEquals(3, class_module_pages_page::getPageByName("layer_1_3")->getIntSort());
     $this->assertEquals(1, class_module_pages_page::getPageByName("layer_2_1")->getIntSort());
     $this->assertEquals(2, class_module_pages_page::getPageByName("layer_2_2")->getIntSort());
     $this->assertEquals(3, class_module_pages_page::getPageByName("layer_2_3")->getIntSort());
     //shifting hierarchies
     class_module_pages_page::getPageByName("layer_2_2")->updateObjectToDb($objPageL1->getSystemid());
     $this->assertEquals(1, class_module_pages_page::getPageByName("layer_1_1")->getIntSort());
     $this->assertEquals(2, class_module_pages_page::getPageByName("layer_1_2")->getIntSort());
     $this->assertEquals(3, class_module_pages_page::getPageByName("layer_1_3")->getIntSort());
     $this->assertEquals(4, class_module_pages_page::getPageByName("layer_2_2")->getIntSort());
     $this->assertEquals(1, class_module_pages_page::getPageByName("layer_2_1")->getIntSort());
     $this->assertEquals(2, class_module_pages_page::getPageByName("layer_2_3")->getIntSort());
     $objRootPage->deleteObjectFromDatabase();
 }
 /**
  * Does the hard work: installs the module and registers needed constants
  *
  * @return string
  */
 public function install()
 {
     //search the master page
     $objMaster = class_module_pages_page::getPageByName("master");
     if ($objMaster != null) {
         $this->strMasterID = $objMaster->getSystemid();
     }
     //fetch navifolder-id
     $strNaviFolderId = "";
     $arrFolder = class_module_pages_folder::getFolderList();
     foreach ($arrFolder as $objOneFolder) {
         if ($objOneFolder->getStrName() == "mainnavigation") {
             $strNaviFolderId = $objOneFolder->getSystemid();
         }
     }
     $strReturn = "";
     $strReturn .= "Creating new mainnavigation-tree\n";
     $objNaviTree = new class_module_navigation_tree();
     $objNaviTree->setStrName("mainnavigation");
     $objNaviTree->setStrFolderId($strNaviFolderId);
     $objNaviTree->updateObjectToDb();
     $strTreeId = $objNaviTree->getSystemid();
     $strReturn .= "ID of new navigation-tree: " . $strTreeId . "\n";
     $strReturn .= "Creating new portalnavigation-tree\n";
     $objNaviTree = new class_module_navigation_tree();
     $objNaviTree->setStrName("portalnavigation");
     $objNaviTree->updateObjectToDb();
     $strTreePortalId = $objNaviTree->getSystemid();
     $strReturn .= "ID of new navigation-tree: " . $strTreePortalId . "\n";
     $strReturn .= "Creating navigation points\n";
     $objNaviPoint = new class_module_navigation_point();
     $objNaviPoint->setStrName("Home");
     $objNaviPoint->setStrPageI("index");
     $objNaviPoint->updateObjectToDb($strTreePortalId);
     if ($this->strMasterID != "") {
         $strReturn .= "Adding mainnavigation to master page\n";
         $strReturn .= "ID of master page: " . $this->strMasterID . "\n";
         if (class_module_pages_element::getElement("navigation") != null) {
             $objPagelement = new class_module_pages_pageelement();
             $objPagelement->setStrPlaceholder("mastermainnavi_navigation");
             $objPagelement->setStrName("mastermainnavi");
             $objPagelement->setStrElement("navigation");
             $objPagelement->updateObjectToDb($this->strMasterID);
             $strElementId = $objPagelement->getSystemid();
             $strQuery = "UPDATE " . _dbprefix_ . "element_navigation\n                                SET navigation_id= ?,\n                                    navigation_template = ?\n                                WHERE content_id = ?";
             if ($this->objDB->_pQuery($strQuery, array($strTreeId, "mainnavi.tpl", $strElementId))) {
                 $strReturn .= "Navigation element created.\n";
             } else {
                 $strReturn .= "Error creating navigation element.\n";
             }
         }
         $strReturn .= "Adding portalnavigation to master page\n";
         $strReturn .= "ID of master page: " . $this->strMasterID . "\n";
         if (class_module_pages_element::getElement("navigation") != null) {
             $objPagelement = new class_module_pages_pageelement();
             $objPagelement->setStrPlaceholder("masterportalnavi_navigation");
             $objPagelement->setStrName("masterportalnavi");
             $objPagelement->setStrElement("navigation");
             $objPagelement->updateObjectToDb($this->strMasterID);
             $strElementId = $objPagelement->getSystemid();
             $strQuery = "UPDATE " . _dbprefix_ . "element_navigation\n                                SET navigation_id= ?,\n                                    navigation_template = ?\n                                WHERE content_id = ?";
             if ($this->objDB->_pQuery($strQuery, array($strTreePortalId, "portalnavi.tpl", $strElementId))) {
                 $strReturn .= "Navigation element created.\n";
             } else {
                 $strReturn .= "Error creating navigation element.\n";
             }
         }
         $strReturn .= "Adding pathnavigation to master page\n";
         $strReturn .= "ID of master page: " . $this->strMasterID . "\n";
         if (class_module_pages_element::getElement("navigation") != null) {
             $objPagelement = new class_module_pages_pageelement();
             $objPagelement->setStrPlaceholder("masterpathnavi_navigation");
             $objPagelement->setStrName("masterpathnavi");
             $objPagelement->setStrElement("navigation");
             $objPagelement->updateObjectToDb($this->strMasterID);
             $strElementId = $objPagelement->getSystemid();
             $strQuery = "UPDATE " . _dbprefix_ . "element_navigation\n                                SET navigation_id= ?,\n                                    navigation_template = ?\n                                WHERE content_id = ?";
             if ($this->objDB->_pQuery($strQuery, array($strTreeId, "breadcrumbnavi.tpl", $strElementId))) {
                 $strReturn .= "Navigation element created.\n";
             } else {
                 $strReturn .= "Error creating navigation element.\n";
             }
         }
     }
     $strReturn .= "Creating simple sitemap...\n";
     $objPage = new class_module_pages_page();
     $objPage->setStrName("sitemap");
     $objPage->setStrBrowsername("Sitemap");
     $objPage->setStrTemplate("standard.tpl");
     $objPage->updateObjectToDb();
     $strSitemapId = $objPage->getSystemid();
     $strReturn .= "ID of new page: " . $strSitemapId . "\n";
     $strReturn .= "Adding sitemap to new page\n";
     if (class_module_pages_element::getElement("navigation") != null) {
         $objPagelement = new class_module_pages_pageelement();
         $objPagelement->setStrPlaceholder("special_news|guestbook|downloads|gallery|galleryRandom|form|tellafriend|maps|search|navigation|faqs|postacomment|votings|userlist|rssfeed|tagto|portallogin|portalregistration|portalupload|directorybrowser|lastmodified|tagcloud|downloadstoplist|flash|mediaplayer|tags|eventmanager");
         $objPagelement->setStrName("special");
         $objPagelement->setStrElement("navigation");
         $objPagelement->updateObjectToDb($strSitemapId);
         $strElementId = $objPagelement->getSystemid();
         $strQuery = "UPDATE " . _dbprefix_ . "element_navigation\n                            SET navigation_id=?,\n                                navigation_template = ?\n                                WHERE content_id = ?";
         if ($this->objDB->_pQuery($strQuery, array($strTreeId, "sitemap.tpl", $strElementId))) {
             $strReturn .= "Sitemapelement created.\n";
         } else {
             $strReturn .= "Error creating sitemapelement.\n";
         }
     }
     $strReturn .= "Adding headline-element to new page\n";
     if (class_module_pages_element::getElement("row") != null) {
         $objPagelement = new class_module_pages_pageelement();
         $objPagelement->setStrPlaceholder("headline_row");
         $objPagelement->setStrName("headline");
         $objPagelement->setStrElement("row");
         $objPagelement->updateObjectToDb($strSitemapId);
         $strElementId = $objPagelement->getSystemid();
         $strQuery = "UPDATE " . _dbprefix_ . "element_paragraph\n                            SET paragraph_title = ?\n                          WHERE content_id = ? ";
         if ($this->objDB->_pQuery($strQuery, array("Sitemap", $strElementId))) {
             $strReturn .= "Headline element created.\n";
         } else {
             $strReturn .= "Error creating headline element.\n";
         }
     }
     $strReturn .= "Creating navigation points\n";
     $objNaviPoint = new class_module_navigation_point();
     $objNaviPoint->setStrName("Sitemap");
     $objNaviPoint->setStrPageI("sitemap");
     $objNaviPoint->updateObjectToDb($strTreePortalId);
     $strReturn .= "ID of new navigation point " . $objNaviPoint->getSystemid() . ".\n";
     $objNaviPoint = new class_module_navigation_point();
     if ($this->strContentLanguage == "de") {
         $objNaviPoint->setStrName("Impressum");
     } else {
         $objNaviPoint->setStrName("Imprint");
     }
     $objNaviPoint->setStrPageI("imprint");
     $objNaviPoint->updateObjectToDb($strTreePortalId);
     $strReturn .= "ID of new navigation point " . $objNaviPoint->getSystemid() . ".\n";
     return $strReturn;
 }
 /**
  * Does the hard work: installs the module and registers needed constants
  */
 public function install()
 {
     $strReturn = "";
     //fetch navifolder-id
     //navigations installed?
     $objModule = null;
     try {
         $objModule = class_module_system_module::getModuleByName("pages", true);
     } catch (class_exception $objException) {
         $objModule = null;
     }
     if ($objModule != null) {
         $strSystemFolderId = "";
         $arrFolder = class_module_pages_folder::getFolderList();
         foreach ($arrFolder as $objOneFolder) {
             if ($objOneFolder->getStrName() == "_system") {
                 $strSystemFolderId = $objOneFolder->getSystemid();
             }
         }
         //search the master page
         $objMaster = class_module_pages_page::getPageByName("master");
         if ($objMaster != null) {
             $this->strMasterID = $objMaster->getSystemid();
         }
         $strReturn .= "Adding search-element to master page\n";
         if ($this->strMasterID != "" && class_module_pages_element::getElement("search") != null) {
             $objPagelement = new class_module_pages_pageelement();
             $objPagelement->setStrPlaceholder("mastersearch_search");
             $objPagelement->setStrName("mastersearch");
             $objPagelement->setStrElement("search");
             $objPagelement->updateObjectToDb($this->strMasterID);
             $strElementId = $objPagelement->getSystemid();
             $strQuery = "UPDATE " . _dbprefix_ . "element_search\n                                        SET search_template = ?,\n                                            search_amount = ?,\n                                            search_page = ?\n                                        WHERE content_id = ?";
             if ($this->objDB->_pQuery($strQuery, array("search_ajax_small.tpl", 0, "search", $strElementId))) {
                 $strReturn .= "Search element created.\n";
             } else {
                 $strReturn .= "Error creating search element.\n";
             }
         }
         $strReturn .= "Creating search page\n";
         $objPage = new class_module_pages_page();
         $objPage->setStrName("search");
         if ($this->strContentLanguage == "de") {
             $objPage->setStrBrowsername("Suchergebnisse");
         } else {
             $objPage->setStrBrowsername("Search results");
         }
         $objPage->setStrTemplate("standard.tpl");
         $objPage->updateObjectToDb($strSystemFolderId);
         $strSearchresultsId = $objPage->getSystemid();
         $strReturn .= "ID of new page: " . $strSearchresultsId . "\n";
         $strReturn .= "Adding search-element to new page\n";
         if (class_module_pages_element::getElement("search") != null) {
             $objPagelement = new class_module_pages_pageelement();
             $objPagelement->setStrPlaceholder("special_news|guestbook|downloads|gallery|galleryRandom|form|tellafriend|maps|search|navigation|faqs|postacomment|votings|userlist|rssfeed|tagto|portallogin|portalregistration|portalupload|directorybrowser|lastmodified|tagcloud|downloadstoplist|flash|mediaplayer|tags|eventmanager");
             $objPagelement->setStrName("special");
             $objPagelement->setStrElement("search");
             $objPagelement->updateObjectToDb($strSearchresultsId);
             $strElementId = $objPagelement->getSystemid();
             $strQuery = "UPDATE " . _dbprefix_ . "element_search\n                                        SET search_template = ?,\n                                            search_amount = ?,\n                                            search_page = ?\n                                        WHERE content_id = ?";
             if ($this->objDB->_pQuery($strQuery, array("search_ajax.tpl", 0, "", $strElementId))) {
                 $strReturn .= "Search element created.\n";
             } else {
                 $strReturn .= "Error creating search element.\n";
             }
         }
         $strReturn .= "Adding headline-element to new page\n";
         if (class_module_pages_element::getElement("row") != null) {
             $objPagelement = new class_module_pages_pageelement();
             $objPagelement->setStrPlaceholder("headline_row");
             $objPagelement->setStrName("headline");
             $objPagelement->setStrElement("row");
             $objPagelement->updateObjectToDb($strSearchresultsId);
             $strElementId = $objPagelement->getSystemid();
             $arrParams = array();
             if ($this->strContentLanguage == "de") {
                 $arrParams = array("Suchergebnisse", $strElementId);
             } else {
                 $arrParams = array("Search results", $strElementId);
             }
             $strQuery = "UPDATE " . _dbprefix_ . "element_paragraph\n                                        SET paragraph_title = ?\n                                        WHERE content_id = ?";
             if ($this->objDB->_pQuery($strQuery, $arrParams)) {
                 $strReturn .= "Headline element created.\n";
             } else {
                 $strReturn .= "Error creating headline element.\n";
             }
         }
     }
     $strReturn .= "Creating navigation point.\n";
     //navigations installed?
     $objModule = null;
     try {
         $objModule = class_module_system_module::getModuleByName("navigation", true);
     } catch (class_exception $objException) {
         $objModule = null;
     }
     if ($objModule != null) {
         $objNavi = class_module_navigation_tree::getNavigationByName("portalnavigation");
         $strTreeId = $objNavi->getSystemid();
         $objNaviPoint = new class_module_navigation_point();
         if ($this->strContentLanguage == "de") {
             $objNaviPoint->setStrName("Suche");
         } else {
             $objNaviPoint->setStrName("Search");
         }
         $objNaviPoint->setStrPageI("search");
         $objNaviPoint->updateObjectToDb($strTreeId);
         $strReturn .= "ID of new navigation point: " . $objNaviPoint->getSystemid() . "\n";
     }
     return $strReturn;
 }
 /**
  * Fetches all child-nodes (folders and pages) of the passed node.
  * Used by the tree-view in module-pages.
  *
  * @return string
  * @since 3.3.0
  * @xml
  * @permissions view
  */
 protected function actionGetChildNodes()
 {
     $arrReturn = array();
     $arrPages = class_module_pages_folder::getPagesAndFolderList($this->getSystemid());
     if (count($arrPages) > 0) {
         foreach ($arrPages as $objSingleEntry) {
             if ($objSingleEntry->rightView()) {
                 /** @var class_module_pages_folder $objSingleEntry */
                 if ($objSingleEntry instanceof class_module_pages_folder) {
                     $strLink = "";
                     if ($objSingleEntry->rightEdit()) {
                         $strLink = class_link::getLinkAdminHref("pages", "list", "systemid=" . $objSingleEntry->getSystemid(), false);
                     }
                     $arrReturn[] = array("data" => array("title" => class_adminskin_helper::getAdminImage($objSingleEntry->getStrIcon()) . "&nbsp;" . $objSingleEntry->getStrDisplayName()), "state" => count(class_module_pages_folder::getPagesAndFolderList($objSingleEntry->getSystemid())) == 0 ? "" : "closed", "attr" => array("id" => $objSingleEntry->getSystemid(), "systemid" => $objSingleEntry->getSystemid(), "link" => $strLink, "isleaf" => count(class_module_pages_folder::getPagesAndFolderList($objSingleEntry->getSystemid())) == 0 ? true : false));
                 }
                 /** @var class_module_pages_page $objSingleEntry */
                 if ($objSingleEntry instanceof class_module_pages_page) {
                     $strTargetId = $objSingleEntry->getSystemid();
                     if ($objSingleEntry->getIntType() == class_module_pages_page::$INT_TYPE_ALIAS && class_module_pages_page::getPageByName($objSingleEntry->getStrAlias()) != null) {
                         $strTargetId = class_module_pages_page::getPageByName($objSingleEntry->getStrAlias())->getSystemid();
                     }
                     $strLink = "";
                     if ($objSingleEntry->getIntType() == class_module_pages_page::$INT_TYPE_ALIAS && class_objectfactory::getInstance()->getObject($strTargetId)->rightEdit()) {
                         $strLink = class_link::getLinkAdminHref("pages_content", "list", "systemid=" . $strTargetId, false);
                     } else {
                         if ($objSingleEntry->getIntType() == class_module_pages_page::$INT_TYPE_PAGE && $objSingleEntry->rightEdit()) {
                             $strLink = class_link::getLinkAdminHref("pages_content", "list", "systemid=" . $objSingleEntry->getSystemid(), false);
                         }
                     }
                     $arrReturn[] = array("data" => array("title" => class_adminskin_helper::getAdminImage($objSingleEntry->getStrIcon()) . "&nbsp;" . $objSingleEntry->getStrDisplayName()), "state" => count(class_module_pages_folder::getPagesAndFolderList($objSingleEntry->getSystemid())) == 0 ? "" : "closed", "attr" => array("id" => $objSingleEntry->getSystemid(), "systemid" => $objSingleEntry->getSystemid(), "link" => $strLink, "type" => $objSingleEntry->getIntType(), "isleaf" => count(class_module_pages_folder::getPagesAndFolderList($objSingleEntry->getSystemid())) == 0 ? true : false));
                 }
             }
         }
     }
     class_response_object::getInstance()->setStrResponseType(class_http_responsetypes::STR_TYPE_JSON);
     return json_encode($arrReturn);
 }
 private function processSinglePoint(class_module_navigation_point $objPoint)
 {
     $strReturn = "";
     $bitError = false;
     $strReturn .= $objPoint->getStrName() . ": ";
     if ($objPoint->getStrPageI() == "" && $objPoint->getStrPageE() == "") {
         $strReturn .= $this->getLang("systemtask_navigationcheck_invalidEmpty");
         $bitError = true;
     } else {
         if ($objPoint->getStrPageI() != "" && $objPoint->getStrPageE() != "") {
             $strReturn .= $this->getLang("systemtask_navigationcheck_invalidBoth");
             $bitError = true;
         } else {
             if ($objPoint->getStrPageI() != "" && $objPoint->getStrPageE() == "") {
                 //try to load internal page and check if it exists
                 $objPage = class_module_pages_page::getPageByName($objPoint->getStrPageI());
                 if ($objPage == null) {
                     $strReturn .= $this->getLang("systemtask_navigationcheck_invalidInternal") . " " . $objPoint->getStrPageI() . ")";
                     $bitError = true;
                 } else {
                     $strReturn .= $this->getLang("systemtask_navigationcheck_valid") . " " . $objPoint->getStrPageI() . $objPoint->getStrPageE() . ")";
                 }
             } else {
                 $strReturn .= $this->getLang("systemtask_navigationcheck_valid") . " " . $objPoint->getStrPageI() . $objPoint->getStrPageE() . ")";
             }
         }
     }
     if ($bitError) {
         $strReturn = "<b>" . $strReturn . "</b>";
     }
     return $strReturn . "<br />";
 }
 /**
  * Creates the html-code for one single navigationpoint. The check if the user has the needed rights should have been made before!
  *
  * @param class_module_navigation_point $objPointData
  * @param bool $bitActive
  * @param int $intLevel
  * @param bool $bitFirst
  * @param bool $bitLast
  *
  * @return string
  */
 private function createNavigationPoint(class_module_navigation_point $objPointData, $bitActive, $intLevel, $bitFirst = false, $bitLast = false)
 {
     //and start to create a link and all needed stuff
     $arrTemp = array();
     $arrTemp["page_intern"] = $objPointData->getStrPageI();
     $arrTemp["page_extern"] = $objPointData->getStrPageE();
     $arrTemp["systemid"] = $objPointData->getSystemid();
     $arrTemp["text"] = $objPointData->getStrName();
     $arrTemp["link"] = getLinkPortal($arrTemp["page_intern"], $arrTemp["page_extern"], $objPointData->getStrTarget(), $arrTemp["text"], $objPointData->getStrLinkAction(), "", $objPointData->getStrLinkSystemid());
     $arrTemp["href"] = getLinkPortalHref($arrTemp["page_intern"], $arrTemp["page_extern"], $objPointData->getStrLinkAction(), "", $objPointData->getStrLinkSystemid());
     $arrTemp["target"] = $objPointData->getStrTarget();
     if ($objPointData->getStrImage() != "") {
         $arrTemp["image"] = getLinkPortal($arrTemp["page_intern"], $arrTemp["page_extern"], $objPointData->getStrTarget(), "<img src=\"" . _webpath_ . $objPointData->getStrImage() . "\" border=\"0\" alt=\"" . $arrTemp["text"] . "\"/>", $objPointData->getStrLinkAction(), "", $objPointData->getStrSystemid());
         $arrTemp["image_src"] = $objPointData->getStrImage();
     }
     if ($objPointData->getStrPageI() != "") {
         $objPage = class_module_pages_page::getPageByName($objPointData->getStrPageI());
         if ($objPage != null && $objPage->getIntLmTime() != "") {
             $arrTemp["lastmodified"] = strftime("%Y-%m-%dT%H:%M:%S", $objPage->getIntLmTime());
         }
     }
     //Load the correct template
     $strSection = "level_" . $intLevel . "_" . ($bitActive ? "active" : "inactive") . ($bitFirst ? "_first" : "") . ($bitLast ? "_last" : "");
     $strTemplateId = $this->objTemplate->readTemplate("/module_navigation/" . $this->arrElementData["navigation_template"], $strSection);
     //Fill the template
     $strReturn = $this->objTemplate->fillTemplate($arrTemp, $strTemplateId, false);
     //BUT: if we received an empty string and are in the situation of a first or last point, then maybe the template
     //     didn't supply a first / last section. so we'll try to load a regular point
     if ($strReturn == "" && ($bitFirst || $bitLast)) {
         $strSection = "level_" . $intLevel . "_" . ($bitActive ? "active" : "inactive");
         $strTemplateId = $this->objTemplate->readTemplate("/module_navigation/" . $this->arrElementData["navigation_template"], $strSection);
         //And fill it once more
         $strReturn = $this->objTemplate->fillTemplate($arrTemp, $strTemplateId, false);
     }
     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;
 }
 /**
  * Saves a post to the databases
  *
  * @permissions right1
  * @return string
  */
 protected function actionPostComment()
 {
     if (!$this->validateForm()) {
         return $this->actionList();
     }
     $strSystemidfilter = "";
     if ($this->getSystemid() != "") {
         $strSystemidfilter = $this->getSystemid();
     }
     if (class_module_pages_page::getPageByName($this->getPagename()) !== null) {
         $strPagefilter = class_module_pages_page::getPageByName($this->getPagename())->getSystemid();
     } else {
         $strPagefilter = "";
     }
     $objPost = new class_module_postacomment_post();
     $objPost->setStrUsername($this->getParam("comment_name"));
     $objPost->setStrTitle($this->getParam("comment_subject"));
     $objPost->setStrComment($this->getParam("comment_message"));
     $objPost->setStrAssignedPage($strPagefilter);
     $objPost->setStrAssignedSystemid($strSystemidfilter);
     $objPost->setStrAssignedLanguage($this->getStrPortalLanguage());
     $objPost->updateObjectToDb();
     $this->flushPageFromPagesCache($this->getPagename());
     $strMailtext = $this->getLang("new_comment_mail") . "\r\n\r\n" . $objPost->getStrComment() . "\r\n";
     $strMailtext .= class_link::getLinkAdminHref("postacomment", "edit", "&systemid=" . $objPost->getSystemid(), false);
     $objMessageHandler = new class_module_messaging_messagehandler();
     $arrGroups = array();
     $allGroups = class_module_user_group::getObjectList();
     foreach ($allGroups as $objOneGroup) {
         if (class_rights::getInstance()->checkPermissionForGroup($objOneGroup->getSystemid(), class_rights::$STR_RIGHT_EDIT, $this->getObjModule()->getSystemid())) {
             $arrGroups[] = $objOneGroup;
         }
     }
     $objMessage = new class_module_messaging_message();
     $objMessage->setStrBody($strMailtext);
     $objMessage->setObjMessageProvider(new class_messageprovider_postacomment());
     $objMessageHandler->sendMessageObject($objMessage, $arrGroups);
     $this->portalReload(_indexpath_ . "?" . $this->getHistory(1));
     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;
 }
 /**
  * @see interface_admin_systemtask::executeTask()
  * @throws class_exception
  * @return string
  */
 public function executeTask()
 {
     if (!class_module_system_module::getModuleByName("pages")->rightEdit()) {
         return $this->getLang("commons_error_permissions");
     }
     //load the page itself
     $objPage = class_module_pages_page::getPageByName($this->getParam("pageExport"));
     if ($objPage !== null) {
         $objSystem = class_module_system_module::getModuleByName("system");
         $objXmlWriter = new XMLWriter();
         $strExportFolder = $this->getParam("exportFolder");
         $strExportPrefix = $this->getParam("exportPrefix");
         if ($strExportFolder == "") {
             $strExportFolder = _realpath_ . _projectpath_ . "/temp";
         } else {
             $strExportFolder = _realpath_ . "/" . $strExportFolder;
         }
         if ($strExportPrefix != "") {
             $strExportPrefix = "_" . $strExportPrefix;
         }
         if (is_dir($strExportFolder)) {
             if (!$objXmlWriter->openUri($strExportFolder . "/" . $strExportPrefix . $objPage->getSystemid() . ".xml")) {
                 throw new class_exception("failed to open export file ", class_exception::$level_ERROR);
             }
             //$objXmlWriter->openMemory();
             $objXmlWriter->setIndent(true);
             $objXmlWriter->startDocument("1.0", "UTF-8");
             $objXmlWriter->startComment();
             $strComment = "\n   Kajona XML export\n";
             $strComment .= "   (c) Kajona, www.kajona.de\n";
             $strComment .= "   Kernel version:  " . $objSystem->getStrVersion() . "\n";
             $strComment .= "   Schema version:  1.0\n";
             $strComment .= "   Export Date:     " . dateToString(new class_date()) . "\n";
             $objXmlWriter->text($strComment);
             $objXmlWriter->endComment();
             $objXmlWriter->startElement("pages");
             $objXmlWriter->startElement("page");
             $objXmlWriter->startElement("metadata");
             $objXmlWriter->startElement("kernelVersion");
             $objXmlWriter->text($objSystem->getStrVersion());
             $objXmlWriter->endElement();
             $objXmlWriter->startElement("systemid");
             $objXmlWriter->text($objPage->getSystemid());
             $objXmlWriter->endElement();
             $objXmlWriter->startElement("previd");
             $objXmlWriter->text($objPage->getPrevId());
             $objXmlWriter->endElement();
             $objXmlWriter->startElement("pagename");
             $objXmlWriter->text($objPage->getStrName());
             $objXmlWriter->endElement();
             //try to load the parent page-name
             $strParentName = "";
             if (validateSystemid($objPage->getPrevId())) {
                 $objParentPage = new class_module_pages_page($objPage->getPrevId());
                 $strParentName = $objParentPage->getStrName();
             }
             $objXmlWriter->startElement("prevname");
             $objXmlWriter->text($strParentName);
             $objXmlWriter->endElement();
             $objXmlWriter->startElement("pageproperties");
             $this->createPageMetadata($objPage->getSystemid(), $objXmlWriter);
             $objXmlWriter->endElement();
             //metadata
             $objXmlWriter->endElement();
             $objXmlWriter->startElement("elements");
             $this->createElementData($objPage->getSystemid(), $objXmlWriter);
             $objXmlWriter->endElement();
             //page
             $objXmlWriter->endElement();
             //pages
             $objXmlWriter->endElement();
             $objXmlWriter->flush();
             //return $objXmlWriter->outputMemory(true);
             return $this->getLang("systemtask_pageexport_success") . $strExportFolder . "/" . $strExportPrefix . $objPage->getSystemid() . ".xml" . "";
         } else {
             throw new class_exception("writing XML: Folder " . $strExportFolder . " does not exist! ", class_exception::$level_ERROR);
         }
     }
     return $this->getLang("systemtask_pageexport_error");
 }
 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));
 }
 public function install()
 {
     $strReturn = "";
     //fetch navifolder-id
     $strNaviFolderId = "";
     $arrFolder = class_module_pages_folder::getFolderList();
     foreach ($arrFolder as $objOneFolder) {
         if ($objOneFolder->getStrName() == "mainnavigation") {
             $strNaviFolderId = $objOneFolder->getSystemid();
         }
     }
     //search the index page
     $objIndex = class_module_pages_page::getPageByName("index");
     if ($objIndex != null) {
         $this->strIndexID = $objIndex->getSystemid();
     }
     $strReturn .= "Creating faqs\n";
     $objFaq1 = new class_module_faqs_faq();
     $objFaq2 = new class_module_faqs_faq();
     if ($this->strContentLanguage == "de") {
         $objFaq1->setStrQuestion("Was ist Kajona?");
         $objFaq1->setStrAnswer("Kajona ist ein Open Source Content Management System basierend auf PHP und einer Datenbank. Dank der modularen Bauweise ist Kajona einfach erweiter- und anpassbar.");
         $objFaq2->setStrQuestion("Wer entwickelt Kajona, wo gibt es weitere Infos?");
         $objFaq2->setStrAnswer("Kajona wird von einer Open Source Community entwickelt. Da Kajona ständig weiterentwickelt wird, sind wir jederzeit auf der Suche nach Helfern, seien es Programmierer, Grafiker, Betatester und auch Anwender. Weitere Informationen hierzu finden Sie auf <a href=\"http://www.kajona.de\">www.kajona.de</a>.");
     } else {
         $objFaq1->setStrQuestion("What is Kajona?");
         $objFaq1->setStrAnswer("Kajona is an open source content management system based on PHP and a database. Due to it's modular design, it can be extended and adopted very easily.");
         $objFaq2->setStrQuestion("Who develops Kajona, where can I find more infos?");
         $objFaq2->setStrAnswer("Kajona is being developed by an open source community. Since Kajona is still being developed, we are searching for contributors. Further information can be found at <a href=\"http://www.kajona.de\">www.kajona.de</a>.");
     }
     $strReturn .= "Saving faqs...\n";
     $objFaq1->updateObjectToDb();
     $objFaq2->updateObjectToDb();
     $strReturn .= "Creating faqs-page\n";
     $objPage = new class_module_pages_page();
     $objPage->setStrName("faqs");
     $objPage->setStrBrowsername("FAQs");
     $objPage->setStrTemplate("standard.tpl");
     $objPage->updateObjectToDb($strNaviFolderId);
     $strFaqsPageId = $objPage->getSystemid();
     $strReturn .= "ID of new page: " . $strFaqsPageId . "\n";
     $strReturn .= "Adding faqs-element to new page\n";
     if (class_module_pages_element::getElement("faqs") != null) {
         $objPagelement = new class_module_pages_pageelement();
         $objPagelement->setStrPlaceholder("special_news|guestbook|downloads|gallery|galleryRandom|form|tellafriend|maps|search|navigation|faqs|postacomment|votings|userlist|rssfeed|tagto|portallogin|portalregistration|portalupload|directorybrowser|lastmodified|tagcloud|downloadstoplist|flash|mediaplayer|tags|eventmanager");
         $objPagelement->setStrName("special");
         $objPagelement->setStrElement("faqs");
         $objPagelement->updateObjectToDb($strFaqsPageId);
         $strElementId = $objPagelement->getSystemid();
         $strQuery = "UPDATE " . _dbprefix_ . "element_faqs\n                            SET faqs_category= ?,\n                                faqs_template = ?\n                          WHERE content_id = ? ";
         if ($this->objDB->_pQuery($strQuery, array(0, "demo_foldable.tpl", $strElementId))) {
             $strReturn .= "faqselement created.\n";
         } else {
             $strReturn .= "Error creating faqselement.\n";
         }
     }
     $strReturn .= "Adding headline-element to new page\n";
     if (class_module_pages_element::getElement("row") != null) {
         $objPagelement = new class_module_pages_pageelement();
         $objPagelement->setStrPlaceholder("headline_row");
         $objPagelement->setStrName("headline");
         $objPagelement->setStrElement("row");
         $objPagelement->updateObjectToDb($strFaqsPageId);
         $strElementId = $objPagelement->getSystemid();
         $strQuery = "UPDATE " . _dbprefix_ . "element_paragraph\n                             SET paragraph_title = ?\n                           WHERE content_id = ?";
         if ($this->objDB->_pQuery($strQuery, array("FAQs", $strElementId))) {
             $strReturn .= "Headline element created.\n";
         } else {
             $strReturn .= "Error creating headline element.\n";
         }
     }
     return $strReturn;
 }
 /**
  * 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)
 {
     $objORM = new class_orm_objectlist();
     $strQuery = "SELECT news_detailspage\n                       FROM " . _dbprefix_ . "element_news,\n                            " . _dbprefix_ . "news_member,\n                            " . _dbprefix_ . "news,\n                            " . _dbprefix_ . "page_element,\n                            " . _dbprefix_ . "page,\n                            " . _dbprefix_ . "system\n                      WHERE news_id = ?\n                        AND content_id = page_element_id\n                        AND content_id = system_id\n                        AND ( news_category = '0' OR (\n                                news_category = newsmem_category\n                                AND newsmem_news = news_id\n                           )\n                        )\n                        AND system_prev_id = page_id\n                        AND system_status = 1\n                        AND news_view = 0\n                        " . $objORM->getDeletedWhereRestriction() . "\n                        AND page_element_ph_language = ? ";
     $arrRows = $this->objDB->getPArray($strQuery, array($this->getSystemid(), $objResult->getObjSearch()->getStrPortalLangFilter()));
     $arrReturn = array();
     foreach ($arrRows as $arrOnePage) {
         //check, if the post is available on a page using the current language
         if (!isset($arrOnePage["news_detailspage"]) || $arrOnePage["news_detailspage"] == "") {
             continue;
         }
         $objDetails = class_module_pages_page::getPageByName($arrOnePage["news_detailspage"]);
         if ($objDetails == null) {
             continue;
         }
         //TODO: PV position
         $objOneResult = clone $objResult;
         $objOneResult->setStrPagelink(class_link::getLinkPortal($arrOnePage["news_detailspage"], "", "_self", $this->getStrTitle(), "newsDetail", "&highlight=" . urlencode(html_entity_decode($objResult->getObjSearch()->getStrQuery(), ENT_QUOTES, "UTF-8")), $this->getSystemid()));
         $objOneResult->setStrPagename($arrOnePage["news_detailspage"]);
         $objOneResult->setStrDescription($this->getStrIntro());
         $arrReturn[] = $objOneResult;
     }
     return $arrReturn;
 }