/**
  * Constructor
  */
 public function __construct($a_parent_obj, $a_parent_cmd, $a_slm)
 {
     global $ilUser;
     $this->slm = $a_slm;
     $tree = new ilTree($this->slm->getId());
     $tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node');
     $tree->setTreeTablePK("slm_id");
     parent::__construct("scorm_ed_exp", $a_parent_obj, $a_parent_cmd, $tree);
     //$this->setTypeWhiteList(array("du", "chap", "page"));
     $this->setSkipRootNode(false);
     $this->setAjax(false);
 }
Ejemplo n.º 2
0
 function __construct()
 {
     parent::__construct(1);
     // only one skill tree, with ID 1
     $this->setTreeTablePK("skl_tree_id");
     $this->setTableNames('skl_tree', 'skl_tree_node');
 }
Ejemplo n.º 3
0
 public function __construct($a_tree_id)
 {
     parent::__construct($a_tree_id, self::lookupRootId($a_tree_id));
     $this->setObjectTablePK('obj_id');
     $this->setTableNames('ecs_cms_tree', 'ecs_cms_data');
     $this->useCache(false);
 }
Ejemplo n.º 4
0
 /**
  * Constructor
  *
  * @param integer $a_tree_id tree id
  */
 private function __construct($a_tree_id)
 {
     parent::ilTree($a_tree_id);
     $this->setTableNames('lm_tree', 'lm_data');
     $this->setTreeTablePK("lm_id");
     $this->useCache(true);
 }
 public function parentHasSeqTemplate($a_slm_id)
 {
     require_once "./Modules/Scorm2004/classes/seq_editor/class.ilSCORM2004SeqTemplate.php";
     global $ilDB, $ilLog;
     $has_template = false;
     $mtree = new ilTree($a_slm_id);
     $mtree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node');
     $mtree->setTreeTablePK("slm_id");
     //get all parents for current node
     $parents = $this->getParentsForNode($a_parents = array(), $this->id);
     for ($i = 0; $i < count($parents); $i++) {
         $template = ilSCORM2004SeqTemplate::templateForChapter($parents[$i]);
         if ($template) {
             $has_template = true;
             break;
         }
     }
     return $has_template;
 }
 public function getPossibleItems($a_ref_id)
 {
     if (!isset(self::$possible_items[$a_ref_id])) {
         $obj_id = ilObject::_lookupObjectId($a_ref_id);
         $items = array();
         // only top-level chapters
         include_once "Services/MetaData/classes/class.ilMDEducational.php";
         $tree = new ilTree($obj_id);
         $tree->setTableNames('lm_tree', 'lm_data');
         $tree->setTreeTablePK("lm_id");
         foreach ($tree->getChilds($tree->readRootId()) as $child) {
             if ($child["type"] == "st") {
                 $child["tlt"] = ilMDEducational::_getTypicalLearningTimeSeconds($obj_id, $child["obj_id"]);
                 $items[$child["obj_id"]] = $child;
             }
         }
         self::$possible_items[$a_ref_id] = $items;
     }
     return self::$possible_items[$a_ref_id];
 }
Ejemplo n.º 7
0
 public function __construct($a_tree_id, $a_root_id = 0)
 {
     parent::__construct($a_tree_id, $a_root_id);
     $this->setTableNames('tree_workspace', 'object_data', 'object_reference_ws');
     $this->setTreeTablePK('tree');
     $this->setObjectTablePK('obj_id');
     $this->setReferenceTablePK('wsp_id');
     // ilTree sets it to ROOT_FOLDER_ID if not given...
     if (!$a_root_id) {
         $this->readRootId();
     }
 }
Ejemplo n.º 8
0
 public function __construct()
 {
     parent::__construct(self::ROOT_UNIT_ID);
     $this->tree_id = self::TREE_ID;
     $this->table_tree = 'org_unit_tree';
     $this->table_obj_data = 'org_unit_data';
     $this->table_obj_reference = '';
     $this->tree_pk = 'tree';
     $this->obj_pk = 'ou_id';
     $this->ref_pk = '';
     $this->gap = 0;
 }
