ILIAS  release_7 Revision v7.30-3-g800a261c036
ilWorkspaceTree Class Reference

Tree handler for personal workspace. More...

+ Inheritance diagram for ilWorkspaceTree:
+ Collaboration diagram for ilWorkspaceTree:

Public Member Functions

 __construct ($a_tree_id, $a_root_id=0)
 Constructor @access public. More...
 
 createReference ($a_object_id)
 Create workspace reference for object. More...
 
 lookupObjectId ($a_node_id)
 Get object id for node id. More...
 
 lookupNodeId ($a_obj_id)
 Get node id for object id. More...
 
 lookupOwner ($a_node_id)
 Get owner for node id. More...
 
 insertObject ($a_parent_node_id, $a_object_id)
 Add object to tree. More...
 
 deleteReference ($a_node_id)
 Delete object from reference table. More...
 
 cascadingDelete ()
 Remove all tree and node data. More...
 
 getObjectsFromType ($a_type, $a_with_data=false)
 Get all workspace objects of specific type. More...
 
 createTreeForUser ($a_user_id)
 Create personal workspace tree for user. More...
 
- Public Member Functions inherited from ilTree
 __construct ($a_tree_id, $a_root_id=0)
 Constructor @access public. More...
 
 initTreeImplementation ()
 Init tree implementation. More...
 
 getTreeImplementation ()
 Get tree implementation. More...
 
 useCache ($a_use=true)
 Use Cache (usually activated) More...
 
 isCacheUsed ()
 Check if cache is active. More...
 
 getDepthCache ()
 Get depth cache. More...
 
 getParentCache ()
 Get parent cache. More...
 
 initLangCode ()
 Store user language. More...
 
 getTreeTable ()
 Get tree table name. More...
 
 getObjectDataTable ()
 Get object data table. More...
 
 getTreePk ()
 Get tree primary key. More...
 
 getTableReference ()
 Get reference table if available. More...
 
 getGap ()
 Get default gap *. More...
 
 resetInTreeCache ()
 
 setTableNames ($a_table_tree, $a_table_obj_data, $a_table_obj_reference="")
 set table names The primary key of the table containing your object_data must be 'obj_id' You may use a reference table. More...
 
 setReferenceTablePK ($a_column_name)
 set column containing primary key in reference table @access public More...
 
 setObjectTablePK ($a_column_name)
 set column containing primary key in object table @access public More...
 
 setTreeTablePK ($a_column_name)
 set column containing primary key in tree table @access public More...
 
 buildJoin ()
 build join depending on table settings @access private More...
 
 getRelation ($a_node_a, $a_node_b)
 Get relation of two nodes. More...
 
 getRelationOfNodes ($a_node_a_arr, $a_node_b_arr)
 get relation of two nodes by node data More...
 
 getChildIds ($a_node)
 Get node child ids @global type $ilDB. More...
 
 getChilds ($a_node_id, $a_order="", $a_direction="ASC")
 get child nodes of given node @access public More...
 
 getFilteredChilds ($a_filter, $a_node, $a_order="", $a_direction="ASC")
 get child nodes of given node (exclude filtered obj_types) @access public More...
 
 getChildsByType ($a_node_id, $a_type)
 get child nodes of given node by object type @access public More...
 
 getChildsByTypeFilter ($a_node_id, $a_types, $a_order="", $a_direction="ASC")
 get child nodes of given node by object type @access public More...
 
 insertNodeFromTrash ($a_source_id, $a_target_id, $a_tree_id, $a_pos=IL_LAST_NODE, $a_reset_deleted_date=false)
 Insert node from trash deletes trash entry. More...
 
 insertNode ($a_node_id, $a_parent_id, $a_pos=IL_LAST_NODE, $a_reset_deletion_date=false)
 insert new node with node_id under parent node with parent_id @access public More...
 
 getFilteredSubTree ($a_node_id, $a_filter=array())
 get filtered subtree More...
 
 getSubTreeIds ($a_ref_id)
 Get all ids of subnodes. More...
 
 getSubTree ($a_node, $a_with_data=true, $a_type="")
 get all nodes in the subtree under specified node More...
 
 getSubTreeTypes ($a_node, $a_filter=0)
 get types of nodes in the subtree under specified node More...
 
 deleteTree ($a_node)
 delete node and the whole subtree under this node @access public More...
 
 validateParentRelations ()
 Validate parent relations of tree. More...
 
 getPathFull ($a_endnode_id, $a_startnode_id=0)
 get path from a given startnode to a given endnode if startnode is not given the rootnode is startnode. More...
 
 preloadDepthParent ($a_node_ids)
 Preload depth/parent. More...
 
 getPathId ($a_endnode_id, $a_startnode_id=0)
 get path from a given startnode to a given endnode if startnode is not given the rootnode is startnode @access public More...
 
 getNodePathForTitlePath ($titlePath, $a_startnode_id=null)
 Converts a path consisting of object titles into a path consisting of tree nodes. More...
 
 getNodePath ($a_endnode_id, $a_startnode_id=0)
 Returns the node path for the specified object reference. More...
 
 checkTree ()
 check consistence of tree all left & right values are checked if they are exists only once @access public More...
 
 checkTreeChilds ($a_no_zero_child=true)
 check, if all childs of tree nodes exist in object table More...
 
 getMaximumDepth ()
 Return the current maximum depth in the tree @access public. More...
 
 getDepth ($a_node_id)
 return depth of a node in tree @access private More...
 
 getNodeTreeData ($a_node_id)
 return all columns of tabel tree More...
 
 getNodeData ($a_node_id, $a_tree_pk=null)
 get all information of a node. More...
 
 fetchNodeData ($a_row)
 get data of parent node from tree and object_data @access private More...
 
 isInTree ($a_node_id)
 get all information of a node. More...
 
 getParentNodeData ($a_node_id)
 get data of parent node from tree and object_data @access public More...
 
 isGrandChild ($a_startnode_id, $a_querynode_id)
 checks if a node is in the path of an other node @access public More...
 
 addTree ($a_tree_id, $a_node_id=-1)
 create a new tree to do: ??? More...
 
 getNodeDataByType ($a_type)
 get nodes by type More...
 
 removeTree ($a_tree_id)
 remove an existing tree More...
 
 moveToTrash ($a_node_id, $a_set_deleted=false, $a_deleted_by=0)
 Move node to trash bin. More...
 
 isDeleted ($a_node_id)
 This is a wrapper for isSaved() with a more useful name. More...
 
 isSaved ($a_node_id)
 Use method isDeleted check if node is saved. More...
 
 preloadDeleted ($a_node_ids)
 Preload deleted information. More...
 
 getSavedNodeData ($a_parent_id)
 get data saved/deleted nodes More...
 
 getSavedNodeObjIds (array $a_obj_ids)
 get object id of saved/deleted nodes More...
 
 getParentId ($a_node_id)
 get parent id of given node @access public More...
 
 getLeftValue ($a_node_id)
 get left value of given node @access public More...
 
 getChildSequenceNumber ($a_node, $type="")
 get sequence number of node in sibling sequence @access public More...
 
 readRootId ()
 read root id from database More...
 
 getRootId ()
 get the root id of tree @access public More...
 
 setRootId ($a_root_id)
 
 getTreeId ()
 get tree id @access public More...
 
 setTreeId ($a_tree_id)
 set tree id @access public More...
 
 fetchSuccessorNode ($a_node_id, $a_type="")
 get node data of successor node More...
 
 fetchPredecessorNode ($a_node_id, $a_type="")
 get node data of predecessor node More...
 
 renumber ($node_id=1, $i=1)
 Wrapper for renumber. More...
 
 __renumber ($node_id=1, $i=1)
 This method is private. More...
 
 checkForParentType ($a_ref_id, $a_type, $a_exclude_source_check=false)
 Check for parent type e.g check if a folder (ref_id 3) is in a parent course obj => checkForParentType(3,'crs');. More...
 
 __isMainTree ()
 Check if operations are done on main tree. More...
 
 __checkDelete ($a_node)
 Check for deleteTree() compares a subtree of a given node by checking lft, rgt against parent relation. More...
 
 __getSubTreeByParentRelation ($a_node_id, &$parent_childs)
 @global type $ilDB More...
 
 __validateSubtrees (&$lft_childs, $parent_childs)
 
 moveTree ($a_source_id, $a_target_id, $a_location=self::POS_LAST_NODE)
 Move Tree Implementation. More...
 
 getRbacSubtreeInfo ($a_endnode_id)
 This method is used for change existing objects and returns all necessary information for this action. More...
 
 getSubTreeQuery ($a_node_id, $a_fields=array(), $a_types='', $a_force_join_reference=false)
 Get tree subtree query. More...
 
 getTrashSubTreeQuery ($a_node_id, $a_fields=[], $a_types='', $a_force_join_reference=false)
 
 getSubTreeFilteredByObjIds ($a_node_id, array $a_obj_ids, array $a_fields=array())
 get all node ids in the subtree under specified node id, filter by object ids More...
 
 deleteNode ($a_tree_id, $a_node_id)
 
 lookupTrashedObjectTypes ()
 Lookup object types in trash @global type $ilDB. More...
 
 isRepositoryTree ()
 check if current tree instance operates on repository tree table More...
 

