26 protected \ILIAS\Wiki\Page\PageDBRepository
$repo;
28 protected \ILIAS\Wiki\InternalService
$service;
43 $this->service = $DIC->wiki()->internal();
45 $this->wiki_log = $this->service->domain()->log();
46 $this->repo = $this->service->repo()->page();
55 return $this->service->gui()->notification();
58 public function setTitle(
string $a_title): void
80 $this->parent_ref_id = $a_wiki_ref_id;
90 $this->blocked = $a_val;
100 $this->rating = $a_val;
110 $this->hide_adv_md = $a_val;
128 "SELECT id FROM il_wiki_page " .
129 " WHERE id = " .
$ilDB->quote($this->getId(),
"integer") .
130 " AND lang = " .
$ilDB->quote($this->getLanguage(),
"text")
132 if ($rec =
$ilDB->fetchAssoc($set)) {
136 parent::createFromXML();
140 bool $a_import =
false 146 $id =
$ilDB->nextId(
"il_wiki_page");
150 $query =
"INSERT INTO il_wiki_page (" .
167 $this->wiki_log->debug($query);
168 $ilDB->manipulate($query);
172 parent::create($a_import);
195 $this->wiki_log->debug(
"collect internal links");
201 $ext_links = count($xpath->query(
'//IntLink'));
202 $ext_links += count($xpath->query(
'//ExtLink'));
204 $footnotes = count($xpath->query(
'//Footnote'));
209 $xml = strip_tags($xml);
212 $num_words = count(explode(
" ", $xml));
215 "int_links" => $int_links,
216 "ext_links" => $ext_links,
217 "footnotes" => $footnotes,
218 "num_words" => $num_words,
219 "num_chars" => $num_chars
221 $this->wiki_log->debug(
"handle stats");
230 bool $a_validate =
true,
231 bool $a_no_history =
false 234 $this->wiki_log->debug(
"start...");
236 $query =
"UPDATE il_wiki_page SET " .
240 ",rating = " .
$ilDB->quote((
int) $this->
getRating(),
"integer") .
242 " WHERE id = " .
$ilDB->quote($this->
getId(),
"integer") .
244 $ilDB->manipulate($query);
245 $updated = parent::update($a_validate, $a_no_history);
246 if ($updated ===
true) {
247 $this->wiki_log->debug(
"send notification");
257 $this->wiki_log->debug(
"update news");
268 bool $a_omit_page_read =
false 272 $query =
"SELECT * FROM il_wiki_page WHERE id = " .
276 $set =
$ilDB->query($query);
277 $rec =
$ilDB->fetchAssoc($set);
286 if (!$a_omit_page_read) {
292 public function delete():
void 294 $imp_pages = $this->service->domain()->importantPage($this->
getWikiRefId());
299 $linking_pages = self::getLinksToPage(
307 if ($imp_pages->isImportantPage($this->getId())) {
308 $imp_pages->removeImportantPage($this->
getId());
336 $missing_page_repo = $this->service->repo()->missingPage();
337 foreach ($linking_pages as $lp) {
338 $missing_page_repo->save(
351 $ilDB = $DIC->database();
354 $query =
"SELECT * FROM il_wiki_page" .
355 " WHERE wiki_id = " .
$ilDB->quote($a_wiki_id,
"integer");
356 $set =
$ilDB->query($query);
358 while ($rec =
$ilDB->fetchAssoc($set)) {
359 $wiki_page =
new ilWikiPage($rec[
"id"], 0, $rec[
"lang"]);
360 $wiki_page->delete();
374 $ilDB = $DIC->database();
378 $query =
"SELECT id FROM il_wiki_page" .
379 " WHERE wiki_id = " .
$ilDB->quote($a_wiki_id,
"integer") .
380 " AND title = " .
$ilDB->quote($a_title,
"text") .
382 $set =
$ilDB->query($query);
383 if ($rec =
$ilDB->fetchAssoc($set)) {
405 $ilDB = $DIC->database();
409 $query =
"SELECT * FROM il_wiki_page" .
410 " WHERE wiki_id = " .
$ilDB->quote($a_wiki_id,
"integer") .
411 " AND title = " .
$ilDB->quote($a_title,
"text") .
413 $set =
$ilDB->query($query);
414 if ($rec =
$ilDB->fetchAssoc($set)) {
415 return (
int) $rec[
"id"];
425 $ilDB = $DIC->database();
427 $query =
"SELECT * FROM il_wiki_page" .
428 " WHERE id = " .
$ilDB->quote($a_page_id,
"integer") .
430 $set =
$ilDB->query($query);
431 if ($rec =
$ilDB->fetchAssoc($set)) {
432 return (
string) $rec[
"title"];
442 $ilDB = $DIC->database();
444 $query =
"SELECT wiki_id FROM il_wiki_page" .
445 " WHERE id = " .
$ilDB->quote($a_page_id,
"integer");
446 $set =
$ilDB->query($query);
447 if ($rec =
$ilDB->fetchAssoc($set)) {
448 return (
int) $rec[
"wiki_id"];
460 $ilDB = $DIC->database();
462 $pages = parent::getAllPages(
"wpg", $a_wiki_id);
464 $query =
"SELECT * FROM il_wiki_page" .
465 " WHERE wiki_id = " .
$ilDB->quote($a_wiki_id,
"integer") .
466 " AND lang = " .
$ilDB->quote(
$lang,
"text") .
468 $set =
$ilDB->query($query);
471 while ($rec =
$ilDB->fetchAssoc($set)) {
472 if (isset($pages[$rec[
"id"]])) {
473 $pg[$rec[
"id"]] = $pages[$rec[
"id"]];
474 $pg[$rec[
"id"]][
"title"] = $rec[
"title"];
491 $ilDB = $DIC->database();
495 foreach ($sources as $source) {
496 if ($source[
"type"] ===
"wpg:pg" && $source[
"lang"] ===
$lang) {
497 $ids[] = $source[
"id"];
502 $query =
"SELECT * FROM il_wiki_page wp, page_object p" .
503 " WHERE " .
$ilDB->in(
"wp.id", $ids,
false,
"integer") .
504 " AND wp.id = p.page_id AND wp.lang = p.lang AND p.parent_type = " .
$ilDB->quote(
"wpg",
"text") .
505 " AND wp.wiki_id = " .
$ilDB->quote($a_wiki_id,
"integer") .
506 " AND wp.lang = " .
$ilDB->quote(
$lang,
"text") .
508 $set =
$ilDB->query($query);
511 while ($rec =
$ilDB->fetchAssoc($set)) {
512 $pages[] = array_merge($rec, array(
"user" => $rec[
"last_change_user"],
513 "date" => $rec[
"last_change"]));
529 $ilDB = $DIC->database();
533 $query =
"SELECT id FROM il_wiki_page" .
534 " WHERE wiki_id = " .
$ilDB->quote($a_wiki_id,
"integer") .
535 " AND title = " .
$ilDB->quote($a_title,
"text") .
537 $set =
$ilDB->query($query);
539 if (
$ilDB->fetchAssoc($set)) {
549 return parent::getParentObjectContributors(
"wpg", $a_wiki_id);
555 return parent::getPageContributors(
"wpg", $a_page_id);
561 parent::saveInternalLinks($a_domdoc);
564 $link_manager = $this->service->domain()->links($this->
getWikiRefId());
565 $link_manager->saveInternalLinksForPage(
581 return self::getPageIdForTitle($a_wiki_id, $a_title);
589 $ilDB = $DIC->database();
591 $query =
"SELECT wp.*, po.view_cnt as cnt FROM il_wiki_page wp, page_object po" .
592 " WHERE wp.wiki_id = " .
$ilDB->quote($a_wiki_id,
"integer") .
593 " AND wp.id = po.page_id " .
594 " AND po.parent_type = " .
$ilDB->quote(
"wpg",
"text") .
" " .
595 " ORDER BY po.view_cnt";
596 $set =
$ilDB->query($query);
599 while ($rec =
$ilDB->fetchAssoc($set)) {
611 $ilDB = $DIC->database();
614 $query =
"SELECT count(*) as cnt FROM il_wiki_page" .
615 " WHERE wiki_id = " .
$ilDB->quote($a_wiki_id,
"integer") .
616 " WHERE lang = " .
$ilDB->quote(
"-",
"text");
617 $s =
$ilDB->query($query);
628 $ilDB = $DIC->database();
630 $cnt = self::countPages($a_wiki_id);
636 $random = new \Random\Randomizer();
637 $rand = $random->getInt(1, $cnt);
639 $ilDB->setLimit(1, $rand);
640 $query =
"SELECT title FROM il_wiki_page" .
641 " WHERE wiki_id = " .
$ilDB->quote($a_wiki_id,
"integer");
642 $s =
$ilDB->query($query);
651 $pages = parent::getNewPages(
"wpg", $a_wiki_id);
652 foreach ($pages as $k => $page) {
653 $pages[$k][
"title"] = self::lookupTitle($page[
"id"]);
668 $ilDB = $DIC->database();
670 $query =
"SELECT wiki_id FROM il_wiki_page" .
671 " WHERE id = " .
$ilDB->quote($a_page_id,
"integer");
672 $set =
$ilDB->query($query);
673 if ($rec =
$ilDB->fetchAssoc($set)) {
674 return (
int) $rec[
"wiki_id"];
689 $a_new_name = str_replace(array(
"<",
">"),
'', $a_new_name);
692 $a_new_name = trim(preg_replace(
'!\s+!',
' ', $a_new_name));
697 $xml_new_name = str_replace(
"&",
"&", $a_new_name);
699 if ($pg_id == 0 || $pg_id == $this->
getId()) {
702 $this->log->debug(
"nr of pages linking to renamed page: " . count($sources));
703 foreach ($sources as $s) {
705 $wpage =
new ilWikiPage($s[
"id"], 0, $s[
"lang"]);
710 $wpage->getXMLContent(),
715 $this->log->debug(
"nr internal links: " . count($col));
716 $new_content = $wpage->getXMLContent();
717 foreach ($col as
$c) {
731 $t1 = preg_replace(
'/\xC2\xA0/',
' ', $t1);
732 $t2 = preg_replace(
'/\xC2\xA0/',
' ', $t2);
734 $set =
$ilDB->query(
$q =
"SELECT " .
$ilDB->quote($t1,
"text") .
" = " .
$ilDB->quote($t2,
"text") .
" isequal");
735 $rec =
$ilDB->fetchAssoc($set);
737 if ($rec[
"isequal"]) {
740 "[[" . $c[
"nt"]->mTextform .
"]]",
741 "[[" . $xml_new_name .
"]]",
744 if ($c[
"text"] !=
"") {
747 "[[" . $c[
"text"] .
"]]",
748 "[[" . $xml_new_name .
"]]",
752 $add = ($c[
"text"] !=
"")
757 "[[" . $c[
"nt"]->mTextform . $add .
"]]",
758 "[[" . $xml_new_name . $add .
"]]",
763 $wpage->setXMLContent($new_content);
783 bool $a_update =
false 788 $default_visibility = ($news_set->get(
"default_visibility") !=
"")
789 ? $news_set->get(
"default_visibility")
794 $news_item->setContext(
801 $news_item->setTitle($this->
getTitle());
802 $news_item->setContentTextIsLangVar(
true);
803 $news_item->setContent(
"wiki_news_page_created");
804 $news_item->setUserId($ilUser->getId());
805 $news_item->setVisibility($default_visibility);
806 $news_item->create();
819 $news_item->setContent(
"wiki_news_page_changed");
820 $news_item->setUserId($ilUser->getId());
821 $news_item->setTitle($this->
getTitle());
822 $news_item->setContentTextIsLangVar(
true);
823 $news_item->update(
true);
826 $news_item->setContext(
833 $news_item->setTitle($this->
getTitle());
834 $news_item->setContentTextIsLangVar(
true);
835 $news_item->setContent(
"wiki_news_page_changed");
836 $news_item->setUserId($ilUser->getId());
837 $news_item->setVisibility($default_visibility);
838 $news_item->create();
845 bool $a_offline =
false 848 $href =
"./goto.php?target=wiki_wpage_" . $a_target;
850 $href = ILIAS_HTTP_PATH .
"/goto.php?target=wiki_wpage_" . $a_target;
863 $templates = array();
865 $templates[] = array(
"id" => $t[
"wpage_id"],
"parent_type" =>
"wpg",
"title" => $t[
"title"]);
876 $ilDB = $DIC->database();
878 $set =
$ilDB->query(
"SELECT DISTINCT title FROM il_wiki_page" .
879 " WHERE wiki_id = " .
$ilDB->quote($a_wiki_id,
"integer") .
880 " AND " .
$ilDB->like(
"title",
"text",
"%" . $a_term .
"%") .
883 while ($rec =
$ilDB->fetchAssoc($set)) {
884 $res[] = $rec[
"title"];
895 $ilDB = $DIC->database();
897 $query =
"SELECT * FROM il_wiki_page" .
898 " WHERE id = " .
$ilDB->quote($a_page_id,
"integer");
899 $set =
$ilDB->query($query);
900 if ($rec =
$ilDB->fetchAssoc($set)) {
901 return (
bool) $rec[
"hide_adv_md"];
914 parent::setTranslationProperties($transl_page);
921 if ($new_page->getWikiId() === 0 || $new_page->getWikiId() === $this->
getWikiId()) {
static _getSourcesOfTarget(string $a_target_type, int $a_target_id, int $a_target_inst)
get all sources of a link target
static getNewWikiPages(int $a_wiki_id)
ILIAS Wiki Page PageDBRepository $repo
static getLastNewsIdForContext(int $a_context_obj_id, string $a_context_obj_type, int $a_context_sub_obj_id=0, string $a_context_sub_obj_type="", bool $a_only_today=false)
Get last news id of news set related to a certain context.
static getPagesForSearch(int $a_wiki_id, string $a_term)
Interface Observer Contains several chained tasks and infos about them.
static lookupTitle(int $a_page_id, string $lang="-")
isAdvancedMetadataHidden()
getNotificationGUI()
This currently violates the layer model, since notifications render the abstracts with a GUI class...
static getLinksToPage(int $a_wiki_id, int $a_page_id, string $lang="-")
getContentTemplates()
Get content templates.
static countPages(int $a_wiki_id)
hideAdvancedMetadata(bool $a_val)
getDomDoc()
Get dom doc (DOMDocument)
static lookupWikiId(int $a_page_id)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getWikiPageContributors(int $a_page_id)
rename(string $a_new_name)
Rename page.
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
static _getPageIdForWikiTitle(int $a_wiki_id, string $a_title)
static strLen(string $a_string)
setTitle(string $a_title)
setTranslationProperties(ilPageObject $transl_page)
create(bool $a_import=false)
static _exists(string $a_parent_type, int $a_id, string $a_lang="", bool $a_no_cache=false)
Checks whether page exists.
static exists(int $a_wiki_id, string $a_title, string $lang="-")
Checks whether a page with given title exists.
static collectInternalLinks(string $s, int $a_wiki_id, bool $a_collect_non_ex=false, string $mode=IL_WIKI_MODE_COLLECT)
Collect internal wiki links of a string.
static raiseContentChanged(int $obj_id)
Class ilPageObject Handles PageObjects of ILIAS Learning Modules (see ILIAS DTD)
static lookupAdvancedMetadataHidden(int $a_page_id)
static _deleteAllLinksToTarget(string $a_target_type, int $a_target_id, int $a_target_inst=0)
Delete all links to a given target.
static getRandomPage(int $a_wiki_id)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static writeStartPage(int $a_id, string $a_name)
static _lookupStartPage(int $a_wiki_id)
static getWikiContributors(int $a_wiki_id)
setWikiRefId(int $a_wiki_ref_id)
update(bool $a_validate=true, bool $a_no_history=false)
static deleteAllPagesOfWiki(int $a_wiki_id)
static getPopularPages(int $a_wiki_id)
updateNews(bool $a_update=false)
static handleEvent(int $a_event, ilWikiPage $a_page_obj, ?int $a_user_id=null, ?array $a_additional_data=null)
Handle wiki page event.
A news item can be created by different sources.
static makeDbTitle(string $a_par)
static getPageIdForTitle(int $a_wiki_id, string $a_title, string $lang="-")
Get wiki page object for id and title.
static _wikiPageExists(int $a_wiki_id, string $a_title, string $lang="-")
ILIAS Wiki InternalService $service
static getGotoForWikiPageTarget(string $a_target, bool $a_offline=false)
afterUpdate(DOMDocument $domdoc, string $xml)
const IL_WIKI_MODE_EXT_COLLECT
static lookupObjIdByPage(int $a_page_id)
returns the wiki/object id to a given page id
saveInternalLinks(DOMDocument $a_domdoc)
static removeForObject(int $type, int $id)
Remove all notifications for given object.
read(bool $a_omit_page_read=false)
static getAllWikiPages(int $a_wiki_id, string $lang="-")
preparePageForCompare(ilPageObject $page)
setCopyProperties(ilPageObject $new_page)