Ejemplo n.º 9
0
 protected function addAdminLocatorItems()
 {
     $path = $this->tree->getPathFull($_GET["ref_id"], ilObjOrgUnit::getRootOrgRefId());
     // add item for each node on path
     foreach ((array) $path as $key => $row) {
         if ($row["title"] == "__OrgUnitAdministration") {
             $row["title"] = $this->lng->txt("objs_orgu");
         }
         $this->ctrl->setParameterByClass("ilobjorgunitgui", "ref_id", $row["child"]);
         $this->ilLocator->addItem($row["title"], $this->ctrl->getLinkTargetByClass("ilobjorgunitgui", "view"), ilFrameTargetInfo::_getFrame("MainContent"), $row["child"]);
         $this->ctrl->setParameterByClass("ilobjorgunitgui", "ref_id", $_GET["ref_id"]);
     }
 }
 public function __construct($a_tree_id, $a_root_id = 0)
 {
     parent::__construct($a_tree_id, $a_root_id);
     $this->table_tree = 'tree_workspace';
     $this->table_obj_data = 'object_data';
     $this->table_obj_reference = 'object_reference_ws';
     $this->ref_pk = 'wsp_id';
     $this->obj_pk = 'obj_id';
     $this->tree_pk = 'tree';
     // ilTree sets it to ROOT_FOLDER_ID if not given...
     if (!$a_root_id) {
         $this->root_id = $this->readRootId();
     }
 }
 /**
  * Call this before using getHTML()
  * @access	public
  * @return	ilMailFolderTableGUI
  * @final
  *
  */
 public final function prepareHTML()
 {
     global $ilUser;
     $this->addColumn('', '', '1px', true);
     $this->addColumn($this->lng->txt('personal_picture'), '', '10%');
     if ($this->isDraftFolder() || $this->isSentFolder()) {
         $this->addColumn($this->lng->txt('recipient'), 'rcp_to', '25%');
     } else {
         $this->addColumn($this->lng->txt('sender'), 'from', '25%');
     }
     $this->addColumn($this->lng->txt('subject'), 'm_subject', '40%');
     $this->addColumn($this->lng->txt('date'), 'send_time', '20%');
     // init folder data
     $mtree = new ilTree($ilUser->getId());
     $mtree->setTableNames('mail_tree', 'mail_obj_data');
     $this->_folderNode = $mtree->getNodeData($this->_currentFolderId);
     // command buttons
     $this->initCommandButtons();
     // mail actions
     $this->initMultiCommands($this->_parentObject->mbox->getActions($this->_currentFolderId));
     // fetch table data
     $this->fetchTableData();
     return $this;
 }
 /**
  * @param integer $poolId
  * @return string
  */
 public function getQuestionPoolPathString($poolId)
 {
     $nodePath = $this->tree->getNodePath(current(ilObject::_getAllReferences($poolId)));
     $questionPoolPathString = '';
     $i = 0;
     $j = count($nodePath) - 2;
     foreach ($nodePath as $node) {
         if ($i > 0) {
             $questionPoolPathString .= ' > ';
         }
         $questionPoolPathString .= $node['title'];
         if ($i == $j) {
             break;
         }
         $i++;
     }
     return $questionPoolPathString;
 }
 /**
  * Create new admin object node
  * 
  * @param string $a_id
  * @param string $a_title
  */
 public static function addAdminNode($a_obj_type, $a_title)
 {
     global $ilDB, $tree;
     if (self::getObjectTypeId($a_obj_type)) {
         return;
     }
     $obj_type_id = self::addNewType($a_obj_type, $a_title);
     $obj_id = $ilDB->nextId('object_data');
     $ilDB->manipulate("INSERT INTO object_data " . "(obj_id, type, title, description, owner, create_date, last_update) VALUES (" . $ilDB->quote($obj_id, "integer") . "," . $ilDB->quote($a_obj_type, "text") . "," . $ilDB->quote($a_title, "text") . "," . $ilDB->quote($a_title, "text") . "," . $ilDB->quote(-1, "integer") . "," . $ilDB->now() . "," . $ilDB->now() . ")");
     $ref_id = $ilDB->nextId('object_reference');
     $ilDB->manipulate("INSERT INTO object_reference " . "(obj_id, ref_id) VALUES (" . $ilDB->quote($obj_id, "integer") . "," . $ilDB->quote($ref_id, "integer") . ")");
     // put in tree
     $tree = new ilTree(ROOT_FOLDER_ID);
     $tree->insertNode($ref_id, SYSTEM_FOLDER_ID);
     $rbac_ops = array(self::RBAC_OP_EDIT_PERMISSIONS, self::RBAC_OP_VISIBLE, self::RBAC_OP_READ, self::RBAC_OP_WRITE);
     self::addRBACOperations($obj_type_id, $rbac_ops);
 }