Protected Attributes

 $db
 
- Protected Attributes inherited from ilTree
 $depth_cache = array()
 
 $parent_cache = array()
 
 $in_tree_cache = array()
 

Additional Inherited Members

- Static Public Member Functions inherited from ilTree
static lookupTreesForNode (int $node_id)
 
static _removeEntry ($a_tree, $a_child, $a_db_table="tree")
 STATIC METHOD Removes a single entry from a tree. More...
 
- Data Fields inherited from ilTree
const TREE_TYPE_MATERIALIZED_PATH = 'mp'
 
const TREE_TYPE_NESTED_SET = 'ns'
 
const POS_LAST_NODE = -2
 
const POS_FIRST_NODE = -1
 
const RELATION_CHILD = 1
 
const RELATION_PARENT = 2
 
const RELATION_SIBLING = 3
 
const RELATION_EQUALS = 4
 
const RELATION_NONE = 5
 
 $ilias
 
 $log
 
 $root_id
 
 $tree_id
 
 $table_tree
 
 $table_obj_data
 
 $table_obj_reference
 
 $ref_pk
 
 $obj_pk
 
 $tree_pk
 
 $gap
 
- Protected Member Functions inherited from ilTree
 fetchTranslationFromObjectDataCache ($a_obj_ids)
 Get translation data from object cache (trigger in object cache on preload) More...
 

