ILIAS  eassessment Revision 61809
 All Data Structures Namespaces Files Functions Variables Groups Pages
ilPageObject Class Reference

Class ilPageObject. More...

+ Inheritance diagram for ilPageObject:
+ Collaboration diagram for ilPageObject:

Public Member Functions

 ilPageObject ($a_parent_type, $a_id=0, $a_old_nr=0, $a_halt=true)
 Constructor public.
 haltOnError ($a_halt)
 setRenderMd5 ($a_rendermd5)
 Set Render MD5.
 getRenderMd5 ()
 Get Render MD5.
 setRenderedContent ($a_renderedcontent)
 Set Rendered Content.
 getRenderedContent ()
 Get Rendered Content.
 setRenderedTime ($a_renderedtime)
 Set Rendered Time.
 getRenderedTime ()
 Get Rendered Time.
 setLastChange ($a_lastchange)
 Set Last Change.
 getLastChange ()
 Get Last Change.
 setLayoutMode ($a_layout_mode)
 Set Layout Mode.
 getLayoutMode ()
 Get Layout Mode enabled/disabled.
 read ()
 read page data
 _existsAndNotEmpty ($a_parent_type, $a_id)
 checks whether page exists and is not empty (may return true on some empty pages)
 buildDom ($a_force=false)
 freeDom ()
getDom ()
 setId ($a_id)
 set id
 getId ()
 setParentId ($a_id)
 getParentId ()
 setParentType ($a_type)
 getParentType ()
 addUpdateListener (&$a_object, $a_method, $a_parameters="")
 callUpdateListeners ()
 setActive ($a_active)
 set activation
 getActive ($a_check_scheduled_activation=false)
 get activation
 _lookupActive ($a_id, $a_parent_type, $a_check_scheduled_activation=false)
 lookup activation status
 _writeActive ($a_id, $a_parent_type, $a_active, $a_reset_scheduled_activation=true)
 write activation status
 _writeParentId ($a_parent_type, $a_pg_id, $a_par_id)
 Write parent id.
 setActivationStart ($a_activationstart)
 Set Activation Start.
 getActivationStart ()
 Get Activation Start.
 setActivationEnd ($a_activationend)
 Set Activation End.
 getActivationEnd ()
 Get Activation End.
getContentObject ($a_hier_id, $a_pc_id="")
getContentNode ($a_hier_id, $a_pc_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
 copyXmlContent ($a_new_question_copies=true)
 Copy content of page; replace page components with copies where necessary (e.g.
 newQuestionCopies (&$temp_dom)
 Replaces existing question content elements with new copies.
 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 ()
 setParagraphContent ($a_hier_id, $a_content)
 Set content of paragraph.
 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="")
 setContainsQuestion ($a_val)
 Set contains question.
 getContainsQuestion ()
 Get contains question.
 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 ($a_cnt_multiple=false)
 get all internal links that are used within the page
 collectFileItems ($a_xml="")
 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 ()
 Validate the page content agains page DTD.
 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 (after import)
 resolveMediaAliases ($a_mapping)
 Resolve media aliases (after import)
 resolveFileItems ($a_mapping)
 Resolve file items (after import)
 resolveQuestionReferences ($a_mapping)
 Resolve all quesion references (after import)
 moveIntLinks ($a_from_to)
 Move internal links from one destination to another.
 handleImportRepositoryLink ($a_rep_import_id, $a_rep_type, $a_rep_ref_id)
 createFromXML ()
 create new page object with current xml content
 updateFromXML ()
 updates page object with current xml content
 update ($a_validate=true, $a_no_history=false, $skip_handle_usages=false)
 update complete page content in db (dom xml content is used)
 delete ()
 delete page object
 saveMetaKeywords ($a_xml)
 save all keywords
 saveMobUsage ($a_xml, $a_old_nr=0)
 save all usages of media objects (media aliases, media objects, internal links)
 saveFileUsage ($a_xml="", $a_old_nr=0)
 save file usages
 saveContentIncludeUsage ($a_xml="", $a_old_nr=0)
 save content include usages
 collectContentIncludes ($a_xml="")
 get all content includes that are used within the page
 saveStyleUsage ($a_xml, $a_old_nr=0)
 Save all style class/template usages.
 getLastUpdateOfIncludedElements ()
 Get last update of included elements (media objects and files).
 saveInternalLinks ($a_xml)
 save internal links of page
 saveAnchors ($a_xml)
 save anchors
 create ()
 create new page (with current xml data)
 deleteContent ($a_hid, $a_update=true, $a_pcid="")
 delete content object with hierarchical id $a_hid
 deleteContents ($a_hids, $a_update=true)
 delete multiple content objects
 cutContents ($a_hids)
 Copy contents to clipboard and cut them from the page.
 copyContents ($a_hids)
 Copy contents to clipboard.
 pasteContents ($a_hier_id)
 Paste contents from pc clipboard.
 switchEnableMultiple ($a_hids, $a_update=true)
 gui function set enabled if is not enabled and vice versa
 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, $a_pcid="")
 insert a content node before/after a sibling or as first child of a parent
 insertContentNode (&$a_cont_node, $a_pos, $a_mode=IL_INSERT_AFTER, $a_pcid="")
 insert a content node before/after a sibling or as first child of a parent
 moveContentBefore ($a_source, $a_target, $a_spcid="", $a_tpcid="")
 move content object from position $a_source before position $a_target (both hierarchical content ids)
 moveContentAfter ($a_source, $a_target, $a_spcid="", $a_tpcid="")
 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, $a_res_ref_to_obj_id=true)
 inserts installation id into ids (e.g.
 highlightText ($a_text, $proglang, $autoindent)
 Highligths Text with given ProgLang.
 hasHighlighter ($hfile_ext)
 insertSourceCodeParagraphs ($a_output, $outputmode="presentation")
 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
 checkPCIds ()
 Check, whether (all) page content hashes are set.
 insertPCIds ()
 Insert Page Content IDs.
 getPageContentsHashes ()
 Get page contents hashes.
 getQuestionIds ()
 Get question ids.
 send_paragraph ($par_id, $filename)
 getFO ()
 get fo page content
 registerOfflineHandler ($handler)
 _lookupContainsDeactivatedElements ($a_id, $a_parent_type)
 lookup whether page contains deactivated elements
 containsDeactivatedElements ($a_content)
 Check whether content contains deactivated elements.
 getHistoryEntries ()
 Get History Entries.
 getHistoryEntry ($a_old_nr)
 Get History Entry.
 getHistoryInfo ($a_nr)
 Get information about a history entry, its predecessor and its successor.
 addChangeDivClasses ($a_hashes)
 compareVersion ($a_left, $a_right)
 Compares to revisions of the page.
 increaseViewCnt ()
 increase view cnt
 writeRenderedContent ($a_content, $a_md5)
 Write rendered content.
 containsIntLinks ($a_content)
 Check whether content contains internal links.
 performAutomaticModifications ()
 Perform automatic modifications (may be overwritten by sub classes)

Static Public Member Functions

static _exists ($a_parent_type, $a_id)
 checks whether page exists
static _isScheduledActivation ($a_id, $a_parent_type)
 Check whether page is activated by time schedule.
static lookupParentId ($a_id, $a_type)
 Lookup parent id.
static _handleImportRepositoryLinks ($a_rep_import_id, $a_rep_type, $a_rep_ref_id)
 Change targest of repository links.
static _getQuestionIdsForPage ($a_parent_type, $a_page_id)
 Get all questions of a page.
static _deleteAnchors ($a_parent_type, $a_page_id)
 Delete anchors of a page.
static _saveAnchor ($a_parent_type, $a_page_id, $a_anchor_name)
 Save an anchor.
static _readAnchors ($a_parent_type, $a_page_id)
 Read anchors of a page.
static getRecentChanges ($a_parent_type, $a_parent_id, $a_period=30)
 Get recent pages changes for parent object.
static getAllPages ($a_parent_type, $a_parent_id)
 Get all pages for parent object.
static getNewPages ($a_parent_type, $a_parent_id)
 Get new pages.
static getParentObjectContributors ($a_parent_type, $a_parent_id)
 Get all contributors for parent object.
static getPageContributors ($a_parent_type, $a_page_id)
 Get all contributors for parent object.
static getPagesWithLinks ($a_parent_type, $a_parent_id)
 Get all pages for parent object that contain internal links.

Data Fields

 $id
 $ilias
 $dom
 $xml
 $encoding
 $node
 $cur_dtd = "ilias_pg_4_1.dtd"
 $contains_int_link
 $needs_parsing
 $parent_type
 $parent_id
 $update_listeners
 $update_listener_cnt
 $offline_handler
 $dom_builded
 $history_saved
 $layout_mode

Static Public Attributes

static $exists = array()

Detailed Description

Class ilPageObject.

Handles PageObjects of ILIAS Learning Modules (see ILIAS DTD)

Author
Alex Killing alex..nosp@m.kill.nosp@m.ing@g.nosp@m.mx.d.nosp@m.e
Version
Id:
class.ilPageObject.php 26161 2010-10-25 09:34:05Z mwarkus

Definition at line 26 of file class.ilPageObject.php.

Member Function Documentation

static ilPageObject::_deleteAnchors (   $a_parent_type,
  $a_page_id 
)
static

Delete anchors of a page.

Definition at line 2831 of file class.ilPageObject.php.

References $ilDB.

Referenced by saveAnchors().

{
global $ilDB;
$st = $ilDB->prepareManip("DELETE FROM page_anchor WHERE page_parent_type = ? ".
" AND page_id = ?", array("text", "integer"));
$ilDB->execute($st, array($a_parent_type, $a_page_id));
}

+ Here is the caller graph for this function:

static ilPageObject::_exists (   $a_parent_type,
  $a_id 
)
static

checks whether page exists

Parameters
string$a_parent_typeparent type
int$a_idpage id

Definition at line 251 of file class.ilPageObject.php.

References $ilDB, $query, and $row.

Referenced by ilShopPurchaseGUI\__getAbstractHTML(), ilContainer\cloneObject(), ilObjContentObject\exportHTMLPages(), ilObjContentObject\exportXMLPageObjects(), ilPaymentObjectGUI\forwardToPageObject(), ilShopInfoGUI\forwardToPageObject(), ilContainerGUI\forwardToPageObject(), ilShopGUI\forwardToPageObject(), ilObjPaymentSettingsGUI\forwardToPageObject(), ilShopInfoGUI\getPageHTML(), ilShopGUI\getPageHTML(), ilMediaPoolPage\lookupUsages(), ilObjMediaObject\lookupUsages(), and ilObjContentObject\validatePages().

{
global $ilDB;
//echo "<br>".$a_parent_type."-".$a_id;
if (isset(self::$exists[$a_parent_type.":".$a_id]))
{
//echo "***HIT";
return self::$exists[$a_parent_type.":".$a_id];
}
$query = "SELECT page_id FROM page_object WHERE page_id = ".$ilDB->quote($a_id, "integer")." ".
"AND parent_type= ".$ilDB->quote($a_parent_type, "text");
$set = $ilDB->query($query);
if ($row = $ilDB->fetchAssoc($set))
{
self::$exists[$a_parent_type.":".$a_id] = true;
return true;
}
else
{
self::$exists[$a_parent_type.":".$a_id] = false;
return false;
}
}

+ Here is the caller graph for this function:

ilPageObject::_existsAndNotEmpty (   $a_parent_type,
  $a_id 
)

checks whether page exists and is not empty (may return true on some empty pages)

Parameters
string$a_parent_typeparent type
int$a_idpage id

Definition at line 283 of file class.ilPageObject.php.

References $ilDB, $query, and $row.

{
global $ilDB;
$query = "SELECT page_id, is_empty FROM page_object WHERE page_id = ".$ilDB->quote($a_id, "integer")." ".
"AND parent_type= ".$ilDB->quote($a_parent_type, "text");
$set = $ilDB->query($query);
if ($row = $ilDB->fetchAssoc($set))
{
if ($row["is_empty"] != 1)
{
return true;
}
}
return false;
}
static ilPageObject::_getQuestionIdsForPage (   $a_parent_type,
  $a_page_id 
)
static

Get all questions of a page.

Definition at line 2783 of file class.ilPageObject.php.

References $ilDB, and $res.

Referenced by ilSCORM2004Sco\exportHTMLPageObjects(), ilSCORM2004Sco\exportPDFPrepareXmlNFiles(), ilSCORM2004Sco\exportXMLPageObjects(), ilObjectivesAlignmentTableGUI\fillRow(), ilLMPageObject\getQuestionIds(), and ilSCORM2004ScoGUI\sahs_questions().

{
global $ilDB;
$res = $ilDB->queryF("SELECT * FROM page_question WHERE page_parent_type = %s ".
" AND page_id = %s",
array("text", "integer"),
array($a_parent_type, $a_page_id));
$q_ids = array();
while ($rec = $ilDB->fetchAssoc($res))
{
$q_ids[] = $rec["question_id"];
}
return $q_ids;
}

+ Here is the caller graph for this function:

static ilPageObject::_handleImportRepositoryLinks (   $a_rep_import_id,
  $a_rep_type,
  $a_rep_ref_id 
)
static

Change targest of repository links.

Use full targets in "from" and "to"!!!

Parameters
arraykeys are the old targets, values are the new targets

Definition at line 1883 of file class.ilPageObject.php.

References ilInternalLink\_extractInstOfTarget(), ilInternalLink\_extractObjIdOfTarget(), ilInternalLink\_getSourcesOfTarget(), and ilPageObject().

Referenced by ilObjContentObject\importFromDirectory().

{
include_once("./Services/COPage/classes/class.ilInternalLink.php");
//echo "-".$a_rep_import_id."-".$a_rep_ref_id."-";
//var_dump($sources);
foreach($sources as $source)
{
//echo "A";
if ($source["type"] == "lm:pg")
{
//echo "B";
$page_obj = new ilPageObject("lm", $source["id"], false);
if (!$page_obj->page_not_found)
{
//echo "C";
$page_obj->handleImportRepositoryLink($a_rep_import_id,
$a_rep_type, $a_rep_ref_id);
}
$page_obj->update();
}
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static ilPageObject::_isScheduledActivation (   $a_id,
  $a_parent_type 
)
static

Check whether page is activated by time schedule.

Definition at line 459 of file class.ilPageObject.php.

References $ilDB.

Referenced by ilChapterHierarchyFormGUI\getChildIcon(), ilLMEditorExplorer\getImage(), and ilObjContentObjectGUI\pages().

{
global $ilDB;
$set = $ilDB->queryF("SELECT active, activation_start, activation_end FROM page_object WHERE page_id = %s".
" AND parent_type = %s", array("integer", "text"),
array($a_id, $a_parent_type));
$rec = $ilDB->fetchAssoc($set);
if (!$rec["active"] && $rec["activation_start"] != "")
{
return true;
}
return false;
}

+ Here is the caller graph for this function:

ilPageObject::_lookupActive (   $a_id,
  $a_parent_type,
  $a_check_scheduled_activation = false 
)

lookup activation status

Definition at line 433 of file class.ilPageObject.php.

References $ilDB, and ilUtil\now().

Referenced by ilLMPageObject\_getPresentationTitle(), ilStructureObjectGUI\activatePages(), ilObjContentObjectGUI\activatePages(), ilLMTOCExplorer\buildLinkTarget(), ilTableOfContentsExplorer\buildLinkTarget(), ilChapterHierarchyFormGUI\getChildIcon(), ilChapterHierarchyFormGUI\getChildIconAlt(), ilLMPresentationGUI\getCurrentPageId(), ilLMEditorExplorer\getImage(), ilLMEditorExplorer\getImageAlt(), ilLMPresentationGUI\ilLMNavigation(), ilLMTOCExplorer\isClickable(), ilTableOfContentsExplorer\isClickable(), ilLMTOCExplorer\isVisible(), ilTableOfContentsExplorer\isVisible(), ilObjContentObjectGUI\pages(), ilLMPresentationGUI\showPrintView(), ilLMPresentationGUI\showPrintViewSelection(), and ilStructureObjectGUI\view().

{
global $ilDB;
$set = $ilDB->queryF("SELECT active, activation_start, activation_end FROM page_object WHERE page_id = %s".
" AND parent_type = %s",
array("integer", "text"),
array($a_id, $a_parent_type));
$rec = $ilDB->fetchAssoc($set);
$rec["n"] = ilUtil::now();
if (!$rec["active"] && $a_check_scheduled_activation)
{
if ($rec["n"] >= $rec["activation_start"] &&
$rec["n"] <= $rec["activation_end"])
{
return true;
}
}
return $rec["active"];
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::_lookupContainsDeactivatedElements (   $a_id,
  $a_parent_type 
)

lookup whether page contains deactivated elements

Definition at line 3920 of file class.ilPageObject.php.

References $ilDB, $query, and DB_FETCHMODE_ASSOC.

Referenced by ilChapterHierarchyFormGUI\getChildIcon(), ilChapterHierarchyFormGUI\getChildIconAlt(), ilLMEditorExplorer\getImage(), ilLMEditorExplorer\getImageAlt(), ilObjContentObjectGUI\pages(), and ilStructureObjectGUI\view().

{
global $ilDB;
/*$query = "SELECT * FROM page_object WHERE page_id = ".
$ilDB->quote($a_id)." AND ".
" parent_type = ".$ilDB->quote($a_parent_type)." AND ".
" content LIKE '% Enabled=\"False\"%'";*/
$query = "SELECT * FROM page_object WHERE page_id = ".
$ilDB->quote($a_id, "integer")." AND ".
" parent_type = ".$ilDB->quote($a_parent_type, "text")." AND ".
" inactive_elements = ".$ilDB->quote(1, "integer");
$obj_set = $ilDB->query($query);
if ($obj_rec = $obj_set->fetchRow(DB_FETCHMODE_ASSOC))
{
return true;
}
return false;
}

+ Here is the caller graph for this function:

ilPageObject::_moveContentAfterHierId ( $a_source_page,
$a_target_page,
  $a_hid 
)

move content of hierarchical id >= $a_hid to other page

Parameters
string$a_hidhierarchical id of content object
boolean$a_updateupdate page in db (note: update deletes all hierarchical ids in DOM!)

Definition at line 3160 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();
$cnt_parent_childs = count($parent_childs);
//echo "-$cnt_parent_childs-";
$first_child =& $parent_childs[0];
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();
}

+ Here is the caller graph for this function:

static ilPageObject::_readAnchors (   $a_parent_type,
  $a_page_id 
)
static

Read anchors of a page.

Definition at line 2855 of file class.ilPageObject.php.

References $ilDB.

Referenced by ilInternalLinkGUI\showLinkHelp().

{
global $ilDB;
$st = $ilDB->prepare("SELECT * FROM page_anchor WHERE page_parent_type = ? ".
" AND page_id = ?", array("text", "integer"));
$set = $ilDB->execute($st, array($a_parent_type, $a_page_id));
$anchors = array();
while ($rec = $ilDB->fetchAssoc($set))
{
$anchors[] = $rec["anchor_name"];
}
return $anchors;
}

+ Here is the caller graph for this function:

static ilPageObject::_saveAnchor (   $a_parent_type,
  $a_page_id,
  $a_anchor_name 
)
static

Save an anchor.

Definition at line 2843 of file class.ilPageObject.php.

References $ilDB.

Referenced by saveAnchors().

{
global $ilDB;
$st = $ilDB->prepareManip("INSERT INTO page_anchor (page_parent_type, page_id, anchor_name) ".
" VALUES (?,?,?) ", array("text", "integer", "text"));
$ilDB->execute($st, array($a_parent_type, $a_page_id, $a_anchor_name));
}

+ Here is the caller graph for this function:

ilPageObject::_writeActive (   $a_id,
  $a_parent_type,
  $a_active,
  $a_reset_scheduled_activation = true 
)

write activation status

Definition at line 479 of file class.ilPageObject.php.

References $ilDB.

Referenced by ilStructureObjectGUI\activatePages(), and ilObjContentObjectGUI\activatePages().

{
global $ilDB;
if ($a_reset_scheduled_activation)
{
$st = $ilDB->manipulateF("UPDATE page_object SET active = %s, activation_start = %s, ".
" activation_end = %s WHERE page_id = %s".
" AND parent_type = %s", array("boolean", "timestamp", "timestamp", "integer", "text"),
array($a_active, null, null, $a_id, $a_parent_type));
}
else
{
$st = $ilDB->prepareManip("UPDATE page_object SET active = %s WHERE page_id = %s".
" AND parent_type = %s", array("boolean", "integer", "text"),
array($a_active, $a_id, $a_parent_type));
}
}

+ Here is the caller graph for this function:

ilPageObject::_writeParentId (   $a_parent_type,
  $a_pg_id,
  $a_par_id 
)

Write parent id.

Definition at line 514 of file class.ilPageObject.php.

References $ilDB.

{
global $ilDB;
$st = $ilDB->manipulateF("UPDATE page_object SET parent_id = %s WHERE page_id = %s".
" AND parent_type = %s", array("integer", "integer", "text"),
array($a_par_id, $a_pg_id, $a_parent_type));
}
ilPageObject::addChangeDivClasses (   $a_hashes)

Definition at line 4057 of file class.ilPageObject.php.

References $path, $res, xpath_eval(), and xpath_new_context().

{
$xpc = xpath_new_context($this->dom);
$path = "/*[1]";
$res =& xpath_eval($xpc, $path);
$rnode = $res->nodeset[0];
//echo "A";
foreach($a_hashes as $pc_id => $h)
{
//echo "B";
if ($h["change"] != "")
{
//echo "<br>C-".$h["hier_id"]."-".$h["change"]."-";
$dc_node = $this->dom->create_element("DivClass");
$dc_node->set_attribute("HierId", $h["hier_id"]);
$dc_node->set_attribute("Class", "ilEdit".$h["change"]);
$dc_node = $rnode->append_child($dc_node);
}
}
}

+ Here is the call graph for this function:

ilPageObject::addFileSizes ( )

add file sizes

Definition at line 1547 of file class.ilPageObject.php.

References $id, $path, $res, 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("./Modules/File/classes/class.ilObjFile.php");
}
}
}
$size_node->set_content($size);
}
unset($xpc);
}