Ejemplo n.º 14
0
 /**
  * removes objects from system
  * 
  * @access	private
  * @param	array	list of objects
  * @return	boolean
  */
 function purgeObjects($a_nodes)
 {
     global $ilias, $ilLog;
     // Get purge limits
     $count_limit = $ilias->account->getPref("systemcheck_count_limit");
     if (!is_numeric($count_limit) || $count_limit < 0) {
         $count_limit = count($a_nodes);
     }
     $timestamp_limit = time();
     $age_limit = $ilias->account->getPref("systemcheck_age_limit");
     if (is_numeric($age_limit) && $age_limit > 0) {
         $timestamp_limit -= $age_limit * 60 * 60 * 24;
     }
     $type_limit = $ilias->account->getPref("systemcheck_type_limit");
     if ($type_limit) {
         $type_limit = trim($type_limit);
         if (strlen($type_limit) == 0) {
             $type_limit = null;
         }
     }
     // handle wrong input
     if (!is_array($a_nodes)) {
         $this->throwError(INVALID_PARAM, WARNING, DEBUG);
         return false;
     }
     // start delete process
     $this->writeScanLogLine("action\tref_id\tobj_id\ttype\telapsed\ttitle");
     $count = 0;
     foreach ($a_nodes as $node) {
         if ($type_limit && $node['type'] != $type_limit) {
             $this->writeScanLogLine("skip\t" . $node['child'] . "\t\t" . $node['type'] . "\t\t" . $node['title']);
             continue;
         }
         $count++;
         if ($count > $count_limit) {
             $this->writeScanLogLine("Stopped purging after " . ($count - 1) . " objects, because count limit was reached: " . $count_limit);
             break;
         }
         if ($node["deleted_timestamp"] > $timestamp_limit) {
             $this->writeScanLogLine("Stopped purging after " . ($count - 1) . " objects, because timestamp limit was reached: " . date("c", $timestamp_limit));
             continue;
         }
         $ref_id = $node["child"] ? $node["child"] : $node["ref_id"];
         $node_obj =& $ilias->obj_factory->getInstanceByRefId($ref_id, false);
         if ($node_obj === false) {
             $this->invalid_objects[] = $node;
             continue;
         }
         $message = sprintf('%s::purgeObjects(): Removing object (id:%s ref:%s)', get_class($this), $ref_id, $node_obj->getId());
         $ilLog->write($message, $ilLog->WARNING);
         $startTime = microtime(true);
         $node_obj->delete();
         ilTree::_removeEntry($node["tree"], $ref_id);
         $endTime = microtime(true);
         $this->writeScanLogLine("purged\t" . $ref_id . "\t" . $node_obj->getId() . "\t" . $node['type'] . "\t" . round($endTime - $startTime, 1) . "\t" . $node['title']);
     }
     $this->findInvalidChilds();
     $this->removeInvalidChilds();
     return true;
 }
