Ejemplo n.º 1
0
 /**
  * Rename page
  */
 function rename($a_new_name)
 {
     global $ilDB;
     // replace unallowed characters
     $a_new_name = str_replace(array("<", ">"), '', $a_new_name);
     // replace multiple whitespace characters by one single space
     $a_new_name = trim(preg_replace('!\\s+!', ' ', $a_new_name));
     $page_title = ilWikiUtil::makeDbTitle($a_new_name);
     $pg_id = ilWikiPage::_getPageIdForWikiTitle($this->getWikiId(), $page_title);
     $xml_new_name = str_replace("&", "&amp;", $a_new_name);
     if ($pg_id == 0 || $pg_id == $this->getId()) {
         include_once "./Services/COPage/classes/class.ilInternalLink.php";
         $sources = ilInternalLink::_getSourcesOfTarget("wpg", $this->getId(), 0);
         foreach ($sources as $s) {
             if ($s["type"] == "wpg:pg") {
                 $wpage = new ilWikiPage($s["id"]);
                 $col = ilWikiUtil::processInternalLinks($wpage->getXmlContent(), 0, IL_WIKI_MODE_EXT_COLLECT);
                 $new_content = $wpage->getXmlContent();
                 foreach ($col as $c) {
                     // this complicated procedure is needed due to the fact
                     // that depending on the collation e = é is true
                     // in the (mysql) database
                     // see bug http://www.ilias.de/mantis/view.php?id=11227
                     $t1 = ilWikiUtil::makeDbTitle($c["nt"]->mTextform);
                     $t2 = ilWikiUtil::makeDbTitle($this->getTitle());
                     // this one replaces C2A0 (&nbsp;) by a usual space
                     // otherwise the comparision will fail, since you
                     // get these characters from tiny if more than one
                     // space is repeated in a string. This may not be
                     // 100% but we do not store $t1 anywhere and only
                     // modify it for the comparison
                     $t1 = preg_replace('/\\xC2\\xA0/', ' ', $t1);
                     $t2 = preg_replace('/\\xC2\\xA0/', ' ', $t2);
                     $set = $ilDB->query($q = "SELECT " . $ilDB->quote($t1, "text") . " = " . $ilDB->quote($t2, "text") . " isequal");
                     $rec = $ilDB->fetchAssoc($set);
                     if ($rec["isequal"]) {
                         $new_content = str_replace("[[" . $c["nt"]->mTextform . "]]", "[[" . $xml_new_name . "]]", $new_content);
                         if ($c["text"] != "") {
                             $new_content = str_replace("[[" . $c["text"] . "]]", "[[" . $xml_new_name . "]]", $new_content);
                         }
                         $add = $c["text"] != "" ? "|" . $c["text"] : "";
                         $new_content = str_replace("[[" . $c["nt"]->mTextform . $add . "]]", "[[" . $xml_new_name . $add . "]]", $new_content);
                     }
                 }
                 $wpage->setXmlContent($new_content);
                 //echo htmlentities($new_content);
                 $wpage->update();
             }
         }
         include_once "./Modules/Wiki/classes/class.ilObjWiki.php";
         if (ilObjWiki::_lookupStartPage($this->getWikiId()) == $this->getTitle()) {
             ilObjWiki::writeStartPage($this->getWikiId(), $a_new_name);
         }
         $this->setTitle($a_new_name);
         $this->update();
     }
     return $a_new_name;
 }
Ejemplo n.º 2
0
 /**
  * Rename page
  */
 public function renamePage()
 {
     global $tpl, $lng, $ilCtrl, $ilAccess;
     $this->initRenameForm();
     if ($this->form->checkInput()) {
         if ($ilAccess->checkAccess("write", "", $_GET["ref_id"])) {
             $new_name = $this->form->getInput("new_page_name");
             $page_title = ilWikiUtil::makeDbTitle($new_name);
             $pg_id = ilWikiPage::_getPageIdForWikiTitle($this->getPageObject()->getWikiId(), $page_title);
             // we might get the same page id back here, if the page
             // name only differs in diacritics
             // see bug http://www.ilias.de/mantis/view.php?id=11226
             if ($pg_id > 0 && $pg_id != $this->getPageObject()->getId()) {
                 ilUtil::sendFailure($lng->txt("wiki_page_already_exists"));
             } else {
                 $new_name = $this->getPageObject()->rename($new_name);
                 $ilCtrl->setParameterByClass("ilobjwikigui", "page", ilWikiUtil::makeUrlTitle($new_name));
                 ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
                 $ilCtrl->redirect($this, "preview");
             }
         }
     }
     $this->form->setValuesByPost();
     $tpl->setContent($this->form->getHtml());
 }
Ejemplo n.º 3
0
 function getSettingsFormValues($a_mode = "edit")
 {
     global $lng, $ilUser;
     // set values
     if ($a_mode == "create") {
         //$values["startpage"] = $lng->txt("wiki_main_page");
         $values["rating_new"] = true;
         $values["rating_overall"] = ilObject::hasAutoRating("wiki", $_GET["ref_id"]);
         $this->form_gui->setValuesByArray($values);
     } else {
         $values["online"] = $this->object->getOnline();
         $values["title"] = $this->object->getTitle();
         //$values["startpage"] = $this->object->getStartPage();
         $values["startpage_id"] = ilWikiPage::_getPageIdForWikiTitle($this->object->getId(), $this->object->getStartPage());
         $values["shorttitle"] = $this->object->getShortTitle();
         $values["description"] = $this->object->getLongDescription();
         $values["rating_overall"] = $this->object->getRatingOverall();
         $values["rating"] = $this->object->getRating();
         // $values["rating_side"] = $this->object->getRatingAsBlock();
         $values["rating_new"] = $this->object->getRatingForNewPages();
         $values["rating_ext"] = $this->object->getRatingCategories();
         $values["public_notes"] = $this->object->getPublicNotes();
         $values["intro"] = $this->object->getIntroduction();
         //			$values["imp_pages"] = $this->object->getImportantPages();
         $values["page_toc"] = $this->object->getPageToc();
         // only set given values (because of adv. metadata)
         $this->form_gui->setValuesByArray($values, true);
     }
 }