+ Here is the call graph for this function:

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 1363 of file class.ilPageObject.php.

References $path, $res, ilPageContent\incEdId(), xpath_eval(), and xpath_new_context().

Referenced by moveIntLinks().

{
$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";
$sep = $path = "";
foreach ($this->id_elements as $el)
{
$path.= $sep."//".$el;
$sep = " | ";
}
$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"
{
require_once("./Services/COPage/classes/class.ilPageContent.php");
$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;
}
}
//echo "<br>par:".$par_hier_id." ($ctag)";
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);
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::addUpdateListener ( $a_object,
  $a_method,
  $a_parameters = "" 
)

Definition at line 379 of file class.ilPageObject.php.

References $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 1009 of file class.ilPageObject.php.

References $lng, and $xml.

Referenced by getLanguageVariablesXML().

{
global $lng;
$xml.= "<LV name=\"$var\" value=\"".$lng->txt("cont_".$var)."\"/>";
}

+ Here is the caller graph for this function:

ilPageObject::appendXMLContent (   $a_xml)

append xml content to page setXMLContent must be called before and the same encoding must be used

Parameters
string$a_xmlxml content

Definition at line 820 of file class.ilPageObject.php.

{
$this->xml.= $a_xml;
}
ilPageObject::bbCode2XML ( $a_content)

transforms bbCode to corresponding xml

Definition at line 3456 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 (   $a_force = false)

Definition at line 301 of file class.ilPageObject.php.

References $error, $ilBench, $path, $res, DOMXML_LOAD_VALIDATING, domxml_open_mem(), getXMLContent(), xpath_eval(), and xpath_new_context().

Referenced by collectContentIncludes(), delete(), ilSCORM2004Page\exportXMLPageContent(), handleImportRepositoryLink(), ilLMPresentationGUI\ilMedia(), ilLMPresentationGUI\ilPage(), moveIntLinks(), ilSCORM2004Page\performAutomaticModifications(), and ilPageObjectGUI\showMediaFullscreen().

{
global $ilBench;
if ($this->dom_builded && !$a_force)
{
return;
}
//echo "\n<br>buildDomWith:".$this->getId().":xml:".$this->getXMLContent(true).":<br>";
$ilBench->start("ContentPresentation", "ilPageObject_buildDom");
$ilBench->stop("ContentPresentation", "ilPageObject_buildDom");
$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;
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::callUpdateListeners ( )

Definition at line 388 of file class.ilPageObject.php.

References $update_listener_cnt.

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);
}
}

+ Here is the caller graph for this function:

ilPageObject::checkPCIds ( )

Check, whether (all) page content hashes are set.

Definition at line 3694 of file class.ilPageObject.php.

References $dom, $path, $res, xpath_eval(), and xpath_new_context().

Referenced by update().

{
$this->builddom();
$mydom = $this->dom;
$sep = $path = "";
foreach ($this->id_elements as $el)
{
$path.= $sep."//".$el."[not(@PCID)]";
$sep = " | ";
}
$xpc = xpath_new_context($mydom);
$res = & xpath_eval($xpc, $path);
if (count ($res->nodeset) > 0)
{
return false;
}
return true;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::collectContentIncludes (   $a_xml = "")

get all content includes that are used within the page

Definition at line 2503 of file class.ilPageObject.php.

References $id, $path, $res, $type, buildDom(), domxml_open_mem(), xpath_eval(), and xpath_new_context().

Referenced by saveContentIncludeUsage().

{
// determine all media aliases of the page
if ($a_xml == "")
{
$this->buildDom();
$xpc = xpath_new_context($this->dom);
$path = "//ContentInclude";
$res =& xpath_eval($xpc, $path);
}
else
{
$doc = domxml_open_mem($a_xml);
$xpc = xpath_new_context($doc);
$path = "//ContentInclude";
$res =& xpath_eval($xpc, $path);
}
$ci_ids = array();
for($i = 0; $i < count($res->nodeset); $i++)
{
$type = $res->nodeset[$i]->get_attribute("ContentType");
$id = $res->nodeset[$i]->get_attribute("ContentId");
$inst_id = $res->nodeset[$i]->get_attribute("InstId");
$ci_ids[$type.":".$id.":".$inst_id] = array(
"type" => $type, "id" => $id, "inst_id" => $inst_id);
}
return $ci_ids;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::collectFileItems (   $a_xml = "")

get all file items that are used within the page

Definition at line 1255 of file class.ilPageObject.php.

References $dom, $path, $res, $t, domxml_open_mem(), xpath_eval(), and xpath_new_context().

Referenced by delete(), ilSCORM2004Page\exportXMLPageContent(), and saveFileUsage().

{
//echo "<br>PageObject::collectFileItems[".$this->getId()."]";
// determine all media aliases of the page
if ($a_xml == "")
{
$xpc = xpath_new_context($this->dom);
$doc = $this->dom;
$path = "//FileItem/Identifier";
$res =& xpath_eval($xpc, $path);
}
else
{
$doc = domxml_open_mem($a_xml);
$xpc = xpath_new_context($doc);
$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;
}
// file items in download links
$xpc = xpath_new_context($doc);
$path = "//IntLink[@Type='File']";
$res =& xpath_eval($xpc, $path);
for($i = 0; $i < count($res->nodeset); $i++)
{
$t = $res->nodeset[$i]->get_attribute("Target");
if (substr($t, 0, 9) == "il__dfile")
{
$id_arr = explode("_", $t);
$file_id = $id_arr[count($id_arr) - 1];
$file_ids[$file_id] = $file_id;
}
}
//var_dump($file_ids); exit;
return $file_ids;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::collectMediaObjects (   $a_inline_only = true)

get all media objects, that are referenced and used within the page

Definition at line 1135 of file class.ilPageObject.php.

References $path, $res, ilObject\_exists(), xpath_eval(), and xpath_new_context().

Referenced by delete(), ilSCORM2004Page\exportXMLPageContent(), 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];
if (ilObject::_exists($mob_id))
{
$mob_ids[$mob_id] = $mob_id;
}
}
}
}
return $mob_ids;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::compareVersion (   $a_left,
  $a_right 
)

Compares to revisions of the page.

Parameters
int$a_leftNr of first revision
int$a_rightNr of second revision

Definition at line 4085 of file class.ilPageObject.php.

References $ilDB, getId(), getParentType(), and ilPageObject().

{
global $ilDB;
// get page objects
$l_page = new ilPageObject($this->getParentType(), $this->getId(), $a_left);
$r_page = new ilPageObject($this->getParentType(), $this->getId(), $a_right);
$l_hashes = $l_page->getPageContentsHashes();
$r_hashes = $r_page->getPageContentsHashes();
// determine all deleted and changed page elements
foreach ($l_hashes as $pc_id => $h)
{
if (!isset($r_hashes[$pc_id]))
{
$l_hashes[$pc_id]["change"] = "Deleted";
}
else
{
if ($l_hashes[$pc_id]["hash"] != $r_hashes[$pc_id]["hash"])
{
$l_hashes[$pc_id]["change"] = "Modified";
$r_hashes[$pc_id]["change"] = "Modified";
include_once("./Services/COPage/mediawikidiff/class.WordLevelDiff.php");
// if modified element is a paragraph, highlight changes
if ($l_hashes[$pc_id]["content"] != "" &&
$r_hashes[$pc_id]["content"] != "")
{
$new_left = str_replace("\n", "<br />", $l_hashes[$pc_id]["content"]);
$new_right = str_replace("\n", "<br />", $r_hashes[$pc_id]["content"]);
$wldiff = new WordLevelDiff(array($new_left),
array($new_right));
$new_left = $wldiff->orig();
$new_right = $wldiff->closing();
$l_page->setParagraphContent($l_hashes[$pc_id]["hier_id"], $new_left[0]);
$r_page->setParagraphContent($l_hashes[$pc_id]["hier_id"], $new_right[0]);
}
}
}
}
// determine all new paragraphs
foreach ($r_hashes as $pc_id => $h)
{
if (!isset($l_hashes[$pc_id]))
{
$r_hashes[$pc_id]["change"] = "New";
}
}
$l_page->addChangeDivClasses($l_hashes);
$r_page->addChangeDivClasses($r_hashes);
return array("l_page" => $l_page, "r_page" => $r_page,
"l_changes" => $l_hashes, "r_changes" => $r_hashes);
}

+ Here is the call graph for this function:

ilPageObject::containsDeactivatedElements (   $a_content)

Check whether content contains deactivated elements.

Parameters
@return

Definition at line 3948 of file class.ilPageObject.php.

Referenced by createFromXML(), update(), and updateFromXML().

{
if (strpos($a_content, " Enabled=\"False\""))
{
return true;
}
return false;
}

+ Here is the caller graph for this function:

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 1068 of file class.ilPageObject.php.

References $contains_int_link.

ilPageObject::containsIntLinks (   $a_content)

Check whether content contains internal links.

Parameters
@return

Definition at line 4411 of file class.ilPageObject.php.

Referenced by createFromXML(), update(), and updateFromXML().

{
if (strpos($a_content, "IntLink"))
{
return true;
}
return false;
}

+ Here is the caller graph for this function:

ilPageObject::copyContents (   $a_hids)

Copy contents to clipboard.

Parameters
string$a_hidsarray of hierarchical ids of content objects

Definition at line 2945 of file class.ilPageObject.php.

References $skip, getContentNode(), ilEditClipboard\setAction(), and ilPageContent\sortHierIds().

Referenced by cutContents().