Ejemplo n.º 15
0
 /**
  * get path ids (adjacenca and nested set)
  * @group IL_Init
  * @param
  * @return
  */
 public function testAllOthers()
 {
     $tree = new ilTree(ROOT_FOLDER_ID);
     $d = $tree->getDepth(24);
     $this->assertEquals($d, 4);
     $node = $tree->getNodeData(24);
     $this->assertEquals($node['title'], 'Public chat');
     $bool = $tree->isInTree(24);
     $this->assertEquals($bool, true);
     $bool = $tree->isInTree(24242424);
     $this->assertEquals($bool, false);
     /* ref_id 14 => obj_id 98 does not exist
     		$node = $tree->getParentNodeData(24);
     		$this->assertEquals($node['title'],'Chat-Server');
     		*/
     $bool = $tree->isGrandChild(9, 24);
     $this->assertEquals($bool, 1);
     /* see above
     		$node = $tree->getNodeDataByType('chac');
     		$this->assertEquals($node[0]['title'],'Chat-Server');
     		*/
     $bool = $tree->isDeleted(24);
     $this->assertEquals($bool, false);
     $id = $tree->getParentId(24);
     $this->assertEquals($id, 14);
     $lft = $tree->getLeftValue(24);
     $this->assertEquals($lft, 14);
     $seq = $tree->getChildSequenceNumber($tree->getNodeData(24));
     $this->assertEquals($seq, 1);
     $tree->getNodePath(9, 1);
     $max_depth = $tree->getMaximumDepth();
     // Round trip
     $tree = new ilTree(ROOT_FOLDER_ID);
     $suc = $tree->fetchSuccessorNode(16);
     // cals
     $cals = $tree->fetchPredecessorNode($suc['child']);
     $this->assertEquals($cals['child'], 16);
 }
 /**
  * Delete chapters/scos/pages
  */
 function confirmedDelete($a_redirect = true)
 {
     global $ilCtrl;
     $tree = new ilTree($this->object->getId());
     $tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node');
     $tree->setTreeTablePK("slm_id");
     // delete all selected objects
     include_once "./Modules/Scorm2004/classes/class.ilSCORM2004NodeFactory.php";
     foreach ($_POST["id"] as $id) {
         if ($id != IL_FIRST_NODE) {
             $obj = ilSCORM2004NodeFactory::getInstance($this->object, $id, false);
             $node_data = $tree->getNodeData($id);
             if (is_object($obj)) {
                 $obj->setSLMId($this->object->getId());
                 /*include_once("./Services/History/classes/class.ilHistory.php");
                 	 ilHistory::_createEntry($this->object->getId(), "delete_".$obj->getType(),
                 		array(ilLMObject::_lookupTitle($id), $id),
                 		$this->object->getType());*/
                 $obj->delete();
             }
             if ($tree->isInTree($id)) {
                 $tree->deleteTree($node_data);
             }
         }
     }
     // check the tree
     //		$this->object->checkTree();
     // feedback
     ilUtil::sendInfo($this->lng->txt("info_deleted"), true);
     if ($a_redirect) {
         $ilCtrl->redirect($this, "showOrganization");
     }
 }