Detailed Description

Tree handler for personal workspace.

Author
Jörg Lützenkirchen luetz.nosp@m.enki.nosp@m.rchen.nosp@m.@lei.nosp@m.fos.c.nosp@m.om

Definition at line 12 of file class.ilWorkspaceTree.php.

Constructor & Destructor Documentation

◆ __construct()

ilWorkspaceTree::__construct (   $a_tree_id,
  $a_root_id = 0 
)

Constructor @access public.

Parameters
integer$a_tree_idtree_id
integer$a_root_idroot_id (optional)
Exceptions
InvalidArgumentException

Reimplemented from ilTree.

Definition at line 19 of file class.ilWorkspaceTree.php.

20 {
21 global $DIC;
22
23 $this->db = $DIC->database();
24 parent::__construct($a_tree_id, $a_root_id);
25
26 $this->setTableNames('tree_workspace', 'object_data', 'object_reference_ws');
27 $this->setTreeTablePK('tree');
28 $this->setObjectTablePK('obj_id');
29 $this->setReferenceTablePK('wsp_id');
30
31 // ilTree sets it to ROOT_FOLDER_ID if not given...
32 if (!$a_root_id) {
33 $this->readRootId();
34 }
35 }
setObjectTablePK($a_column_name)
set column containing primary key in object table @access public
setReferenceTablePK($a_column_name)
set column containing primary key in reference table @access public
setTreeTablePK($a_column_name)
set column containing primary key in tree table @access public
setTableNames($a_table_tree, $a_table_obj_data, $a_table_obj_reference="")
set table names The primary key of the table containing your object_data must be 'obj_id' You may use...
readRootId()
read root id from database
global $DIC
Definition: goto.php:24
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc

References $DIC, ILIAS\GlobalScreen\Provider\__construct(), ilTree\readRootId(), ilTree\setObjectTablePK(), ilTree\setReferenceTablePK(), ilTree\setTableNames(), and ilTree\setTreeTablePK().

+ Here is the call graph for this function:

Member Function Documentation

◆ cascadingDelete()

ilWorkspaceTree::cascadingDelete ( )

Remove all tree and node data.

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

148 {
149 $root_id = $this->readRootId();
150 if (!$root_id) {
151 return;
152 }
153
154 $root = $this->getNodeData($root_id);
155
156 include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceAccessHandler.php";
157 $access_handler = new ilWorkspaceAccessHandler($this);
158
159 // delete node data
160 $nodes = $this->getSubTree($root);
161 foreach ($nodes as $node) {
162 $access_handler->removePermission($node["wsp_id"]);
163
164 $object = ilObjectFactory::getInstanceByObjId($node["obj_id"], false);
165 if ($object) {
166 $object->delete();
167 }
168
169 $this->deleteReference($node["wsp_id"]);
170 }
171
172 $this->deleteTree($root);
173 }
static getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
getSubTree($a_node, $a_with_data=true, $a_type="")
get all nodes in the subtree under specified node
deleteTree($a_node)
delete node and the whole subtree under this node @access public
getNodeData($a_node_id, $a_tree_pk=null)
get all information of a node.
Access handler for personal workspace.
deleteReference($a_node_id)
Delete object from reference table.

References ilTree\$root_id, deleteReference(), ilTree\deleteTree(), ilObjectFactory\getInstanceByObjId(), ilTree\getNodeData(), ilTree\getSubTree(), and ilTree\readRootId().

+ Here is the call graph for this function:

◆ createReference()

ilWorkspaceTree::createReference (   $a_object_id)

Create workspace reference for object.

Parameters
int$a_object_id
Returns
int node id

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

44 {
46
47 $next_id = $ilDB->nextId($this->table_obj_reference);
48
49 $fields = array($this->ref_pk => array("integer", $next_id),
50 $this->obj_pk => array("integer", $a_object_id));
51
52 $ilDB->insert($this->table_obj_reference, $fields);
53
54 return $next_id;
55 }
global $ilDB

References $db, and $ilDB.

Referenced by ilWorkspaceExplorer\__construct(), createTreeForUser(), and insertObject().

+ Here is the caller graph for this function:

◆ createTreeForUser()

ilWorkspaceTree::createTreeForUser (   $a_user_id)

Create personal workspace tree for user.

Parameters
int$a_user_id

Definition at line 196 of file class.ilWorkspaceTree.php.

197 {
198 $root = ilObjectFactory::getClassByType("wsrt");
199 $root = new $root(null);
200 $root->create();
201
202 $root_id = $this->createReference($root->getId());
203 $this->addTree($a_user_id, $root_id);
204 $this->setRootId($root_id);
205 }
static getClassByType($a_obj_type)
Get class by type.
addTree($a_tree_id, $a_node_id=-1)
create a new tree to do: ???
setRootId($a_root_id)
createReference($a_object_id)
Create workspace reference for object.

References ilTree\$root_id, ilTree\addTree(), createReference(), ilObjectFactory\getClassByType(), and ilTree\setRootId().

+ Here is the call graph for this function:

◆ deleteReference()

ilWorkspaceTree::deleteReference (   $a_node_id)

Delete object from reference table.

Parameters
int$a_node_id
Returns
bool

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