{
global $ilUser;
//var_dump($a_hids);
if (!is_array($a_hids))
{
return;
}
$time = date("Y-m-d H:i:s", time());
$hier_ids = array();
$skip = array();
foreach($a_hids as $a_hid)
{
if ($a_hid == "")
{
continue;
}
$a_hid = explode(":", $a_hid);
// check, whether new hid is child of existing one or vice versa
reset($hier_ids);
foreach($hier_ids as $h)
{
if($h."_" == substr($a_hid[0], 0, strlen($h) + 1))
{
$skip[] = $a_hid[0];
}
if($a_hid[0]."_" == substr($h, 0, strlen($a_hid[0]) + 1))
{
$skip[] = $h;
}
}
$pc_id[$a_hid[0]] = $a_hid[1];
if ($a_hid[0] != "")
{
$hier_ids[$a_hid[0]] = $a_hid[0];
}
}
foreach ($skip as $s)
{
unset($hier_ids[$s]);
}
include_once("./Services/COPage/classes/class.ilPageContent.php");
$hier_ids = ilPageContent::sortHierIds($hier_ids);
$nr = 1;
foreach($hier_ids as $hid)
{
$curr_node = $this->getContentNode($hid, $pc_id[$hid]);
if (is_object($curr_node))
{
if ($curr_node->node_name() == "PageContent")
{
$content = $this->dom->dump_node($curr_node);
// remove pc and hier ids
$content = eregi_replace("PCID=\"[a-z0-9]*\"","",$content);
$content = eregi_replace("HierId=\"[a-z0-9_]*\"","",$content);
$ilUser->addToPCClipboard($content, $time, $nr);
$nr++;
}
}
}
include_once("./Modules/LearningModule/classes/class.ilEditClipboard.php");
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::copyXmlContent (   $a_new_question_copies = true)

Copy content of page; replace page components with copies where necessary (e.g.

questions)

Definition at line 853 of file class.ilPageObject.php.

References $error, $xml, DOMXML_LOAD_PARSING, domxml_open_mem(), and newQuestionCopies().

{
$xml = $this->getXmlContent();
$temp_dom = domxml_open_mem('<?xml version="1.0" encoding="UTF-8"?>'.$xml,
if(empty($error))
{
if ($a_new_question_copies)
{
$this->newQuestionCopies($temp_dom);
}
}
$xml = $temp_dom->dump_mem(0, $this->encoding);
$xml = eregi_replace("<\?xml[^>]*>","",$xml);
$xml = eregi_replace("<!DOCTYPE[^>]*>","",$xml);
return $xml;
}

+ Here is the call graph for this function:

ilPageObject::create ( )

create new page (with current xml data)

Reimplemented in ilExtPublicProfilePage, ilSCORM2004Page, and ilMediaPoolPage.

Definition at line 2873 of file class.ilPageObject.php.

References createFromXML().

{
$this->createFromXML();
}

+ Here is the call graph for this function:

ilPageObject::createFromXML ( )

create new page object with current xml content

Definition at line 1937 of file class.ilPageObject.php.

References $ilDB, $lng, containsDeactivatedElements(), containsIntLinks(), getId(), getParentId(), getParentType(), getXMLContent(), ilUtil\now(), and setXMLContent().

Referenced by create().

{
global $lng, $ilDB, $ilUser;
//echo "<br>PageObject::createFromXML[".$this->getId()."]";
if($this->getXMLContent() == "")
{
$this->setXMLContent("<PageObject></PageObject>");
}
$iel = $this->containsDeactivatedElements($this->getXMLContent());
$inl = $this->containsIntLinks($this->getXMLContent());
// create object
/* $query = "INSERT INTO page_object (page_id, parent_id, content, parent_type, create_user, last_change_user, inactive_elements, int_links, created, last_change) VALUES ".
"(".$ilDB->quote($this->getId()).",".
$ilDB->quote($this->getParentId()).",".
$ilDB->quote($this->getXMLContent()).
", ".$ilDB->quote($this->getParentType()).
", ".$ilDB->quote($ilUser->getId()).
", ".$ilDB->quote($ilUser->getId()).
", ".$ilDB->quote($iel, "integer")." ".
", ".$ilDB->quote($inl, "integer")." ".
", now(), now())"; */
$ilDB->insert("page_object", array(
"page_id" => array("integer", $this->getId()),
"parent_id" => array("integer", $this->getParentId()),
"content" => array("clob", $this->getXMLContent()),
"parent_type" => array("text", $this->getParentType()),
"create_user" => array("integer", $ilUser->getId()),
"last_change_user" => array("integer", $ilUser->getId()),
"inactive_elements" => array("integer", $iel),
"int_links" => array("integer", $inl),
"created" => array("timestamp", ilUtil::now()),
"last_change" => array("timestamp", ilUtil::now())
));
// todo: put this into insert
/* if(!$ilDB->checkQuerySize($query))
{
$this->ilias->raiseError($lng->txt("check_max_allowed_packet_size"),$this->ilias->error_obj->MESSAGE);
return false;
}*/
// $ilDB->query($query);
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::cutContents (   $a_hids)

Copy contents to clipboard and cut them from the page.

Parameters
string$a_hidsarray of hierarchical ids of content objects

Definition at line 2934 of file class.ilPageObject.php.

References copyContents(), and deleteContents().

{
$this->copyContents($a_hids);
return $this->deleteContents($a_hids);
}

+ Here is the call graph for this function:

ilPageObject::delete ( )

delete page object

Reimplemented in ilExtPublicProfilePage, ilSCORM2004Page, and ilMediaPoolPage.

Definition at line 2253 of file class.ilPageObject.php.

References $files, $GLOBALS, $ilDB, $mobs, ilObjFile\_deleteAllUsages(), ilObject\_exists(), ilObject\_lookupType(), buildDom(), collectFileItems(), collectMediaObjects(), ilNewsItem\deleteNewsOfContext(), getId(), getParentId(), getParentType(), saveAnchors(), saveContentIncludeUsage(), saveInternalLinks(), saveMobUsage(), and saveStyleUsage().

{
global $ilDB;
$mobs = array();
$files = array();
if (!$this->page_not_found)
{
$this->buildDom();
$mobs = $this->collectMediaObjects(false);
}
// delete mob usages
$this->saveMobUsage("<dummy></dummy>");
// delete style usages
$this->saveStyleUsage("<dummy></dummy>");
// delete style usages
$this->saveContentIncludeUsage("<dummy></dummy>");
// delete internal links
$this->saveInternalLinks("<dummy></dummy>");
// delete anchors
$this->saveAnchors("<dummy></dummy>");
// delete all file usages
include_once("./Modules/File/classes/class.ilObjFile.php");
ilObjFile::_deleteAllUsages($this->getParentType().":pg", $this->getId());
// delete news
include_once("./Services/News/classes/class.ilNewsItem.php");
$this->getParentType(), $this->getId(), "pg");
// delete page_object entry
$ilDB->manipulate("DELETE FROM page_object ".
"WHERE page_id = ".$ilDB->quote($this->getId(), "integer").
" AND parent_type= ".$ilDB->quote($this->getParentType(), "text"));
//$this->ilias->db->query($query);
// delete media objects
foreach ($mobs as $mob_id)
{
if(ilObject::_lookupType($mob_id) != 'mob')
{
$GLOBALS['ilLog']->write(__METHOD__.': Type mismatch. Ignoring mob with id: '.$mob_id);
continue;
}
if (ilObject::_exists($mob_id))
{
$mob_obj =& new ilObjMediaObject($mob_id);
$mob_obj->delete();
}
}
include_once("./Modules/File/classes/class.ilObjFile.php");
foreach ($files as $file_id)
{
if (ilObject::_exists($file_id))
{
$file_obj =& new ilObjFile($file_id, false);
$file_obj->delete();
}
}
}

+ Here is the call graph for this function:

ilPageObject::deleteContent (   $a_hid,
  $a_update = true,
  $a_pcid = "" 
)

delete content object with hierarchical id $a_hid

Parameters
string$a_hidhierarchical id of content object
boolean$a_updateupdate page in db (note: update deletes all hierarchical ids in DOM!)

Definition at line 2885 of file class.ilPageObject.php.

References getContentNode(), and update().

Referenced by moveContentAfter(), and moveContentBefore().

{
$curr_node =& $this->getContentNode($a_hid, $a_pcid);
$curr_node->unlink_node($curr_node);
if ($a_update)
{
return $this->update();
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::deleteContentBeforeHierId (   $a_hid,
  $a_update = true 
)

delete content object with hierarchical id < $a_hid

Parameters
string$a_hidhierarchical id of content object
boolean$a_updateupdate page in db (note: update deletes all hierarchical ids in DOM!)

Definition at line 3129 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();
}
}

+ Here is the call graph for this function:

ilPageObject::deleteContentFromHierId (   $a_hid,
  $a_update = true 
)

delete content object with hierarchical id >= $a_hid

Parameters
string$a_hidhierarchical id of content object
boolean$a_updateupdate page in db (note: update deletes all hierarchical ids in DOM!)

Definition at line 3099 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();
}
}

+ Here is the call graph for this function:

ilPageObject::deleteContents (   $a_hids,
  $a_update = true 
)

delete multiple content objects

Parameters
string$a_hidsarray of hierarchical ids of content objects
boolean$a_updateupdate page in db (note: update deletes all hierarchical ids in DOM!)

Definition at line 2903 of file class.ilPageObject.php.

References getContentNode(), and update().

Referenced by cutContents().