Ejemplo n.º 17
0
?>
<#2745>
<?php 
// media object and media pool settings
// register new object type 'mobs' for media pool and media object settings
$id = $ilDB->nextId("object_data");
$ilDB->manipulateF("INSERT INTO object_data (obj_id, type, title, description, owner, create_date, last_update) " . "VALUES (%s, %s, %s, %s, %s, %s, %s)", array("integer", "text", "text", "text", "integer", "timestamp", "timestamp"), array($id, "typ", "mobs", "Media Object/Pool settings", -1, ilUtil::now(), ilUtil::now()));
$typ_id = $id;
// create object data entry
$id = $ilDB->nextId("object_data");
$ilDB->manipulateF("INSERT INTO object_data (obj_id, type, title, description, owner, create_date, last_update) " . "VALUES (%s, %s, %s, %s, %s, %s, %s)", array("integer", "text", "text", "text", "integer", "timestamp", "timestamp"), array($id, "mobs", "__MediaObjectSettings", "Media Object/Pool Settings", -1, ilUtil::now(), ilUtil::now()));
// create object reference entry
$ref_id = $ilDB->nextId('object_reference');
$res = $ilDB->manipulateF("INSERT INTO object_reference (ref_id, obj_id) VALUES (%s, %s)", array("integer", "integer"), array($ref_id, $id));
// put in tree
$tree = new ilTree(ROOT_FOLDER_ID);
$tree->insertNode($ref_id, SYSTEM_FOLDER_ID);
// add rbac operations
// 1: edit_permissions, 2: visible, 3: read, 4:write
$ilDB->manipulateF("INSERT INTO rbac_ta (typ_id, ops_id) VALUES (%s, %s)", array("integer", "integer"), array($typ_id, 1));
$ilDB->manipulateF("INSERT INTO rbac_ta (typ_id, ops_id) VALUES (%s, %s)", array("integer", "integer"), array($typ_id, 2));
$ilDB->manipulateF("INSERT INTO rbac_ta (typ_id, ops_id) VALUES (%s, %s)", array("integer", "integer"), array($typ_id, 3));
$ilDB->manipulateF("INSERT INTO rbac_ta (typ_id, ops_id) VALUES (%s, %s)", array("integer", "integer"), array($typ_id, 4));
?>
<#2746>
<?php 
$ilCtrlStructureReader->getStructure();
?>
<#2747>
<?php 
$ilDB->createTable("mep_item", array('id' => array('type' => 'integer', 'length' => 4, 'notnull' => true), 'type' => array('type' => 'text', 'length' => 10, 'notnull' => false), 'title' => array('type' => 'text', 'length' => 128, 'notnull' => false), 'foreign_id' => array('type' => 'integer', 'length' => 4, 'notnull' => false)));
 /**
  * delete page object or structure objects
  *
  * @param	int		$a_parent_subobj_id		id of parent object (structure object)
  *											of the objects, that should be deleted
  *											(or no parent object id for top level)
  */
 function confirmedDelete($a_parent_subobj_id = 0)
 {
     $tree = new ilTree($this->object->getId());
     $tree->setTableNames('lm_tree', 'lm_data');
     $tree->setTreeTablePK("lm_id");
     // check number of objects
     if (!$_POST["id"]) {
         $this->ilias->raiseError($this->lng->txt("no_checkbox"), $this->ilias->error_obj->MESSAGE);
     }
     // delete all selected objects
     foreach ($_POST["id"] as $id) {
         if ($id != IL_FIRST_NODE) {
             $obj =& ilLMObjectFactory::getInstance($this->object, $id, false);
             $node_data = $tree->getNodeData($id);
             if (is_object($obj)) {
                 $obj->setLMId($this->object->getId());
                 include_once "./Services/History/classes/class.ilHistory.php";
                 ilHistory::_createEntry($this->object->getId(), "delete_" . $obj->getType(), array(ilLMObject::_lookupTitle($id), $id), $this->object->getType());
                 $obj->delete();
             }
             if ($tree->isInTree($id)) {
                 $tree->deleteTree($node_data);
             }
         }
     }
     // check the tree
     $this->object->checkTree();
     // feedback
     ilUtil::sendSuccess($this->lng->txt("info_deleted"), true);
     if ($a_parent_subobj_id == 0) {
         $this->ctrl->redirect($this, $_GET["backcmd"]);
     }
 }
Ejemplo n.º 19
0
 /**
  * split page to next page at hierarchical id
  *
  * the main reason for this method being static is that a lm page
  * object is not available within ilPageContentGUI where this method
  * is called
  */
 function _splitPageNext($a_page_id, $a_pg_parent_type, $a_hier_id)
 {
     // get content object (learning module / digilib book)
     $lm_id = ilLMObject::_lookupContObjID($a_page_id);
     $type = ilObject::_lookupType($lm_id, false);
     switch ($type) {
         case "lm":
             include_once "./Modules/LearningModule/classes/class.ilObjLearningModule.php";
             $cont_obj = new ilObjLearningModule($lm_id, false);
             break;
         case "dbk":
             include_once "./Modules/LearningModule/classes/class.ilObjDlBook.php";
             $cont_obj = new ilObjDlBook($lm_id, false);
             break;
     }
     $tree = new ilTree($cont_obj->getId());
     $tree->setTableNames('lm_tree', 'lm_data');
     $tree->setTreeTablePK("lm_id");
     $source_lm_page =& new ilLMPageObject($cont_obj, $a_page_id);
     $source_page =& $source_lm_page->getPageObject();
     // get next page
     $succ = $tree->fetchSuccessorNode($a_page_id, "pg");
     if ($succ["child"] > 0) {
         $target_lm_page =& new ilLMPageObject($cont_obj, $succ["child"]);
         $target_page =& $target_lm_page->getPageObject();
         $target_page->buildDom();
         $target_page->addHierIds();
         // move nodes to target page
         $source_page->buildDom();
         $source_page->addHierIds();
         ilLMPage::_moveContentAfterHierId($source_page, $target_page, $a_hier_id);
         //$source_page->deleteContentFromHierId($a_hier_id);
         return $succ["child"];
     }
 }
