ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
class.ilObjWiki.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 1998-2011 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
8 include_once "./Services/Object/classes/class.ilObject.php";
9 include_once "./Modules/Wiki/classes/class.ilWikiUtil.php";
10 include_once "./Services/AdvancedMetaData/interfaces/interface.ilAdvancedMetaDataSubItems.php";
11 
21 {
22  protected $online = false;
23  protected $public_notes = true;
24  protected $empty_page_templ = true;
25  protected $link_md_values = false;
26 
33  function ilObjWiki($a_id = 0,$a_call_by_reference = true)
34  {
35  $this->type = "wiki";
36  $this->ilObject($a_id,$a_call_by_reference);
37  }
38 
44  function setOnline($a_online)
45  {
46  $this->online = $a_online;
47  }
48 
54  function getOnline()
55  {
56  return $this->online;
57  }
58 
64  function setRatingOverall($a_rating)
65  {
66  $this->rating_overall = (bool)$a_rating;
67  }
68 
74  function getRatingOverall()
75  {
76  return $this->rating_overall;
77  }
78 
84  function setRating($a_rating)
85  {
86  $this->rating = (bool)$a_rating;
87  }
88 
94  function getRating()
95  {
96  return $this->rating;
97  }
98 
104  function setRatingAsBlock($a_rating)
105  {
106  $this->rating_block = (bool)$a_rating;
107  }
108 
114  function getRatingAsBlock()
115  {
116  return $this->rating_block;
117  }
118 
124  function setRatingForNewPages($a_rating)
125  {
126  $this->rating_new_pages = (bool)$a_rating;
127  }
128 
135  {
136  return $this->rating_new_pages;
137  }
138 
144  function setRatingCategories($a_rating)
145  {
146  $this->rating_categories = (bool)$a_rating;
147  }
148 
155  {
156  return $this->rating_categories;
157  }
158 
162  public function setPublicNotes($a_val)
163  {
164  $this->public_notes = $a_val;
165  }
166 
170  public function getPublicNotes()
171  {
172  return $this->public_notes;
173  }
174 
180  public function setImportantPages($a_val)
181  {
182  $this->imp_pages = $a_val;
183  }
184 
190  public function getImportantPages()
191  {
192  return $this->imp_pages;
193  }
194 
200  function setStartPage($a_startpage)
201  {
202  $this->startpage = ilWikiUtil::makeDbTitle($a_startpage);
203  }
204 
210  function getStartPage()
211  {
212  return $this->startpage;
213  }
214 
220  function setShortTitle($a_shorttitle)
221  {
222  $this->shorttitle = $a_shorttitle;
223  }
224 
230  function getShortTitle()
231  {
232  return $this->shorttitle;
233  }
234 
240  function setIntroduction($a_introduction)
241  {
242  $this->introduction = $a_introduction;
243  }
244 
250  function getIntroduction()
251  {
252  return $this->introduction;
253  }
254 
258  function getStyleSheetId()
259  {
260  return $this->style_id;
261  }
262 
266  function setStyleSheetId($a_style_id)
267  {
268  $this->style_id = $a_style_id;
269  }
270 
276  public function setPageToc($a_val)
277  {
278  $this->page_toc = $a_val;
279  }
280 
286  public function getPageToc()
287  {
288  return $this->page_toc;
289  }
290 
296  function setEmptyPageTemplate($a_val)
297  {
298  $this->empty_page_templ = $a_val;
299  }
300 
307  {
309  }
310 
316  function setLinkMetadataValues($a_val)
317  {
318  $this->link_md_values = $a_val;
319  }
320 
327  {
328  return $this->link_md_values;
329  }
330 
336  static function isOnlineHelpWiki($a_ref_id)
337  {
338  if ($a_ref_id > 0 && $a_ref_id == OH_REF_ID)
339  {
340 // return true;
341  }
342  return false;
343  }
344 
348  function create($a_prevent_start_page_creation = false)
349  {
350  global $ilDB;
351 
352  parent::create();
353 
354  $ilDB->insert("il_wiki_data", array(
355  "id" => array("integer", $this->getId()),
356  "is_online" => array("integer", (int) $this->getOnline()),
357  "startpage" => array("text", $this->getStartPage()),
358  "short" => array("text", $this->getShortTitle()),
359  "rating" => array("integer", (int) $this->getRating()),
360  "public_notes" => array("integer", (int) $this->getPublicNotes()),
361  "introduction" => array("clob", $this->getIntroduction()),
362  "empty_page_templ" => array("integer", (int) $this->getEmptyPageTemplate()),
363  ));
364 
365  // create start page
366  if ($this->getStartPage() != "" && !$a_prevent_start_page_creation)
367  {
368  include_once("./Modules/Wiki/classes/class.ilWikiPage.php");
369  $start_page = new ilWikiPage();
370  $start_page->setWikiId($this->getId());
371  $start_page->setTitle($this->getStartPage());
372  $start_page->create();
373  }
374 
375  if (((int) $this->getStyleSheetId()) > 0)
376  {
377  include_once("./Services/Style/classes/class.ilObjStyleSheet.php");
379  }
380  }
381 
388  function update($a_prevent_start_page_creation = false)
389  {
390  global $ilDB;
391 
392  if (!parent::update())
393  {
394  return false;
395  }
396 
397  $ilDB->update("il_wiki_data", array(
398  "is_online" => array("integer", $this->getOnline()),
399  "startpage" => array("text", $this->getStartPage()),
400  "short" => array("text", $this->getShortTitle()),
401  "rating_overall" => array("integer", $this->getRatingOverall()),
402  "rating" => array("integer", $this->getRating()),
403  "rating_side" => array("integer", (bool)$this->getRatingAsBlock()), // #13455
404  "rating_new" => array("integer", $this->getRatingForNewPages()),
405  "rating_ext" => array("integer", $this->getRatingCategories()),
406  "public_notes" => array("integer", $this->getPublicNotes()),
407  "introduction" => array("clob", $this->getIntroduction()),
408  "imp_pages" => array("integer", $this->getImportantPages()),
409  "page_toc" => array("integer", $this->getPageToc()),
410  "link_md_values" => array("integer", $this->getLinkMetadataValues()),
411  "empty_page_templ" => array("integer", $this->getEmptyPageTemplate())
412  ), array(
413  "id" => array("integer", $this->getId())
414  ));
415 
416  // check whether start page exists
417  include_once("./Modules/Wiki/classes/class.ilWikiPage.php");
418  if (!ilWikiPage::exists($this->getId(), $this->getStartPage())
419  && !$a_prevent_start_page_creation)
420  {
421  $start_page = new ilWikiPage();
422  $start_page->setWikiId($this->getId());
423  $start_page->setTitle($this->getStartPage());
424  $start_page->create();
425  }
426 
427  include_once("./Services/Style/classes/class.ilObjStyleSheet.php");
429 
430  return true;
431  }
432 
436  function read()
437  {
438  global $ilDB;
439 
440  parent::read();
441 
442  $query = "SELECT * FROM il_wiki_data WHERE id = ".
443  $ilDB->quote($this->getId(), "integer");
444  $set = $ilDB->query($query);
445  $rec = $ilDB->fetchAssoc($set);
446 
447  $this->setOnline($rec["is_online"]);
448  $this->setStartPage($rec["startpage"]);
449  $this->setShortTitle($rec["short"]);
450  $this->setRatingOverall($rec["rating_overall"]);
451  $this->setRating($rec["rating"]);
452  $this->setRatingAsBlock($rec["rating_side"]);
453  $this->setRatingForNewPages($rec["rating_new"]);
454  $this->setRatingCategories($rec["rating_ext"]);
455  $this->setPublicNotes($rec["public_notes"]);
456  $this->setIntroduction($rec["introduction"]);
457  $this->setImportantPages($rec["imp_pages"]);
458  $this->setPageToc($rec["page_toc"]);
459  $this->setEmptyPageTemplate($rec["empty_page_templ"]);
460  $this->setLinkMetadataValues($rec["link_md_values"]);
461 
462  include_once("./Services/Style/classes/class.ilObjStyleSheet.php");
464 
465  }
466 
467 
474  function delete()
475  {
476  global $ilDB;
477 
478  // always call parent delete function first!!
479  if (!parent::delete())
480  {
481  return false;
482  }
483 
484  // delete record of table il_wiki_data
485  $query = "DELETE FROM il_wiki_data".
486  " WHERE id = ".$ilDB->quote($this->getId(), "integer");
487  $ilDB->manipulate($query);
488 
489  // remove all notifications
490  include_once "./Services/Notification/classes/class.ilNotification.php";
492 
493  include_once("./Modules/Wiki/classes/class.ilWikiPage.php");
495 
496  return true;
497  }
498 
502  static function checkShortTitleAvailability($a_short_title)
503  {
504  global $ilDB;
505 
506  $res = $ilDB->queryF("SELECT id FROM il_wiki_data WHERE short = %s",
507  array("text"), array($a_short_title));
508  if ($ilDB->fetchAssoc($res))
509  {
510  return false;
511  }
512 
513  return true;
514  }
515 
516 
530  function notify($a_event,$a_ref_id,$a_parent_non_rbac_id,$a_node_id,$a_params = 0)
531  {
532  global $tree;
533 
534  switch ($a_event)
535  {
536  case "link":
537 
538  //var_dump("<pre>",$a_params,"</pre>");
539  //echo "Module name ".$this->getRefId()." triggered by link event. Objects linked into target object ref_id: ".$a_ref_id;
540  //exit;
541  break;
542 
543  case "cut":
544 
545  //echo "Module name ".$this->getRefId()." triggered by cut event. Objects are removed from target object ref_id: ".$a_ref_id;
546  //exit;
547  break;
548 
549  case "copy":
550 
551  //var_dump("<pre>",$a_params,"</pre>");
552  //echo "Module name ".$this->getRefId()." triggered by copy event. Objects are copied into target object ref_id: ".$a_ref_id;
553  //exit;
554  break;
555 
556  case "paste":
557 
558  //echo "Module name ".$this->getRefId()." triggered by paste (cut) event. Objects are pasted into target object ref_id: ".$a_ref_id;
559  //exit;
560  break;
561 
562  case "new":
563 
564  //echo "Module name ".$this->getRefId()." triggered by paste (new) event. Objects are applied to target object ref_id: ".$a_ref_id;
565  //exit;
566  break;
567  }
568 
569  // At the beginning of the recursive process it avoids second call of the notify function with the same parameter
570  if ($a_node_id==$_GET["ref_id"])
571  {
572  $parent_obj =& $this->ilias->obj_factory->getInstanceByRefId($a_node_id);
573  $parent_type = $parent_obj->getType();
574  if($parent_type == $this->getType())
575  {
576  $a_node_id = (int) $tree->getParentId($a_node_id);
577  }
578  }
579 
580  parent::notify($a_event,$a_ref_id,$a_parent_non_rbac_id,$a_node_id,$a_params);
581  }
582 
590  static function _lookupRatingOverall($a_wiki_id)
591  {
592  return ilObjWiki::_lookup($a_wiki_id, "rating_overall");
593  }
594 
602  static function _lookupRating($a_wiki_id)
603  {
604  return ilObjWiki::_lookup($a_wiki_id, "rating");
605  }
606 
614  static function _lookupRatingCategories($a_wiki_id)
615  {
616  return ilObjWiki::_lookup($a_wiki_id, "rating_ext");
617  }
618 
626  static function _lookupRatingAsBlock($a_wiki_id)
627  {
628  return ilObjWiki::_lookup($a_wiki_id, "rating_side");
629  }
630 
638  static function _lookupPublicNotes($a_wiki_id)
639  {
640  return ilObjWiki::_lookup($a_wiki_id, "public_notes");
641  }
642 
650  static function _lookupLinkMetadataValues($a_wiki_id)
651  {
652  return ilObjWiki::_lookup($a_wiki_id, "link_md_values");
653  }
654 
663  private static function _lookup($a_wiki_id, $a_field)
664  {
665  global $ilDB;
666 
667  $query = "SELECT $a_field FROM il_wiki_data WHERE id = ".
668  $ilDB->quote($a_wiki_id, "integer");
669  $set = $ilDB->query($query);
670  $rec = $ilDB->fetchAssoc($set);
671  return $rec[$a_field];
672  }
673 
681  static function _lookupStartPage($a_wiki_id)
682  {
683  return ilObjWiki::_lookup($a_wiki_id, "startpage");
684  }
685 
689  static function writeStartPage($a_id, $a_name)
690  {
691  global $ilDB;
692 
693  include_once("./Modules/Wiki/classes/class.ilWikiUtil.php");
694  $ilDB->manipulate("UPDATE il_wiki_data SET ".
695  " startpage = ".$ilDB->quote(ilWikiUtil::makeDbTitle($a_name), "text").
696  " WHERE id = ".$ilDB->quote($a_id, "integer")
697  );
698  }
699 
703  static function _performSearch($a_wiki_id, $a_searchterm)
704  {
705  // query parser
706  include_once 'Services/Search/classes/class.ilQueryParser.php';
707 
708  $query_parser = new ilQueryParser($a_searchterm);
709  $query_parser->setCombination("or");
710  $query_parser->parse();
711 
712  include_once 'Services/Search/classes/class.ilSearchResult.php';
713  $search_result = new ilSearchResult();
714  if($query_parser->validate())
715  {
716 
717  include_once 'Services/Search/classes/class.ilObjectSearchFactory.php';
718  $wiki_search =& ilObjectSearchFactory::_getWikiContentSearchInstance($query_parser);
719  $wiki_search->setFilter(array('wpg'));
720  $search_result->mergeEntries($wiki_search->performSearch());
721  }
722 
723  $entries = $search_result->getEntries();
724 
725  $found_pages = array();
726  foreach($entries as $entry)
727  {
728  if ($entry["obj_id"] == $a_wiki_id && is_array($entry["child"]))
729  {
730  foreach($entry["child"] as $child)
731  {
732  $found_pages[] = array("page_id" => $child);
733  }
734  }
735  }
736 
737  return $found_pages;
738  }
739 
740  //
741  // Important pages
742  //
743 
751  static function _lookupImportantPages($a_wiki_id)
752  {
753  return ilObjWiki::_lookup($a_wiki_id, "imp_pages");
754  }
755 
762  static function _lookupImportantPagesList($a_wiki_id)
763  {
764  global $ilDB;
765 
766  $set = $ilDB->query("SELECT * FROM il_wiki_imp_pages WHERE ".
767  " wiki_id = ".$ilDB->quote($a_wiki_id, "integer")." ORDER BY ord ASC "
768  );
769 
770  $imp_pages = array();
771 
772  while ($rec = $ilDB->fetchAssoc($set))
773  {
774  $imp_pages[] = $rec;
775  }
776  return $imp_pages;
777  }
778 
785  static function _lookupMaxOrdNrImportantPages($a_wiki_id)
786  {
787  global $ilDB;
788 
789  $set = $ilDB->query("SELECT MAX(ord) as m FROM il_wiki_imp_pages WHERE ".
790  " wiki_id = ".$ilDB->quote($a_wiki_id, "integer")
791  );
792 
793  $rec = $ilDB->fetchAssoc($set);
794  return (int) $rec["m"];
795  }
796 
797 
803  function addImportantPage($a_page_id, $a_nr = 0, $a_indent = 0)
804  {
805  global $ilDB;
806 
807  if (!$this->isImportantPage($a_page_id))
808  {
809  if ($a_nr == 0)
810  {
811  $a_nr = ilObjWiki::_lookupMaxOrdNrImportantPages($this->getId()) + 10;
812  }
813 
814  $ilDB->manipulate("INSERT INTO il_wiki_imp_pages ".
815  "(wiki_id, ord, indent, page_id) VALUES (".
816  $ilDB->quote($this->getId(), "integer").",".
817  $ilDB->quote($a_nr, "integer").",".
818  $ilDB->quote($a_indent, "integer").",".
819  $ilDB->quote($a_page_id, "integer").
820  ")");
821  }
822  }
823 
830  function isImportantPage($a_page_id)
831  {
832  global $ilDB;
833 
834  $set = $ilDB->query("SELECT * FROM il_wiki_imp_pages WHERE ".
835  " wiki_id = ".$ilDB->quote($this->getId(), "integer")." AND ".
836  " page_id = ".$ilDB->quote($a_page_id, "integer")
837  );
838  if ($rec = $ilDB->fetchAssoc($set))
839  {
840  return true;
841  }
842  return false;
843  }
844 
850  function removeImportantPage($a_id)
851  {
852  global $ilDB;
853 
854  $ilDB->manipulate("DELETE FROM il_wiki_imp_pages WHERE "
855  ." wiki_id = ".$ilDB->quote($this->getId(), "integer")
856  ." AND page_id = ".$ilDB->quote($a_id, "integer")
857  );
858 
860  }
861 
868  function saveOrderingAndIndentation($a_ord, $a_indent)
869  {
870  global $ilDB;
871 
872  $ipages = ilObjWiki::_lookupImportantPagesList($this->getId());
873 
874  foreach ($ipages as $k => $v)
875  {
876  if (isset($a_ord[$v["page_id"]]))
877  {
878  $ipages[$k]["ord"] = (int) $a_ord[$v["page_id"]];
879  }
880  if (isset($a_indent[$v["page_id"]]))
881  {
882  $ipages[$k]["indent"] = (int) $a_indent[$v["page_id"]];
883  }
884  }
885  $ipages = ilUtil::sortArray($ipages, "ord", "asc", true);
886 
887  // fix indentation: no 2 is allowed after a 0
888  $c_indent = 0;
889  $fixed = false;
890  foreach ($ipages as $k => $v)
891  {
892  if ($ipages[$k]["indent"] == 2 && $c_indent == 0)
893  {
894  $ipages[$k]["indent"] = 1;
895  $fixed = true;
896  }
897  $c_indent = $ipages[$k]["indent"];
898  }
899 
900  $ord = 10;
901  reset($ipages);
902  foreach ($ipages as $k => $v)
903  {
904  $ilDB->manipulate($q = "UPDATE il_wiki_imp_pages SET ".
905  " ord = ".$ilDB->quote($ord, "integer").",".
906  " indent = ".$ilDB->quote($v["indent"], "integer").
907  " WHERE wiki_id = ".$ilDB->quote($v["wiki_id"], "integer").
908  " AND page_id = ".$ilDB->quote($v["page_id"], "integer")
909  );
910  $ord+=10;
911  }
912 
913  return $fixed;
914  }
915 
920  {
921  global $ilDB;
922 
923  $ipages = ilObjWiki::_lookupImportantPagesList($this->getId());
924 
925  // fix indentation: no 2 is allowed after a 0
926  $c_indent = 0;
927  $fixed = false;
928  foreach ($ipages as $k => $v)
929  {
930  if ($ipages[$k]["indent"] == 2 && $c_indent == 0)
931  {
932  $ipages[$k]["indent"] = 1;
933  $fixed = true;
934  }
935  $c_indent = $ipages[$k]["indent"];
936  }
937 
938  $ord = 10;
939  foreach ($ipages as $k => $v)
940  {
941  $ilDB->manipulate($q = "UPDATE il_wiki_imp_pages SET ".
942  " ord = ".$ilDB->quote($ord, "integer").
943  ", indent = ".$ilDB->quote($v["indent"], "integer").
944  " WHERE wiki_id = ".$ilDB->quote($v["wiki_id"], "integer").
945  " AND page_id = ".$ilDB->quote($v["page_id"], "integer")
946  );
947  $ord+=10;
948  }
949 
950  }
951 
952  //
953  // Page TOC
954  //
955 
963  static function _lookupPageToc($a_wiki_id)
964  {
965  return ilObjWiki::_lookup($a_wiki_id, "page_toc");
966  }
967 
974  public function cloneObject($a_target_id,$a_copy_id = 0)
975  {
976  global $ilDB, $ilUser, $ilias;
977 
978  $new_obj = parent::cloneObject($a_target_id,$a_copy_id);
979 
980  //copy online status if object is not the root copy object
981  $cp_options = ilCopyWizardOptions::_getInstance($a_copy_id);
982 
983  if(!$cp_options->isRootNode($this->getRefId()))
984  {
985  $new_obj->setOnline($this->getOnline());
986  }
987 
988  //$new_obj->setTitle($this->getTitle()); // see #20074
989  $new_obj->setStartPage($this->getStartPage());
990  $new_obj->setShortTitle($this->getShortTitle());
991  $new_obj->setRatingOverall($this->getRatingOverall());
992  $new_obj->setRating($this->getRating());
993  $new_obj->setRatingAsBlock($this->getRatingAsBlock());
994  $new_obj->setRatingForNewPages($this->getRatingForNewPages());
995  $new_obj->setRatingCategories($this->getRatingCategories());
996  $new_obj->setPublicNotes($this->getPublicNotes());
997  $new_obj->setIntroduction($this->getIntroduction());
998  $new_obj->setImportantPages($this->getImportantPages());
999  $new_obj->setPageToc($this->getPageToc());
1000  $new_obj->update();
1001 
1002  // set/copy stylesheet
1003  include_once("./Services/Style/classes/class.ilObjStyleSheet.php");
1004  $style_id = $this->getStyleSheetId();
1005  if ($style_id > 0 && !ilObjStyleSheet::_lookupStandard($style_id))
1006  {
1007  $style_obj = $ilias->obj_factory->getInstanceByObjId($style_id);
1008  $new_id = $style_obj->ilClone();
1009  $new_obj->setStyleSheetId($new_id);
1010  $new_obj->update();
1011  }
1012 
1013  // copy content
1014  include_once("./Modules/Wiki/classes/class.ilWikiPage.php");
1015  $pages = ilWikiPage::getAllPages($this->getId());
1016  if (count($pages) > 0)
1017  {
1018  // if we have any pages, delete the start page first
1019  $pg_id = ilWikiPage::getPageIdForTitle($new_obj->getId(), $new_obj->getStartPage());
1020  $start_page = new ilWikiPage($pg_id);
1021  $start_page->delete();
1022  }
1023  $map = array();
1024  foreach ($pages as $p)
1025  {
1026  $page = new ilWikiPage($p["id"]);
1027  $new_page = new ilWikiPage();
1028  $new_page->setTitle($page->getTitle());
1029  $new_page->setWikiId($new_obj->getId());
1030  $new_page->setTitle($page->getTitle());
1031  $new_page->setBlocked($page->getBlocked());
1032  $new_page->setRating($page->getRating());
1033  $new_page->hideAdvancedMetadata($page->isAdvancedMetadataHidden());
1034  $new_page->create();
1035 
1036  $page->copy($new_page->getId(), "", 0, true);
1037  //$new_page->setXMLContent($page->copyXMLContent(true));
1038  //$new_page->buildDom(true);
1039  //$new_page->update();
1040  $map[$p["id"]] = $new_page->getId();
1041  }
1042 
1043  // copy important pages
1044  foreach (ilObjWiki::_lookupImportantPagesList($this->getId()) as $ip)
1045  {
1046  $new_obj->addImportantPage($map[$ip["page_id"]], $ip["ord"], $ip["indent"]);
1047  }
1048 
1049  // copy rating categories
1050  include_once("./Services/Rating/classes/class.ilRatingCategory.php");
1051  foreach (ilRatingCategory::getAllForObject($this->getId()) as $rc)
1052  {
1053  $new_rc = new ilRatingCategory();
1054  $new_rc->setParentId($new_obj->getId());
1055  $new_rc->setTitle($rc["title"]);
1056  $new_rc->setDescription($rc["description"]);
1057  $new_rc->save();
1058  }
1059 
1060  return $new_obj;
1061  }
1062 
1070  {
1071  $num = (int) $this->getEmptyPageTemplate();
1072  include_once("./Modules/Wiki/classes/class.ilWikiPageTemplate.php");
1073  $wt = new ilWikiPageTemplate($this->getId());
1074  $ts = $wt->getAllInfo(ilWikiPageTemplate::TYPE_NEW_PAGES);
1075  $num += count($ts);
1076  if ($num > 1)
1077  {
1078  return true;
1079  }
1080  return false;
1081  }
1082 
1090  function createWikiPage($a_page_title, $a_template_page = 0)
1091  {
1092  // check if template has to be used
1093  if ($a_template_page == 0)
1094  {
1095  if (!$this->getEmptyPageTemplate())
1096  {
1097  include_once("./Modules/Wiki/classes/class.ilWikiPageTemplate.php");
1098  $wt = new ilWikiPageTemplate($this->getId());
1099  $ts = $wt->getAllInfo(ilWikiPageTemplate::TYPE_NEW_PAGES);
1100  if (count($ts) == 1)
1101  {
1102  $t = current($ts);
1103  $a_template_page = $t["wpage_id"];
1104  }
1105  }
1106  }
1107 
1108  // create the page
1109  $page = new ilWikiPage();
1110  $page->setWikiId($this->getId());
1111  $page->setTitle(ilWikiUtil::makeDbTitle($a_page_title));
1112  if($this->getRating() && $this->getRatingForNewPages())
1113  {
1114  $page->setRating(true);
1115  }
1116 
1117  // needed for notification
1118  $page->setWikiRefId($this->getRefId());
1119  $page->create();
1120 
1121  // copy template into new page
1122  if ($a_template_page > 0)
1123  {
1124  $orig = new ilWikiPage($a_template_page);
1125  $orig->copy($page->getId());
1126 
1127  // #15718
1128  include_once "Services/AdvancedMetaData/classes/class.ilAdvancedMDValues.php";
1130  $this->getId(),
1131  $this->getId(),
1132  "wpg",
1133  $a_template_page,
1134  $page->getId()
1135  );
1136  }
1137 
1138  return $page;
1139  }
1140 
1141  public static function getAdvMDSubItemTitle($a_obj_id, $a_sub_type, $a_sub_id)
1142  {
1143  global $lng;
1144 
1145  if($a_sub_type == "wpg")
1146  {
1147  $lng->loadLanguageModule("wiki");
1148  include_once "./Modules/Wiki/classes/class.ilWikiPage.php";
1149  return $lng->txt("wiki_wpg").' "'.ilWikiPage::lookupTitle($a_sub_id).'"';
1150  }
1151  }
1152 
1160  {
1161  global $ilDB, $ilUser;
1162 
1163  include_once("./Modules/Wiki/classes/class.ilWikiUserHTMLExport.php");
1164 
1165  $user_export = new ilWikiUserHTMLExport($this, $ilDB, $ilUser);
1166  $user_export->initUserHTMLExport();
1167  }
1168 
1176  {
1177  global $ilDB, $ilUser;
1178 
1179  include_once("./Modules/Wiki/classes/class.ilWikiUserHTMLExport.php");
1180 
1181  $user_export = new ilWikiUserHTMLExport($this, $ilDB, $ilUser);
1182  $user_export->startUserHTMLExport();
1183  }
1184 
1191  {
1192  global $ilDB, $ilUser;
1193 
1194  include_once("./Modules/Wiki/classes/class.ilWikiUserHTMLExport.php");
1195 
1196  $user_export = new ilWikiUserHTMLExport($this, $ilDB, $ilUser);
1197  return $user_export->getProgress();
1198  }
1199 
1204  {
1205  global $ilDB, $ilUser;
1206 
1207  include_once("./Modules/Wiki/classes/class.ilWikiUserHTMLExport.php");
1208 
1209  $user_export = new ilWikiUserHTMLExport($this, $ilDB, $ilUser);
1210  return $user_export->deliverFile();
1211  }
1212 
1213 
1220  public function decorateAdvMDValue($a_value)
1221  {
1222  include_once("./Modules/Wiki/classes/class.ilWikiPage.php");
1223  if (ilWikiPage::_wikiPageExists($this->getId(), $a_value))
1224  {
1225  $url = ilObjWikiGUI::getGotoLink($this->getRefId(), $a_value);
1226  return "<a href='".$url."'>".$a_value."</a>";
1227  }
1228 
1229  return $a_value;
1230  }
1231 
1232 
1233 
1234 }
1235 ?>
static getGotoLink($a_ref_id, $a_page="")
Get goto link.
static lookupTitle($a_page_id)
Checks whether a page with given title exists.
static _getWikiContentSearchInstance($query_parser)
get reference of ilFulltextWikiContentSearch
static removeForObject($type, $id)
Remove all notifications for given object.
static _lookupRatingOverall($a_wiki_id)
Lookup whether rating is activated for whole object.
saveOrderingAndIndentation($a_ord, $a_indent)
Save ordering and indentation.
static _lookupImportantPagesList($a_wiki_id)
Get important pages list.
setImportantPages($a_val)
Set important pages.
getRatingOverall()
Get Enable Rating For Object.
update($a_prevent_start_page_creation=false)
update object data
setOnline($a_online)
Set Online.
getUserHTMLExportProgress()
Get user html export progress.
initUserHTMLExport()
Init user html export.
getStartPage()
Get Start Page.
$_GET["client_id"]
setIntroduction($a_introduction)
Set Introduction.
static checkShortTitleAvailability($a_short_title)
Check availability of short title.
getLinkMetadataValues()
Get link md values.
getShortTitle()
Get ShortTitle.
setPublicNotes($a_val)
Set public notes.
Class ilObject Basic functions for all objects.
static _lookupStartPage($a_wiki_id)
Lookup start page.
deliverUserHTMLExport()
Send user html export file.
static _lookupLinkMetadataValues($a_wiki_id)
Lookup whether metadata should be auto linked.
notify($a_event, $a_ref_id, $a_parent_non_rbac_id, $a_node_id, $a_params=0)
notifys an object about an event occured Based on the event happend, each object may decide how it re...
getPublicNotes()
Get public notes.
startUserHTMLExport()
Start user html export.
getRatingForNewPages()
Get Enable Rating For New Pages.
$url
Definition: shib_logout.php:72
static _lookupRatingCategories($a_wiki_id)
Lookup whether rating categories are activated.
static sortArray($array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
getRatingCategories()
Get Enable Rating Categories.
static getAllForObject($a_parent_obj_id)
Get all categories for object.
static lookupObjectStyle($a_obj_id)
Lookup object style.
static getPageIdForTitle($a_wiki_id, $a_title)
Get wiki page object for id and title.
setRatingCategories($a_rating)
Set Enable Rating Categories.
setStyleSheetId($a_style_id)
set ID of assigned style sheet object
ilObject($a_id=0, $a_reference=true)
Constructor public.
isImportantPage($a_page_id)
Is page an important page?
addImportantPage($a_page_id, $a_nr=0, $a_indent=0)
Add important page.
createWikiPage($a_page_title, $a_template_page=0)
Create new wiki page.
Class manages user html export.
static _lookupRating($a_wiki_id)
Lookup whether rating is activated.
static writeStyleUsage($a_obj_id, $a_style_id)
Write style usage.
getPageToc()
Get page toc.
static getAdvMDSubItemTitle($a_obj_id, $a_sub_type, $a_sub_id)
setRatingAsBlock($a_rating)
Set Enable Rating Side Block.
static _performSearch($a_wiki_id, $a_searchterm)
Search in Wiki.
fixImportantPagesNumbering()
Fix important pages numbering.
static _getInstance($a_copy_id)
Get instance of copy wizard options.
Interface for repository objects to use adv md with subitems.
getEmptyPageTemplate()
Get empty page template.
setEmptyPageTemplate($a_val)
Set empty page template.
decorateAdvMDValue($a_value)
Decorate adv md value.
getId()
get object id public
static _cloneValues($a_source_id, $a_target_id, $a_sub_type=null, $a_source_sub_id=null, $a_target_sub_id=null)
Clone Advanced Meta Data.
getTemplateSelectionOnCreation()
Get template selection on creation? If more than one template (including empty page template) is acti...
getRatingAsBlock()
Get Enable Rating Side Block.
Class ilObjWiki.
cloneObject($a_target_id, $a_copy_id=0)
Clone wiki.
static _lookupRatingAsBlock($a_wiki_id)
Lookup whether rating side block is activated.
static _lookupMaxOrdNrImportantPages($a_wiki_id)
Get important pages list.
getStyleSheetId()
get ID of assigned style sheet object
redirection script todo: (a better solution should control the processing via a xml file) ...
Class ilWikiPage.
setShortTitle($a_shorttitle)
Set ShortTitle.
ilObjWiki($a_id=0, $a_call_by_reference=true)
Constructor public.
static _lookupPageToc($a_wiki_id)
Lookup whether important pages are activated.
getType()
get object type public
static makeDbTitle($a_par)
Handle page GET parameter.
setStartPage($a_startpage)
Set Start Page.
setLinkMetadataValues($a_val)
Set link md values.
setRating($a_rating)
Set Enable Rating.
static _lookup($a_wiki_id, $a_field)
Lookup a data field.
static _wikiPageExists($a_wiki_id, $a_title)
Check whether page exists for wiki or not.
_lookupStandard($a_id)
Lookup standard flag.
read()
Read wiki data.
static exists($a_wiki_id, $a_title)
Checks whether a page with given title exists.
getIntroduction()
Get Introduction.
setRatingForNewPages($a_rating)
Set Enable Rating For New Pages.
global $ilUser
Definition: imgupload.php:15
global $ilDB
static isOnlineHelpWiki($a_ref_id)
Is wiki an online help wiki?
getRefId()
get reference id public
Class ilRatingCategory.
getImportantPages()
Get important pages.
setRatingOverall($a_rating)
Set Enable Rating For Object.
create($a_prevent_start_page_creation=false)
Create new wiki.
getOnline()
Get Online.
static deleteAllPagesOfWiki($a_wiki_id)
delete wiki page and al related data
getRating()
Get Enable Rating.
static getAllPages($a_wiki_id)
Get all pages of wiki.
static _lookupImportantPages($a_wiki_id)
Lookup whether important pages are activated.
static _lookupPublicNotes($a_wiki_id)
Lookup whether public notes are activated.
setPageToc($a_val)
Set page toc.
static writeStartPage($a_id, $a_name)
Write start page.
removeImportantPage($a_id)
Remove important page.