Public Member Functions | |
ilPageObject ($a_parent_type, $a_id=0, $a_halt=true) | |
Constructor public. | |
haltOnError ($a_halt) | |
read () | |
read page data | |
buildDom () | |
freeDom () | |
& | getDom () |
setId ($a_id) | |
set id | |
getId () | |
setParentId ($a_id) | |
getParentId () | |
setParentType ($a_type) | |
getParentType () | |
addUpdateListener (&$a_object, $a_method, $a_parameters="") | |
callUpdateListeners () | |
& | getContentObject ($a_hier_id) |
& | getContentNode ($a_hier_id) |
lookforhier ($a_hier_id) | |
& | getNode () |
setXMLContent ($a_xml, $a_encoding="UTF-8") | |
set xml content of page, start with <PageObject...>, end with </PageObject>, comply with ILIAS DTD, omit MetaData, use utf-8! | |
appendXMLContent ($a_xml) | |
append xml content to page setXMLContent must be called before and the same encoding must be used | |
getXMLContent ($a_incl_head=false) | |
get xml content of page | |
getXMLFromDom ($a_incl_head=false, $a_append_mobs=false, $a_append_bib=false, $a_append_str="", $a_omit_pageobject_tag=false) | |
get xml content of page from dom (use this, if any changes are made to the document) | |
getLanguageVariablesXML () | |
get language variables as XML | |
appendLangVarXML (&$xml, $var) | |
getFirstParagraphText () | |
setContainsIntLink ($a_contains_link) | |
lm parser set this flag to true, if the page contains intern links (this method should only be called by the import parser) | |
containsIntLink () | |
returns true, if page was marked as containing an intern link (via setContainsIntLink) (this method should only be called by the import parser) | |
needsImportParsing ($a_parse="") | |
getBibliographyXML () | |
get a xml string that contains all Bibliography elements, that are referenced by any bibitem alias in the page | |
collectMediaObjects ($a_inline_only=true) | |
get all media objects, that are referenced and used within the page | |
getInternalLinks () | |
get all file items that are used within the page | |
collectFileItems () | |
get all file items that are used within the page | |
getMultimediaXML () | |
get a xml string that contains all media object elements, that are referenced by any media alias in the page | |
getMediaAliasElement ($a_mob_id, $a_nr=1) | |
get complete media object (alias) element | |
validateDom () | |
addHierIDs () | |
Add hierarchical ID (e.g. | |
getHierIds () | |
get all hierarchical ids | |
getFirstRowIds () | |
get ids of all first table rows | |
getFirstColumnIds () | |
get ids of all first table columns | |
getListItemIds () | |
get ids of all list items | |
getFileItemIds () | |
get ids of all file items | |
stripHierIDs () | |
strip all hierarchical id attributes out of the dom tree | |
addFileSizes () | |
add file sizes | |
resolveIntLinks () | |
resolves all internal link targets of the page, if targets are available | |
createFromXML () | |
create new page object with current xml content | |
updateFromXML () | |
updates page object with current xml content | |
update ($a_validate=true) | |
update complete page content in db (dom xml content is used) | |
delete () | |
delete page object | |
saveMobUsage ($a_xml) | |
save all usages of media objects (media aliases, media objects, internal links) | |
saveFileUsage () | |
save file usages | |
saveInternalLinks ($a_xml) | |
save internal links of page | |
create () | |
create new page (with current xml data) | |
deleteContent ($a_hid, $a_update=true) | |
delete content object with hierarchical id $a_hid | |
deleteContentFromHierId ($a_hid, $a_update=true) | |
delete content object with hierarchical id >= $a_hid | |
deleteContentBeforeHierId ($a_hid, $a_update=true) | |
delete content object with hierarchical id < $a_hid | |
_moveContentAfterHierId (&$a_source_page, &$a_target_page, $a_hid) | |
move content of hierarchical id >= $a_hid to other page | |
insertContent (&$a_cont_obj, $a_pos, $a_mode=IL_INSERT_AFTER) | |
insert a content node before/after a sibling or as first child of a parent | |
moveContentBefore ($a_source, $a_target) | |
move content object from position $a_source before position $a_target (both hierarchical content ids) | |
moveContentAfter ($a_source, $a_target) | |
move content object from position $a_source before position $a_target (both hierarchical content ids) | |
bbCode2XML (&$a_content) | |
transforms bbCode to corresponding xml | |
insertInstIntoIDs ($a_inst) | |
inserts installation id into ids (e.g. | |
highlightText ($a_text, $proglang, $autoindent) | |
Highligths Text with given ProgLang. | |
hasHighlighter ($hfile_ext) | |
addSourceCodeHighlighting () | |
depending on the SubCharacteristic and ShowLineNumbers attribute the line numbers and html tags for the syntax highlighting will be inserted using the dom xml functions | |
send_paragraph ($par_id, $filename) | |
getFO () | |
get fo page content | |
Data Fields | |
$id | |
$ilias | |
$dom | |
$xml | |
$encoding | |
$node | |
$cur_dtd = "ilias_pg_0_1.dtd" | |
$contains_int_link | |
$needs_parsing | |
$parent_type | |
$parent_id | |
$update_listeners | |
$update_listener_cnt | |
$dom_builded |
Definition at line 49 of file class.ilPageObject.php.
ilPageObject::_moveContentAfterHierId | ( | &$ | a_source_page, | |
&$ | a_target_page, | |||
$ | a_hid | |||
) |
move content of hierarchical id >= $a_hid to other page
string | $a_hid hierarchical id of content object | |
boolean | $a_update update page in db (note: update deletes all hierarchical ids in DOM!) |
Definition at line 1405 of file class.ilPageObject.php.
Referenced by ilLMPageObject::_splitPageNext().
{ $hier_ids = $a_source_page->getHierIds(); $copy_ids = array(); // iterate all hierarchical ids foreach ($hier_ids as $hier_id) { // move top level nodes only if (!is_int(strpos($hier_id, "_"))) { if ($hier_id != "pg" && $hier_id >= $a_hid) { $copy_ids[] = $hier_id; } } } asort($copy_ids); $parent_node =& $a_target_page->getContentNode("pg"); $target_dom =& $a_target_page->getDom(); $parent_childs =& $parent_node->child_nodes(); $first_child =& $parent_childs[0]; $cnt_parent_childs = count($parent_childs); foreach($copy_ids as $copy_id) { $source_node =& $a_source_page->getContentNode($copy_id); $new_node =& $source_node->clone_node(true); $new_node->unlink_node($new_node); $source_node->unlink_node($source_node); if($cnt_parent_childs == 0) { $new_node =& $parent_node->append_child($new_node); } else { //$target_dom->import_node($new_node); $new_node =& $first_child->insert_before($new_node, $first_child); } $parent_childs =& $parent_node->child_nodes(); $cnt_parent_childs++; } $a_target_page->update(); $a_source_page->update(); }
ilPageObject::addFileSizes | ( | ) |
add file sizes
Definition at line 930 of file class.ilPageObject.php.
References $id, $path, $res, $size, $xpc, ilObjFile::_lookupFileSize(), xpath_eval(), and xpath_new_context().
{ $xpc = xpath_new_context($this->dom); $path = "//FileItem"; $res =& xpath_eval($xpc, $path); for($i = 0; $i < count($res->nodeset); $i++) { $cnode =& $res->nodeset[$i]; $size_node =& $this->dom->create_element("Size"); $size_node =& $cnode->append_child($size_node); $childs =& $cnode->child_nodes(); $size = ""; for($j = 0; $j < count($childs); $j++) { if ($childs[$j]->node_name() == "Identifier") { if ($childs[$j]->has_attribute("Entry")) { $entry = $childs[$j]->get_attribute("Entry"); $entry_arr = explode("_", $entry); $id = $entry_arr[count($entry_arr) - 1]; require_once("classes/class.ilObjFile.php"); $size = ilObjFile::_lookupFileSize($id); } } } $size_node->set_content($size); } unset($xpc); }
ilPageObject::addHierIDs | ( | ) |
Add hierarchical ID (e.g.
for editing) attributes "HierId" to current dom tree. This attribute will be added to the following elements: PageObject, Paragraph, Table, TableRow, TableData. Only elements of these types are counted as "childs" here.
Hierarchical IDs have the format "x_y_z_...", e.g. "1_4_2" means: second child of fourth child of first child of page.
The PageObject element gets the special id "pg". The first child of the page starts with id 1. The next child gets the 2 and so on.
Another example: The first child of the page is a Paragraph -> id 1. The second child is a table -> id 2. The first row gets the id 2_1, the
Definition at line 753 of file class.ilPageObject.php.
References $path, $res, $xpc, ilPageContent::incEdId(), xpath_eval(), and xpath_new_context().
{ $this->hier_ids = array(); $this->first_row_ids = array(); $this->first_col_ids = array(); $this->list_item_ids = array(); $this->file_item_ids = array(); // set hierarchical ids for Paragraphs, Tables, TableRows and TableData elements $xpc = xpath_new_context($this->dom); //$path = "//Paragraph | //Table | //TableRow | //TableData"; $path = "//PageContent | //TableRow | //TableData | //ListItem | //FileItem"; $res =& xpath_eval($xpc, $path); for($i = 0; $i < count($res->nodeset); $i++) { $cnode = $res->nodeset[$i]; $ctag = $cnode->node_name(); // get hierarchical id of previous sibling $sib_hier_id = ""; while($cnode =& $cnode->previous_sibling()) { if (($cnode->node_type() == XML_ELEMENT_NODE) && $cnode->has_attribute("HierId")) { $sib_hier_id = $cnode->get_attribute("HierId"); //$sib_hier_id = $id_attr->value(); break; } } if ($sib_hier_id != "") // set id to sibling id "+ 1" { $node_hier_id = ilPageContent::incEdId($sib_hier_id); $res->nodeset[$i]->set_attribute("HierId", $node_hier_id); $this->hier_ids[] = $node_hier_id; if ($ctag == "TableData") { if (substr($par_hier_id,strlen($par_hier_id)-2) == "_1") { $this->first_row_ids[] = $node_hier_id; } } if ($ctag == "ListItem") { $this->list_item_ids[] = $node_hier_id; } if ($ctag == "FileItem") { $this->file_item_ids[] = $node_hier_id; } } else // no sibling -> node is first child { // get hierarchical id of next parent $cnode = $res->nodeset[$i]; $par_hier_id = ""; while($cnode =& $cnode->parent_node()) { if (($cnode->node_type() == XML_ELEMENT_NODE) && $cnode->has_attribute("HierId")) { $par_hier_id = $cnode->get_attribute("HierId"); //$par_hier_id = $id_attr->value(); break; } } if (($par_hier_id != "") && ($par_hier_id != "pg")) // set id to parent_id."_1" { $node_hier_id = $par_hier_id."_1"; $res->nodeset[$i]->set_attribute("HierId", $node_hier_id); $this->hier_ids[] = $node_hier_id; if ($ctag == "TableData") { $this->first_col_ids[] = $node_hier_id; if (substr($par_hier_id,strlen($par_hier_id)-2) == "_1") { $this->first_row_ids[] = $node_hier_id; } } if ($ctag == "ListItem") { $this->list_item_ids[] = $node_hier_id; } if ($ctag == "FileItem") { $this->file_item_ids[] = $node_hier_id; } } else // no sibling, no parent -> first node { $node_hier_id = "1"; $res->nodeset[$i]->set_attribute("HierId", $node_hier_id); $this->hier_ids[] = $node_hier_id; } } } // set special hierarchical id "pg" for pageobject $xpc = xpath_new_context($this->dom); $path = "//PageObject"; $res =& xpath_eval($xpc, $path); for($i = 0; $i < count($res->nodeset); $i++) // should only be 1 { $res->nodeset[$i]->set_attribute("HierId", "pg"); $this->hier_ids[] = "pg"; } unset($xpc); }
ilPageObject::addSourceCodeHighlighting | ( | ) |
depending on the SubCharacteristic and ShowLineNumbers attribute the line numbers and html tags for the syntax highlighting will be inserted using the dom xml functions
Definition at line 1727 of file class.ilPageObject.php.
References $path, $res, $xpc, highlightText(), xpath_eval(), and xpath_new_context().
{ $xpc = xpath_new_context($this->dom); $path = "//Paragraph[@Characteristic = 'Code']"; $res = & xpath_eval($xpc, $path); for($i = 0; $i < count($res->nodeset); $i++) { $context_node = $res->nodeset[$i]; $n = $context_node->parent_node(); $char = $context_node->get_attribute('Characteristic'); $subchar = $context_node->get_attribute('SubCharacteristic'); $showlinenumbers = $context_node->get_attribute('ShowLineNumbers'); $downloadtitle = $context_node->get_attribute('DownloadTitle'); $autoindent = $context_node->get_attribute('AutoIndent'); $content = ""; // get XML Content $childs = $context_node->child_nodes(); for($j=0; $j<count($childs); $j++) { $content .= $this->dom->dump_node($childs[$j]); } //if ($subchar == "html") //{ //$content = str_replace("&lt;", "<", $content); //$content = str_replace("&gt;", ">", $content); //$content = str_replace("&", "&amp;", $content); //} while ($context_node->has_child_nodes ()) { $node_del = $context_node->first_child (); $context_node->remove_child ($node_del); } $content = str_replace("<br />", "<br/>", $content ); $content = str_replace("<br/>", "\n", $content); $rownums = count(split ("\n",$content)); $plain_content = html_entity_decode($content); $plain_content = preg_replace ("/\&#x([1-9a-f]{2});?/ise","chr (base_convert (\\1, 16, 10))",$plain_content); $plain_content = preg_replace ("/\&#(\d+);?/ise","chr (\\1)",$plain_content); $content = $this->highlightText($plain_content, $subchar, $autoindent); $content = str_replace("&lt;", "<", $content); $content = str_replace("&gt;", ">", $content); $content = str_replace("&", "&", $content); //$rows = htmlentities ("<TR valign=\"top\">"); $rows = "<TR valign=\"top\">"; $rownumbers = "<TD nowrap=\"nowrap\" class=\"ilc_LineNumbers\"><PRE>"; if (strcmp($showlinenumbers,"y")==0) { for ($j=0; $j < $rownums; $j++) { $indentno = strlen($rownums) - strlen($j+1) + 2; $rownumeration = ($j+1); $rownumbers .= $rownumeration; if ($j < $rownums-1) { $rownumbers .= "<br />"; } } //$rows .= $rownumbers.htmlentities ("</PRE></TD>"); $rows .= $rownumbers."</PRE></TD>"; } //$rows .= htmlentities ("<TD class=\"ilc_Sourcecode\"><PRE>").$content.htmlentities ("</PRE></TD></TR>"); $rows .= "<TD class=\"ilc_Sourcecode\"><PRE>".$content."</PRE></TD></TR>"; $newcontent = str_replace("\n", "<br />", $rows); // fix for ie explorer which is not able to produce empty line feeds with <br /><br /> $newcontent = str_replace("<br /><br />", "<br/> <br />", $newcontent ); //echo "<br>".htmlentities($newcontent); $context_node->set_content($newcontent); } }
ilPageObject::addUpdateListener | ( | &$ | a_object, | |
$ | a_method, | |||
$ | a_parameters = "" | |||
) |
Definition at line 210 of file class.ilPageObject.php.
{ $cnt = $this->update_listener_cnt; $this->update_listeners[$cnt]["object"] =& $a_object; $this->update_listeners[$cnt]["method"] = $a_method; $this->update_listeners[$cnt]["parameters"] = $a_parameters; $this->update_listener_cnt++; }
ilPageObject::appendLangVarXML | ( | &$ | xml, | |
$ | var | |||
) |
Definition at line 496 of file class.ilPageObject.php.
Referenced by getLanguageVariablesXML().
ilPageObject::appendXMLContent | ( | $ | a_xml | ) |
append xml content to page setXMLContent must be called before and the same encoding must be used
string | $a_xml xml content |
Definition at line 380 of file class.ilPageObject.php.
{ $this->xml.= $a_xml; }
ilPageObject::bbCode2XML | ( | &$ | a_content | ) |
transforms bbCode to corresponding xml
Definition at line 1606 of file class.ilPageObject.php.
{ $a_content = eregi_replace("\[com\]","<Comment>",$a_content); $a_content = eregi_replace("\[\/com\]","</Comment>",$a_content); $a_content = eregi_replace("\[emp]","<Emph>",$a_content); $a_content = eregi_replace("\[\/emp\]","</Emph>",$a_content); $a_content = eregi_replace("\[str]","<Strong>",$a_content); $a_content = eregi_replace("\[\/str\]","</Strong>",$a_content); }
ilPageObject::buildDom | ( | ) |
Definition at line 128 of file class.ilPageObject.php.
References $ilBench, $path, $res, $xpc, domxml_open_mem(), getXMLContent(), xpath_eval(), and xpath_new_context().
Referenced by delete().
{ global $ilBench; if ($this->dom_builded) { return; } //echo "<br><br>".$this->getId().":xml:".htmlentities($this->getXMLContent(true)).":<br>"; $ilBench->start("ContentPresentation", "ilPageObject_buildDom"); $this->dom = @domxml_open_mem($this->getXMLContent(true), DOMXML_LOAD_VALIDATING, $error); $ilBench->stop("ContentPresentation", "ilPageObject_buildDom"); /* if (!is_object($this->dom)) { print_r($error); echo "<br><br>".$this->getId().":xml:".htmlentities($this->getXMLContent(true)).":<br>"; }*/ $xpc = xpath_new_context($this->dom); $path = "//PageObject"; $res =& xpath_eval($xpc, $path); if (count($res->nodeset) == 1) { $this->node =& $res->nodeset[0]; } if (empty($error)) { $this->dom_builded = true; return true; } else { return $error; } }
ilPageObject::callUpdateListeners | ( | ) |
Definition at line 219 of file class.ilPageObject.php.
Referenced by update().
{ for($i=0; $i<$this->update_listener_cnt; $i++) { $object =& $this->update_listeners[$i]["object"]; $method = $this->update_listeners[$i]["method"]; $parameters = $this->update_listeners[$i]["parameters"]; $object->$method($parameters); } }
ilPageObject::collectFileItems | ( | ) |
get all file items that are used within the page
Definition at line 677 of file class.ilPageObject.php.
References $path, $res, $xpc, xpath_eval(), and xpath_new_context().
Referenced by delete(), and saveFileUsage().
{ //echo "<br>PageObject::collectFileItems[".$this->getId()."]"; // determine all media aliases of the page $xpc = xpath_new_context($this->dom); $path = "//FileItem/Identifier"; $res =& xpath_eval($xpc, $path); $file_ids = array(); for($i = 0; $i < count($res->nodeset); $i++) { $id_arr = explode("_", $res->nodeset[$i]->get_attribute("Entry")); $file_id = $id_arr[count($id_arr) - 1]; $file_ids[$file_id] = $file_id; } return $file_ids; }
ilPageObject::collectMediaObjects | ( | $ | a_inline_only = true |
) |
get all media objects, that are referenced and used within the page
Definition at line 585 of file class.ilPageObject.php.
References $path, $res, $xpc, xpath_eval(), and xpath_new_context().
Referenced by delete(), and getMultimediaXML().
{ //echo htmlentities($this->getXMLFromDom()); // determine all media aliases of the page $xpc = xpath_new_context($this->dom); $path = "//MediaObject/MediaAlias"; $res =& xpath_eval($xpc, $path); $mob_ids = array(); for($i = 0; $i < count($res->nodeset); $i++) { $id_arr = explode("_", $res->nodeset[$i]->get_attribute("OriginId")); $mob_id = $id_arr[count($id_arr) - 1]; $mob_ids[$mob_id] = $mob_id; } // determine all inline internal media links $xpc = xpath_new_context($this->dom); $path = "//IntLink[@Type = 'MediaObject']"; $res =& xpath_eval($xpc, $path); for($i = 0; $i < count($res->nodeset); $i++) { if (($res->nodeset[$i]->get_attribute("TargetFrame") == "") || (!$a_inline_only)) { $target = $res->nodeset[$i]->get_attribute("Target"); $id_arr = explode("_", $target); if (($id_arr[1] == IL_INST_ID) || (substr($target, 0, 4) == "il__")) { $mob_id = $id_arr[count($id_arr) - 1]; $mob_ids[$mob_id] = $mob_id; } } } return $mob_ids; }
ilPageObject::containsIntLink | ( | ) |
returns true, if page was marked as containing an intern link (via setContainsIntLink) (this method should only be called by the import parser)
Definition at line 539 of file class.ilPageObject.php.
{
return $this->contains_int_link;
}
ilPageObject::create | ( | ) |
create new page (with current xml data)
Definition at line 1315 of file class.ilPageObject.php.
References createFromXML().
{ $this->createFromXML(); }
ilPageObject::createFromXML | ( | ) |
create new page object with current xml content
Definition at line 1016 of file class.ilPageObject.php.
References $lng, $query, getParentId(), getXMLContent(), ilUtil::prepareDBString(), and setXMLContent().
Referenced by create().
{ global $lng; //echo "<br>PageObject::createFromXML[".$this->getId()."]"; if($this->getXMLContent() == "") { $this->setXMLContent("<PageObject></PageObject>"); } // create object $query = "INSERT INTO page_object (page_id, parent_id, content, parent_type) VALUES ". "('".$this->getId()."', '".$this->getParentId()."','".ilUtil::prepareDBString($this->getXMLContent()). "', '".$this->getParentType()."')"; if(!$this->ilias->db->checkQuerySize($query)) { $this->ilias->raiseError($lng->txt("check_max_allowed_packet_size"),$this->ilias->error_obj->MESSAGE); return false; } $this->ilias->db->query($query); //echo "created page:".htmlentities($this->getXMLContent())."<br>"; }
ilPageObject::delete | ( | ) |
delete page object
Definition at line 1119 of file class.ilPageObject.php.
References $file_obj, $query, ilObjFile::_deleteAllUsages(), buildDom(), collectFileItems(), collectMediaObjects(), getId(), getParentType(), saveInternalLinks(), and saveMobUsage().
{ $mobs = array(); $files = array(); if (!$this->page_not_found) { $this->buildDom(); $mobs = $this->collectMediaObjects(false); $files = $this->collectFileItems(); } // delete mob usages $this->saveMobUsage("<dummy></dummy>"); // delete internal links $this->saveInternalLinks("<dummy></dummy>"); // delete all file usages include_once("classes/class.ilObjFile.php"); ilObjFile::_deleteAllUsages($this->getParentType().":pg", $this->getId()); // delete page_object entry $query = "DELETE FROM page_object ". "WHERE page_id = '".$this->getId(). "' AND parent_type='".$this->getParentType()."'"; $this->ilias->db->query($query); foreach ($mobs as $mob_id) { $mob_obj =& new ilObjMediaObject($mob_id); $mob_obj->delete(); } include_once("classes/class.ilObjFile.php"); foreach ($files as $file_id) { $file_obj =& new ilObjFile($file_id, false); $file_obj->delete(); } }
ilPageObject::deleteContent | ( | $ | a_hid, | |
$ | a_update = true | |||
) |
delete content object with hierarchical id $a_hid
string | $a_hid hierarchical id of content object | |
boolean | $a_update update page in db (note: update deletes all hierarchical ids in DOM!) |
Definition at line 1327 of file class.ilPageObject.php.
References getContentNode(), and update().
Referenced by moveContentAfter(), and moveContentBefore().
{ $curr_node =& $this->getContentNode($a_hid); $curr_node->unlink_node($curr_node); if ($a_update) { return $this->update(); } }
ilPageObject::deleteContentBeforeHierId | ( | $ | a_hid, | |
$ | a_update = true | |||
) |
delete content object with hierarchical id < $a_hid
string | $a_hid hierarchical id of content object | |
boolean | $a_update update page in db (note: update deletes all hierarchical ids in DOM!) |
Definition at line 1374 of file class.ilPageObject.php.
References getContentNode(), getHierIds(), and update().
{ $hier_ids = $this->getHierIds(); // iterate all hierarchical ids foreach ($hier_ids as $hier_id) { // delete top level nodes only if (!is_int(strpos($hier_id, "_"))) { if ($hier_id != "pg" && $hier_id < $a_hid) { $curr_node =& $this->getContentNode($hier_id); $curr_node->unlink_node($curr_node); } } } if ($a_update) { return $this->update(); } }
ilPageObject::deleteContentFromHierId | ( | $ | a_hid, | |
$ | a_update = true | |||
) |
delete content object with hierarchical id >= $a_hid
string | $a_hid hierarchical id of content object | |
boolean | $a_update update page in db (note: update deletes all hierarchical ids in DOM!) |
Definition at line 1344 of file class.ilPageObject.php.
References getContentNode(), getHierIds(), and update().
{ $hier_ids = $this->getHierIds(); // iterate all hierarchical ids foreach ($hier_ids as $hier_id) { // delete top level nodes only if (!is_int(strpos($hier_id, "_"))) { if ($hier_id != "pg" && $hier_id >= $a_hid) { $curr_node =& $this->getContentNode($hier_id); $curr_node->unlink_node($curr_node); } } } if ($a_update) { return $this->update(); } }
ilPageObject::freeDom | ( | ) |
Definition at line 166 of file class.ilPageObject.php.
{
//$this->dom->free();
unset($this->dom);
}
ilPageObject::getBibliographyXML | ( | ) |
get a xml string that contains all Bibliography elements, that are referenced by any bibitem alias in the page
Definition at line 562 of file class.ilPageObject.php.
References $_GET, $ilias, and $row.
Referenced by getXMLFromDom().
{ global $ilias; // todo: access to $_GET and $_POST variables is not // allowed in non GUI classes! // // access to db table object_reference is not allowed here! $r = $ilias->db->query("SELECT * FROM object_reference WHERE ref_id='".$_GET["ref_id"]."' "); $row = $r->fetchRow(DB_FETCHMODE_ASSOC); include_once("./classes/class.ilNestedSetXML.php"); $nested = new ilNestedSetXML(); $bibs_xml = $nested->export($row["obj_id"], "bib"); return $bibs_xml; }
& ilPageObject::getContentNode | ( | $ | a_hier_id | ) |
Definition at line 319 of file class.ilPageObject.php.
References $path, $res, $xpc, xpath_eval(), and xpath_new_context().
Referenced by deleteContent(), deleteContentBeforeHierId(), deleteContentFromHierId(), getContentObject(), and insertContent().
{ // search for attribute "//*[@HierId = '%s']". //echo "get node :$a_hier_id:"; $xpc = xpath_new_context($this->dom); if($a_hier_id == "pg") { return $this->node; } else { $path = "//*[@HierId = '$a_hier_id']"; } $res =& xpath_eval($xpc, $path); //echo "count:".count($res->nodeset).":hierid:$a_hier_id:"; if (count($res->nodeset) == 1) { $cont_node =& $res->nodeset[0]; return $cont_node; } }
& ilPageObject::getContentObject | ( | $ | a_hier_id | ) |
Definition at line 230 of file class.ilPageObject.php.
References $list, $tab, and getContentNode().
Referenced by moveContentAfter(), and moveContentBefore().
{ //echo ":".$a_hier_id.":"; //echo "Content:".htmlentities($this->getXMLFromDOM()).":<br>"; //echo "ilPageObject::getContentObject:hierid:".$a_hier_id.":<br>"; $cont_node =& $this->getContentNode($a_hier_id); //echo "ilPageObject::getContentObject:nodename:".$cont_node->node_name().":<br>"; switch($cont_node->node_name()) { case "PageContent": $child_node =& $cont_node->first_child(); //echo "<br>nodename:".$child_node->node_name(); switch($child_node->node_name()) { case "Paragraph": require_once("content/classes/Pages/class.ilPCParagraph.php"); $par =& new ilPCParagraph($this->dom); $par->setNode($cont_node); $par->setHierId($a_hier_id); return $par; case "Table": require_once("content/classes/Pages/class.ilPCTable.php"); $tab =& new ilPCTable($this->dom); $tab->setNode($cont_node); $tab->setHierId($a_hier_id); return $tab; case "MediaObject": require_once("content/classes/Media/class.ilObjMediaObject.php"); //echo "ilPageObject::getContentObject:nodename:".$child_node->node_name().":<br>"; $mal_node =& $child_node->first_child(); //echo "ilPageObject::getContentObject:nodename:".$mal_node->node_name().":<br>"; $id_arr = explode("_", $mal_node->get_attribute("OriginId")); $mob_id = $id_arr[count($id_arr) - 1]; $mob =& new ilObjMediaObject($mob_id); $mob->setDom($this->dom); $mob->setNode($cont_node); $mob->setHierId($a_hier_id); return $mob; case "List": require_once("content/classes/Pages/class.ilPCList.php"); $list =& new ilPCList($this->dom); $list->setNode($cont_node); $list->setHierId($a_hier_id); return $list; case "FileList": require_once("content/classes/Pages/class.ilPCFileList.php"); $file_list =& new ilPCFileList($this->dom); $file_list->setNode($cont_node); $file_list->setHierId($a_hier_id); return $file_list; // note: assessment handling is forwarded to assessment gui classes case "Question": require_once("content/classes/Pages/class.ilPCQuestion.php"); $pc_question =& new ilPCQuestion($this->dom); $pc_question->setNode($cont_node); $pc_question->setHierId($a_hier_id); return $pc_question; } break; case "TableData": require_once("content/classes/Pages/class.ilPCTableData.php"); $td =& new ilPCTableData($this->dom); $td->setNode($cont_node); $td->setHierId($a_hier_id); return $td; case "ListItem": require_once("content/classes/Pages/class.ilPCListItem.php"); $td =& new ilPCListItem($this->dom); $td->setNode($cont_node); $td->setHierId($a_hier_id); return $td; case "FileItem": require_once("content/classes/Pages/class.ilPCFileItem.php"); $file_item =& new ilPCFileItem($this->dom); $file_item->setNode($cont_node); $file_item->setHierId($a_hier_id); return $file_item; } }
& ilPageObject::getDom | ( | ) |
Definition at line 172 of file class.ilPageObject.php.
{
return $this->dom;
}
ilPageObject::getFileItemIds | ( | ) |
get ids of all file items
Definition at line 901 of file class.ilPageObject.php.
{
return $this->file_item_ids;
}
ilPageObject::getFirstColumnIds | ( | ) |
get ids of all first table columns
Definition at line 885 of file class.ilPageObject.php.
{
return $this->first_col_ids;
}
ilPageObject::getFirstParagraphText | ( | ) |
Definition at line 503 of file class.ilPageObject.php.
References $path, $res, $xpc, xpath_eval(), and xpath_new_context().
{ $xpc = xpath_new_context($this->dom); $path = "//Paragraph[1]"; $res =& xpath_eval($xpc, $path); if (count($res->nodeset) > 0) { $cont_node =& $res->nodeset[0]->parent_node(); $par =& new ilPCParagraph($this->dom); $par->setNode($cont_node); return $par->getText(); } else { return ""; } }
ilPageObject::getFirstRowIds | ( | ) |
get ids of all first table rows
Definition at line 877 of file class.ilPageObject.php.
{
return $this->first_row_ids;
}
ilPageObject::getFO | ( | ) |
get fo page content
Definition at line 1853 of file class.ilPageObject.php.
References $args, $params, $xh, $xml, $xsl, getXMLFromDom(), xslt_create(), xslt_free(), and xslt_process().
{ $xml = $this->getXMLFromDom(false, true, true); $xsl = file_get_contents("./content/page_fo.xsl"); $args = array( '/_xml' => $xml, '/_xsl' => $xsl ); $xh = xslt_create(); $params = array (); $fo = xslt_process($xh,"arg:/_xml","arg:/_xsl",NULL,$args, $params); // do some replacements $fo = str_replace("\n", "", $fo); $fo = str_replace("<br/>", "<br>", $fo); $fo = str_replace("<br>", "\n", $fo); xslt_free($xh); // $fo = substr($fo, strpos($fo,">") + 1); //echo "<br><b>fo:</b><br>".htmlentities($fo); flush(); return $fo; }
ilPageObject::getHierIds | ( | ) |
get all hierarchical ids
Definition at line 868 of file class.ilPageObject.php.
Referenced by deleteContentBeforeHierId(), and deleteContentFromHierId().
{
return $this->hier_ids;
}
ilPageObject::getId | ( | ) |
Definition at line 185 of file class.ilPageObject.php.
Referenced by delete(), saveFileUsage(), saveInternalLinks(), and saveMobUsage().
{
return $this->id;
}
ilPageObject::getInternalLinks | ( | ) |
get all file items that are used within the page
Definition at line 628 of file class.ilPageObject.php.
References $id, $path, $res, $type, $xpc, ilMediaItem::_getMapAreasIntLinks(), xpath_eval(), and xpath_new_context().
{ //echo "<br>PageObject::getInternalLinks[".$this->getId()."]"; // get all internal links of the page $xpc = xpath_new_context($this->dom); $path = "//IntLink"; $res =& xpath_eval($xpc, $path); $links = array(); for($i = 0; $i < count($res->nodeset); $i++) { $target = $res->nodeset[$i]->get_attribute("Target"); $type = $res->nodeset[$i]->get_attribute("Type"); $targetframe = $res->nodeset[$i]->get_attribute("TargetFrame"); $links[$target.":".$type.":".$targetframe] = array("Target" => $target, "Type" => $type, "TargetFrame" => $targetframe); } unset($xpc); // get all media aliases $xpc = xpath_new_context($this->dom); $path = "//MediaAlias"; $res =& xpath_eval($xpc, $path); require_once("content/classes/Media/class.ilMediaItem.php"); for($i = 0; $i < count($res->nodeset); $i++) { $oid = $res->nodeset[$i]->get_attribute("OriginId"); if (substr($oid, 0, 4) =="il__") { $id_arr = explode("_", $oid); $id = $id_arr[count($id_arr) - 1]; $med_links = ilMediaItem::_getMapAreasIntLinks($id); foreach($med_links as $key => $med_link) { $links[$key] = $med_link; } } } unset($xpc); return $links; }
ilPageObject::getLanguageVariablesXML | ( | ) |
get language variables as XML
Definition at line 467 of file class.ilPageObject.php.
References $lng, $xml, and appendLangVarXML().
Referenced by getXMLFromDom().
{ global $lng; $xml = "<LVs>"; $lang_vars = array("ordering_question_javascript_hint", "reset_definitions", "reset_pictures", "matching_question_javascript_hint", "matches", "ed_insert_par", "ed_insert_code", "ed_insert_table", "ed_insert_media", "ed_insert_list", "ed_insert_filelist", "ed_paste_clip", "ed_edit", "ed_edit_prop", "ed_delete", "ed_moveafter", "ed_movebefore", "ed_go", "ed_new_row_after", "ed_new_row_before", "ed_new_col_after", "ed_new_col_before", "ed_delete_col", "ed_delete_row", "ed_class", "ed_width", "ed_align_left", "ed_align_right", "ed_align_center", "ed_align_left_float", "ed_align_right_float", "ed_delete_item", "ed_new_item_before", "ed_new_item_after", "ed_copy_clip", "please_select", "ed_split_page", "ed_item_up", "ed_item_down", "ed_row_up", "ed_row_down", "ed_col_left", "ed_col_right", "ed_split_page_next"); foreach ($lang_vars as $lang_var) { $this->appendLangVarXML($xml, $lang_var); } $xml.= "</LVs>"; return $xml; }
ilPageObject::getListItemIds | ( | ) |
get ids of all list items
Definition at line 893 of file class.ilPageObject.php.
{
return $this->list_item_ids;
}
ilPageObject::getMediaAliasElement | ( | $ | a_mob_id, | |
$ | a_nr = 1 | |||
) |
get complete media object (alias) element
Definition at line 717 of file class.ilPageObject.php.
References $path, $res, $xpc, xpath_eval(), and xpath_new_context().
{ $xpc = xpath_new_context($this->dom); $path = "//MediaObject/MediaAlias[@OriginId='il__mob_$a_mob_id']"; $res =& xpath_eval($xpc, $path); $mal_node =& $res->nodeset[$a_nr - 1]; $mob_node =& $mal_node->parent_node(); return $this->dom->dump_node($mob_node); }
ilPageObject::getMultimediaXML | ( | ) |
get a xml string that contains all media object elements, that are referenced by any media alias in the page
Definition at line 699 of file class.ilPageObject.php.
References collectMediaObjects().
Referenced by getXMLFromDom().
{ $mob_ids = $this->collectMediaObjects(); // get xml of corresponding media objects $mobs_xml = ""; require_once("content/classes/Media/class.ilObjMediaObject.php"); foreach($mob_ids as $mob_id => $dummy) { $mob_obj =& new ilObjMediaObject($mob_id); $mobs_xml .= $mob_obj->getXML(IL_MODE_OUTPUT); } return $mobs_xml; }
& ilPageObject::getNode | ( | ) |
Definition at line 354 of file class.ilPageObject.php.
Referenced by insertContent().
{
return $this->node;
}
ilPageObject::getParentId | ( | ) |
Definition at line 195 of file class.ilPageObject.php.
Referenced by createFromXML().
{
return $this->parent_id;
}
ilPageObject::getParentType | ( | ) |
Definition at line 205 of file class.ilPageObject.php.
Referenced by delete(), saveFileUsage(), saveInternalLinks(), saveMobUsage(), and updateFromXML().
{
return $this->parent_type;
}
ilPageObject::getXMLContent | ( | $ | a_incl_head = false |
) |
get xml content of page
Definition at line 389 of file class.ilPageObject.php.
Referenced by buildDom(), createFromXML(), and updateFromXML().
{ // build full http path for XML DOCTYPE header. // Under windows a relative path doesn't work :-( if($a_incl_head) { $enc_str = (!empty($this->encoding)) ? "encoding=\"".$this->encoding."\"" : ""; return "<?xml version=\"1.0\" $ecn_str ?>". "<!DOCTYPE PageObject SYSTEM \"".ILIAS_ABSOLUTE_PATH."/xml/".$this->cur_dtd."\">". $this->xml; } else { return $this->xml; } }
ilPageObject::getXMLFromDom | ( | $ | a_incl_head = false , |
|
$ | a_append_mobs = false , |
|||
$ | a_append_bib = false , |
|||
$ | a_append_str = "" , |
|||
$ | a_omit_pageobject_tag = false | |||
) |
get xml content of page from dom (use this, if any changes are made to the document)
Definition at line 412 of file class.ilPageObject.php.
References $xml, getBibliographyXML(), getLanguageVariablesXML(), and getMultimediaXML().
Referenced by getFO(), and update().
{ if ($a_incl_head) { return $this->dom->dump_mem(0, $this->encoding); } else { // append multimedia object elements if ($a_append_mobs || $a_append_bib || $a_append_link_info) { $mobs = ""; $bibs = ""; if ($a_append_mobs) { $mobs =& $this->getMultimediaXML(); } if ($a_append_bib) { $bibs =& $this->getBibliographyXML(); } $trans =& $this->getLanguageVariablesXML(); return "<dummy>".$this->dom->dump_node($this->node).$mobs.$bibs.$trans.$a_append_str."</dummy>"; } else { if (is_object($this->dom)) { if ($a_omit_pageobject_tag) { $xml = ""; $childs =& $this->node->child_nodes(); for($i = 0; $i < count($childs); $i++) { $xml.= $this->dom->dump_node($childs[$i]); } return $xml; } else { return $this->dom->dump_node($this->node); } } else { return ""; } } } }
ilPageObject::haltOnError | ( | $ | a_halt | ) |
Definition at line 92 of file class.ilPageObject.php.
{ $this->halt_on_error = $a_halt; }
ilPageObject::hasHighlighter | ( | $ | hfile_ext | ) |
Definition at line 1718 of file class.ilPageObject.php.
Referenced by highlightText().
{ return file_exists ("syntax_highlight/php/HFile/HFile_$hfile_ext.php"); }
ilPageObject::highlightText | ( | $ | a_text, | |
$ | proglang, | |||
$ | autoindent | |||
) |
Highligths Text with given ProgLang.
Definition at line 1693 of file class.ilPageObject.php.
References hasHighlighter().
Referenced by addSourceCodeHighlighting().
{ if (!$this->hasHighlighter($proglang)) { $proglang="plain"; } require_once("syntax_highlight/php/HFile/HFile_$proglang.php"); $classname = "HFile_$proglang"; $h_instance = new $classname(); if ($autoindent == "n") { $h_instance ->notrim = 1; $h_instance ->indent = array (""); $h_instance ->unindent = array (""); } $highlighter = new Core($h_instance, new Output_css()); $a_text = $highlighter->highlight_text(html_entity_decode($a_text)); //$a_text = str_replace("&","&",$a_text); //$a_text = str_replace("<","<", $a_text); //$a_text = str_replace(">",">", $a_text); return $a_text; }
ilPageObject::ilPageObject | ( | $ | a_parent_type, | |
$ | a_id = 0 , |
|||
$ | a_halt = true | |||
) |
Constructor public.
Definition at line 70 of file class.ilPageObject.php.
References $ilias, and read().
{ global $ilias; $this->parent_type = $a_parent_type; $this->id = $a_id; $this->ilias =& $ilias; $this->contains_int_link = false; $this->needs_parsing = false; $this->update_listeners = array(); $this->update_listener_cnt = 0; $this->dom_builded = false; $this->halt_on_error = $a_halt; $this->page_not_found = false; if($a_id != 0) { $this->read(); } }
ilPageObject::insertContent | ( | &$ | a_cont_obj, | |
$ | a_pos, | |||
$ | a_mode = IL_INSERT_AFTER | |||
) |
insert a content node before/after a sibling or as first child of a parent
Definition at line 1462 of file class.ilPageObject.php.
References $pos, getContentNode(), and getNode().
Referenced by moveContentAfter(), and moveContentBefore().
{ // move mode into container elements is always INSERT_CHILD $curr_node =& $this->getContentNode($a_pos); $curr_name = $curr_node->node_name(); if (($curr_name == "TableData") || ($curr_name == "PageObject") || ($curr_name == "ListItem")) { $a_mode = IL_INSERT_CHILD; } if($a_mode != IL_INSERT_CHILD) // determine parent hierarchical id { // of sibling at $a_pos $pos = explode("_", $a_pos); $target_pos = array_pop($pos); $parent_pos = implode($pos, "_"); } else // if we should insert a child, $a_pos is alreade the hierarchical id { // of the parent node $parent_pos = $a_pos; } // get the parent node if($parent_pos != "") { $parent_node =& $this->getContentNode($parent_pos); } else { $parent_node =& $this->getNode(); } // count the parent children $parent_childs =& $parent_node->child_nodes(); $cnt_parent_childs = count($parent_childs); //echo "ZZ$a_mode"; switch ($a_mode) { // insert new node after sibling at $a_pos case IL_INSERT_AFTER: $new_node =& $a_cont_obj->getNode(); //$a_pos = ilPageContent::incEdId($a_pos); //$curr_node =& $this->getContentNode($a_pos); //echo "behind $a_pos:"; if($succ_node =& $curr_node->next_sibling()) { $new_node =& $succ_node->insert_before($new_node, $succ_node); } else { //echo "movin doin append_child"; $new_node =& $parent_node->append_child($new_node); } $a_cont_obj->setNode($new_node); break; case IL_INSERT_BEFORE: //echo "INSERT_BEF"; $new_node =& $a_cont_obj->getNode(); $succ_node =& $this->getContentNode($a_pos); $new_node =& $succ_node->insert_before($new_node, $succ_node); $a_cont_obj->setNode($new_node); break; // insert new node as first child of parent $a_pos (= $a_parent) case IL_INSERT_CHILD: //echo "insert as child:parent_childs:$cnt_parent_childs:<br>"; $new_node =& $a_cont_obj->getNode(); if($cnt_parent_childs == 0) { $new_node =& $parent_node->append_child($new_node); } else { $new_node =& $parent_childs[0]->insert_before($new_node, $parent_childs[0]); } $a_cont_obj->setNode($new_node); //echo "PP"; break; } }
ilPageObject::insertInstIntoIDs | ( | $ | a_inst | ) |
inserts installation id into ids (e.g.
il__pg_4 -> il_23_pg_4) this is needed for xml export of page
Definition at line 1620 of file class.ilPageObject.php.
References $path, $res, $type, $xpc, xpath_eval(), and xpath_new_context().
{ //echo "insertinto:$a_inst:<br>"; // insert inst id into internal links $xpc = xpath_new_context($this->dom); $path = "//IntLink"; $res =& xpath_eval($xpc, $path); for($i = 0; $i < count($res->nodeset); $i++) { $target = $res->nodeset[$i]->get_attribute("Target"); $type = $res->nodeset[$i]->get_attribute("Type"); if (substr($target, 0, 4) == "il__") { $new_target = "il_".$a_inst."_".substr($target, 4, strlen($target) - 4); $res->nodeset[$i]->set_attribute("Target", $new_target); } } unset($xpc); // insert inst id into media aliases $xpc = xpath_new_context($this->dom); $path = "//MediaAlias"; $res =& xpath_eval($xpc, $path); for($i = 0; $i < count($res->nodeset); $i++) { $origin_id = $res->nodeset[$i]->get_attribute("OriginId"); if (substr($origin_id, 0, 4) == "il__") { $new_id = "il_".$a_inst."_".substr($origin_id, 4, strlen($origin_id) - 4); $res->nodeset[$i]->set_attribute("OriginId", $new_id); } } unset($xpc); // insert inst id file item identifier entries $xpc = xpath_new_context($this->dom); $path = "//FileItem/Identifier"; $res =& xpath_eval($xpc, $path); for($i = 0; $i < count($res->nodeset); $i++) { $origin_id = $res->nodeset[$i]->get_attribute("Entry"); if (substr($origin_id, 0, 4) == "il__") { $new_id = "il_".$a_inst."_".substr($origin_id, 4, strlen($origin_id) - 4); $res->nodeset[$i]->set_attribute("Entry", $new_id); } } unset($xpc); // insert inst id into $xpc = xpath_new_context($this->dom); $path = "//Question"; $res =& xpath_eval($xpc, $path); for($i = 0; $i < count($res->nodeset); $i++) { $qref = $res->nodeset[$i]->get_attribute("QRef"); //echo "<br>setted:".$qref; if (substr($qref, 0, 4) == "il__") { $new_id = "il_".$a_inst."_".substr($qref, 4, strlen($qref) - 4); //echo "<br>setting:".$new_id; $res->nodeset[$i]->set_attribute("QRef", $new_id); } } unset($xpc); }
ilPageObject::lookforhier | ( | $ | a_hier_id | ) |
Definition at line 342 of file class.ilPageObject.php.
References $path, $res, $xpc, xpath_eval(), and xpath_new_context().
{ $xpc = xpath_new_context($this->dom); $path = "//*[@HierId = '$a_hier_id']"; $res =& xpath_eval($xpc, $path); if (count($res->nodeset) == 1) return "YES"; else return "NO"; }
ilPageObject::moveContentAfter | ( | $ | a_source, | |
$ | a_target | |||
) |
move content object from position $a_source before position $a_target (both hierarchical content ids)
Definition at line 1577 of file class.ilPageObject.php.
References deleteContent(), getContentObject(), insertContent(), and update().
{ //echo "source:$a_source:target:$a_target:<br>"; if($a_source == $a_target) { return; } //echo "move source:$a_source:to:$a_target:<br>"; // clone the node $content =& $this->getContentObject($a_source); //echo ":".get_class($content).":"; $source_node =& $content->getNode(); $clone_node =& $source_node->clone_node(true); // delete source node $this->deleteContent($a_source, false); // insert cloned node at target $content->setNode($clone_node); $this->insertContent($content, $a_target, IL_INSERT_AFTER); return $this->update(); }
ilPageObject::moveContentBefore | ( | $ | a_source, | |
$ | a_target | |||
) |
move content object from position $a_source before position $a_target (both hierarchical content ids)
Definition at line 1551 of file class.ilPageObject.php.
References deleteContent(), getContentObject(), insertContent(), and update().
{ if($a_source == $a_target) { return; } // clone the node $content =& $this->getContentObject($a_source); $source_node =& $content->getNode(); $clone_node =& $source_node->clone_node(true); // delete source node $this->deleteContent($a_source, false); // insert cloned node at target $content->setNode($clone_node); $this->insertContent($content, $a_target, IL_INSERT_BEFORE); return $this->update(); }
ilPageObject::needsImportParsing | ( | $ | a_parse = "" |
) |
Definition at line 544 of file class.ilPageObject.php.
{ if ($a_parse === true) { $this->needs_parsing = true; } if ($a_parse === false) { $this->needs_parsing = false; } return $this->needs_parsing; }
ilPageObject::read | ( | ) |
read page data
Definition at line 100 of file class.ilPageObject.php.
References $ilBench, $query, exit, and setParentId().
Referenced by ilPageObject().
{ global $ilBench; $ilBench->start("ContentPresentation", "ilPageObject_read"); $query = "SELECT * FROM page_object WHERE page_id = '".$this->id."' ". "AND parent_type='".$this->getParentType()."'"; $pg_set = $this->ilias->db->query($query); if (!($this->page_record = $pg_set->fetchRow(DB_FETCHMODE_ASSOC))) { if ($this->halt_on_error) { echo "Error: Page ".$this->id." is not in database". " (parent type ".$this->getParentType().")."; exit; } else { $this->page_not_found = true; return; } } $this->xml = $this->page_record["content"]; $this->setParentId($this->page_record["parent_id"]); $ilBench->stop("ContentPresentation", "ilPageObject_read"); }
ilPageObject::resolveIntLinks | ( | ) |
resolves all internal link targets of the page, if targets are available
Definition at line 966 of file class.ilPageObject.php.
References $path, $res, $type, $xpc, ilInternalLink::_exists(), ilInternalLink::_extractInstOfTarget(), ilInternalLink::_getIdForImportId(), ilInternalLink::_removeInstFromTarget(), ilMediaItem::_resolveMapAreaLinks(), xpath_eval(), and xpath_new_context().
{ // resolve normal internal links $xpc = xpath_new_context($this->dom); $path = "//IntLink"; $res =& xpath_eval($xpc, $path); for($i = 0; $i < count($res->nodeset); $i++) { $target = $res->nodeset[$i]->get_attribute("Target"); $type = $res->nodeset[$i]->get_attribute("Type"); $new_target = ilInternalLink::_getIdForImportId($type, $target); if ($new_target !== false) { $res->nodeset[$i]->set_attribute("Target", $new_target); } else // check wether link target is same installation { if (ilInternalLink::_extractInstOfTarget($target) == IL_INST_ID && IL_INST_ID > 0) { $new_target = ilInternalLink::_removeInstFromTarget($target); if (ilInternalLink::_exists($type, $new_target)) { $res->nodeset[$i]->set_attribute("Target", $new_target); } } } } unset($xpc); // resolve internal links in map areas $xpc = xpath_new_context($this->dom); $path = "//MediaAlias"; $res =& xpath_eval($xpc, $path); //echo "<br><b>page::resolve</b><br>"; //echo "Content:".htmlentities($this->getXMLFromDOM()).":<br>"; for($i = 0; $i < count($res->nodeset); $i++) { $orig_id = $res->nodeset[$i]->get_attribute("OriginId"); $id_arr = explode("_", $orig_id); $mob_id = $id_arr[count($id_arr) - 1]; ilMediaItem::_resolveMapAreaLinks($mob_id); } }
ilPageObject::saveFileUsage | ( | ) |
save file usages
Definition at line 1230 of file class.ilPageObject.php.
References ilObjFile::_deleteAllUsages(), ilObjFile::_saveUsage(), collectFileItems(), getId(), and getParentType().
Referenced by update().
{ //echo "<br>PageObject::saveFileUsage[".$this->getId()."]"; $file_ids = $this->collectFileItems(); include_once("classes/class.ilObjFile.php"); ilObjFile::_deleteAllUsages($this->getParentType().":pg", $this->getId()); foreach($file_ids as $file_id) { ilObjFile::_saveUsage($file_id, $this->getParentType().":pg", $this->getId()); } }
ilPageObject::saveInternalLinks | ( | $ | a_xml | ) |
save internal links of page
string | xml page code |
Definition at line 1248 of file class.ilPageObject.php.
References $path, $res, $target_arr, $xpc, ilInternalLink::_deleteAllLinksOfSource(), ilInternalLink::_saveLink(), domxml_open_mem(), getId(), getParentType(), xpath_eval(), and xpath_new_context().
Referenced by delete(), and update().
{ //echo "<br>PageObject::saveInternalLinks[".$this->getId()."]"; $doc = domxml_open_mem($a_xml); include_once("content/classes/Pages/class.ilInternalLink.php"); ilInternalLink::_deleteAllLinksOfSource($this->getParentType().":pg", $this->getId()); // get all internal links $xpc = xpath_new_context($doc); $path = "//IntLink"; $res =& xpath_eval($xpc, $path); for ($i=0; $i < count($res->nodeset); $i++) { $link_type = $res->nodeset[$i]->get_attribute("Type"); switch ($link_type) { case "StructureObject": $t_type = "st"; break; case "PageObject": $t_type = "pg"; break; case "GlossaryItem": $t_type = "git"; break; case "MediaObject": $t_type = "mob"; break; case "RepositoryItem": $t_type = "obj"; break; } $target = $res->nodeset[$i]->get_attribute("Target"); $target_arr = explode("_", $target); $t_id = $target_arr[count($target_arr) - 1]; // link to other internal object if (is_int(strpos($target, "__"))) { $t_inst = 0; } else // link to unresolved object in other installation { $t_inst = $target_arr[1]; } if ($t_id > 0) { ilInternalLink::_saveLink($this->getParentType().":pg", $this->getId(), $t_type, $t_id, $t_inst); } } }
ilPageObject::saveMobUsage | ( | $ | a_xml | ) |
save all usages of media objects (media aliases, media objects, internal links)
string | $a_xml xml data of page |
Definition at line 1168 of file class.ilPageObject.php.
References $path, $res, $xpc, ilObjMediaObject::_deleteAllUsages(), ilObjMediaObject::_saveUsage(), domxml_open_mem(), getId(), getParentType(), xpath_eval(), and xpath_new_context().
Referenced by delete(), and update().
{ //echo "<br>PageObject::saveMobUsage[".$this->getId()."]"; $doc = domxml_open_mem($a_xml); // media aliases $xpc = xpath_new_context($doc); $path = "//MediaAlias"; $res =& xpath_eval($xpc, $path); $usages = array(); for ($i=0; $i < count($res->nodeset); $i++) { $id_arr = explode("_", $res->nodeset[$i]->get_attribute("OriginId")); $mob_id = $id_arr[count($id_arr) - 1]; if ($mob_id > 0) { $usages[$mob_id] = true; } } // media objects $xpc = xpath_new_context($doc); $path = "//MediaObject/MetaData/General/Identifier"; $res =& xpath_eval($xpc, $path); for ($i=0; $i < count($res->nodeset); $i++) { $mob_entry = $res->nodeset[$i]->get_attribute("Entry"); $mob_arr = explode("_", $mob_entry); $mob_id = $mob_arr[count($mob_arr) - 1]; if ($mob_id > 0) { $usages[$mob_id] = true; } } // internal links $xpc = xpath_new_context($doc); $path = "//IntLink[@Type='MediaObject']"; $res =& xpath_eval($xpc, $path); for ($i=0; $i < count($res->nodeset); $i++) { $mob_target = $res->nodeset[$i]->get_attribute("Target"); $mob_arr = explode("_", $mob_target); $mob_id = $mob_arr[count($mob_arr) - 1]; if ($mob_id > 0) { $usages[$mob_id] = true; } } include_once("content/classes/Media/class.ilObjMediaObject.php"); ilObjMediaObject::_deleteAllUsages($this->getParentType().":pg", $this->getId()); foreach($usages as $mob_id => $val) { ilObjMediaObject::_saveUsage($mob_id, $this->getParentType().":pg", $this->getId()); } }
ilPageObject::send_paragraph | ( | $ | par_id, | |
$ | filename | |||
) |
Definition at line 1811 of file class.ilPageObject.php.
References $path, $res, $xpc, ilUtil::deliverData(), exit, xpath_eval(), and xpath_new_context().
{ $this->builddom(); $mydom = $this->dom; $xpc = xpath_new_context($mydom); $path = "//PageContent[position () = $par_id]/Paragraph"; $res = & xpath_eval($xpc, $path); if (count ($res->nodeset) != 1) die ("Should not happen"); $context_node = $res->nodeset[0]; // get plain text $childs = $context_node->child_nodes(); for($j=0; $j<count($childs); $j++) { $content .= $mydom->dump_node($childs[$j]); } $content = str_replace("<br />", "\n", $content); $content = str_replace("<br/>", "\n", $content); $plain_content = html_entity_decode($content); ilUtil::deliverData($plain_content, $filename); /* $file_type = "application/octet-stream"; header("Content-type: ".$file_type); header("Content-disposition: attachment; filename=\"$filename\""); echo $plain_content;*/ exit(); }
ilPageObject::setContainsIntLink | ( | $ | a_contains_link | ) |
lm parser set this flag to true, if the page contains intern links (this method should only be called by the import parser)
todo: move to ilLMPageObject !?
boolean | $a_contains_link true, if page contains intern link tag(s) |
Definition at line 530 of file class.ilPageObject.php.
{ $this->contains_int_link = $a_contains_link; }
ilPageObject::setId | ( | $ | a_id | ) |
ilPageObject::setParentId | ( | $ | a_id | ) |
Definition at line 190 of file class.ilPageObject.php.
Referenced by read().
{ $this->parent_id = $a_id; }
ilPageObject::setParentType | ( | $ | a_type | ) |
Definition at line 200 of file class.ilPageObject.php.
{ $this->parent_type = $a_type; }
ilPageObject::setXMLContent | ( | $ | a_xml, | |
$ | a_encoding = "UTF-8" | |||
) |
set xml content of page, start with <PageObject...>, end with </PageObject>, comply with ILIAS DTD, omit MetaData, use utf-8!
string | $a_xml xml content | |
string | $a_encoding encoding of the content (here is no conversion done! it must be already utf-8 encoded at the time) |
Definition at line 368 of file class.ilPageObject.php.
Referenced by createFromXML().
{ $this->encoding = $a_encoding; $this->xml = $a_xml; }
ilPageObject::stripHierIDs | ( | ) |
strip all hierarchical id attributes out of the dom tree
Definition at line 909 of file class.ilPageObject.php.
References $path, $res, $xpc, xpath_eval(), and xpath_new_context().
Referenced by validateDom().
{ if(is_object($this->dom)) { $xpc = xpath_new_context($this->dom); $path = "//*[@HierId]"; $res =& xpath_eval($xpc, $path); for($i = 0; $i < count($res->nodeset); $i++) // should only be 1 { if ($res->nodeset[$i]->has_attribute("HierId")) { $res->nodeset[$i]->remove_attribute("HierId"); } } unset($xpc); } }
ilPageObject::update | ( | $ | a_validate = true |
) |
update complete page content in db (dom xml content is used)
Definition at line 1076 of file class.ilPageObject.php.
References $lng, $query, callUpdateListeners(), getXMLFromDom(), saveFileUsage(), saveInternalLinks(), saveMobUsage(), and validateDom().
Referenced by deleteContent(), deleteContentBeforeHierId(), deleteContentFromHierId(), moveContentAfter(), and moveContentBefore().
{ global $lng; //echo "<br>PageObject::update[".$this->getId()."],validate($a_validate)"; //echo "<br>PageObject::update:".$this->getXMLFromDom().":"; //echo "<br>PageObject::update:".htmlentities($this->getXMLFromDom()).":"; exit; // test validating if($a_validate) { $errors = $this->validateDom(); } if(empty($errors)) { $query = "UPDATE page_object ". "SET content = '".ilUtil::prepareDBString(($this->getXMLFromDom()))."' ". ", parent_id='".$this->getParentId()."' ". " WHERE page_id = '".$this->getId(). "' AND parent_type='".$this->getParentType()."'"; if(!$this->ilias->db->checkQuerySize($query)) { $this->ilias->raiseError($lng->txt("check_max_allowed_packet_size"),$this->ilias->error_obj->MESSAGE); return false; } $this->ilias->db->query($query); $this->saveMobUsage($this->getXMLFromDom()); $this->saveFileUsage(); $this->saveInternalLinks($this->getXMLFromDom()); $this->callUpdateListeners(); //echo "<br>PageObject::update:".htmlentities($this->getXMLContent()).":"; return true; } else { return $errors; } }
ilPageObject::updateFromXML | ( | ) |
updates page object with current xml content
Definition at line 1052 of file class.ilPageObject.php.
References $lng, $query, getParentType(), and getXMLContent().
{ global $lng; //echo "<br>PageObject::updateFromXML[".$this->getId()."]"; //echo "update:".ilUtil::prepareDBString(($this->getXMLContent())).":<br>"; //echo "update:".htmlentities(ilUtil::prepareDBString(($this->getXMLContent()))).":<br>"; $query = "UPDATE page_object ". "SET content = '".ilUtil::prepareDBString(($this->getXMLContent()))."' ". ", parent_id='".$this->getParentId()."' ". "WHERE page_id = '".$this->getId()."' AND parent_type='".$this->getParentType()."'"; if(!$this->ilias->db->checkQuerySize($query)) { $this->ilias->raiseError($lng->txt("check_max_allowed_packet_size"),$this->ilias->error_obj->MESSAGE); return false; } $this->ilias->db->query($query); return true; }
ilPageObject::validateDom | ( | ) |
Definition at line 728 of file class.ilPageObject.php.
References stripHierIDs().
Referenced by update().
{ //echo "<br>PageObject::validateDom[".$this->getId()."]"; //echo "<br>PageObject::update:".htmlentities($this->getXMLFromDom()).":"; exit; $this->stripHierIDs(); @$this->dom->validate($error); return $error; }
ilPageObject::$contains_int_link |
Definition at line 58 of file class.ilPageObject.php.
ilPageObject::$cur_dtd = "ilias_pg_0_1.dtd" |
Definition at line 57 of file class.ilPageObject.php.
ilPageObject::$dom |
Definition at line 53 of file class.ilPageObject.php.
ilPageObject::$dom_builded |
Definition at line 64 of file class.ilPageObject.php.
ilPageObject::$encoding |
Definition at line 55 of file class.ilPageObject.php.
ilPageObject::$id |
Definition at line 51 of file class.ilPageObject.php.
Referenced by addFileSizes(), and getInternalLinks().
ilPageObject::$ilias |
Definition at line 52 of file class.ilPageObject.php.
Referenced by getBibliographyXML(), and ilPageObject().
ilPageObject::$needs_parsing |
Definition at line 59 of file class.ilPageObject.php.
ilPageObject::$node |
Definition at line 56 of file class.ilPageObject.php.
ilPageObject::$parent_id |
Definition at line 61 of file class.ilPageObject.php.
ilPageObject::$parent_type |
Definition at line 60 of file class.ilPageObject.php.
ilPageObject::$update_listener_cnt |
Definition at line 63 of file class.ilPageObject.php.
ilPageObject::$update_listeners |
Definition at line 62 of file class.ilPageObject.php.
ilPageObject::$xml |
Definition at line 54 of file class.ilPageObject.php.
Referenced by appendLangVarXML(), getFO(), getLanguageVariablesXML(), and getXMLFromDom().