Ejemplo n.º 20
0
 public function switchTree()
 {
     $set = new ilSetting('common');
     $type = $set->get('main_tree_impl', 'ns') == 'ns' ? 'ns' : 'mp';
     if ($type == 'ns' and $_POST['tree_impl_type'] == 'mp') {
         // To mp
         include_once './Services/Tree/classes/class.ilMaterializedPathTree.php';
         ilMaterializedPathTree::createFromParentReleation();
         $set->set('main_tree_impl', 'mp');
     } elseif ($type == 'mp' and $_POST['tree_impl_type'] == 'ns') {
         include_once './Services/Tree/classes/class.ilTree.php';
         $GLOBALS['ilSetting'] = $set;
         $tree = new ilTree(1);
         $tree->renumber(1);
         $set->set('main_tree_impl', 'ns');
     }
     ilUtil::sendInfo($this->lng->txt("tree_implementation_switched"), true);
     $this->displayTools();
 }
 /**
  * get last accessed page
  *
  * @param	int		$a_obj_id	content object id
  * @param	int		$a_user_id	user object id
  */
 function _getLastAccessedPage($a_ref_id, $a_user_id = "")
 {
     global $ilDB, $ilUser;
     if ($a_user_id == "") {
         $a_user_id = $ilUser->getId();
     }
     if (isset(self::$lo_access[$a_ref_id])) {
         $acc_rec["obj_id"] = self::$lo_access[$a_ref_id];
     } else {
         $q = "SELECT * FROM lo_access WHERE " . "usr_id = " . $ilDB->quote($a_user_id, "integer") . " AND " . "lm_id = " . $ilDB->quote($a_ref_id, "integer");
         $acc_set = $ilDB->query($q);
         $acc_rec = $ilDB->fetchAssoc($acc_set);
     }
     if ($acc_rec["obj_id"] > 0) {
         $lm_id = ilObject::_lookupObjId($a_ref_id);
         $mtree = new ilTree($lm_id);
         $mtree->setTableNames('lm_tree', 'lm_data');
         $mtree->setTreeTablePK("lm_id");
         if ($mtree->isInTree($acc_rec["obj_id"])) {
             return $acc_rec["obj_id"];
         }
     }
     return 0;
 }