{
if (!is_array($a_hids))
{
return;
}
foreach($a_hids as $a_hid)
{
$a_hid = explode(":", $a_hid);
//echo "-".$a_hid[0]."-".$a_hid[1]."-";
$curr_node =& $this->getContentNode($a_hid[0], $a_hid[1]);
if (is_object($curr_node))
{
$parent_node = $curr_node->parent_node();
if ($parent_node->node_name() != "TableRow")
{
$curr_node->unlink_node($curr_node);
}
}
}
if ($a_update)
{
return $this->update();
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::freeDom ( )

Definition at line 335 of file class.ilPageObject.php.

Referenced by ilSCORM2004Page\exportXMLPageContent().

{
//$this->dom->free();
unset($this->dom);
}

+ Here is the caller graph for this function:

ilPageObject::getActivationEnd ( )

Get Activation End.

Returns
date Activation End

Definition at line 558 of file class.ilPageObject.php.

Referenced by getActive(), update(), and updateFromXML().

{
return $this->activationend;
}

+ Here is the caller graph for this function:

ilPageObject::getActivationStart ( )

Get Activation Start.

Returns
date Activation Start

Definition at line 538 of file class.ilPageObject.php.

Referenced by getActive(), update(), and updateFromXML().

{
return $this->activationstart;
}

+ Here is the caller graph for this function:

ilPageObject::getActive (   $a_check_scheduled_activation = false)

get activation

Returns
boolean true/false for active or not

Definition at line 414 of file class.ilPageObject.php.

References ilDateTime\_after(), ilDateTime\_before(), getActivationEnd(), getActivationStart(), IL_CAL_DATETIME, and IL_CAL_UNIX.

Referenced by update(), and updateFromXML().

{
if ($a_check_scheduled_activation && !$this->active)
{
include_once("./Services/Calendar/classes/class.ilDateTime.php");
$now = new ilDateTime(time(), IL_CAL_UNIX);
if (!ilDateTime::_before($now, $start) && !ilDateTime::_after($now, $end))
{
return true;
}
}
return $this->active;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static ilPageObject::getAllPages (   $a_parent_type,
  $a_parent_id 
)
static

Get all pages for parent object.

Parameters
string$a_parent_typeParent Type
int$a_parent_idParent ID
int$a_periodTime Period

Definition at line 4215 of file class.ilPageObject.php.

References $ilDB.

{
global $ilDB;
$page_changes = array();
$q = "SELECT * FROM page_object ".
" WHERE parent_id = ".$ilDB->quote($a_parent_id, "integer").
" AND parent_type = ".$ilDB->quote($a_parent_type, "text");
$set = $ilDB->query($q);
$pages = array();
while ($page = $ilDB->fetchAssoc($set))
{
$pages[$page["page_id"]] = array("date" => $page["last_change"],
"id" => $page["page_id"], "user" => $page["last_change_user"]);
}
return $pages;
}
ilPageObject::getBibliographyXML ( )

get a xml string that contains all Bibliography elements, that are referenced by any bibitem alias in the page

Definition at line 1111 of file class.ilPageObject.php.

References $_GET, $ilDB, $ilias, $row, and DB_FETCHMODE_ASSOC.

Referenced by getXMLFromDom().

{
global $ilias, $ilDB;
// 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=".
$ilDB->quote($_GET["ref_id"],'integer'));
$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;
}

+ Here is the caller graph for this function:

ilPageObject::getContainsQuestion ( )

Get contains question.

Returns
boolean contains question

Definition at line 1102 of file class.ilPageObject.php.

{
return $this->contains_question;
}
& ilPageObject::getContentNode (   $a_hier_id,
  $a_pc_id = "" 
)

Definition at line 749 of file class.ilPageObject.php.

References $node, $path, $res, xpath_eval(), and xpath_new_context().

Referenced by copyContents(), deleteContent(), deleteContentBeforeHierId(), deleteContentFromHierId(), deleteContents(), getContentObject(), insertContent(), insertContentNode(), setParagraphContent(), and switchEnableMultiple().

{
$xpc = xpath_new_context($this->dom);
if($a_hier_id == "pg")
{
return $this->node;
}
else
{
// get per pc id
if ($a_pc_id != "")
{
$path = "//*[@PCID = '$a_pc_id']";
$res =& xpath_eval($xpc, $path);
if (count($res->nodeset) == 1)
{
$cont_node =& $res->nodeset[0];
return $cont_node;
}
}
// fall back to hier id
$path = "//*[@HierId = '$a_hier_id']";
$res =& xpath_eval($xpc, $path);
if (count($res->nodeset) == 1)
{
$cont_node =& $res->nodeset[0];
return $cont_node;
}
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

& ilPageObject::getContentObject (   $a_hier_id,
  $a_pc_id = "" 
)

Definition at line 563 of file class.ilPageObject.php.

References $_GET, $_POST, $res, $tab, ilObject\_exists(), exit, and getContentNode().

Referenced by ilSCORM2004Page\exportXMLPageContent(), moveContentAfter(), moveContentBefore(), and switchEnableMultiple().

{
//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, $a_pc_id);
//echo "ilPageObject::getContentObject:nodename:".$cont_node->node_name().":<br>";
if (!is_object($cont_node))
{
return false;
}
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("./Services/COPage/classes/class.ilPCParagraph.php");
$par =& new ilPCParagraph($this->dom);
$par->setNode($cont_node);
$par->setHierId($a_hier_id);
$par->setPcId($a_pc_id);
return $par;
case "Table":
if ($child_node->get_attribute("DataTable") == "y")
{
require_once("./Services/COPage/classes/class.ilPCDataTable.php");
$tab =& new ilPCDataTable($this->dom);
$tab->setNode($cont_node);
$tab->setHierId($a_hier_id);
}
else
{
require_once("./Services/COPage/classes/class.ilPCTable.php");
$tab =& new ilPCTable($this->dom);
$tab->setNode($cont_node);
$tab->setHierId($a_hier_id);
}
$tab->setPcId($a_pc_id);
return $tab;
case "MediaObject":
if ($_GET["pgEdMediaMode"] != "") {echo "ilPageObject::error media"; exit;}
//require_once("./Services/MediaObjects/classes/class.ilObjMediaObject.php");
require_once("./Services/COPage/classes/class.ilPCMediaObject.php");
$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];
// allow deletion of non-existing media objects
if (!ilObject::_exists($mob_id) && in_array("delete", $_POST))
{
$mob_id = 0;
}
//$mob =& new ilObjMediaObject($mob_id);
$mob = new ilPCMediaObject($this->dom);
$mob->readMediaObject($mob_id);
//$mob->setDom($this->dom);
$mob->setNode($cont_node);
$mob->setHierId($a_hier_id);
$mob->setPcId($a_pc_id);
return $mob;
case "List":
require_once("./Services/COPage/classes/class.ilPCList.php");
$list = new ilPCList($this->dom);
$list->setNode($cont_node);
$list->setHierId($a_hier_id);
$list->setPcId($a_pc_id);
return $list;
case "FileList":
require_once("./Services/COPage/classes/class.ilPCFileList.php");
$file_list = new ilPCFileList($this->dom);
$file_list->setNode($cont_node);
$file_list->setHierId($a_hier_id);
$file_list->setPcId($a_pc_id);
return $file_list;
// note: assessment handling is forwarded to assessment gui classes
case "Question":
require_once("./Services/COPage/classes/class.ilPCQuestion.php");
$pc_question = new ilPCQuestion($this->dom);
$pc_question->setNode($cont_node);
$pc_question->setHierId($a_hier_id);
$pc_question->setPcId($a_pc_id);
return $pc_question;
case "Section":
require_once("./Services/COPage/classes/class.ilPCSection.php");
$sec = new ilPCSection($this->dom);
$sec->setNode($cont_node);
$sec->setHierId($a_hier_id);
$sec->setPcId($a_pc_id);
return $sec;
case "Resources":
require_once("./Services/COPage/classes/class.ilPCResources.php");
$res = new ilPCResources($this->dom);
$res->setNode($cont_node);
$res->setHierId($a_hier_id);
$res->setPcId($a_pc_id);
return $res;
case "Map":
require_once("./Services/COPage/classes/class.ilPCMap.php");
$map = new ilPCMap($this->dom);
$map->setNode($cont_node);
$map->setHierId($a_hier_id);
$map->setPcId($a_pc_id);
return $map;
case "Tabs":
require_once("./Services/COPage/classes/class.ilPCTabs.php");
$map = new ilPCTabs($this->dom);
$map->setNode($cont_node);
$map->setHierId($a_hier_id);
$map->setPcId($a_pc_id);
return $map;
case "Plugged":
require_once("./Services/COPage/classes/class.ilPCPlugged.php");
$plugged = new ilPCPlugged($this->dom);
$plugged->setNode($cont_node);
$plugged->setHierId($a_hier_id);
$plugged->setPcId($a_pc_id);
return $plugged;
//Page-Layout-Support
case "PlaceHolder":
require_once("./Services/COPage/classes/class.ilPCPlaceHolder.php");
$placeholder = new ilPCPlaceHolder($this->dom);
$placeholder->setNode($cont_node);
$placeholder->setHierId($a_hier_id);
$placeholder->setPcId($a_pc_id);
return $placeholder;
case "ContentInclude":
require_once("./Services/COPage/classes/class.ilPCContentInclude.php");
$inc =& new ilPCContentInclude($this->dom);
$inc->setNode($cont_node);
$inc->setHierId($a_hier_id);
$inc->setPcId($a_pc_id);
return $inc;
}
break;
case "TableData":
require_once("./Services/COPage/classes/class.ilPCTableData.php");
$td =& new ilPCTableData($this->dom);
$td->setNode($cont_node);
$td->setHierId($a_hier_id);
return $td;
case "ListItem":
require_once("./Services/COPage/classes/class.ilPCListItem.php");
$td =& new ilPCListItem($this->dom);
$td->setNode($cont_node);
$td->setHierId($a_hier_id);
return $td;
case "FileItem":
require_once("./Services/COPage/classes/class.ilPCFileItem.php");
$file_item =& new ilPCFileItem($this->dom);
$file_item->setNode($cont_node);
$file_item->setHierId($a_hier_id);
return $file_item;
case "Tab":
require_once("./Services/COPage/classes/class.ilPCTab.php");
$tab =& new ilPCTab($this->dom);
$tab->setNode($cont_node);
$tab->setHierId($a_hier_id);
return $file_item;
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

& ilPageObject::getDom ( )

Definition at line 341 of file class.ilPageObject.php.

References $dom.

{
return $this->dom;
}
ilPageObject::getFileItemIds ( )

get ids of all file items

Reimplemented in ilSCORM2004Page.

Definition at line 1518 of file class.ilPageObject.php.

{
return $this->file_item_ids;
}
ilPageObject::getFirstColumnIds ( )

get ids of all first table columns

Definition at line 1502 of file class.ilPageObject.php.

{
return $this->first_col_ids;
}
ilPageObject::getFirstParagraphText ( )

Definition at line 1016 of file class.ilPageObject.php.

References $path, $res, xpath_eval(), and xpath_new_context().

{
require_once("./Services/COPage/classes/class.ilPCParagraph.php");
$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 "";
}
}

+ Here is the call graph for this function:

ilPageObject::getFirstRowIds ( )

get ids of all first table rows

Definition at line 1494 of file class.ilPageObject.php.

{
return $this->first_row_ids;
}
ilPageObject::getFO ( )

get fo page content

Definition at line 3888 of file class.ilPageObject.php.

References $xml, getXMLFromDom(), xslt_create(), xslt_free(), and xslt_process().

{
$xml = $this->getXMLFromDom(false, true, true);
$xsl = file_get_contents("./Services/COPage/xsl/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);
var_dump($fo);
// 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;
}

+ Here is the call graph for this function:

ilPageObject::getHierIds ( )

get all hierarchical ids

Definition at line 1486 of file class.ilPageObject.php.

Referenced by deleteContentBeforeHierId(), and deleteContentFromHierId().

{
return $this->hier_ids;
}

+ Here is the caller graph for this function:

ilPageObject::getHistoryEntries ( )

Get History Entries.

Definition at line 3960 of file class.ilPageObject.php.

References $ilDB, getId(), and getParentType().

{
global $ilDB;
$h_query = "SELECT * FROM page_history ".
" WHERE page_id = ".$ilDB->quote($this->getId(), "integer").
" AND parent_type = ".$ilDB->quote($this->getParentType(), "text").
" ORDER BY hdate DESC";
$hset = $ilDB->query($h_query);
$hentries = array();
while ($hrec = $ilDB->fetchAssoc($hset))
{
$hrec["sortkey"] = (int) $hrec["nr"];
$hrec["user"] = (int) $hrec["user_id"];
$hentries[] = $hrec;
}
//var_dump($hentries);
return $hentries;
}

+ Here is the call graph for this function:

ilPageObject::getHistoryEntry (   $a_old_nr)

Get History Entry.

Definition at line 3985 of file class.ilPageObject.php.

References $ilDB, $res, getId(), and getParentType().

{
global $ilDB;
$res = $ilDB->queryF("SELECT * FROM page_history ".
" WHERE page_id = %s ".
" AND parent_type = %s ".
" AND nr = %s",
array("integer", "text", "integer"),
array($this->getId(), $this->getParentType(), $a_old_nr));
if ($hrec = $ilDB->fetchAssoc($res))
{
return $hrec;
}
return false;
}

+ Here is the call graph for this function:

ilPageObject::getHistoryInfo (   $a_nr)

Get information about a history entry, its predecessor and its successor.

Parameters
int$a_nrNr of history entry

Definition at line 4010 of file class.ilPageObject.php.

References $ilDB, $res, $ret, and $row.

{
global $ilDB;
// determine previous entry
$res = $ilDB->query("SELECT MAX(nr) mnr FROM page_history ".
" WHERE page_id = ".$ilDB->quote($this->getId(), "integer").
" AND parent_type = ".$ilDB->quote($this->getParentType(), "text").
" AND nr < ".$ilDB->quote((int) $a_nr, "integer"));
$row = $ilDB->fetchAssoc($res);
if ($row["mnr"] > 0)
{
$res = $ilDB->query("SELECT * FROM page_history ".
" WHERE page_id = ".$ilDB->quote($this->getId(), "integer").
" AND parent_type = ".$ilDB->quote($this->getParentType(), "text").
" AND nr = ".$ilDB->quote((int) $row["mnr"], "integer"));
$row = $ilDB->fetchAssoc($res);
$ret["previous"] = $row;
}
// determine next entry
$res = $ilDB->query("SELECT MIN(nr) mnr FROM page_history ".
" WHERE page_id = ".$ilDB->quote($this->getId(), "integer").
" AND parent_type = ".$ilDB->quote($this->getParentType(), "text").
" AND nr > ".$ilDB->quote((int) $a_nr, "integer"));
$row = $ilDB->fetchAssoc($res);
if ($row["mnr"] > 0)
{
$res = $ilDB->query("SELECT * FROM page_history ".
" WHERE page_id = ".$ilDB->quote($this->getId(), "integer").
" AND parent_type = ".$ilDB->quote($this->getParentType(), "text").
" AND nr = ".$ilDB->quote((int) $row["mnr"], "integer"));
$row = $ilDB->fetchAssoc($res);
$ret["next"] = $row;
}
// current
$res = $ilDB->query("SELECT * FROM page_history ".
" WHERE page_id = ".$ilDB->quote($this->getId(), "integer").
" AND parent_type = ".$ilDB->quote($this->getParentType(), "text").
" AND nr = ".$ilDB->quote((int) $a_nr, "integer"));
$row = $ilDB->fetchAssoc($res);
$ret["current"] = $row;
return $ret;
}
ilPageObject::getInternalLinks (   $a_cnt_multiple = false)

get all internal links that are used within the page

Definition at line 1181 of file class.ilPageObject.php.

References $id, $path, $res, $type, ilMediaItem\_getMapAreasIntLinks(), xpath_eval(), and xpath_new_context().

{
// get all internal links of the page
$xpc = xpath_new_context($this->dom);
$path = "//IntLink";
$res =& xpath_eval($xpc, $path);
$links = array();
$cnt_multiple = 1;
for($i = 0; $i < count($res->nodeset); $i++)
{
$add = "";
if ($a_cnt_multiple)
{
$add = ":".$cnt_multiple;
}
$target = $res->nodeset[$i]->get_attribute("Target");
$type = $res->nodeset[$i]->get_attribute("Type");
$targetframe = $res->nodeset[$i]->get_attribute("TargetFrame");
$anchor = $res->nodeset[$i]->get_attribute("Anchor");
$links[$target.":".$type.":".$targetframe.":".$anchor.$add] =
array("Target" => $target, "Type" => $type,
"TargetFrame" => $targetframe, "Anchor" => $anchor);
// get links (image map areas) for inline media objects
if ($type == "MediaObject" && $targetframe == "")
{
if (substr($target, 0, 4) =="il__")
{
$id_arr = explode("_", $target);
$id = $id_arr[count($id_arr) - 1];
foreach($med_links as $key => $med_link)
{
$links[$key] = $med_link;
}
}
}
//echo "<br>-:".$target.":".$type.":".$targetframe.":-";
$cnt_multiple++;
}
unset($xpc);
// get all media aliases
$xpc = xpath_new_context($this->dom);
$path = "//MediaAlias";
$res =& xpath_eval($xpc, $path);
require_once("Services/MediaObjects/classes/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];
foreach($med_links as $key => $med_link)
{
$links[$key] = $med_link;
}
}
}
unset($xpc);
return $links;
}

+ Here is the call graph for this function:

ilPageObject::getLanguageVariablesXML ( )

get language variables as XML

Definition at line 976 of file class.ilPageObject.php.

References $lng, $xml, and appendLangVarXML().

Referenced by getXMLFromDom().

{
global $lng;
$xml = "<LVs>";
$lang_vars = array("ed_insert_par", "ed_insert_code",
"ed_insert_dtable", "ed_insert_atable", "ed_insert_media", "ed_insert_list",
"ed_insert_filelist", "ed_paste_clip", "ed_edit", "ed_insert_section",
"ed_edit_prop","ed_edit_files", "ed_edit_data", "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","ed_enable",
"de_activate", "ed_insert_repobj", "ed_insert_map", "ed_insert_tabs",
"ed_insert_pcqst", "empty_question", "ed_paste","question_placeh","media_placeh","text_placeh",
"ed_insert_plach","question_placehl","media_placehl","text_placehl",
"pc_flist", "pc_par", "pc_mob", "pc_qst", "pc_sec", "pc_dtab", "pc_tab",
"pc_code", "pc_vacc", "pc_hacc", "pc_res", "pc_map", "pc_list", "ed_insert_incl", "pc_incl");
foreach ($lang_vars as $lang_var)
{
$this->appendLangVarXML($xml, $lang_var);
}
$xml.= "</LVs>";
return $xml;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::getLastChange ( )

Get Last Change.

Returns
string Last Change

Definition at line 165 of file class.ilPageObject.php.

{
return $this->lastchange;
}
ilPageObject::getLastUpdateOfIncludedElements ( )

Get last update of included elements (media objects and files).

This is needed for cache logic, cache must be reloaded if anything has changed.

Definition at line 2660 of file class.ilPageObject.php.

References $files, $mobs, ilObjFile\_getFilesOfObject(), ilObject\_getLastUpdateOfObjects(), ilObjMediaObject\_getMobsOfObject(), getId(), and getParentType().

{
include_once("./Services/MediaObjects/classes/class.ilObjMediaObject.php");
include_once("./Modules/File/classes/class.ilObjFile.php");
$this->getId());
$this->getId());
$objs = array_merge($mobs, $files);
}

+ Here is the call graph for this function:

ilPageObject::getLayoutMode ( )

Get Layout Mode enabled/disabled.

Returns
boolean Get Layout Mode Setting

Definition at line 185 of file class.ilPageObject.php.

References $layout_mode.

Referenced by insertContent().

{
}

+ Here is the caller graph for this function:

ilPageObject::getListItemIds ( )

get ids of all list items

Definition at line 1510 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 1325 of file class.ilPageObject.php.

References $path, $res, 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);
}

+ Here is the call graph for this function:

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 1303 of file class.ilPageObject.php.

References ilObject\_lookupType(), collectMediaObjects(), and IL_MODE_OUTPUT.

Referenced by getXMLFromDom().

