Public Member Functions | Data Fields

ilStructureObject Class Reference
[Modules/IliasLearningModule]

Class ilStructreObject. More...

Inheritance diagram for ilStructureObject:
Collaboration diagram for ilStructureObject:

Public Member Functions

 ilStructureObject (&$a_content_obj, $a_id=0)
 Constructor public.
 create ($a_upload=false)
 delete ($a_delete_meta_data=true)
 delete lm object data
 delete_rec (&$a_tree, $a_delete_meta_data=true)
 private
copy (&$a_target_tree, $a_parent, $a_pos=IL_LAST_NODE)
 copy chapter
 exportXML (&$a_xml_writer, $a_inst, &$expLog)
 export object to xml (see ilias_co.dtd)
 exportXMLMetaData (&$a_xml_writer)
 export structure objects meta data to xml (see ilias_co.dtd)
 modifyExportIdentifier ($a_tag, $a_param, $a_value)
 _getPresentationTitle ($a_st_id, $a_include_numbers=false)
 get presentation title
 exportXMLPageObjects (&$a_xml_writer, $a_inst=0)
 export page objects of structure object (see ilias_co.dtd)
 exportXMLStructureObjects (&$a_xml_writer, $a_inst, &$expLog)
 export (sub)structure objects of structure object (see ilias_co.dtd)
 exportFO (&$a_xml_writer)
 export object to fo
 exportFOPageObjects (&$a_xml_writer)
 export page objects of structure object (see ilias_co.dtd)

Data Fields

 $is_alias
 $origin_id
 $tree

Detailed Description

Class ilStructreObject.

Handles StructureObjects of ILIAS Learning Modules (see ILIAS DTD)

Author:
Alex Killing <alex.killing@gmx.de>
Version:
Id:
class.ilStructureObject.php 11711 2006-07-30 14:11:38Z akill

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


Member Function Documentation

ilStructureObject::_getPresentationTitle ( a_st_id,
a_include_numbers = false 
)

get presentation title

Definition at line 205 of file class.ilStructureObject.php.

References $query, $tree, and $tree_set.

Referenced by ilLMTOCExplorer::buildTitle(), ilTableOfContentsExplorer::buildTitle(), ilLMEditorExplorer::buildTitle(), ilObjContentObjectGUI::chapters(), ilLMPresentationGUI::ilLocator(), ilLMPresentationGUI::showPrintView(), ilLMPresentationGUI::showPrintViewSelection(), and ilStructureObjectGUI::subchap().

        {
                global $ilDB;

                // get chapter data
                $query = "SELECT * FROM lm_data WHERE obj_id = '".$a_st_id."'";
                $st_set = $ilDB->query($query);
                $st_rec = $st_set->fetchRow(DB_FETCHMODE_ASSOC);

                $tree = new ilTree($st_rec["lm_id"]);
                $tree->setTableNames('lm_tree','lm_data');
                $tree->setTreeTablePK("lm_id");

                if ($a_include_numbers)
                {
                        if ($tree->isInTree($st_rec["obj_id"]))
                        {
                                // get chapter tree node
                                $query = "SELECT * FROM lm_tree WHERE child = ".
                                        $ilDB->quote($a_st_id)." AND lm_id = ".
                                        $ilDB->quote($st_rec["lm_id"]);
                                $tree_set = $ilDB->query($query);
                                $tree_node = $tree_set->fetchRow(DB_FETCHMODE_ASSOC);
                                $depth = $tree_node["depth"];

                                $nr = $tree->getChildSequenceNumber($tree_node, "st")." ";
                                for ($i = $depth - 1; $i > 1; $i --)
                                {
                                        // get next parent tree node
                                        $query = "SELECT * FROM lm_tree WHERE child = ".
                                        $ilDB->quote($tree_node["parent"])." AND lm_id = ".
                                        $ilDB->quote($st_rec["lm_id"]);
                                        $tree_set = $ilDB->query($query);
                                        $tree_node = $tree_set->fetchRow(DB_FETCHMODE_ASSOC);
                                        $seq = $tree->getChildSequenceNumber($tree_node, "st");

                                        $nr = $seq.".".$nr;
                                }
                        }
                }

                return $nr.$st_rec["title"];
        }