Ejemplo n.º 22
0
 function exportXMLPageObjects($a_target_dir, &$a_xml_writer, $a_inst, &$expLog)
 {
     global $ilBench;
     include_once "./Modules/Scorm2004/classes/class.ilSCORM2004PageNode.php";
     include_once "./Modules/Scorm2004/classes/class.ilSCORM2004Page.php";
     $tree = new ilTree($this->slm_id);
     $tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node');
     $tree->setTreeTablePK("slm_id");
     $pages = $tree->getSubTree($tree->getNodeData($this->getId()), true, 'page');
     foreach ($pages as $page) {
         $expLog->write(date("[y-m-d H:i:s] ") . "Page Object " . $page["obj_id"]);
         // export xml to writer object
         $page_obj = new ilSCORM2004Page($page["obj_id"]);
         $page_obj->exportXML($a_xml_writer, "normal", $a_inst);
         //collect media objects
         $mob_ids = $page_obj->getMediaObjectIds();
         foreach ($mob_ids as $mob_id) {
             $this->mob_ids[$mob_id] = $mob_id;
         }
         // collect all file items
         $file_ids = $page_obj->getFileItemIds();
         foreach ($file_ids as $file_id) {
             $this->file_ids[$file_id] = $file_id;
         }
         include_once "./Services/COPage/classes/class.ilPCQuestion.php";
         $q_ids = ilPCQuestion::_getQuestionIdsForPage("sahs", $page["obj_id"]);
         if (count($q_ids) > 0) {
             include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php";
             foreach ($q_ids as $q_id) {
                 $q_obj =& assQuestion::_instanciateQuestion($q_id);
                 $qti_file = fopen($a_target_dir . "/qti_" . $q_id . ".xml", "w");
                 fwrite($qti_file, $q_obj->toXML());
                 fclose($qti_file);
             }
         }
         unset($page_obj);
     }
 }
 /**
  * export (sub)structure objects of structure object (see ilias_co.dtd)
  *
  * @param	object		$a_xml_writer	ilXmlWriter object that receives the
  *										xml data
  */
 static function getChapterList($a_lm_id)
 {
     $tree = new ilTree($a_lm_id);
     $tree->setTableNames('lm_tree', 'lm_data');
     $tree->setTreeTablePK("lm_id");
     $chapters = array();
     $ndata = $tree->getNodeData($tree->readRootId());
     $childs = $tree->getSubtree($ndata);
     foreach ($childs as $child) {
         if ($child["type"] == "st") {
             $chapters[] = $child;
         }
     }
     return $chapters;
 }
 /**
  * presentation title doesn't have to be page title, it may be
  * chapter title + page title or chapter title only, depending on settings
  *
  * @param	string	$a_mode		IL_CHAPTER_TITLE | IL_PAGE_TITLE | IL_NO_HEADER
  */
 function _getPresentationTitle($a_pg_id, $a_mode = IL_CHAPTER_TITLE, $a_include_numbers = false, $a_time_scheduled_activation = false, $a_force_content = false)
 {
     global $ilDB;
     // select
     $query = "SELECT * FROM lm_data WHERE obj_id = " . $ilDB->quote($a_pg_id, "integer");
     $pg_set = $ilDB->query($query);
     $pg_rec = $ilDB->fetchAssoc($pg_set);
     if ($a_mode == IL_NO_HEADER && !$a_force_content) {
         return "";
     }
     $tree = new ilTree($pg_rec["lm_id"]);
     $tree->setTableNames('lm_tree', 'lm_data');
     $tree->setTreeTablePK("lm_id");
     if ($a_mode == IL_PAGE_TITLE) {
         $nr = "";
         return $nr . $pg_rec["title"];
     }
     if ($tree->isInTree($pg_rec["obj_id"])) {
         $pred_node = $tree->fetchPredecessorNode($pg_rec["obj_id"], "st");
         $childs = $tree->getChildsByType($pred_node["obj_id"], "pg");
         $cnt_str = "";
         if (count($childs) > 1) {
             $cnt = 0;
             foreach ($childs as $child) {
                 include_once "./Services/COPage/classes/class.ilPageObject.php";
                 $active = ilPageObject::_lookupActive($child["obj_id"], ilObject::_lookupType($pg_rec["lm_id"]), $a_time_scheduled_activation);
                 if (!$active) {
                     $act_data = ilPageObject::_lookupActivationData((int) $child["obj_id"], ilObject::_lookupType($pg_rec["lm_id"]));
                     if ($act_data["show_activation_info"] && ilUtil::now() < $act_data["activation_start"]) {
                         $active = true;
                     }
                 }
                 if ($child["type"] != "pg" || $active) {
                     $cnt++;
                 }
                 if ($child["obj_id"] == $pg_rec["obj_id"]) {
                     $cur_cnt = $cnt;
                 }
             }
             if ($cnt > 1) {
                 $cnt_str = " (" . $cur_cnt . "/" . $cnt . ")";
             }
         }
         require_once "./Modules/LearningModule/classes/class.ilStructureObject.php";
         //$struct_obj =& new ilStructureObject($pred_node["obj_id"]);
         //return $struct_obj->getTitle();
         return ilStructureObject::_getPresentationTitle($pred_node["obj_id"], $a_include_numbers) . $cnt_str;
         //return $pred_node["title"].$cnt_str;
     } else {
         return $pg_rec["title"];
     }
 }
 function getContextPath($a_endnode_id, $a_startnode_id = 1)
 {
     $path = "";
     include_once "./Services/Tree/classes/class.ilTree.php";
     $tree = new ilTree(1);
     if (!$tree->isInTree($a_startnode_id) or !$tree->isInTree($a_endnode_id)) {
         return '';
     }
     $tmpPath = $tree->getPathFull($a_endnode_id, $a_startnode_id);
     // count -1, to exclude the learning module itself
     for ($i = 1; $i < count($tmpPath) - 1; $i++) {
         if ($path != "") {
             $path .= " > ";
         }
         $path .= $tmpPath[$i]["title"];
     }
     return $path;
 }
 /**
  * checks if rolefolder contains any roles. if not the rolefolder is deleted
  * @access	public
  * @return	boolean	true if rolefolder is deleted
  */
 function purge()
 {
     global $rbacreview, $rbacadmin, $tree;
     $local_roles = $rbacreview->getRolesOfRoleFolder($this->getRefId());
     if (count($local_roles) == 0) {
         $rbacadmin->revokePermission($this->getRefId());
         if ($tree_id = $this->isDeleted()) {
             $deleted_tree = new ilTree($tree_id, -(int) $tree_id);
             $deleted_tree->deleteTree($deleted_tree->getNodeData($this->getRefId()));
         } else {
             $tree->deleteTree($tree->getNodeData($this->getRefId()));
         }
         $this->delete();
         return true;
     }
     return false;
 }
Ejemplo n.º 27
0
 /**
  * Get scorm module editing tree
  *
  * @param	int		scorm module object id
  *
  * @return	object		tree object
  */
 static function getTree($a_slm_obj_id)
 {
     $tree = new ilTree($a_slm_obj_id);
     $tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node');
     $tree->setTreeTablePK("slm_id");
     $tree->readRootId();
     return $tree;
 }
Ejemplo n.º 28
0
 function getObjectTypeStatistics()
 {
     global $ilDB, $objDefinition;
     // re-use add new item selection (folder is not that important)
     $types = array_keys($objDefinition->getCreatableSubObjects("root", ilObjectDefinition::MODE_REPOSITORY));
     include_once "Services/Tree/classes/class.ilTree.php";
     $tree = new ilTree(1);
     $sql = "SELECT " . $tree->table_obj_data . ".obj_id," . $tree->table_obj_data . ".type," . $tree->table_tree . "." . $tree->tree_pk . "," . $tree->table_obj_reference . ".ref_id" . " FROM " . $tree->table_tree . " " . $tree->buildJoin() . " WHERE " . $ilDB->in($tree->table_obj_data . ".type", $types, "", "text");
     $set = $ilDB->query($sql);
     $res = array();
     while ($row = $ilDB->fetchAssoc($set)) {
         $res[$row["type"]]["type"] = $row["type"];
         $res[$row["type"]]["references"]++;
         $res[$row["type"]]["objects"][] = $row["obj_id"];
         if ($row[$tree->tree_pk] < 0) {
             $res[$row["type"]]["deleted"]++;
         }
     }
     foreach ($res as $type => $values) {
         $res[$type]["objects"] = sizeof(array_unique($values["objects"]));
     }
     return $res;
 }
Ejemplo n.º 29
0
 /**
  * Get pages of chapter
  *
  * @param
  * @return
  */
 static function getPagesOfChapter($a_lm_id, $a_chap_id)
 {
     // update structure entries: if at least one page of a chapter is public set chapter to public too
     $lm_tree = new ilTree($a_lm_id);
     $lm_tree->setTableNames('lm_tree', 'lm_data');
     $lm_tree->setTreeTablePK("lm_id");
     $lm_tree->readRootId();
     $childs = $lm_tree->getChildsByType($a_chap_id, "pg");
     return $childs;
 }
 /**
  * put chapter into tree
  */
 function putInTree()
 {
     //echo "st:putInTree";
     // chapters should be behind pages in the tree
     // so if target is first node, the target is substituted with
     // the last child of type pg
     if ($_GET["target"] == IL_FIRST_NODE) {
         $tree = new ilTree($this->content_object->getId());
         $tree->setTableNames('lm_tree', 'lm_data');
         $tree->setTreeTablePK("lm_id");
         // determine parent node id
         $parent_id = !empty($_GET["obj_id"]) ? $_GET["obj_id"] : $tree->getRootId();
         // determine last child of type pg
         $childs =& $tree->getChildsByType($parent_id, "pg");
         if (count($childs) != 0) {
             $_GET["target"] = $childs[count($childs) - 1]["obj_id"];
         }
     }
     if (empty($_GET["target"])) {
         $_GET["target"] = IL_LAST_NODE;
     }
     parent::putInTree();
 }