136 {
138
139 $query = "DELETE FROM " . $this->table_obj_reference .
140 " WHERE " . $this->ref_pk . " = " . $ilDB->quote($a_node_id, "integer");
141 return $ilDB->manipulate($query);
142 }
$query

References $db, $ilDB, and $query.

Referenced by cascadingDelete().

+ Here is the caller graph for this function:

◆ getObjectsFromType()

ilWorkspaceTree::getObjectsFromType (   $a_type,
  $a_with_data = false 
)

Get all workspace objects of specific type.

Parameters
string$a_type
bool$a_with_data
Returns
array

Definition at line 182 of file class.ilWorkspaceTree.php.

183 {
184 return $this->getSubTree(
185 $this->getNodeData($this->getRootId()),
186 $a_with_data,
187 $a_type
188 );
189 }
getRootId()
get the root id of tree @access public

References ilTree\getNodeData(), ilTree\getRootId(), and ilTree\getSubTree().

+ Here is the call graph for this function:

◆ insertObject()

ilWorkspaceTree::insertObject (   $a_parent_node_id,
  $a_object_id 
)

Add object to tree.

Parameters
int$a_parent_node_id
int$a_object_id
Returns
int node id

Definition at line 122 of file class.ilWorkspaceTree.php.

123 {
124 $node_id = $this->createReference($a_object_id);
125 $this->insertNode($node_id, $a_parent_node_id);
126 return $node_id;
127 }
insertNode($a_node_id, $a_parent_id, $a_pos=IL_LAST_NODE, $a_reset_deletion_date=false)
insert new node with node_id under parent node with parent_id @access public

References createReference(), and ilTree\insertNode().

+ Here is the call graph for this function:

◆ lookupNodeId()

ilWorkspaceTree::lookupNodeId (   $a_obj_id)

Get node id for object id.

As we do not allow references in workspace this should not be ambigious

Parameters
int$a_obj_id
Returns
int node id

Definition at line 84 of file class.ilWorkspaceTree.php.

85 {
87
88 $set = $ilDB->query("SELECT " . $this->ref_pk .
89 " FROM " . $this->table_obj_reference .
90 " WHERE " . $this->obj_pk . " = " . $ilDB->quote($a_obj_id, "integer"));
91 $res = $ilDB->fetchAssoc($set);
92
93 return (int) $res[$this->ref_pk];
94 }
foreach($_POST as $key=> $value) $res

References $db, $ilDB, ilTree\$ref_pk, and $res.

◆ lookupObjectId()

ilWorkspaceTree::lookupObjectId (   $a_node_id)

Get object id for node id.

Parameters
int$a_node_id
Returns
int object id

Definition at line 63 of file class.ilWorkspaceTree.php.

64 {
66
67 $set = $ilDB->query("SELECT " . $this->obj_pk .
68 " FROM " . $this->table_obj_reference .
69 " WHERE " . $this->ref_pk . " = " . $ilDB->quote($a_node_id, "integer"));
70 $res = $ilDB->fetchAssoc($set);
71
72 return $res[$this->obj_pk];
73 }

References $db, $ilDB, ilTree\$obj_pk, and $res.

◆ lookupOwner()

ilWorkspaceTree::lookupOwner (   $a_node_id)

Get owner for node id.

Parameters
int$a_node_id
Returns
int object id

Definition at line 102 of file class.ilWorkspaceTree.php.

103 {
105
106 $set = $ilDB->query("SELECT tree" .
107 " FROM " . $this->table_obj_reference .
108 " JOIN " . $this->table_tree . " ON (" . $this->table_obj_reference . "." . $this->ref_pk . " = " . $this->table_tree . ".child)" .
109 " WHERE " . $this->ref_pk . " = " . $ilDB->quote($a_node_id, "integer"));
110 $res = $ilDB->fetchAssoc($set);
111
112 return $res["tree"];
113 }

References $db, $ilDB, and $res.

Field Documentation

◆ $db

ilWorkspaceTree::$db
protected

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