Here is the caller graph for this function:

& ilStructureObject::copy ( &$  a_target_tree,
a_parent,
a_pos = IL_LAST_NODE 
)

copy chapter

Definition at line 98 of file class.ilStructureObject.php.

References ilLMObject::getContentObject(), ilLMObject::getDescription(), ilLMObject::getId(), ilLMObjectFactory::getInstance(), ilObjectFactory::getInstanceByObjId(), ilLMObject::getLMId(), ilLMObject::getTitle(), ilLMObject::getType(), and ilStructureObject().

        {
                $lm =& $this->getContentObject();
                $source_tree = new ilTree($lm->getId());
                $source_tree->setTableNames('lm_tree','lm_data');
                $source_tree->setTreeTablePK("lm_id");

                // copy chapter
                $target_lm_id = $a_target_tree->getTreeId();
                $target_lm = ilObjectFactory::getInstanceByObjId($target_lm_id);
                $chap =& new ilStructureObject($target_lm);
                $chap->setTitle($this->getTitle());
                $chap->setLMId($target_lm_id);
                $chap->setType($this->getType());
                $chap->setDescription($this->getDescription());
                $chap->create(true);
                
                // copy meta data
                include_once("Services/MetaData/classes/class.ilMD.php");
                $md = new ilMD($this->getLMId(), $this->getId(), $this->getType());
                $new_md =& $md->cloneMD($target_lm_id, $chap->getId(), $this->getType());
                
                // insert chapter in tree
                $a_target_tree->insertNode($chap->getId(), $a_parent, $a_pos);

                $childs =& $source_tree->getChilds($this->getId());
                foreach($childs as $child)
                {
                        $lmobj = ilLMObjectFactory::getInstance($this->getContentObject(), $child["obj_id"], true);
                        if ($child["type"] == "st")
                        {
                                $newobj =& $lmobj->copy($a_target_tree, $chap->getId());
                        }
                        else
                        {
                                $newobj =& $lmobj->copyToOtherContObject($target_lm);
                                $a_target_tree->insertNode($newobj->getId(), $chap->getId());
                        }
                }

                return $chap;
        }

Here is the call graph for this function:

ilStructureObject::create ( a_upload = false  ) 

Reimplemented from ilLMObject.

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

        {
                parent::create($a_upload);
        }

ilStructureObject::delete ( a_delete_meta_data = true  ) 

delete lm object data

Reimplemented from ilLMObject.

Definition at line 60 of file class.ilStructureObject.php.

References delete_rec(), and ilLMObject::getId().

Referenced by delete_rec().

        {
                $this->tree = new ilTree($this->getLmId());
                $this->tree->setTableNames('lm_tree', 'lm_data');
                $this->tree->setTreeTablePK("lm_id");
                $node_data = $this->tree->getNodeData($this->getId());
                $this->delete_rec($this->tree, $a_delete_meta_data);
                $this->tree->deleteTree($node_data);
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilStructureObject::delete_rec ( &$  a_tree,
a_delete_meta_data = true 
)

private

Definition at line 73 of file class.ilStructureObject.php.

References delete(), ilLMObject::getId(), and ilLMObjectFactory::getInstance().

Referenced by delete().

        {
                $childs = $a_tree->getChilds($this->getId());
                foreach ($childs as $child)
                {
                        $obj =& ilLMObjectFactory::getInstance($this->content_object, $child["obj_id"], false);
                        if (is_object($obj))
                        {
                                if($obj->getType() == "st")
                                {
                                        $obj->delete_rec($a_tree, $a_delete_meta_data);
                                }
                                if($obj->getType() == "pg")
                                {
                                        $obj->delete($a_delete_meta_data);
                                }
                        }
                        unset($obj);
                }
                parent::delete($a_delete_meta_data);
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilStructureObject::exportFO ( &$  a_xml_writer  ) 

export object to fo

Parameters:
object $a_xml_writer ilXmlWriter object that receives the xml data

Definition at line 322 of file class.ilStructureObject.php.

References $ilBench, exportFOPageObjects(), and ilLMObject::getTitle().

        {
                global $ilBench;

                //$expLog->write(date("[y-m-d H:i:s] ")."Structure Object ".$this->getId());

                // fo:block (complete)
                $attrs = array();
                $attrs["font-family"] = "Times";
                $attrs["font-size"] = "14pt";
                $a_xml_writer->xmlElement("fo:block", $attrs, $this->getTitle());

                // page objects
                //$ilBench->start("ContentObjectExport", "exportStructureObject_exportPageObjects");
                $this->exportFOPageObjects($a_xml_writer);
                //$ilBench->stop("ContentObjectExport", "exportStructureObject_exportPageObjects");

                // structure objects
                //$this->exportFOStructureObjects($a_xml_writer);

        }

Here is the call graph for this function:

ilStructureObject::exportFOPageObjects ( &$  a_xml_writer  ) 

export page objects of structure object (see ilias_co.dtd)

Parameters:
object $a_xml_writer ilXmlWriter object that receives the xml data

Definition at line 350 of file class.ilStructureObject.php.

References $ilBench, ilLMObject::getContentObject(), and ilLMObject::getId().

Referenced by exportFO().

        {
                global $ilBench;

                $this->tree = new ilTree($this->getLmId());
                $this->tree->setTableNames('lm_tree', 'lm_data');
                $this->tree->setTreeTablePK("lm_id");

                $childs = $this->tree->getChilds($this->getId());
                foreach ($childs as $child)
                {
                        if($child["type"] != "pg")
                        {
                                continue;
                        }

                        // export xml to writer object
                        //$ilBench->start("ContentObjectExport", "exportStructureObject_exportPageObjectAlias");

                        $page_obj = new ilLMPageObject($this->getContentObject(), $child["obj_id"]);
                        $page_obj->exportFO($a_xml_writer);

                        //$ilBench->stop("ContentObjectExport", "exportStructureObject_exportPageObjectAlias");
                }
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilStructureObject::exportXML ( &$  a_xml_writer,
a_inst,
&$  expLog 
)

export object to xml (see ilias_co.dtd)

Parameters:
object $a_xml_writer ilXmlWriter object that receives the xml data

Definition at line 147 of file class.ilStructureObject.php.

References $ilBench, exportXMLMetaData(), exportXMLPageObjects(), exportXMLStructureObjects(), and ilLMObject::getId().

        {
                global $ilBench;

                $expLog->write(date("[y-m-d H:i:s] ")."Structure Object ".$this->getId());
                $attrs = array();
                $a_xml_writer->xmlStartTag("StructureObject", $attrs);

                // MetaData
                $ilBench->start("ContentObjectExport", "exportStructureObject_exportMeta");
                $this->exportXMLMetaData($a_xml_writer);
                $ilBench->stop("ContentObjectExport", "exportStructureObject_exportMeta");

                // StructureObjects
                $ilBench->start("ContentObjectExport", "exportStructureObject_exportPageObjects");
                $this->exportXMLPageObjects($a_xml_writer, $a_inst);
                $ilBench->stop("ContentObjectExport", "exportStructureObject_exportPageObjects");

                // PageObjects
                $this->exportXMLStructureObjects($a_xml_writer, $a_inst, $expLog);

                // Layout
                // not implemented

                $a_xml_writer->xmlEndTag("StructureObject");
        }

Here is the call graph for this function:

ilStructureObject::exportXMLMetaData ( &$  a_xml_writer  ) 

export structure objects meta data to xml (see ilias_co.dtd)

Parameters:
object $a_xml_writer ilXmlWriter object that receives the xml data

Definition at line 181 of file class.ilStructureObject.php.

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

Referenced by exportXML().

        {
                include_once("Services/MetaData/classes/class.ilMD2XML.php");
                $md2xml = new ilMD2XML($this->getLMId(), $this->getId(), $this->getType());
                $md2xml->setExportMode(true);
                $md2xml->startExport();
                $a_xml_writer->appendXML($md2xml->getXML());
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilStructureObject::exportXMLPageObjects ( &$  a_xml_writer,
a_inst = 0 
)

export page objects of structure object (see ilias_co.dtd)

Parameters:
object $a_xml_writer ilXmlWriter object that receives the xml data

Definition at line 257 of file class.ilStructureObject.php.

References $ilBench, ilLMPageObject::_exportXMLAlias(), and ilLMObject::getId().

Referenced by exportXML().

        {
                include_once './content/classes/class.ilLMPageObject.php';

                global $ilBench;

                $this->tree = new ilTree($this->getLmId());
                $this->tree->setTableNames('lm_tree', 'lm_data');
                $this->tree->setTreeTablePK("lm_id");

                $childs = $this->tree->getChilds($this->getId());
                foreach ($childs as $child)
                {
                        if($child["type"] != "pg")
                        {
                                continue;
                        }

                        // export xml to writer object
                        $ilBench->start("ContentObjectExport", "exportStructureObject_exportPageObjectAlias");
                        //$ilBench->start("ContentObjectExport", "exportStructureObject_getLMPageObject");
                        //$page_obj = new ilLMPageObject($this->getContentObject(), $child["obj_id"]);
                        //$ilBench->stop("ContentObjectExport", "exportStructureObject_getLMPageObject");
                        ilLMPageObject::_exportXMLAlias($a_xml_writer, $child["obj_id"], $a_inst);
                        //$page_obj->exportXML($a_xml_writer, "alias", $a_inst);
                        //unset($page_obj);
                        $ilBench->stop("ContentObjectExport", "exportStructureObject_exportPageObjectAlias");
                }
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilStructureObject::exportXMLStructureObjects ( &$  a_xml_writer,
a_inst,
&$  expLog 
)

export (sub)structure objects of structure object (see ilias_co.dtd)

Parameters:
object $a_xml_writer ilXmlWriter object that receives the xml data

Definition at line 294 of file class.ilStructureObject.php.

References ilLMObject::getContentObject(), ilLMObject::getId(), and ilStructureObject().

Referenced by exportXML().

        {
                $this->tree = new ilTree($this->getLmId());
                $this->tree->setTableNames('lm_tree', 'lm_data');
                $this->tree->setTreeTablePK("lm_id");

                $childs = $this->tree->getChilds($this->getId());
                foreach ($childs as $child)
                {
                        if($child["type"] != "st")
                        {
                                continue;
                        }

                        // export xml to writer object
                        $structure_obj = new ilStructureObject($this->getContentObject(),
                                $child["obj_id"]);
                        $structure_obj->exportXML($a_xml_writer, $a_inst, $expLog);
                        unset($structure_obj);
                }
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilStructureObject::ilStructureObject ( &$  a_content_obj,
a_id = 0 
)

Constructor public.

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

References ilLMObject::ilLMObject(), and ilLMObject::setType().

Referenced by copy(), and exportXMLStructureObjects().

        {
                $this->setType("st");
                parent::ilLMObject($a_content_obj, $a_id);
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilStructureObject::modifyExportIdentifier ( a_tag,
a_param,
a_value 
)

Definition at line 190 of file class.ilStructureObject.php.

References ilLMObject::getId().

        {
                if ($a_tag == "Identifier" && $a_param == "Entry")
                {
                        $a_value = "il_".IL_INST_ID."_st_".$this->getId();
                        //$a_value = ilUtil::insertInstIntoID($a_value);
                }

                return $a_value;
        }

Here is the call graph for this function:


Field Documentation

ilStructureObject::$is_alias

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

ilStructureObject::$origin_id

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

ilStructureObject::$tree

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

Referenced by _getPresentationTitle().


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