{
$mob_ids = $this->collectMediaObjects();
// get xml of corresponding media objects
$mobs_xml = "";
require_once("./Services/MediaObjects/classes/class.ilObjMediaObject.php");
foreach($mob_ids as $mob_id => $dummy)
{
if (ilObject::_lookupType($mob_id) == "mob")
{
$mob_obj =& new ilObjMediaObject($mob_id);
$mobs_xml .= $mob_obj->getXML(IL_MODE_OUTPUT);
}
}
//var_dump($mobs_xml);
return $mobs_xml;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static ilPageObject::getNewPages (   $a_parent_type,
  $a_parent_id 
)
static

Get new pages.

Parameters
string$a_parent_typeParent Type
int$a_parent_idParent ID

Definition at line 4241 of file class.ilPageObject.php.

References $ilDB.

{
global $ilDB;
$pages = array();
$q = "SELECT * FROM page_object ".
" WHERE parent_id = ".$ilDB->quote($a_parent_id, "integer").
" AND parent_type = ".$ilDB->quote($a_parent_type, "text").
" ORDER BY created DESC";
$set = $ilDB->query($q);
while($page = $ilDB->fetchAssoc($set))
{
if ($page["created"] != "")
{
$pages[] = array("created" => $page["created"],
"id" => $page["page_id"],
"user" => $page["create_user"],
);
}
}
return $pages;
}
& ilPageObject::getNode ( )

Definition at line 794 of file class.ilPageObject.php.

References $node.

Referenced by insertContent(), and insertContentNode().

{
return $this->node;
}

+ Here is the caller graph for this function:

ilPageObject::getPageContentsHashes ( )

Get page contents hashes.

Definition at line 3766 of file class.ilPageObject.php.

References $dom, $path, $res, ilPCParagraph\xml2output(), xpath_eval(), and xpath_new_context().

{
$this->builddom();
$this->addHierIds();
$mydom = $this->dom;
// get existing ids
$path = "//PageContent";
$xpc = xpath_new_context($mydom);
$res = & xpath_eval($xpc, $path);
$hashes = array();
require_once("./Services/COPage/classes/class.ilPCParagraph.php");
for ($i = 0; $i < count ($res->nodeset); $i++)
{
$hier_id = $res->nodeset[$i]->get_attribute("HierId");
$pc_id = $res->nodeset[$i]->get_attribute("PCID");
$dump = $mydom->dump_node($res->nodeset[$i]);
if (($hpos = strpos($dump, ' HierId="'.$hier_id.'"')) > 0)
{
$dump = substr($dump, 0, $hpos).
substr($dump, $hpos + strlen(' HierId="'.$hier_id.'"'));
}
$childs = $res->nodeset[$i]->child_nodes();
$content = "";
if ($childs[0] && $childs[0]->node_name() == "Paragraph")
{
$content = $mydom->dump_node($childs[0]);
$content = substr($content, strpos($content, ">") + 1,
strrpos($content, "<") - (strpos($content, ">") + 1));
//var_dump($content);
$content = ilPCParagraph::xml2output($content);
//var_dump($content);
}
//$hashes[$hier_id] =
// array("PCID" => $pc_id, "hash" => md5($dump));
$hashes[$pc_id] =
array("hier_id" => $hier_id, "hash" => md5($dump), "content" => $content);
}
return $hashes;
}

+ Here is the call graph for this function:

static ilPageObject::getPageContributors (   $a_parent_type,
  $a_page_id 
)
static

Get all contributors for parent object.

Parameters
string$a_parent_typeParent Type
int$a_parent_idParent ID

Definition at line 4316 of file class.ilPageObject.php.

References $ilDB, $name, and ilObjUser\_lookupName().

{
global $ilDB;
$contributors = array();
$set = $ilDB->queryF("SELECT last_change_user FROM page_object ".
" WHERE page_id = %s AND parent_type = %s ".
" AND last_change_user != %s",
array("integer", "text", "integer"),
array($a_page_id, $a_parent_type, 0));
while ($page = $ilDB->fetchAssoc($set))
{
$contributors[$page["last_change_user"]] = 1;
}
$set = $ilDB->queryF("SELECT count(*) as cnt, page_id, user_id FROM page_history ".
" WHERE page_id = %s AND parent_type = %s AND user_id != %s ".
" GROUP BY user_id, page_id ",
array("integer", "text", "integer"),
array($a_page_id, $a_parent_type, 0));
while ($hpage = $ilDB->fetchAssoc($set))
{
$contributors[$hpage["user_id"]] =
$contributors[$hpage["user_id"]] + $hpage["cnt"];
}
$c = array();
foreach ($contributors as $k => $co)
{
$c[] = array("user_id" => $k, "pages" => $co,
"lastname" => $name["lastname"], "firstname" => $name["firstname"]);
}
return $c;
}

+ Here is the call graph for this function:

static ilPageObject::getPagesWithLinks (   $a_parent_type,
  $a_parent_id 
)
static

Get all pages for parent object that contain internal links.

Parameters
string$a_parent_typeParent Type
int$a_parent_idParent ID
int$a_periodTime Period

Definition at line 4384 of file class.ilPageObject.php.

References $ilDB.

Referenced by ilLMPageObject\getPagesWithLinksList().

{
global $ilDB;
$page_changes = array();
$q = "SELECT * FROM page_object ".
" WHERE parent_id = ".$ilDB->quote($a_parent_id, "integer").
" AND parent_type = ".$ilDB->quote($a_parent_type, "text").
" AND int_links = ".$ilDB->quote(1, "integer");
$set = $ilDB->query($q);
$pages = array();
while ($page = $ilDB->fetchAssoc($set))
{
$pages[$page["page_id"]] = array("date" => $page["last_change"],
"id" => $page["page_id"], "user" => $page["last_change_user"]);
}
return $pages;
}

+ Here is the caller graph for this function:

ilPageObject::getParentId ( )

Definition at line 364 of file class.ilPageObject.php.

References $parent_id.

Referenced by createFromXML(), delete(), ilSCORM2004Page\exportXMLMetaData(), ilExtPublicProfilePage\getUserId(), saveMetaKeywords(), update(), and updateFromXML().

{
}

+ Here is the caller graph for this function:

static ilPageObject::getParentObjectContributors (   $a_parent_type,
  $a_parent_id 
)
static

Get all contributors for parent object.

Parameters
string$a_parent_typeParent Type
int$a_parent_idParent ID

Definition at line 4272 of file class.ilPageObject.php.

References $ilDB, $name, and ilObjUser\_lookupName().

{
global $ilDB;
$contributors = array();
$set = $ilDB->queryF("SELECT last_change_user FROM page_object ".
" WHERE parent_id = %s AND parent_type = %s ".
" AND last_change_user != %s",
array("integer", "text", "integer"),
array($a_parent_id, $a_parent_type, 0));
while ($page = $ilDB->fetchAssoc($set))
{
$contributors[$page["last_change_user"]][$page["page_id"]] = 1;
}
$set = $ilDB->queryF("SELECT count(*) as cnt, page_id, user_id FROM page_history ".
" WHERE parent_id = %s AND parent_type = %s AND user_id != %s ".
" GROUP BY page_id, user_id ",
array("integer", "text", "integer"),
array($a_parent_id, $a_parent_type, 0));
while ($hpage = $ilDB->fetchAssoc($set))
{
$contributors[$hpage["user_id"]][$hpage["page_id"]] =
$contributors[$hpage["user_id"]][$hpage["page_id"]] + $hpage["cnt"];
}
$c = array();
foreach ($contributors as $k => $co)
{
$c[] = array("user_id" => $k, "pages" => $co,
"lastname" => $name["lastname"], "firstname" => $name["firstname"]);
}
return $c;
}

+ Here is the call graph for this function:

ilPageObject::getQuestionIds ( )

Get question ids.

Definition at line 3813 of file class.ilPageObject.php.

References $dom, $path, $res, ilInternalLink\_extractInstOfTarget(), ilInternalLink\_extractObjIdOfTarget(), xpath_eval(), and xpath_new_context().

{
$this->builddom();
$mydom = $this->dom;
// Get question IDs
$path = "//Question";
$xpc = xpath_new_context($mydom);
$res = & xpath_eval($xpc, $path);
$q_ids = array();
include_once("./Services/COPage/classes/class.ilInternalLink.php");
for ($i = 0; $i < count ($res->nodeset); $i++)
{
$qref = $res->nodeset[$i]->get_attribute("QRef");
if (!($inst_id > 0))
{
if ($obj_id > 0)
{
$q_ids[] = $obj_id;
}
}
}
return $q_ids;
}

+ Here is the call graph for this function:

static ilPageObject::getRecentChanges (   $a_parent_type,
  $a_parent_id,
  $a_period = 30 
)
static

Get recent pages changes for parent object.

Parameters
string$a_parent_typeParent Type
int$a_parent_idParent ID
int$a_periodTime Period

Definition at line 4165 of file class.ilPageObject.php.

References $ilDB, and ilUtil\sortArray().

{
global $ilDB;
$page_changes = array();
$limit_ts = date('Y-m-d H:i:s', time() - ($a_period * 24 * 60 * 60));
$q = "SELECT * FROM page_object ".
" WHERE parent_id = ".$ilDB->quote($a_parent_id, "integer").
" AND parent_type = ".$ilDB->quote($a_parent_type, "text").
" AND last_change >= ".$ilDB->quote($limit_ts, "timestamp");
// " AND (TO_DAYS(now()) - TO_DAYS(last_change)) <= ".((int)$a_period);
$set = $ilDB->query($q);
while($page = $ilDB->fetchAssoc($set))
{
$page_changes[] = array("date" => $page["last_change"],
"id" => $page["page_id"], "type" => "page",
"user" => $page["last_change_user"]);
}
$and_str = "";
if ($a_period > 0)
{
$limit_ts = date('Y-m-d H:i:s', time() - ($a_period * 24 * 60 * 60));
$and_str = " AND hdate >= ".$ilDB->quote($limit_ts, "timestamp")." ";
}
$q = "SELECT * FROM page_history ".
" WHERE parent_id = ".$ilDB->quote($a_parent_id, "integer").
" AND parent_type = ".$ilDB->quote($a_parent_type, "text").
$and_str;
$set = $ilDB->query($q);
while ($page = $ilDB->fetchAssoc($set))
{
$page_changes[] = array("date" => $page["hdate"],
"id" => $page["page_id"], "type" => "hist", "nr" => $page["nr"],
"user" => $page["user_id"]);
}
$page_changes = ilUtil::sortArray($page_changes, "date", "desc");
return $page_changes;
}

+ Here is the call graph for this function:

ilPageObject::getRenderedContent ( )

Get Rendered Content.

Returns
string Rendered Content

Definition at line 125 of file class.ilPageObject.php.

{
return $this->renderedcontent;
}
ilPageObject::getRenderedTime ( )

Get Rendered Time.

Returns
string Rendered Time

Definition at line 145 of file class.ilPageObject.php.

{
return $this->renderedtime;
}
ilPageObject::getRenderMd5 ( )

Get Render MD5.

Returns
string Render MD5

Definition at line 105 of file class.ilPageObject.php.

{
return $this->rendermd5;
}
ilPageObject::getXMLContent (   $a_incl_head = false)

get xml content of page

Definition at line 829 of file class.ilPageObject.php.

References $xml.

Referenced by buildDom(), ilMediaPoolPage\create(), ilExtPublicProfilePage\create(), createFromXML(), ilLMPresentationGUI\ilCitation(), and updateFromXML().

{
// build full http path for XML DOCTYPE header.
// Under windows a relative path doesn't work :-(
if($a_incl_head)
{
//echo "+".$this->encoding."+";
$enc_str = (!empty($this->encoding))
? "encoding=\"".$this->encoding."\""
: "";
return "<?xml version=\"1.0\" $enc_str ?>".
"<!DOCTYPE PageObject SYSTEM \"".ILIAS_ABSOLUTE_PATH."/xml/".$this->cur_dtd."\">".
$this->xml;
}
else
{
return $this->xml;
}
}

+ Here is the caller graph for this function:

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 913 of file class.ilPageObject.php.

References $mobs, $xml, getBibliographyXML(), getLanguageVariablesXML(), and getMultimediaXML().

Referenced by ilSCORM2004Page\exportXMLPageContent(), getFO(), and update().

{
if ($a_incl_head)
{
//echo "\n<br>#".$this->encoding."#";
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
{
$xml = $this->dom->dump_mem(0, $this->encoding);
$xml = eregi_replace("<\?xml[^>]*>","",$xml);
$xml = eregi_replace("<!DOCTYPE[^>]*>","",$xml);
return $xml;
// don't use dump_node. This gives always entities.
//return $this->dom->dump_node($this->node);
}
}
else
{
return "";
}
}
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::haltOnError (   $a_halt)

Definition at line 85 of file class.ilPageObject.php.

{
$this->halt_on_error = $a_halt;
}
ilPageObject::handleImportRepositoryLink (   $a_rep_import_id,
  $a_rep_type,
  $a_rep_ref_id 
)

Definition at line 1910 of file class.ilPageObject.php.

References $path, $res, $type, buildDom(), xpath_eval(), and xpath_new_context().

{
$this->buildDom();
// resolve normal internal links
$xpc = xpath_new_context($this->dom);
$path = "//IntLink";
$res =& xpath_eval($xpc, $path);
//echo "1";
for($i = 0; $i < count($res->nodeset); $i++)
{
//echo "2";
$target = $res->nodeset[$i]->get_attribute("Target");
$type = $res->nodeset[$i]->get_attribute("Type");
if ($target == $a_rep_import_id && $type == "RepositoryItem")
{
//echo "setting:"."il__".$a_rep_type."_".$a_rep_ref_id;
$res->nodeset[$i]->set_attribute("Target",
"il__".$a_rep_type."_".$a_rep_ref_id);
}
}
unset($xpc);
}

+ Here is the call graph for this function:

ilPageObject::hasHighlighter (   $hfile_ext)

Definition at line 3577 of file class.ilPageObject.php.

Referenced by highlightText().

{
return file_exists ("Services/COPage/syntax_highlight/php/HFile/HFile_".$hfile_ext.".php");
}

+ Here is the caller graph for this function:

ilPageObject::highlightText (   $a_text,
  $proglang,
  $autoindent 
)

Highligths Text with given ProgLang.

Definition at line 3555 of file class.ilPageObject.php.

References hasHighlighter().

Referenced by insertSourceCodeParagraphs().

{
if (!$this->hasHighlighter($proglang)) {
$proglang="plain";
}
require_once("./Services/COPage/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));
return $a_text;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::ilPageObject (   $a_parent_type,
  $a_id = 0,
  $a_old_nr = 0,
  $a_halt = true 
)

Constructor public.

Definition at line 52 of file class.ilPageObject.php.

References $ilias, read(), and setActive().

Referenced by _handleImportRepositoryLinks(), and compareVersion().

{
global $ilias;
require_once("./Services/COPage/syntax_highlight/php/Beautifier/Init.php");
require_once("./Services/COPage/syntax_highlight/php/Output/Output_css.php");
$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;
$this->old_nr = $a_old_nr;
$this->layout_mode = false;
$this->encoding = "UTF-8";
$this->id_elements =
array("PageContent", "TableRow", "TableData", "ListItem", "FileItem",
"Section", "Tab");
$this->setActive(true);
if($a_id != 0)
{
$this->read();
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::increaseViewCnt ( )

increase view cnt

Definition at line 4147 of file class.ilPageObject.php.

References $ilDB.

{
global $ilDB;
$ilDB->manipulate("UPDATE page_object ".
" SET view_cnt = view_cnt + 1 ".
" WHERE page_id = ".$ilDB->quote($this->getId(), "integer").
" AND parent_type = ".$ilDB->quote($this->getParentType(), "text"));
//$ilDB->query($q);
}
ilPageObject::insertContent ( $a_cont_obj,
  $a_pos,
  $a_mode = IL_INSERT_AFTER,
  $a_pcid = "" 
)

insert a content node before/after a sibling or as first child of a parent

Definition at line 3217 of file class.ilPageObject.php.

References $pos, getContentNode(), getLayoutMode(), getNode(), IL_INSERT_AFTER, IL_INSERT_BEFORE, and IL_INSERT_CHILD.

Referenced by moveContentAfter(), and moveContentBefore().

{
// move mode into container elements is always INSERT_CHILD
$curr_node = $this->getContentNode($a_pos, $a_pcid);
$curr_name = $curr_node->node_name();
if (($curr_name == "TableData") || ($curr_name == "PageObject") ||
($curr_name == "ListItem") || ($curr_name == "Section")
|| ($curr_name == "Tab"))
{
$a_mode = IL_INSERT_CHILD;
}
$hid = $curr_node->get_attribute("HierId");
if ($hid != "")
{
//echo "-".$a_pos."-".$hid."-";
$a_pos = $hid;
}
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
$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;
//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)
//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;
}
//check for PlaceHolder to remove in EditMode-keep in Layout Mode
if (!$this->getLayoutMode()) {
$sub_nodes = $curr_node->child_nodes() ;
foreach ( $sub_nodes as $sub_node ) {
if ($sub_node->node_name() == "PlaceHolder") {
$curr_node->unlink_node();
}
}
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::insertContentNode ( $a_cont_node,
  $a_pos,
  $a_mode = IL_INSERT_AFTER,
  $a_pcid = "" 
)

insert a content node before/after a sibling or as first child of a parent

Definition at line 3320 of file class.ilPageObject.php.

References $pos, getContentNode(), getNode(), IL_INSERT_AFTER, IL_INSERT_BEFORE, and IL_INSERT_CHILD.

Referenced by pasteContents().

{
// move mode into container elements is always INSERT_CHILD
$curr_node = $this->getContentNode($a_pos, $a_pcid);
$curr_name = $curr_node->node_name();
if (($curr_name == "TableData") || ($curr_name == "PageObject") ||
($curr_name == "ListItem") || ($curr_name == "Section")
|| ($curr_name == "Tab"))
{
$a_mode = IL_INSERT_CHILD;
}
$hid = $curr_node->get_attribute("HierId");
if ($hid != "")
{
$a_pos = $hid;
}
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);
switch ($a_mode)
{
// insert new node after sibling at $a_pos
//$new_node =& $a_cont_obj->getNode();
if($succ_node = $curr_node->next_sibling())
{
$a_cont_node = $succ_node->insert_before($a_cont_node, $succ_node);
}
else
{
$a_cont_node = $parent_node->append_child($a_cont_node);
}
//$a_cont_obj->setNode($new_node);
break;
//$new_node =& $a_cont_obj->getNode();
$succ_node = $this->getContentNode($a_pos);
$a_cont_node = $succ_node->insert_before($a_cont_node, $succ_node);
//$a_cont_obj->setNode($new_node);
break;
// insert new node as first child of parent $a_pos (= $a_parent)
//$new_node =& $a_cont_obj->getNode();
if($cnt_parent_childs == 0)
{
$a_cont_node = $parent_node->append_child($a_cont_node);
}
else
{
$a_cont_node = $parent_childs[0]->insert_before($a_cont_node, $parent_childs[0]);
}
//$a_cont_obj->setNode($new_node);
break;
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::insertInstIntoIDs (   $a_inst,
  $a_res_ref_to_obj_id = true 
)

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 3470 of file class.ilPageObject.php.

References $id, $path, $res, $type, ilObject\_lookupObjId(), ilObject\_lookupType(), xpath_eval(), and xpath_new_context().

Referenced by ilSCORM2004Page\exportXMLPageContent().

{
// 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__")
{
$id = substr($target, 4, strlen($target) - 4);
// convert repository links obj_<ref_id> to <type>_<obj_id>
if ($a_res_ref_to_obj_id && $type == "RepositoryItem")
{
$id_arr = explode("_", $id);
$obj_id = ilObject::_lookupObjId($id_arr[1]);
$otype = ilObject::_lookupType($obj_id);
if ($obj_id > 0)
{
$id = $otype."_".$obj_id;
}
}
$new_target = "il_".$a_inst."_".$id;
$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 question references
$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);
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::insertPCIds ( )

Insert Page Content IDs.

Definition at line 3719 of file class.ilPageObject.php.

References $dom, $id, $node, $path, $res, xpath_eval(), and xpath_new_context().

Referenced by update().

{
$this->builddom();
$mydom = $this->dom;
$pcids = array();
$sep = $path = "";
foreach ($this->id_elements as $el)
{
$path.= $sep."//".$el."[@PCID]";
$sep = " | ";
}
// get existing ids
$xpc = xpath_new_context($mydom);
$res = & xpath_eval($xpc, $path);
for ($i = 0; $i < count ($res->nodeset); $i++)
{
$node = $res->nodeset[$i];
$pcids[] = $node->get_attribute("PCID");
}
// add missing ones
$sep = $path = "";
foreach ($this->id_elements as $el)
{
$path.= $sep."//".$el."[not(@PCID)]";
$sep = " | ";
}
$xpc = xpath_new_context($mydom);
$res = & xpath_eval($xpc, $path);
for ($i = 0; $i < count ($res->nodeset); $i++)
{
$node = $res->nodeset[$i];
$id = ilUtil::randomHash(10, $pcids);
$pcids[] = $id;
//echo "setting-".$id."-";
$res->nodeset[$i]->set_attribute("PCID", $id);
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::insertSourceCodeParagraphs (   $a_output,
  $outputmode = "presentation" 
)

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 3586 of file class.ilPageObject.php.

References $path, $res, 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];
$char = $context_node->get_attribute('Characteristic');
if ($char != "Code")
continue;
$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]);
}
while ($context_node->has_child_nodes ())
{
$node_del = $context_node->first_child ();
$context_node->remove_child ($node_del);
}
$content = str_replace("<br />", "<br/>", utf8_decode($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 = utf8_encode($this->highlightText($plain_content, $subchar, $autoindent));
$content = str_replace("&amp;lt;", "&lt;", $content);
$content = str_replace("&amp;gt;", "&gt;", $content);
// $content = str_replace("&", "&amp;", $content);
//var_dump($content);
$rows = "<tr valign=\"top\">";
$rownumbers = "";
$linenumbers= "";
//if we have to show line numbers
if (strcmp($showlinenumbers,"y")==0)
{
$linenumbers = "<td nowrap=\"nowrap\" class=\"ilc_LineNumbers\" >";
$linenumbers .= "<pre class=\"ilc_Code\">";
for ($j=0; $j < $rownums; $j++)
{
$indentno = strlen($rownums) - strlen($j+1) + 2;
$rownumeration = ($j+1);
$linenumbers .= "<span class=\"ilc_LineNumber\">$rownumeration</span>";
if ($j < $rownums-1)
{
$linenumbers .= "\n";
}
}
$linenumbers .= "</pre>";
$linenumbers .= "</td>";
}
$rows .= $linenumbers."<td class=\"ilc_Sourcecode\"><pre class=\"ilc_Code\">".$content."</pre></td>";
$rows .= "</tr>";
// fix for ie explorer which is not able to produce empty line feeds with <br /><br />;
// workaround: add a space after each br.
$newcontent = str_replace("\n", "<br/>",$rows);
// fix for IE
$newcontent = str_replace("<br/><br/>", "<br/> <br/>",$newcontent);
// falls drei hintereinander...
$newcontent = str_replace("<br/><br/>", "<br/> <br/>",$newcontent);
// workaround for preventing template engine
// from hiding paragraph text that is enclosed
// in curly brackets (e.g. "{a}", see ilLMEditorGUI::executeCommand())
$newcontent = str_replace("{", "&#123;", $newcontent);
$newcontent = str_replace("}", "&#125;", $newcontent);
//echo htmlentities($newcontent);
$a_output = str_replace("[[[[[Code;".($i + 1)."]]]]]", $newcontent, $a_output);
if ($outputmode != "presentation" && is_object($this->offline_handler)
&& trim($downloadtitle) != "")
{
// call code handler for offline versions
$this->offline_handler->handleCodeParagraph ($this->id, $i + 1, $downloadtitle, $plain_content);
}
}
return $a_output;
}

+ Here is the call graph for this function:

ilPageObject::lookforhier (   $a_hier_id)

Definition at line 782 of file class.ilPageObject.php.

References $path, $res, 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";
}

+ Here is the call graph for this function:

static ilPageObject::lookupParentId (   $a_id,
  $a_type 
)
static

Lookup parent id.

Definition at line 501 of file class.ilPageObject.php.

References $ilDB, and $res.

{
global $ilDB;
$res = $ilDB->query("SELECT parent_id FROM page_object WHERE page_id = ".$ilDB->quote($a_id, "integer")." ".
"AND parent_type=".$ilDB->quote($a_type, "text"));
$rec = $ilDB->fetchAssoc($res);
return $rec["parent_id"];
}
ilPageObject::moveContentAfter (   $a_source,
  $a_target,
  $a_spcid = "",
  $a_tpcid = "" 
)

move content object from position $a_source before position $a_target (both hierarchical content ids)

Definition at line 3432 of file class.ilPageObject.php.

References deleteContent(), getContentObject(), IL_INSERT_AFTER, insertContent(), and update().

{
if($a_source == $a_target)
{
return;
}
// clone the node
$content =& $this->getContentObject($a_source, $a_spcid);
$source_node =& $content->getNode();
$clone_node =& $source_node->clone_node(true);
// delete source node
$this->deleteContent($a_source, false, $a_spcid);
// insert cloned node at target
$content->setNode($clone_node);
$this->insertContent($content, $a_target, IL_INSERT_AFTER, $a_tpcid);
return $this->update();
}

+ Here is the call graph for this function:

ilPageObject::moveContentBefore (   $a_source,
  $a_target,
  $a_spcid = "",
  $a_tpcid = "" 
)

move content object from position $a_source before position $a_target (both hierarchical content ids)

Definition at line 3406 of file class.ilPageObject.php.

References deleteContent(), getContentObject(), IL_INSERT_BEFORE, insertContent(), and update().

{
if($a_source == $a_target)
{
return;
}
// clone the node
$content =& $this->getContentObject($a_source, $a_spcid);
$source_node =& $content->getNode();
$clone_node =& $source_node->clone_node(true);
// delete source node
$this->deleteContent($a_source, false, $a_spcid);
// insert cloned node at target
$content->setNode($clone_node);
$this->insertContent($content, $a_target, IL_INSERT_BEFORE, $a_tpcid);
return $this->update();
}

+ Here is the call graph for this function:

ilPageObject::moveIntLinks (   $a_from_to)

Move internal links from one destination to another.

This is used for pages and structure links. Just use IDs in "from" and "to".

Parameters
arraykeys are the old targets, values are the new targets

Definition at line 1718 of file class.ilPageObject.php.

References $changed, $id, $path, $res, $t, $type, ilInternalLink\_extractObjIdOfTarget(), ilLMObject\_lookupType(), addHierIDs(), buildDom(), xpath_eval(), and xpath_new_context().

{
$this->buildDom();
$changed = false;
// 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");
if ($a_from_to[$obj_id] > 0 && is_int(strpos($target, "__")))
{
if ($type == "PageObject" && ilLMObject::_lookupType($a_from_to[$obj_id]) == "pg")
{
$res->nodeset[$i]->set_attribute("Target", "il__pg_".$a_from_to[$obj_id]);
$changed = true;
}
if ($type == "StructureObject" && ilLMObject::_lookupType($a_from_to[$obj_id]) == "st")
{
$res->nodeset[$i]->set_attribute("Target", "il__st_".$a_from_to[$obj_id]);
$changed = true;
}
}
}
unset($xpc);
// map areas
$this->addHierIDs();
$xpc = xpath_new_context($this->dom);
$path = "//MediaAlias";
$res =& xpath_eval($xpc, $path);
require_once("Services/MediaObjects/classes/class.ilMediaItem.php");
require_once("Services/COPage/classes/class.ilMediaAliasItem.php");
for($i = 0; $i < count($res->nodeset); $i++)
{
$media_object_node = $res->nodeset[$i]->parent_node();
$page_content_node = $media_object_node->parent_node();
$c_hier_id = $page_content_node->get_attribute("HierId");
// first check, wheter we got instance map areas -> take these
$std_alias_item = new ilMediaAliasItem($this->dom,
$c_hier_id, "Standard");
$areas = $std_alias_item->getMapAreas();
$correction_needed = false;
if (count($areas) > 0)
{
// check if correction needed
foreach($areas as $area)
{
if ($area["Type"] == "PageObject" ||
$area["Type"] == "StructureObject")
{
$t = $area["Target"];
$tid = _extractObjIdOfTarget($t);
if ($a_from_to[$tid] > 0)
{
$correction_needed = true;
}
}
}
}
else
{
$areas = array();
// get object map areas and check whether at least one must
// be corrected
$oid = $res->nodeset[$i]->get_attribute("OriginId");
if (substr($oid, 0, 4) =="il__")
{
$id_arr = explode("_", $oid);
$id = $id_arr[count($id_arr) - 1];
$mob = new ilObjMediaObject($id);
$med_item = $mob->getMediaItem("Standard");
$med_areas = $med_item->getMapAreas();
foreach($med_areas as $area)
{
$link_type = ($area->getLinkType() == "int")
? "IntLink"
: "ExtLink";
$areas[] = array(
"Nr" => $area->getNr(),
"Shape" => $area->getShape(),
"Coords" => $area->getCoords(),
"Link" => array(
"LinkType" => $link_type,
"Href" => $area->getHref(),
"Title" => $area->getTitle(),
"Target" => $area->getTarget(),
"Type" => $area->getType(),
"TargetFrame" => $area->getTargetFrame()
)
);
if ($area->getType() == "PageObject" ||
$area->getType() == "StructureObject")
{
$t = $area->getTarget();
if ($a_from_to[$tid] > 0)
{
$correction_needed = true;
}
//var_dump($a_from_to);
}
}
}
}
// correct map area links
if ($correction_needed)
{
$changed = true;
$std_alias_item->deleteAllMapAreas();
foreach($areas as $area)
{
if ($area["Link"]["LinkType"] == "IntLink")
{
$target = $area["Link"]["Target"];
$type = $area["Link"]["Type"];
if ($a_from_to[$obj_id] > 0)
{
if ($type == "PageObject" && ilLMObject::_lookupType($a_from_to[$obj_id]) == "pg")
{
$area["Link"]["Target"] = "il__pg_".$a_from_to[$obj_id];
}
if ($type == "StructureObject" && ilLMObject::_lookupType($a_from_to[$obj_id]) == "st")
{
$area["Link"]["Target"] = "il__st_".$a_from_to[$obj_id];
}
}
}
$std_alias_item->addMapArea($area["Shape"], $area["Coords"],
$area["Link"]["Title"],
array( "Type" => $area["Link"]["Type"],
"TargetFrame" => $area["Link"]["TargetFrame"],
"Target" => $area["Link"]["Target"],
"Href" => $area["Link"]["Href"],
"LinkType" => $area["Link"]["LinkType"],
));
}
}
}
unset($xpc);
return $changed;
}

+ Here is the call graph for this function:

ilPageObject::needsImportParsing (   $a_parse = "")

Definition at line 1073 of file class.ilPageObject.php.

References $needs_parsing.

{
if ($a_parse === true)
{
$this->needs_parsing = true;
}
if ($a_parse === false)
{
$this->needs_parsing = false;
}
}
ilPageObject::newQuestionCopies ( $temp_dom)

Replaces existing question content elements with new copies.

Definition at line 877 of file class.ilPageObject.php.

References $path, $res, ilInternalLink\_extractInstOfTarget(), ilInternalLink\_extractObjIdOfTarget(), assQuestion\_instanciateQuestion(), xpath_eval(), and xpath_new_context().

Referenced by copyXmlContent(), and pasteContents().

{
// Get question IDs
$path = "//Question";
$xpc = xpath_new_context($temp_dom);
$res = & xpath_eval($xpc, $path);
$q_ids = array();
include_once("./Services/COPage/classes/class.ilInternalLink.php");
for ($i = 0; $i < count ($res->nodeset); $i++)
{
$qref = $res->nodeset[$i]->get_attribute("QRef");
if (!($inst_id > 0))
{
if ($q_id > 0)
{
include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php";
// now copy this question and change reference to
// new question id
$duplicate_id = $question->duplicate(false);
$res->nodeset[$i]->set_attribute("QRef", "il__qst_".$duplicate_id);
}
}
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::pasteContents (   $a_hier_id)

Paste contents from pc clipboard.

Definition at line 3016 of file class.ilPageObject.php.

References $error, $path, $res, DOMXML_LOAD_PARSING, domxml_open_mem(), IL_INSERT_AFTER, insertContentNode(), newQuestionCopies(), update(), xpath_eval(), and xpath_new_context().

{
global $ilUser;
$a_hid = explode(":", $a_hier_id);
$content = $ilUser->getPCClipboardContent();
// we insert from last to first, because we insert all at the
// same hier_id
for ($i = count($content) - 1; $i >= 0; $i--)
{
$c = $content[$i];
$temp_dom = domxml_open_mem('<?xml version="1.0" encoding="UTF-8"?>'.$c,
if(empty($error))
{
$this->newQuestionCopies($temp_dom);
$xpc = xpath_new_context($temp_dom);
$path = "//PageContent";
$res = xpath_eval($xpc, $path);
if (count($res->nodeset) > 0)
{
$new_pc_node = $res->nodeset[0];
$cloned_pc_node = $new_pc_node->clone_node (true);
$cloned_pc_node->unlink_node ($cloned_pc_node);
$this->insertContentNode ($cloned_pc_node, $a_hid[0],
IL_INSERT_AFTER, $a_hid[1]);
}
}
else
{
//var_dump($error);
}
}
$e = $this->update();
//var_dump($e);
}

+ Here is the call graph for this function:

ilPageObject::performAutomaticModifications ( )

Perform automatic modifications (may be overwritten by sub classes)

Reimplemented in ilSCORM2004Page.

Definition at line 4423 of file class.ilPageObject.php.

Referenced by update().

{
}

+ Here is the caller graph for this function:

ilPageObject::read ( )

read page data

Reimplemented in ilExtPublicProfilePage, ilSCORM2004Page, and ilMediaPoolPage.

Definition at line 194 of file class.ilPageObject.php.

References $ilBench, $ilDB, $query, exit, getParentType(), setActivationEnd(), setActivationStart(), setActive(), setLastChange(), setParentId(), setRenderedContent(), setRenderedTime(), and setRenderMd5().

Referenced by ilPageObject().

{
global $ilBench, $ilDB;
$ilBench->start("ContentPresentation", "ilPageObject_read");
$this->setActive(true);
if ($this->old_nr == 0)
{
$query = "SELECT * FROM page_object WHERE page_id = ".$ilDB->quote($this->id, "integer")." ".
"AND parent_type=".$ilDB->quote($this->getParentType(), "text");
$pg_set = $this->ilias->db->query($query);
$this->page_record = $ilDB->fetchAssoc($pg_set);
$this->setActive($this->page_record["active"]);
$this->setActivationStart($this->page_record["activation_start"]);
$this->setActivationEnd($this->page_record["activation_end"]);
}
else
{
$query = "SELECT * FROM page_history WHERE ".
"page_id = ".$ilDB->quote($this->id, "integer")." ".
"AND parent_type=".$ilDB->quote($this->getParentType(), "text").
" AND nr = ".$ilDB->quote((int) $this->old_nr, "integer");
$pg_set = $ilDB->query($query);
$this->page_record = $ilDB->fetchAssoc($pg_set);
}
if (!$this->page_record)
{
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"]);
$this->last_change_user = $this->page_record["last_change_user"];
$this->create_user = $this->page_record["create_user"];
$this->setRenderedContent($this->page_record["rendered_content"]);
$this->setRenderMd5($this->page_record["render_md5"]);
$this->setRenderedTime($this->page_record["rendered_time"]);
$this->setLastChange($this->page_record["last_change"]);
$ilBench->stop("ContentPresentation", "ilPageObject_read");
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::registerOfflineHandler (   $handler)

Definition at line 3913 of file class.ilPageObject.php.

{
$this->offline_handler = $handler;
}
ilPageObject::resolveFileItems (   $a_mapping)

Resolve file items (after import)

Parameters
arraymapping array

Definition at line 1666 of file class.ilPageObject.php.

References $changed, $path, $res, xpath_eval(), and xpath_new_context().

{
// resolve normal internal links
$xpc = xpath_new_context($this->dom);
$path = "//FileItem/Identifier";
$res =& xpath_eval($xpc, $path);
$changed = false;
for($i = 0; $i < count($res->nodeset); $i++)
{
$old_id = $res->nodeset[$i]->get_attribute("Entry");
$old_id = explode("_", $old_id);
$old_id = $old_id[count($old_id) - 1];
if ($a_mapping[$old_id] > 0)
{
$res->nodeset[$i]->set_attribute("Entry", "il__file_".$a_mapping[$old_id]);
$changed = true;
}
}
unset($xpc);
return $changed;
}

+ Here is the call graph for this function:

ilPageObject::resolveIntLinks ( )

Resolves all internal link targets of the page, if targets are available (after import)

Definition at line 1584 of file class.ilPageObject.php.

References $path, $res, $type, 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 && $type != "RepositoryItem")
{
$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];
}
}

+ Here is the call graph for this function:

ilPageObject::resolveMediaAliases (   $a_mapping)

Resolve media aliases (after import)

Parameters
arraymapping array

Definition at line 1637 of file class.ilPageObject.php.

References $changed, $path, $res, xpath_eval(), and xpath_new_context().

{
// resolve normal internal links
$xpc = xpath_new_context($this->dom);
$path = "//MediaAlias";
$res =& xpath_eval($xpc, $path);
$changed = false;
for($i = 0; $i < count($res->nodeset); $i++)
{
$old_id = $res->nodeset[$i]->get_attribute("OriginId");
$old_id = explode("_", $old_id);
$old_id = $old_id[count($old_id) - 1];
if ($a_mapping[$old_id] > 0)
{
$res->nodeset[$i]->set_attribute("OriginId", "il__mob_".$a_mapping[$old_id]);
$changed = true;
}
}
unset($xpc);
return $changed;
}

+ Here is the call graph for this function:

ilPageObject::resolveQuestionReferences (   $a_mapping)

Resolve all quesion references (after import)

Definition at line 1693 of file class.ilPageObject.php.

References $path, $res, xpath_eval(), and xpath_new_context().

{
// resolve normal internal links
$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");
if (isset($a_mapping[$qref]))
{
$res->nodeset[$i]->set_attribute("QRef", "il__qst_".$a_mapping[$qref]["pool"]);
}
}
unset($xpc);
}

+ Here is the call graph for this function:

ilPageObject::saveAnchors (   $a_xml)

save anchors

Parameters
stringxml page code

Definition at line 2805 of file class.ilPageObject.php.

References $name, $path, $res, _deleteAnchors(), _saveAnchor(), domxml_open_mem(), getId(), getParentType(), xpath_eval(), and xpath_new_context().

Referenced by delete(), and update().

{
$doc = domxml_open_mem($a_xml);
// get all anchors
$xpc = xpath_new_context($doc);
$path = "//Anchor";
$res =& xpath_eval($xpc, $path);
$saved = array();
for ($i=0; $i < count($res->nodeset); $i++)
{
$name = $res->nodeset[$i]->get_attribute("Name");
if (trim($name) != "" && !in_array($name, $saved))
{
$saved[] = $name;
}
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::saveContentIncludeUsage (   $a_xml = "",
  $a_old_nr = 0 
)

save content include usages

Definition at line 2486 of file class.ilPageObject.php.

References collectContentIncludes(), ilPageContentUsage\deleteAllUsages(), getId(), getParentType(), and ilPageContentUsage\saveUsage().

Referenced by delete(), and update().

{
include_once("./Services/COPage/classes/class.ilPageContentUsage.php");
$ci_ids = $this->collectContentIncludes($a_xml);
ilPageContentUsage::deleteAllUsages("incl", $this->getParentType().":pg", $this->getId(), $a_old_nr);
foreach($ci_ids as $ci_id)
{
if ((int) $ci_id["inst_id"] <= 0)
{
ilPageContentUsage::saveUsage("incl", $ci_id["id"], $this->getParentType().":pg", $this->getId(), $a_old_nr);
}
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::saveFileUsage (   $a_xml = "",
  $a_old_nr = 0 
)

save file usages

Definition at line 2472 of file class.ilPageObject.php.

References ilObjFile\_deleteAllUsages(), ilObjFile\_saveUsage(), collectFileItems(), getId(), and getParentType().

Referenced by update().

{
$file_ids = $this->collectFileItems($a_xml, $a_old_nr);
include_once("./Modules/File/classes/class.ilObjFile.php");
ilObjFile::_deleteAllUsages($this->getParentType().":pg", $this->getId(), $a_old_nr);
foreach($file_ids as $file_id)
{
ilObjFile::_saveUsage($file_id, $this->getParentType().":pg", $this->getId(), $a_old_nr);
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::saveInternalLinks (   $a_xml)

save internal links of page

Parameters
stringxml page code

Definition at line 2677 of file class.ilPageObject.php.

References $ilDB, $path, $res, $target_arr, ilInternalLink\_deleteAllLinksOfSource(), ilInternalLink\_extractInstOfTarget(), ilInternalLink\_extractObjIdOfTarget(), ilInternalLink\_saveLink(), domxml_open_mem(), getId(), getParentType(), xpath_eval(), and xpath_new_context().

Referenced by ilMediaPoolPage\create(), ilExtPublicProfilePage\create(), delete(), update(), and updateFromXML().

{
global $ilDB;
//echo "<br>PageObject::saveInternalLinks[".$this->getId()."]";
$doc = domxml_open_mem($a_xml);
include_once("./Services/COPage/classes/class.ilInternalLink.php");
// 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;
case "File":
$t_type = "file";
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);
}
}
// *** STEP 2: Save question references of page ***
// delete all reference records
$ilDB->manipulateF("DELETE FROM page_question WHERE page_parent_type = %s ".
" AND page_id = %s", array("text", "integer"),
array($this->getParentType(), $this->getId()));
// save question references of page
$doc = domxml_open_mem($a_xml);
$xpc = xpath_new_context($doc);
$path = "//Question";
$res = xpath_eval($xpc, $path);
$q_ids = array();
for ($i=0; $i < count($res->nodeset); $i++)
{
$q_ref = $res->nodeset[$i]->get_attribute("QRef");
if (!($inst_id > 0))
{
if ($q_id > 0)
{
$q_ids[$q_id] = $q_id;
}
}
}
foreach($q_ids as $qid)
{
$ilDB->manipulateF("INSERT INTO page_question (page_parent_type, page_id, question_id)".
" VALUES (%s,%s,%s)",
array("text", "integer", "integer"),
array($this->getParentType(), $this->getId(), $qid));
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::saveMetaKeywords (   $a_xml)

save all keywords

Parameters
string$a_xmlxml data of page

Definition at line 2330 of file class.ilPageObject.php.

References $id, $lang, $path, $res, domxml_open_mem(), getId(), getParentId(), getParentType(), ilUtil\stripSlashes(), xpath_eval(), and xpath_new_context().

Referenced by update().

{
// not nice, should be set by context per method
if ($this->getParentType() == "gdf" ||
$this->getParentType() == "lm" ||
$this->getParentType() == "dbk")
{
$doc = domxml_open_mem($a_xml);
// get existing keywords
$keywords = array();
// find all Keyw tags
$xpc = xpath_new_context($doc);
$path = "//Keyw";
$res = xpath_eval($xpc, $path);
for ($i=0; $i < count($res->nodeset); $i++)
{
$k = trim(strip_tags($res->nodeset[$i]->get_content()));
if (!in_array($k, $keywords))
{
$keywords[] = $k;
}
}
$meta_type = ($this->getParentType() == "gdf")
? "gdf"
: "pg";
$meta_rep_id = $this->getParentId();
$meta_id = $this->getId();
include_once("./Services/MetaData/classes/class.ilMD.php");
$md_obj = new ilMD($meta_rep_id, $meta_id, $meta_type);
$mkeywords = array();
$lang = "";
if(is_object($md_section = $md_obj->getGeneral()))
{
foreach($ids = $md_section->getKeywordIds() as $id)
{
$md_key = $md_section->getKeyword($id);
$mkeywords[] = strtolower($md_key->getKeyword());
if ($lang == "")
{
$lang = $md_key->getKeywordLanguageCode();
}
}
}
if ($lang == "")
{
foreach($ids = $md_section->getLanguageIds() as $id)
{
$md_lang = $md_section->getLanguage($id);
if ($lang == "")
{
$lang = $md_lang->getLanguageCode();
}
}
}
foreach ($keywords as $k)
{
if (!in_array(strtolower($k), $mkeywords))
{
if (trim($k) != "" && $lang != "")
{
$md_key = $md_section->addKeyword();
$md_key->setKeyword(ilUtil::stripSlashes($k));
$md_key->setKeywordLanguage(new ilMDLanguageItem($lang));
$md_key->save();
}
$mkeywords[] = strtolower($k);
}
}
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::saveMobUsage (   $a_xml,
  $a_old_nr = 0 
)

save all usages of media objects (media aliases, media objects, internal links)

Parameters
string$a_xmlxml data of page

Definition at line 2410 of file class.ilPageObject.php.

References $path, $res, ilObjMediaObject\_deleteAllUsages(), ilObjMediaObject\_saveUsage(), domxml_open_mem(), getId(), getParentType(), xpath_eval(), and xpath_new_context().

Referenced by delete(), and update().

{
$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("./Services/MediaObjects/classes/class.ilObjMediaObject.php");
ilObjMediaObject::_deleteAllUsages($this->getParentType().":pg", $this->getId(), $a_old_nr);
foreach($usages as $mob_id => $val)
{
ilObjMediaObject::_saveUsage($mob_id, $this->getParentType().":pg", $this->getId(), $a_old_nr);
}
return $usages;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::saveStyleUsage (   $a_xml,
  $a_old_nr = 0 
)

Save all style class/template usages.

Parameters
string$a_xmlxml data of page

Definition at line 2539 of file class.ilPageObject.php.

References $ilDB, $path, $res, domxml_open_mem(), xpath_eval(), and xpath_new_context().

Referenced by delete(), update(), and updateFromXML().

{
global $ilDB;
$doc = domxml_open_mem($a_xml);
// media aliases
$xpc = xpath_new_context($doc);
$path = "//Paragraph | //Section | //MediaAlias | //FileItem".
" | //Table | //TableData | //Tabs | //List";
$res = xpath_eval($xpc, $path);
$usages = array();
for ($i=0; $i < count($res->nodeset); $i++)
{
switch ($res->nodeset[$i]->node_name())
{
case "Paragraph":
$sname = $res->nodeset[$i]->get_attribute("Characteristic");
$stype = "text_block";
$template = 0;
break;
case "Section":
$sname = $res->nodeset[$i]->get_attribute("Characteristic");
$stype = "section";
$template = 0;
break;
case "MediaAlias":
$sname = $res->nodeset[$i]->get_attribute("Class");
$stype = "media_cont";
$template = 0;
break;
case "FileItem":
$sname = $res->nodeset[$i]->get_attribute("Class");
$stype = "flist_li";
$template = 0;
break;
case "Table":
$sname = $res->nodeset[$i]->get_attribute("Template");
if ($sname == "")
{
$sname = $res->nodeset[$i]->get_attribute("Class");
$stype = "table";
$template = 0;
}
else
{
$stype = "table";
$template = 1;
}
break;
case "TableData":
$sname = $res->nodeset[$i]->get_attribute("Class");
$stype = "table_cell";
$template = 0;
break;
case "Tabs":
$sname = $res->nodeset[$i]->get_attribute("Template");
if ($sname != "")
{
if ($res->nodeset[$i]->get_attribute("Type") == "HorizontalAccordion")
{
$stype = "haccordion";
}
if ($res->nodeset[$i]->get_attribute("Type") == "VerticalAccordion")
{
$stype = "vaccordion";
}
}
$template = 1;
break;
case "List":
$sname = $res->nodeset[$i]->get_attribute("Class");
if ($res->nodeset[$i]->get_attribute("Type") == "Ordered")
{
$stype = "list_o";
}
else
{
$stype = "list_u";
}
$template = 0;
break;
}
if ($sname != "" && $stype != "")
{
$usages[$sname.":".$stype.":".$template] = array("sname" => $sname,
"stype" => $stype, "template" => $template);
}
}
$ilDB->manipulate("DELETE FROM page_style_usage WHERE ".
" page_id = ".$ilDB->quote($this->getId(), "integer").
" AND page_type = ".$ilDB->quote($this->getParentType(), "text").
" AND page_nr = ".$ilDB->quote($a_old_nr, "integer")
);
foreach ($usages as $u)
{
$ilDB->manipulate("INSERT INTO page_style_usage ".
"(page_id, page_type, page_nr, template, stype, sname) VALUES (".
$ilDB->quote($this->getId(), "integer").",".
$ilDB->quote($this->getParentType(), "text").",".
$ilDB->quote($a_old_nr, "integer").",".
$ilDB->quote($u["template"], "integer").",".
$ilDB->quote($u["stype"], "text").",".
$ilDB->quote($u["sname"], "text").
")");
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::send_paragraph (   $par_id,
  $filename 
)

Definition at line 3843 of file class.ilPageObject.php.

References $dom, $filename, $path, $res, ilUtil\deliverData(), exit, xpath_eval(), and xpath_new_context().

Referenced by ilLMPresentationGUI\download_paragraph().

{
$this->builddom();
$mydom = $this->dom;
$xpc = xpath_new_context($mydom);
//$path = "//PageContent[position () = $par_id]/Paragraph";
//$path = "//Paragraph[$par_id]";
$path = "/descendant::Paragraph[position() = $par_id]";
$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();
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::setActivationEnd (   $a_activationend)

Set Activation End.

Parameters
date$a_activationendActivation End

Definition at line 548 of file class.ilPageObject.php.

Referenced by read().

{
$this->activationend = $a_activationend;
}

+ Here is the caller graph for this function:

ilPageObject::setActivationStart (   $a_activationstart)

Set Activation Start.

Parameters
date$a_activationstartActivation Start

Definition at line 528 of file class.ilPageObject.php.

Referenced by read().

{
$this->activationstart = $a_activationstart;
}

+ Here is the caller graph for this function:

ilPageObject::setActive (   $a_active)

set activation

Parameters
boolean$a_activetrue/false for active or not

Definition at line 404 of file class.ilPageObject.php.

Referenced by ilPageObject(), and read().

{
$this->active = $a_active;
}

+ Here is the caller graph for this function:

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 !?

Parameters
boolean$a_contains_linktrue, if page contains intern link tag(s)

Definition at line 1059 of file class.ilPageObject.php.

{
$this->contains_int_link = $a_contains_link;
}
ilPageObject::setContainsQuestion (   $a_val)

Set contains question.

Parameters
boolean$a_valcontains question

Definition at line 1092 of file class.ilPageObject.php.

{
$this->contains_question = $a_val;
}
ilPageObject::setId (   $a_id)

set id

Definition at line 349 of file class.ilPageObject.php.

Referenced by ilLMPageObject\create(), ilSCORM2004PageNode\create(), and ilExtPublicProfilePage\create().

{
$this->id = $a_id;
}

+ Here is the caller graph for this function:

ilPageObject::setLastChange (   $a_lastchange)

Set Last Change.

Parameters
string$a_lastchangeLast Change

Definition at line 155 of file class.ilPageObject.php.

Referenced by read().

{
$this->lastchange = $a_lastchange;
}

+ Here is the caller graph for this function:

ilPageObject::setLayoutMode (   $a_layout_mode)

Set Layout Mode.

Parameters
boolean$a_layout_modeSetLayoutMode for editor

Definition at line 175 of file class.ilPageObject.php.

{
$this->layout_mode = $a_layout_mode;
}
ilPageObject::setParagraphContent (   $a_hier_id,
  $a_content 
)

Set content of paragraph.

Parameters
string$a_hier_idHier ID
string$a_contentContent

Definition at line 1041 of file class.ilPageObject.php.

References $node, and getContentNode().

{
$node = $this->getContentNode($a_hier_id);
if (is_object($node))
{
$node->set_content($a_content);
}
}

+ Here is the call graph for this function:

ilPageObject::setParentId (   $a_id)

Definition at line 359 of file class.ilPageObject.php.

Referenced by ilContainerGUI\forwardToPageObject(), read(), and ilExtPublicProfilePage\setUserId().

{
$this->parent_id = $a_id;
}

+ Here is the caller graph for this function:

ilPageObject::setParentType (   $a_type)

Definition at line 369 of file class.ilPageObject.php.

{
$this->parent_type = $a_type;
}
ilPageObject::setRenderedContent (   $a_renderedcontent)

Set Rendered Content.

Parameters
string$a_renderedcontentRendered Content

Definition at line 115 of file class.ilPageObject.php.

Referenced by read().

{
$this->renderedcontent = $a_renderedcontent;
}

+ Here is the caller graph for this function:

ilPageObject::setRenderedTime (   $a_renderedtime)

Set Rendered Time.

Parameters
string$a_renderedtimeRendered Time

Definition at line 135 of file class.ilPageObject.php.

Referenced by read().

{
$this->renderedtime = $a_renderedtime;
}

+ Here is the caller graph for this function:

ilPageObject::setRenderMd5 (   $a_rendermd5)

Set Render MD5.

Parameters
string$a_rendermd5Render MD5

Definition at line 95 of file class.ilPageObject.php.

Referenced by read().

{
$this->rendermd5 = $a_rendermd5;
}

+ Here is the caller graph for this function:

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!

Parameters
string$a_xmlxml content
string$a_encodingencoding of the content (here is no conversion done! it must be already utf-8 encoded at the time)

Definition at line 808 of file class.ilPageObject.php.

Referenced by createFromXML(), and ilSCORM2004Page\createWithLayoutId().

{
$this->encoding = $a_encoding;
$this->xml = $a_xml;
}

+ Here is the caller graph for this function:

ilPageObject::stripHierIDs ( )

strip all hierarchical id attributes out of the dom tree

Definition at line 1526 of file class.ilPageObject.php.

References $path, $res, 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);
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::switchEnableMultiple (   $a_hids,
  $a_update = true 
)

gui function set enabled if is not enabled and vice versa

Definition at line 3059 of file class.ilPageObject.php.

References getContentNode(), getContentObject(), and update().

{
if (!is_array($a_hids))
{
return;
}
$obj = & $this->content_obj;
foreach($a_hids as $a_hid)
{
$a_hid = explode(":", $a_hid);
//echo "-".$a_hid[0]."-".$a_hid[1]."-";
$curr_node =& $this->getContentNode($a_hid[0], $a_hid[1]);
if (is_object($curr_node))
{
if ($curr_node->node_name() == "PageContent")
{
$cont_obj =& $this->getContentObject($a_hid[0], $a_hid[1]);
if ($cont_obj->isEnabled ())
$cont_obj->disable ();
else
$cont_obj->enable ();
}
}
}
if ($a_update)
{
return $this->update();
}
}

+ Here is the call graph for this function:

ilPageObject::update (   $a_validate = true,
  $a_no_history = false,
  $skip_handle_usages = false 
)

update complete page content in db (dom xml content is used)

Definition at line 2047 of file class.ilPageObject.php.

References $errors, $file, $ilCtrl, $ilDB, $ilLog, $layout_mode, $lng, ilObject\_exists(), ilObjFile\_getFilesOfObject(), ilObjMediaObject\_getMobsOfObject(), ilObject\_lookupType(), callUpdateListeners(), checkPCIds(), containsDeactivatedElements(), containsIntLinks(), getActivationEnd(), getActivationStart(), getActive(), getId(), getParentId(), getParentType(), getXMLFromDom(), ILIAS_VERSION_NUMERIC, insertPCIds(), ilUtil\now(), performAutomaticModifications(), saveAnchors(), saveContentIncludeUsage(), saveFileUsage(), saveInternalLinks(), saveMetaKeywords(), saveMobUsage(), saveStyleUsage(), and validateDom().

Referenced by deleteContent(), deleteContentBeforeHierId(), deleteContentFromHierId(), deleteContents(), moveContentAfter(), moveContentBefore(), pasteContents(), and switchEnableMultiple().

{
global $lng, $ilDB, $ilUser, $ilLog, $ilCtrl;
//echo "<br>**".$this->getId()."**";
//echo "<br>PageObject::update[".$this->getId()."],validate($a_validate)";
//echo "\n<br>dump_all2:".$this->dom->dump_mem(0, "UTF-8").":";
//echo "\n<br>PageObject::update:".$this->getXMLFromDom().":";
//echo "<br>PageObject::update:".htmlentities($this->getXMLFromDom());
// add missing pc ids
if (!$this->checkPCIds())
{
$this->insertPCIds();
}
// test validating
if($a_validate)
{
$errors = $this->validateDom();
}
//echo "-".htmlentities($this->getXMLFromDom())."-"; exit;
if(empty($errors))
{
$content = $this->getXMLFromDom();
// this needs to be locked
// write history entry
$old_set = $ilDB->query("SELECT * FROM page_object WHERE ".
"page_id = ".$ilDB->quote($this->getId(), "integer")." AND ".
"parent_type = ".$ilDB->quote($this->getParentType(), "text"));
$last_nr_set = $ilDB->query("SELECT max(nr) as mnr FROM page_history WHERE ".
"page_id = ".$ilDB->quote($this->getId(), "integer")." AND ".
"parent_type = ".$ilDB->quote($this->getParentType(), "text"));
$last_nr = $ilDB->fetchAssoc($last_nr_set);
if ($old_rec = $ilDB->fetchAssoc($old_set))
{
// only save, if something has changed and not in layout mode
if (($content != $old_rec["content"]) && !$a_no_history &&
!$this->history_saved && !$this->layout_mode)
{
if ($old_rec["content"] != "<PageObject></PageObject>")
{
$ilDB->manipulateF("DELETE FROM page_history WHERE ".
"page_id = %s AND parent_type = %s AND hdate = %s",
array("integer", "text", "timestamp"),
array($old_rec["page_id"], $old_rec["parent_type"], $old_rec["last_change"]));
// the following lines are a workaround for
// bug 6741
$last_c = $old_rec["last_change"];
if ($last_c == "")
{
$last_c = ilUtil::now();
}
$ilDB->insert("page_history", array(
"page_id" => array("integer", $old_rec["page_id"]),
"parent_type" => array("text", $old_rec["parent_type"]),
"hdate" => array("timestamp", $last_c),
"parent_id" => array("integer", $old_rec["parent_id"]),
"content" => array("clob", $old_rec["content"]),
"user_id" => array("integer", $old_rec["last_change_user"]),
"ilias_version" => array("text", ILIAS_VERSION_NUMERIC),
"nr" => array("integer", (int) $last_nr["mnr"] + 1)
));
/*$h_query = "REPLACE INTO page_history ".
"(page_id, parent_type, hdate, parent_id, content, user_id, ilias_version, nr) VALUES (".
$ilDB->quote($old_rec["page_id"]).",".
$ilDB->quote($old_rec["parent_type"]).",".
$ilDB->quote($old_rec["last_change"]).",".
$ilDB->quote($old_rec["parent_id"]).",".
$ilDB->quote($old_rec["content"]).",".
$ilDB->quote($old_rec["last_change_user"]).",".
$ilDB->quote(ILIAS_VERSION_NUMERIC).",".
$ilDB->quote($last_nr["mnr"] + 1).")";
//echo "<br><br>+$a_no_history+$h_query";
$ilDB->query($h_query);*/
$this->saveMobUsage($old_rec["content"], $last_nr["mnr"] + 1);
$this->saveStyleUsage($old_rec["content"], $last_nr["mnr"] + 1);
$this->saveFileUsage($old_rec["content"], $last_nr["mnr"] + 1);
$this->saveContentIncludeUsage($old_rec["content"], $last_nr["mnr"] + 1);
$this->history_saved = true; // only save one time
}
else
{
$this->history_saved = true; // do not save on first change
}
}
}
//echo htmlentities($content);
$em = (trim($content) == "<PageObject/>")
? 1
: 0;
$iel = $this->containsDeactivatedElements($content);
$inl = $this->containsIntLinks($content);
/*$query = "UPDATE page_object ".
"SET content = ".$ilDB->quote($content)." ".
", parent_id= ".$ilDB->quote($this->getParentId())." ".
", last_change_user= ".$ilDB->quote($ilUser->getId())." ".
", last_change = now() ".
", is_empty = ".$ilDB->quote($em, "integer")." ".
", active = ".$ilDB->quote($this->getActive())." ".
", activation_start = ".$ilDB->quote($this->getActivationStart())." ".
", activation_end = ".$ilDB->quote($this->getActivationEnd())." ".
", inactive_elements = ".$ilDB->quote($iel, "integer")." ".
", int_links = ".$ilDB->quote($inl, "integer")." ".
" WHERE page_id = ".$ilDB->quote($this->getId()).
" AND parent_type= ".$ilDB->quote($this->getParentType());*/
$ilDB->update("page_object", array(
"content" => array("clob", $content),
"parent_id" => array("integer", $this->getParentId()),
"last_change_user" => array("integer", $ilUser->getId()),
"last_change" => array("timestamp", ilUtil::now()),
"is_empty" => array("integer", $em),
"active" => array("integer", $this->getActive()),
"activation_start" => array("timestamp", $this->getActivationStart()),
"activation_end" => array("timestamp", $this->getActivationEnd()),
"inactive_elements" => array("integer", $iel),
"int_links" => array("integer", $inl),
), array(
"page_id" => array("integer", $this->getId()),
"parent_type" => array("text", $this->getParentType())
));
// todo put this into update function
/* 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);
if (!$skip_handle_usages)
{
// handle media object usage
include_once("./Services/MediaObjects/classes/class.ilObjMediaObject.php");
$this->getParentType().":pg", $this->getId());
$this->saveMobUsage($this->getXMLFromDom());
$this->saveMetaKeywords($this->getXMLFromDom());
foreach($mob_ids as $mob) // check, whether media object can be deleted
{
if (ilObject::_exists($mob) && ilObject::_lookupType($mob) == "mob")
{
$mob_obj = new ilObjMediaObject($mob);
$usages = $mob_obj->getUsages(false);
if (count($usages) == 0) // delete, if no usage exists
{
$mob_obj->delete();
}
}
}
// handle file usages
include_once("./Modules/File/classes/class.ilObjFile.php");
$this->getParentType().":pg", $this->getId());
$this->saveFileUsage();
foreach($file_ids as $file) // check, whether file object can be deleted
{
if (ilObject::_exists($file))
{
$file_obj = new ilObjFile($file, false);
$usages = $file_obj->getUsages();
if (count($usages) == 0) // delete, if no usage exists
{
if ($file_obj->getMode() == "filelist") // non-repository object
{
$file_obj->delete();
}
}
}
}
// save style usage
$this->saveStyleUsage($this->getXMLFromDom());
// save content include usage
}
// save internal link information
$this->saveInternalLinks($this->getXMLFromDom());
$this->saveAnchors($this->getXMLFromDom());
//echo "<br>PageObject::update:".htmlentities($this->getXMLContent()).":";
return true;
}
else
{
return $errors;
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::updateFromXML ( )

updates page object with current xml content

Definition at line 1990 of file class.ilPageObject.php.

References $ilDB, $lng, containsDeactivatedElements(), containsIntLinks(), getActivationEnd(), getActivationStart(), getActive(), getId(), getParentId(), getParentType(), getXMLContent(), ilUtil\now(), saveInternalLinks(), and saveStyleUsage().

{
global $lng, $ilDB, $ilUser;
//echo "<br>PageObject::updateFromXML[".$this->getId()."]";
//echo "update:".ilUtil::prepareDBString(($this->getXMLContent())).":<br>";
//echo "update:".htmlentities($this->getXMLContent()).":<br>";
$iel = $this->containsDeactivatedElements($this->getXMLContent());
$inl = $this->containsIntLinks($this->getXMLContent());
/*$query = "UPDATE page_object ".
"SET content = ".$ilDB->quote($this->getXMLContent())." ".
", parent_id = ".$ilDB->quote($this->getParentId())." ".
", last_change_user = ".$ilDB->quote($ilUser->getId())." ".
", last_change = now() ".
", active = ".$ilDB->quote($this->getActive())." ".
", activation_start = ".$ilDB->quote($this->getActivationStart())." ".
", activation_end = ".$ilDB->quote($this->getActivationEnd())." ".
", inactive_elements = ".$ilDB->quote($iel, "integer")." ".
", int_links = ".$ilDB->quote($inl, "integer")." ".
"WHERE page_id = ".$ilDB->quote($this->getId())." AND parent_type=".
$ilDB->quote($this->getParentType());*/
$ilDB->update("page_object", array(
"content" => array("clob", $this->getXMLContent()),
"parent_id" => array("integer", $this->getParentId()),
"last_change_user" => array("integer", $ilUser->getId()),
"last_change" => array("timestamp", ilUtil::now()),
"active" => array("integer", $this->getActive()),
"activation_start" => array("timestamp", $this->getActivationStart()),
"activation_end" => array("timestamp", $this->getActivationEnd()),
"inactive_elements" => array("integer", $iel),
"int_links" => array("integer", $inl),
), array(
"page_id" => array("integer", $this->getId()),
"parent_type" => array("text", $this->getParentType())
));
// todo: move this to update
/* if(!$ilDB->checkQuerySize($query))
{
$this->ilias->raiseError($lng->txt("check_max_allowed_packet_size"),$this->ilias->error_obj->MESSAGE);
return false;
}
$ilDB->query($query);*/
// save style usage
$this->saveStyleUsage($this->getXMLContent());
// save internal link information
$this->saveInternalLinks($this->getXMLContent());
return true;
}

+ Here is the call graph for this function:

ilPageObject::validateDom ( )

Validate the page content agains page DTD.

Returns
array Error array.

Definition at line 1341 of file class.ilPageObject.php.

References $error, and stripHierIDs().

Referenced by update().

{
$this->stripHierIDs();
$this->dom->validate($error);
return $error;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilPageObject::writeRenderedContent (   $a_content,
  $a_md5 
)

Write rendered content.

Definition at line 4357 of file class.ilPageObject.php.

References $ilDB, getId(), getParentType(), and ilUtil\now().

{
global $ilDB;
$ilDB->update("page_object", array(
"rendered_content" => array("clob", $a_content),
"render_md5" => array("text", $a_md5),
"rendered_time" => array("timestamp", ilUtil::now())
), array(
"page_id" => array("integer", $this->getId()),
"parent_type" => array("text", $this->getParentType())
));
/*$st = $ilDB->prepareManip("UPDATE page_object ".
" SET rendered_content = ?, render_md5 = ?, rendered_time = now()".
" WHERE page_id = ? AND parent_type = ?",
array("text", "text", "integer", "text"));
$r = $ilDB->execute($st,
array($a_content, $a_md5, $this->getId(), $this->getParentType()));*/
}

+ Here is the call graph for this function:

Field Documentation

ilPageObject::$contains_int_link

Definition at line 37 of file class.ilPageObject.php.

Referenced by containsIntLink().

ilPageObject::$cur_dtd = "ilias_pg_4_1.dtd"

Definition at line 36 of file class.ilPageObject.php.

ilPageObject::$dom_builded

Definition at line 44 of file class.ilPageObject.php.

ilPageObject::$encoding

Definition at line 34 of file class.ilPageObject.php.

ilPageObject::$exists = array()
static

Definition at line 28 of file class.ilPageObject.php.

ilPageObject::$history_saved

Definition at line 45 of file class.ilPageObject.php.

ilPageObject::$ilias

Definition at line 31 of file class.ilPageObject.php.

Referenced by getBibliographyXML(), and ilPageObject().

ilPageObject::$layout_mode

Definition at line 46 of file class.ilPageObject.php.

Referenced by getLayoutMode(), and update().

ilPageObject::$needs_parsing

Definition at line 38 of file class.ilPageObject.php.

Referenced by needsImportParsing().

ilPageObject::$node

Definition at line 35 of file class.ilPageObject.php.

Referenced by getContentNode(), getNode(), insertPCIds(), and setParagraphContent().

ilPageObject::$offline_handler

Definition at line 43 of file class.ilPageObject.php.

ilPageObject::$parent_id

Definition at line 40 of file class.ilPageObject.php.

Referenced by getParentId().

ilPageObject::$parent_type

Definition at line 39 of file class.ilPageObject.php.

Referenced by getParentType().

ilPageObject::$update_listener_cnt

Definition at line 42 of file class.ilPageObject.php.

Referenced by addUpdateListener(), and callUpdateListeners().

ilPageObject::$update_listeners

Definition at line 41 of file class.ilPageObject.php.


The documentation for this class was generated from the following file: