ILIAS  Release_3_10_x_branch Revision 61812
 All Data Structures Namespaces Files Functions Variables Groups Pages
ilLMObject Class Reference

Class ilLMObject. More...

+ Inheritance diagram for ilLMObject:
+ Collaboration diagram for ilLMObject:

Public Member Functions

 ilLMObject (&$a_content_obj, $a_id=0)
 MDUpdateListener ($a_element)
 Meta data update listener.
 _lookupNID ($a_lm_id, $a_lm_obj_id, $a_type)
 lookup named identifier (ILIAS_NID)
 createMetaData ()
 create meta data entry
 updateMetaData ()
 update meta data entry
 deleteMetaData ()
 delete meta data entry
 setDataRecord ($a_record)
 this method should only be called by class ilLMObjectFactory
 read ()
 setTitle ($a_title)
 set title of lm object
 getTitle ()
 get title of lm object
 _lookupTitle ($a_obj_id)
 _lookupType ($a_obj_id)
 _writeTitle ($a_obj_id, $a_title)
 setDescription ($a_description)
 getDescription ()
 setType ($a_type)
 getType ()
 setLMId ($a_lm_id)
 getLMId ()
 setContentObject (&$a_content_obj)
getContentObject ()
 setId ($a_id)
 getId ()
 getImportId ()
 setImportId ($a_id)
 setActive ($a_active)
 set activation
 getActive ()
 get activation
 _writeImportId ($a_id, $a_import_id)
 write import id to db (static)
 create ($a_upload=false)
 update ()
 update complete object
 _isPagePublic ($a_node_id, $a_check_public_mode=false)
 delete ($a_delete_meta_data=true)
 delete lm object data
 _getIdForImportId ($a_import_id)
 get current object id for import id (static)
 _getAllObjectsForImportId ($a_import_id)
 Get all items for an import ID.
 _exists ($a_id)
 checks wether a lm content object with specified id exists or not
 getObjectList ($lm_id, $type="")
 static
 _deleteAllObjectData (&$a_cobj)
 delete all objects of content object (digi book / learning module)
 _lookupContObjID ($a_id)
 get learning module / digibook id for lm object
 _lookupActive ($a_id)
 lookup activation status
 _writeActive ($a_id, $a_active)
 write activation status
 clipboardCut ($a_cont_obj_id, $a_ids)
 Copy a set of chapters/pages into the clipboard.

Static Public Member Functions

 _writePublicAccessStatus ($a_pages, $a_cont_obj_id)
 update public access flags in lm_data for all pages of a content object
static putInTree ($a_obj, $a_parent_id="", $a_target_node_id="")
 put this object into content object tree
static getTree ($a_cont_obj_id)
 Get learningmodule tree.
static clipboardCopy ($a_cont_obj_id, $a_ids)
 Copy a set of chapters/pages into the clipboard.
static pasteTree ($a_target_lm, $a_item_id, $a_parent_id, $a_target, $a_insert_time, &$a_copied_nodes, $a_as_copy=false)
 Paste item (tree) from clipboard to current lm.
static saveTitles ($a_lm, $a_titles)
 Save titles for lm objects.
static updateInternalLinks ($a_copied_nodes, $a_parent_type="lm")
 Update internal links, after multiple pages have been copied.
static uniqueTypesCheck ($a_items)
 Check for unique types (all pages or all chapters)

Data Fields

 $ilias
 $lm_id
 $type
 $id
 $meta_data
 $data_record
 $content_object
 $title
 $description
 $active = true

Detailed Description

Class ilLMObject.

Base class for ilStructureObjects and ilPageObjects (see ILIAS DTD)

Author
Alex Killing alex..nosp@m.kill.nosp@m.ing@g.nosp@m.mx.d.nosp@m.e
Version
Id:
class.ilLMObject.php 22460 2009-12-01 15:57:13Z smeyer

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

Member Function Documentation

ilLMObject::_deleteAllObjectData ( $a_cobj)

delete all objects of content object (digi book / learning module)

Definition at line 659 of file class.ilLMObject.php.

References DB_FETCHMODE_ASSOC, and ilLMObjectFactory\getInstance().

Referenced by ilObjContentObject\delete().

{
global $ilDB;
include_once './classes/class.ilNestedSetXML.php';
$query = "SELECT * FROM lm_data ".
"WHERE lm_id= ".$ilDB->quote($a_cobj->getId())." ";
$obj_set = $this->ilias->db->query($query);
require_once("./Modules/LearningModule/classes/class.ilLMObjectFactory.php");
while($obj_rec = $obj_set->fetchRow(DB_FETCHMODE_ASSOC))
{
$lm_obj =& ilLMObjectFactory::getInstance($a_cobj, $obj_rec["obj_id"],false);
if (is_object($lm_obj))
{
$lm_obj->delete(true);
}
}
return true;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilLMObject::_exists (   $a_id)

checks wether a lm content object with specified id exists or not

Parameters
int$idid
Returns
boolean true, if lm content object exists

Definition at line 607 of file class.ilLMObject.php.

References ilInternalLink\_extractObjIdOfTarget(), and DB_FETCHMODE_ASSOC.

Referenced by ilLinksTableGUI\fillRow(), ilLMPresentationGUI\ilPage(), and ilLMPresentationGUI\showPrintView().

{
global $ilDB;
include_once("./Services/COPage/classes/class.ilInternalLink.php");
if (is_int(strpos($a_id, "_")))
{
}
$q = "SELECT * FROM lm_data WHERE obj_id = ".$ilDB->quote($a_id);
$obj_set = $ilDB->query($q);
if ($obj_rec = $obj_set->fetchRow(DB_FETCHMODE_ASSOC))
{
return true;
}
else
{
return false;
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilLMObject::_getAllObjectsForImportId (   $a_import_id)

Get all items for an import ID.

(only for items notnot in trash)

Parameters
int$a_import_idimport id
Returns
int id

Definition at line 579 of file class.ilLMObject.php.

References ilObject\_hasUntrashedReference(), and DB_FETCHMODE_ASSOC.

Referenced by updateInternalLinks().

{
global $ilDB;
$q = "SELECT * FROM lm_data WHERE import_id = ".$ilDB->quote($a_import_id)." ".
" ORDER BY create_date DESC";
$obj_set = $ilDB->query($q);
$items = array();
while ($obj_rec = $obj_set->fetchRow(DB_FETCHMODE_ASSOC))
{
// check, whether lm is not trashed
if (ilObject::_hasUntrashedReference($obj_rec["lm_id"]))
{
$items[] = $obj_rec;
}
}
return $items;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilLMObject::_getIdForImportId (   $a_import_id)

get current object id for import id (static)

import ids can exist multiple times (if the same learning module has been imported multiple times). we get the object id of the last imported object, that is not in trash

Parameters
int$a_import_idimport id
Returns
int id

Definition at line 549 of file class.ilLMObject.php.

References $lm_id, ilObject\_hasUntrashedReference(), _lookupContObjID(), and DB_FETCHMODE_ASSOC.

Referenced by SurveyQuestion\_resolveInternalLink(), and assQuestion\_resolveInternalLink().

{
global $ilDB;
$q = "SELECT * FROM lm_data WHERE import_id = ".$ilDB->quote($a_import_id)." ".
" ORDER BY create_date DESC LIMIT 1";
$obj_set = $ilDB->query($q);
while ($obj_rec = $obj_set->fetchRow(DB_FETCHMODE_ASSOC))
{
$lm_id = ilLMObject::_lookupContObjID($obj_rec["obj_id"]);
// link only in learning module, that is not trashed
{
return $obj_rec["obj_id"];
}
}
return 0;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilLMObject::_isPagePublic (   $a_node_id,
  $a_check_public_mode = false 
)

Definition at line 493 of file class.ilLMObject.php.

References $ilLog, $lm_id, and ilUtil\yn2tf().

Referenced by ilLMPresentationGUI\executeCommand(), ilPublicSectionSelector\formatObject(), ilLMPresentationGUI\getCurrentPageId(), ilLMPresentationGUI\ilLMNavigation(), ilLMPresentationGUI\ilPage(), ilLMExplorer\isClickable(), ilShopPublicSectionSelector\isClickable(), ilLMTOCExplorer\isClickable(), ilTableOfContentsExplorer\isClickable(), ilLMPresentationGUI\showPrintView(), and ilLMPresentationGUI\showPrintViewSelection().

{
global $ilDB,$ilLog;
if (empty($a_node_id))
{
$message = sprintf('ilLMObject::_isPagePublic(): Invalid parameter! $a_node_id is empty');
$ilLog->write($message,$ilLog->WARNING);
return false;
}
if ($a_check_public_mode === true)
{
$lm_id = ilLMObject::_lookupContObjId($a_node_id);
$q = "SELECT public_access_mode FROM content_object WHERE id=".$ilDB->quote($lm_id);
$r = $ilDB->query($q);
$row = $r->fetchRow();
if ($row[0] == "complete")
{
return true;
}
}
$q = "SELECT public_access FROM lm_data WHERE obj_id=".$ilDB->quote($a_node_id);
$r = $ilDB->query($q);
$row = $r->fetchRow();
return ilUtil::yn2tf($row[0]);
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilLMObject::_lookupNID (   $a_lm_id,
  $a_lm_obj_id,
  $a_type 
)

lookup named identifier (ILIAS_NID)

Definition at line 109 of file class.ilLMObject.php.

References $id.

Referenced by ilTableOfContentsExplorer\buildLinkTarget(), ilObjContentObject\exportPageHTML(), and ilLMPresentationGUI\getLink().

{
include_once 'Services/MetaData/classes/class.ilMD.php';
//echo "-".$a_lm_id."-".$a_lm_obj_id."-".$a_type."-";
$md = new ilMD($a_lm_id, $a_lm_obj_id, $a_type);
$md_gen = $md->getGeneral();
if(!is_object($md_gen))
{
return false;
}
foreach($md_gen->getIdentifierIds() as $id)
{
$md_id = $md_gen->getIdentifier($id);
if ($md_id->getCatalog() == "ILIAS_NID")
{
return $md_id->getEntry();
}
}
return false;
}

+ Here is the caller graph for this function:

ilLMObject::_writeActive (   $a_id,
  $a_active 
)

write activation status

Definition at line 714 of file class.ilLMObject.php.

References ilUtil\tf2yn().

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

{
global $ilDB;
$query = "UPDATE lm_data ".
" SET active = ".$ilDB->quote(ilUtil::tf2yn($a_active)).
" WHERE obj_id = ".$ilDB->quote($a_id);
$ilDB->query($query);
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilLMObject::_writeImportId (   $a_id,
  $a_import_id 
)

write import id to db (static)

Parameters
int$a_idlm object id
string$a_import_idimport id public

Definition at line 368 of file class.ilLMObject.php.

Referenced by ilContObjParser\handlerEndTag().

{
global $ilDB;
$q = "UPDATE lm_data ".
"SET ".
"import_id = ".$ilDB->quote($a_import_id).",".
"last_update = now() ".
"WHERE obj_id = ".$ilDB->quote($a_id);
$ilDB->query($q);
}

+ Here is the caller graph for this function:

ilLMObject::_writePublicAccessStatus (   $a_pages,
  $a_cont_obj_id 
)
static

update public access flags in lm_data for all pages of a content object

public

Parameters
arraypage ids
integercontent object id
Returns
of the jedi

Definition at line 432 of file class.ilLMObject.php.

References $ilErr, $ilLog, and ilUtil\quoteArray().

Referenced by ilObjContentObjectGUI\savePublicSection().

{
global $ilDB,$ilLog,$ilErr,$ilTree;
if (!is_array($a_pages))
{$a_pages = array(0);
/*$message = sprintf('ilLMObject::_writePublicAccessStatus(): Invalid parameter! $a_pages must be an array');
$ilLog->write($message,$ilLog->WARNING);
$ilErr->raiseError($message,$ilErr->MESSAGE);
return false;*/
}
if (empty($a_cont_obj_id))
{
$message = sprintf('ilLMObject::_writePublicAccessStatus(): Invalid parameter! $a_cont_obj_id is empty');
$ilLog->write($message,$ilLog->WARNING);
$ilErr->raiseError($message,$ilErr->MESSAGE);
return false;
}
// update structure entries: if at least one page of a chapter is public set chapter to public too
$lm_tree = new ilTree($a_cont_obj_id);
$lm_tree->setTableNames('lm_tree','lm_data');
$lm_tree->setTreeTablePK("lm_id");
$lm_tree->readRootId();
// get all st entries of cont_obj
$q = "SELECT obj_id FROM lm_data " .
"WHERE lm_id = ".$ilDB->quote($a_cont_obj_id)." " .
"AND type = 'st'";
$r = $ilDB->query($q);
// add chapters with a public page to a_pages
while ($row = $r->fetchRow())
{
$childs = $lm_tree->getChilds($row[0]);
foreach ($childs as $page)
{
if ($page["type"] == "pg" and in_array($page["obj_id"],$a_pages))
{
array_push($a_pages, $row[0]);
break;
}
}
}
// update public access status of all pages of cont_obj
$q = "UPDATE lm_data SET " .
"public_access = CASE " .
"WHEN obj_id IN (".implode(',',ilUtil::quoteArray($a_pages)).") " .
"THEN 'y' ".
"ELSE 'n' ".
"END " .
"WHERE lm_id = ".$ilDB->quote($a_cont_obj_id)." " .
"AND type IN ('pg','st')";
$ilDB->query($q);
return true;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilLMObject::_writeTitle (   $a_obj_id,
  $a_title 
)

Definition at line 269 of file class.ilLMObject.php.

Referenced by MDUpdateListener(), and saveTitles().

{
global $ilDB;
$query = "UPDATE lm_data SET ".
" title = ".$ilDB->quote($a_title).
" WHERE obj_id = ".$ilDB->quote($a_obj_id);
$ilDB->query($query);
}

+ Here is the caller graph for this function:

static ilLMObject::clipboardCopy (   $a_cont_obj_id,
  $a_ids 
)
static

Copy a set of chapters/pages into the clipboard.

Definition at line 846 of file class.ilLMObject.php.

References $id, _lookupTitle(), _lookupType(), and getTree().

Referenced by clipboardCut(), ilStructureObjectGUI\copyItems(), ilObjContentObjectGUI\copyItems(), and ilObjContentObjectGUI\copyPage().

{
global $ilUser;
$tree = ilLMObject::getTree($a_cont_obj_id);
$ilUser->clipboardDeleteObjectsOfType("pg");
$ilUser->clipboardDeleteObjectsOfType("st");
// put them into the clipboard
$time = date("Y-m-d H:i:s", time());
foreach ($a_ids as $id)
{
$curnode = "";
if ($tree->isInTree($id))
{
$curnode = $tree->getNodeData($id);
$subnodes = $tree->getSubTree($curnode);
foreach($subnodes as $subnode)
{
if ($subnode["child"] != $id)
{
$ilUser->addObjectToClipboard($subnode["child"],
$subnode["type"], $subnode["title"],
$subnode["parent"], $time, $subnode["lft"]);
}
}
}
$order = ($curnode["lft"] > 0)
? $curnode["lft"]
: (int) ($order + 1);
$ilUser->addObjectToClipboard($id,
$order);
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilLMObject::clipboardCut (   $a_cont_obj_id,
  $a_ids 
)

Copy a set of chapters/pages into the clipboard.

Definition at line 798 of file class.ilLMObject.php.

References $id, clipboardCopy(), and getTree().

Referenced by ilStructureObjectGUI\cutItems(), ilObjContentObjectGUI\cutItems(), and ilObjContentObjectGUI\movePage().

{
$tree = ilLMObject::getTree($a_cont_obj_id);
if (!is_array($a_ids))
{
return false;
}
else
{
// get all "top" ids, i.e. remove ids, that have a selected parent
foreach($a_ids as $id)
{
$path = $tree->getPathId($id);
$take = true;
foreach($path as $path_id)
{
if ($path_id != $id && in_array($path_id, $a_ids))
{
$take = false;
}
}
if ($take)
{
$cut_ids[] = $id;
}
}
}
ilLMObject::clipboardCopy($a_cont_obj_id, $cut_ids);
// remove the objects from the tree
// note: we are getting chapters which are *not* in the tree
// we do not delete any pages/chapters here
foreach ($cut_ids as $id)
{
$curnode = $tree->getNodeData($id);
if ($tree->isInTree($id))
{
$tree->deleteTree($curnode);
}
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilLMObject::create (   $a_upload = false)

Reimplemented in ilLMPageObject, and ilStructureObject.

Definition at line 381 of file class.ilLMObject.php.

References ilHistory\_createEntry(), createMetaData(), getActive(), getId(), getImportId(), getLMId(), getTitle(), getType(), setId(), and ilUtil\tf2yn().

{
global $ilDB;
// insert object data
$query = "INSERT INTO lm_data (title, type, lm_id, import_id, create_date, active) ".
"VALUES (".$ilDB->quote($this->getTitle()).",".$ilDB->quote($this->getType()).", ".
$ilDB->quote($this->getLMId()).",".$ilDB->quote($this->getImportId()).
", now(),".$ilDB->quote(ilUtil::tf2yn($this->getActive())).")";
$this->ilias->db->query($query);
$this->setId($this->ilias->db->getLastInsertId());
// create history entry
include_once("classes/class.ilHistory.php");
ilHistory::_createEntry($this->getId(), "create", "",
$this->content_object->getType().":".$this->getType());
if (!$a_upload)
{
$this->createMetaData();
}
}

+ Here is the call graph for this function:

ilLMObject::createMetaData ( )

create meta data entry

Definition at line 137 of file class.ilLMObject.php.

References getDescription(), getId(), getLMId(), getTitle(), and getType().

Referenced by create().

{
include_once 'Services/MetaData/classes/class.ilMDCreator.php';
global $ilUser;
$md_creator = new ilMDCreator($this->getLMId(), $this->getId(), $this->getType());
$md_creator->setTitle($this->getTitle());
$md_creator->setTitleLanguage($ilUser->getPref('language'));
$md_creator->setDescription($this->getDescription());
$md_creator->setDescriptionLanguage($ilUser->getPref('language'));
$md_creator->setKeywordLanguage($ilUser->getPref('language'));
$md_creator->setLanguage($ilUser->getPref('language'));
$md_creator->create();
return true;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilLMObject::delete (   $a_delete_meta_data = true)

delete lm object data

Reimplemented in ilLMPageObject, and ilStructureObject.

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

References deleteMetaData(), and getId().

{
global $ilDB;
$query = "DELETE FROM lm_data WHERE obj_id= ".$ilDB->quote($this->getId());
$this->ilias->db->query($query);
$this->deleteMetaData();
}

+ Here is the call graph for this function:

ilLMObject::deleteMetaData ( )

delete meta data entry

Definition at line 184 of file class.ilLMObject.php.

References getId(), getLMId(), and getType().

Referenced by delete().

{
// Delete meta data
include_once('Services/MetaData/classes/class.ilMD.php');
$md = new ilMD($this->getLMId(), $this->getId(), $this->getType());
$md->deleteAll();
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilLMObject::getActive ( )

get activation

Returns
boolean true/false for active or not

Definition at line 356 of file class.ilLMObject.php.

References $active.

Referenced by create(), and update().

{
return $this->active;
}

+ Here is the caller graph for this function:

& ilLMObject::getContentObject ( )

Definition at line 316 of file class.ilLMObject.php.

References $content_object.

Referenced by ilStructureObject\exportFOPageObjects(), ilLMPageObject\exportXMLPageContent(), and ilStructureObject\exportXMLStructureObjects().

{
}

+ Here is the caller graph for this function:

ilLMObject::getDescription ( )

Definition at line 285 of file class.ilLMObject.php.

References $description.

Referenced by ilStructureObject\copy(), ilLMPageObject\copy(), ilLMPageObject\copyToOtherContObject(), and createMetaData().

{
}

+ Here is the caller graph for this function:

ilLMObject::getImportId ( )

Definition at line 331 of file class.ilLMObject.php.

Referenced by create().

{
return $this->import_id;
}

+ Here is the caller graph for this function:

ilLMObject::getObjectList (   $lm_id,
  $type = "" 
)

static

Definition at line 633 of file class.ilLMObject.php.

References $lm_id, $type, and DB_FETCHMODE_ASSOC.

Referenced by ilLMPageObject\getPageList().

{
global $ilDB;
$type_str = ($type != "")
? "AND type = ".$ilDB->quote($type)." "
: "";
$query = "SELECT * FROM lm_data ".
"WHERE lm_id= ".$ilDB->quote($lm_id)." ".
$type_str." ".
"ORDER BY title";
$obj_set = $ilDB->query($query);
$obj_list = array();
while($obj_rec = $obj_set->fetchRow(DB_FETCHMODE_ASSOC))
{
$obj_list[] = array("obj_id" => $obj_rec["obj_id"],
"title" => $obj_rec["title"],
"type" => $obj_rec["type"]);
}
return $obj_list;
}

+ Here is the caller graph for this function:

ilLMObject::getTitle ( )

get title of lm object

Returns
string title of chapter or page

Definition at line 240 of file class.ilLMObject.php.

References $title.

Referenced by ilStructureObject\copy(), ilLMPageObject\copy(), ilLMPageObject\copyToOtherContObject(), create(), createMetaData(), ilStructureObject\exportFO(), update(), and updateMetaData().

{
return $this->title;
}

+ Here is the caller graph for this function:

static ilLMObject::getTree (   $a_cont_obj_id)
static

Get learningmodule tree.

Parameters
intlearning module object id
Returns
object tree object

Definition at line 785 of file class.ilLMObject.php.

Referenced by clipboardCopy(), and clipboardCut().

{
$tree = new ilTree($a_cont_obj_id);
$tree->setTableNames('lm_tree', 'lm_data');
$tree->setTreeTablePK("lm_id");
$tree->readRootId();
return $tree;
}

+ Here is the caller graph for this function:

ilLMObject::ilLMObject ( $a_content_obj,
  $a_id = 0 
)
Parameters
object$a_content_objcontent object (digi book or learning module)

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

References $ilias, read(), setContentObject(), and setLMId().

Referenced by ilLMPageObject\ilLMPageObject(), and ilStructureObject\ilStructureObject().

{
global $ilias;
$this->ilias =& $ilias;
$this->id = $a_id;
$this->setContentObject($a_content_obj);
$this->setLMId($a_content_obj->getId());
if($a_id != 0)
{
$this->read();
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilLMObject::MDUpdateListener (   $a_element)

Meta data update listener.

Important note: Do never call create() or update() method of ilObject here. It would result in an endless loop: update object -> update meta -> update object -> ... Use static _writeTitle() ... methods instead.

Parameters
string$a_element

Definition at line 77 of file class.ilLMObject.php.

References $id, _writeTitle(), getId(), getLMId(), and getType().

{
include_once 'Services/MetaData/classes/class.ilMD.php';
switch($a_element)
{
case 'General':
// Update Title and description
$md = new ilMD($this->getLMId(), $this->getId(), $this->getType());
$md_gen = $md->getGeneral();
ilLMObject::_writeTitle($this->getId(),$md_gen->getTitle());
foreach($md_gen->getDescriptionIds() as $id)
{
$md_des = $md_gen->getDescription($id);
// ilLMObject::_writeDescription($this->getId(),$md_des->getDescription());
break;
}
break;
default:
}
return true;
}

+ Here is the call graph for this function:

static ilLMObject::pasteTree (   $a_target_lm,
  $a_item_id,
  $a_parent_id,
  $a_target,
  $a_insert_time,
$a_copied_nodes,
  $a_as_copy = false 
)
static

Paste item (tree) from clipboard to current lm.

Definition at line 886 of file class.ilLMObject.php.

References $ilias, $ilLog, _lookupContObjID(), _lookupType(), ilMD\cloneMD(), IL_LAST_NODE, and putInTree().

Referenced by ilStructureObjectGUI\insertChapterClip(), ilObjContentObjectGUI\insertChapterClip(), and ilStructureObjectGUI\insertPageClip().

{
global $ilUser, $ilias, $ilLog;
$item_lm_id = ilLMObject::_lookupContObjID($a_item_id);
$item_type = ilLMObject::_lookupType($a_item_id);
$lm_obj = $ilias->obj_factory->getInstanceByObjId($item_lm_id);
if ($item_type == "st")
{
$item = new ilStructureObject($lm_obj, $a_item_id);
}
else if ($item_type == "pg")
{
$item = new ilLMPageObject($lm_obj, $a_item_id);
}
$ilLog->write("Getting from clipboard type ".$item_type.", ".
"Item ID: ".$a_item_id.", of original LM: ".$item_lm_id);
if ($item_lm_id != $a_target_lm->getId() && !$a_as_copy)
{
// @todo: check whether st is NOT in tree
// "move" metadata to new lm
include_once("Services/MetaData/classes/class.ilMD.php");
$md = new ilMD($item_lm_id, $item->getId(), $item->getType());
$new_md = $md->cloneMD($a_target_lm->getId(), $item->getId(), $item->getType());
// update lm object
$item->setLMId($a_target_lm->getId());
$item->setContentObject($a_target_lm);
$item->update();
// delete old meta data set
$md->deleteAll();
if ($item_type == "pg")
{
$page = $item->getPageObject();
$page->buildDom();
$page->setParentId($a_target_lm->getId());
$page->update();
}
}
if ($a_as_copy)
{
$target_item = $item->copy($a_target_lm);
$a_copied_nodes[$item->getId()] = $target_item->getId();
}
else
{
$target_item = $item;
}
$ilLog->write("Putting into tree type ".$target_item->getType().
"Item ID: ".$target_item->getId().", Parent: ".$a_parent_id.", ".
"Target: ".$a_target.", Item LM:".$target_item->getContentObject()->getId());
ilLMObject::putInTree($target_item, $a_parent_id, $a_target);
$childs = $ilUser->getClipboardChilds($item->getId(), $a_insert_time);
foreach($childs as $child)
{
ilLMObject::pasteTree($a_target_lm, $child["id"], $target_item->getId(),
IL_LAST_NODE, $a_insert_time, $a_copied_nodes, $a_as_copy);
}
return $target_item->getId();
// @todo: write history (see pastePage)
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static ilLMObject::putInTree (   $a_obj,
  $a_parent_id = "",
  $a_target_node_id = "" 
)
static

put this object into content object tree

Definition at line 727 of file class.ilLMObject.php.

References $ilLog, IL_FIRST_NODE, and ilTree\setTableNames().

Referenced by ilObjContentObjectGUI\insertChapter(), and pasteTree().

{
global $ilLog;
$tree = new ilTree($a_obj->getContentObject()->getId());
$tree->setTableNames('lm_tree', 'lm_data');
$tree->setTreeTablePK("lm_id");
// determine parent
$parent_id = ($a_parent_id != "")
? $a_parent_id
: $tree->getRootId();
// determine target
if ($a_target_node_id != "")
{
$target = $a_target_node_id;
}
else
{
// determine last child that serves as predecessor
if ($a_obj->getType() == "st")
{
$s_types = array("st", "pg");
$childs =& $tree->getChildsByTypeFilter($parent_id, $s_types);
}
else
{
$s_types = "pg";
$childs =& $tree->getChildsByType($parent_id, $s_types);
}
if (count($childs) == 0)
{
$target = IL_FIRST_NODE;
}
else
{
$target = $childs[count($childs) - 1]["obj_id"];
}
}
if ($tree->isInTree($parent_id) && !$tree->isInTree($a_obj->getId()))
{
$ilLog->write("LMObject::putInTree: insertNode, ID: ".$a_obj->getId().
"Parent ID: ".$parent_id.", Target: ".$target);
$tree->insertNode($a_obj->getId(), $parent_id, $target);
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilLMObject::read ( )

Reimplemented in ilLMPageObject.

Definition at line 202 of file class.ilLMObject.php.

References $ilBench, DB_FETCHMODE_ASSOC, setActive(), setImportId(), setTitle(), and ilUtil\yn2tf().

Referenced by ilLMObject().

{
global $ilBench, $ilDB;
$ilBench->start("ContentPresentation", "ilLMObject_read");
if(!isset($this->data_record))
{
$ilBench->start("ContentPresentation", "ilLMObject_read_getData");
$query = "SELECT * FROM lm_data WHERE obj_id = ".$ilDB->quote($this->id);
$obj_set = $this->ilias->db->query($query);
$this->data_record = $obj_set->fetchRow(DB_FETCHMODE_ASSOC);
$ilBench->stop("ContentPresentation", "ilLMObject_read_getData");
}
$this->type = $this->data_record["type"];
$this->setImportId($this->data_record["import_id"]);
$this->setTitle($this->data_record["title"]);
$this->setActive(ilUtil::yn2tf($this->data_record["active"]));
$ilBench->stop("ContentPresentation", "ilLMObject_read");
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static ilLMObject::saveTitles (   $a_lm,
  $a_titles 
)
static

Save titles for lm objects.

Parameters
arraytitles (key is ID, value is title)

Definition at line 965 of file class.ilLMObject.php.

References $id, $title, _writeTitle(), ilMD\getGeneral(), ilLMObjectFactory\getInstance(), and ilMDBase\update().

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

{
if (is_array($a_titles))
{
include_once("./Services/MetaData/classes/class.ilMD.php");
foreach($a_titles as $id => $title)
{
$lmobj = ilLMObjectFactory::getInstance($a_lm, $id, false);
if (is_object($lmobj))
{
// Update Title and description
$md = new ilMD($a_lm->getId(), $id, $lmobj->getType());
$md_gen = $md->getGeneral();
$md_gen->setTitle($title);
$md_gen->update();
$md->update();
}
}
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilLMObject::setActive (   $a_active)

set activation

Parameters
boolean$a_activetrue/false for active or not

Definition at line 346 of file class.ilLMObject.php.

Referenced by read().

{
$this->active = $a_active;
}

+ Here is the caller graph for this function:

ilLMObject::setContentObject ( $a_content_obj)

Definition at line 311 of file class.ilLMObject.php.

Referenced by ilLMObject().

{
$this->content_object =& $a_content_obj;
}

+ Here is the caller graph for this function:

ilLMObject::setDataRecord (   $a_record)

this method should only be called by class ilLMObjectFactory

Definition at line 197 of file class.ilLMObject.php.

{
$this->data_record = $a_record;
}
ilLMObject::setDescription (   $a_description)

Definition at line 280 of file class.ilLMObject.php.

{
$this->description = $a_description;
}
ilLMObject::setId (   $a_id)

Reimplemented in ilLMPageObject.

Definition at line 321 of file class.ilLMObject.php.

Referenced by create().

{
$this->id = $a_id;
}

+ Here is the caller graph for this function:

ilLMObject::setImportId (   $a_id)

Definition at line 336 of file class.ilLMObject.php.

Referenced by read().

{
$this->import_id = $a_id;
}

+ Here is the caller graph for this function:

ilLMObject::setLMId (   $a_lm_id)

Definition at line 300 of file class.ilLMObject.php.

Referenced by ilLMObject().

{
$this->lm_id = $a_lm_id;
}

+ Here is the caller graph for this function:

ilLMObject::setTitle (   $a_title)

set title of lm object

Parameters
string$a_titletitle of chapter or page

Definition at line 230 of file class.ilLMObject.php.

Referenced by read().

{
$this->title = $a_title;
}

+ Here is the caller graph for this function:

ilLMObject::setType (   $a_type)

Definition at line 290 of file class.ilLMObject.php.

Referenced by ilLMPageObject\ilLMPageObject(), and ilStructureObject\ilStructureObject().

{
$this->type = $a_type;
}

+ Here is the caller graph for this function:

static ilLMObject::uniqueTypesCheck (   $a_items)
static

Check for unique types (all pages or all chapters)

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

References $type, and _lookupType().

Referenced by ilStructureObjectGUI\copyItems(), and ilStructureObjectGUI\cutItems().

{
$types = array();
if (is_array($a_items))
{
foreach($a_items as $item)
{
$types[$type] = $type;
}
}
if (count($types) > 1)
{
return false;
}
return true;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilLMObject::update ( )

update complete object

Definition at line 408 of file class.ilLMObject.php.

References getActive(), getId(), getLMId(), getTitle(), ilUtil\tf2yn(), and updateMetaData().

{
global $ilDB;
$this->updateMetaData();
$query = "UPDATE lm_data SET ".
" lm_id = ".$ilDB->quote($this->getLMId()).
" ,title = ".$ilDB->quote($this->getTitle()).
" ,active = ".$ilDB->quote(ilUtil::tf2yn($this->getActive())).
" WHERE obj_id = ".$ilDB->quote($this->getId());
$ilDB->query($query);
}

+ Here is the call graph for this function:

static ilLMObject::updateInternalLinks (   $a_copied_nodes,
  $a_parent_type = "lm" 
)
static

Update internal links, after multiple pages have been copied.

Definition at line 990 of file class.ilLMObject.php.

References $mobs, ilInternalLink\_extractInstOfTarget(), ilInternalLink\_extractObjIdOfTarget(), ilInternalLink\_extractTypeOfTarget(), _getAllObjectsForImportId(), ilMapArea\_getMobsForTarget(), ilInternalLink\_getSourcesOfTarget(), _lookupContObjID(), _lookupType(), ilObject\_lookupType(), and ilObjMediaObject\lookupUsages().

Referenced by ilStructureObjectGUI\insertChapterClip(), ilObjContentObjectGUI\insertChapterClip(), ilStructureObjectGUI\insertPageClip(), ilObjContentObjectGUI\pasteChapter(), ilStructureObjectGUI\pastePage(), and ilObjContentObjectGUI\pastePage().

{
foreach($a_copied_nodes as $original_id => $copied_id)
{
$copied_type = ilLMObject::_lookupType($copied_id);
$copy_lm = ilLMObject::_lookupContObjID($copied_id);
if ($copied_type == "pg")
{
//
// 1. Outgoing links from the copied page.
//
//$targets = ilInternalLink::_getTargetsOfSource($a_parent_type.":pg", $copied_id);
$tpg = new ilPageObject($a_parent_type, $copied_id);
$tpg->buildDom();
$il = $tpg->getInternalLinks();
$targets = array();
foreach($il as $l)
{
$targets[] = array("type" => ilInternalLink::_extractTypeOfTarget($l["Target"]),
"id" => (int) ilInternalLink::_extractObjIdOfTarget($l["Target"]),
"inst" => (int) ilInternalLink::_extractInstOfTarget($l["Target"]));
}
$fix = array();
foreach($targets as $target)
{
if (($target["inst"] == 0 || $target["inst"] = IL_INST_ID) &&
($target["type"] == "pg" || $target["type"] == "st"))
{
// first check, whether target is also within the copied set
if ($a_copied_nodes[$target["id"]] > 0)
{
$fix[$target["id"]] = $a_copied_nodes[$target["id"]];
}
else
{
// now check, if a copy if the target is already in the same lm
$lm_data = ilLMObject::_getAllObjectsForImportId("il__".$target["type"]."_".$target["id"]);
$found = false;
foreach($lm_data as $item)
{
if (!$found && ($item["lm_id"] == $copy_lm))
{
$fix[$target["id"]] = $item["obj_id"];
}
}
if (!$found)
{
// we now could look for copies next to the copy lm
}
}
}
}
// outgoing links to be fixed
if (count($fix) > 0)
{
$page = new ilPageObject(ilObject::_lookupType($copy_lm), $copied_id);
$page->moveIntLinks($fix);
$page->update();
}
}
if ($copied_type == "pg" ||
$copied_type == "st")
{
//
// 2. Incoming links to the original pages
//
// A->B A2 (A+B currently copied)
// A->C B2
// B->A
// C->A C2->A (C already copied)
$original_lm = ilLMObject::_lookupContObjID($original_id);
$original_type = ilObject::_lookupType($original_lm);
// This gets sources that link to A+B (so we have C here)
// (this also does already the trick when instance map areas are given in C)
$sources = ilInternalLink::_getSourcesOfTarget($copied_type,
$original_id, 0);
// mobs linking to $original_id
$mobs = ilMapArea::_getMobsForTarget("int", "il__".$copied_type.
"_".$original_id);
// pages using these mobs
include_once("./Services/MediaObjects/classes/class.ilObjMediaObject.php");
foreach($mobs as $mob)
{
foreach($usages as $usage)
{
if ($usage["type"] == "lm:pg" | $usage["type"] == "lm:st")
{
$sources[] = $usage;
}
}
}
$fix = array();
foreach($sources as $source)
{
$stype = explode(":", $source["type"]);
$source_type = $stype[1];
if ($source_type == "pg" || $source_type == "st")
{
// check, if a copy if the source is already in the same lm
// now we look for the latest copy of C in LM2
$lm_data = ilLMObject::_getAllObjectsForImportId("il__".$source_type."_".$source["id"]);
$found = false;
foreach($lm_data as $item)
{
if (!$found && ($item["lm_id"] == $copy_lm))
{
$fix[$item["obj_id"]][$original_id] = $copied_id;
}
}
if (!$found)
{
// we now could look for copies next to the copy lm
}
}
}
// outgoing links to be fixed
if (count($fix) > 0)
{
foreach ($fix as $page_id => $fix_array)
{
$page = new ilPageObject(ilObject::_lookupType($copy_lm), $page_id);
$page->moveIntLinks($fix_array);
$page->update();
}
}
}
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilLMObject::updateMetaData ( )

update meta data entry

Definition at line 158 of file class.ilLMObject.php.

References getId(), getLMId(), getTitle(), and getType().

Referenced by update().

{
include_once("Services/MetaData/classes/class.ilMD.php");
include_once("Services/MetaData/classes/class.ilMDGeneral.php");
include_once("Services/MetaData/classes/class.ilMDDescription.php");
$md =& new ilMD($this->getLMId(), $this->getId(), $this->getType());
$md_gen =& $md->getGeneral();
$md_gen->setTitle($this->getTitle());
// sets first description (maybe not appropriate)
$md_des_ids =& $md_gen->getDescriptionIds();
if (count($md_des_ids) > 0)
{
$md_des =& $md_gen->getDescription($md_des_ids[0]);
// $md_des->setDescription($this->getDescription());
$md_des->update();
}
$md_gen->update();
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Field Documentation

ilLMObject::$active = true

Definition at line 47 of file class.ilLMObject.php.

Referenced by getActive().

ilLMObject::$content_object

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

Referenced by getContentObject().

ilLMObject::$data_record

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

ilLMObject::$description

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

Referenced by getDescription().

ilLMObject::$id
ilLMObject::$ilias

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

Referenced by ilLMObject(), and pasteTree().

ilLMObject::$meta_data

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

ilLMObject::$title

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

Referenced by ilLMPageObject\exportFO(), getTitle(), and saveTitles().


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