ILIAS  release_7 Revision v7.30-3-g800a261c036
ilTreeTrashQueries Class Reference
+ Collaboration diagram for ilTreeTrashQueries:

Public Member Functions

 __construct ()
 ilTreeTrash constructor. More...
 
 isTrashedTrash (array $ref_ids)
 
 findRepositoryLocationForDeletedNode (int $deleted_node)
 
 getTrashedNodeTypesForContainer (int $ref_id)
 
 getNumberOfTrashedNodesForTrashedContainer (int $ref_id)
 
 getTrashNodeForContainer (int $ref_id, array $filter, int &$max_entries, string $order_field, string $order_direction, int $limit=self::QUERY_LIMIT, int $offset=0)
 Get trashed nodes. More...
 
 getTrashedNodesForContainerUsingRecursion (int $ref_id)
 Unfortunately not supported by mysql 5. More...
 

Protected Member Functions

 appendTrashNodeForContainerQueryFilter (array $filter)
 

Protected Attributes

const QUERY_LIMIT = 10
 

Private Attributes

 $ref_id = 0
 
 $tree = null
 
 $logger
 
 $db
 

Detailed Description

Author
Stefan Meyer meyer.nosp@m.@lei.nosp@m.fos.c.nosp@m.om

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

Constructor & Destructor Documentation

◆ __construct()

ilTreeTrashQueries::__construct ( )

ilTreeTrash constructor.

Parameters
int$ref_id

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

39 {
40 global $DIC;
41
42
43 $this->db = $DIC->database();
44 $this->logger = $DIC->logger()->tree();
45
46 $this->tree = $DIC->repositoryTree();
47 }
global $DIC
Definition: goto.php:24

References $DIC.

Member Function Documentation

◆ appendTrashNodeForContainerQueryFilter()

ilTreeTrashQueries::appendTrashNodeForContainerQueryFilter ( array  $filter)
protected
Parameters
array$filter
Returns
string

Definition at line 228 of file class.ilTreeTrashQueries.php.

228 : string
229 {
230 $query = '';
231 if (isset($filter['type'])) {
232 $query .= 'and ' . $this->db->like(
233 'type',
235 $filter['type'] . '%'
236 ) . ' ';
237 }
238 if (isset($filter['title'])) {
239 $query .= 'and ' . $this->db->like(
240 'title',
242 '%' . $filter['title'] . '%'
243 ) . ' ';
244 }
245 if (
246 $filter['deleted']['from'] instanceof \ilDate &&
247 $filter['deleted']['to'] instanceof \ilDate) {
248 $query .= ('and deleted between ' .
249 $this->db->quote($filter['deleted']['from']->get(\IL_CAL_DATE), \ilDBConstants::T_TEXT) . ' and ' .
250 $this->db->quote($filter['deleted']['to']->get(IL_CAL_DATE), \ilDBConstants::T_TEXT) . ' ');
251 } elseif ($filter['deleted']['from'] instanceof \ilDate) {
252 $query .= 'and deleted >= ' . $this->db->quote($filter['deleted']['from']->get(IL_CAL_DATE), \ilDBConstants::T_TEXT) . ' ';
253 } elseif ($filter['deleted']['to'] instanceof \ilDate) {
254 $query .= 'and deleted <= ' . $this->db->quote($filter['deleted']['to']->get(IL_CAL_DATE), \ilDBConstants::T_TEXT) . ' ';
255 }
256
257 if (isset($filter['deleted_by']) && !empty($filter['deleted_by'])) {
258 $usr_id = \ilObjUser::_lookupId($filter['deleted_by']);
259 if ($usr_id > 0) {
260 $query .= 'and deleted_by = ' . $this->db->quote($usr_id, \ilDBConstants::T_INTEGER) . ' ';
261 }
262 }
263
264 return $query;
265 }
const IL_CAL_DATE
Class for single dates.
static _lookupId($a_user_str)
Lookup id by login.
$query

References $query, ilObjUser\_lookupId(), IL_CAL_DATE, ilDBConstants\T_INTEGER, and ilDBConstants\T_TEXT.

Referenced by getTrashNodeForContainer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ findRepositoryLocationForDeletedNode()

ilTreeTrashQueries::findRepositoryLocationForDeletedNode ( int  $deleted_node)
Parameters
int$deleted_node
Returns
$rep_ref_id
Exceptions

ilRepositoryException

Definition at line 79 of file class.ilTreeTrashQueries.php.

80 {
81 $query = 'select parent from tree ' .
82 'where child = ' . $this->db->quote($deleted_node, \ilDBConstants::T_INTEGER) . ' ' .
83 'and tree = ' . $this->db->quote($deleted_node * -1, \ilDBConstants::T_INTEGER);
84 $this->logger->info($query);
85 $res = $this->db->query($query);
86 while ($row = $res->fetchRow(\ilDBConstants::FETCHMODE_OBJECT)) {
87 return $row->parent;
88 }
89 $this->logger->warning('Invalid node given for restoring to original location: deleted node id: ' . $deleted_node);
90 throw new \ilRepositoryException('Invalid node given for restoring to original location');
91 }
foreach($_POST as $key=> $value) $res

References $query, $res, ilDBConstants\FETCHMODE_OBJECT, and ilDBConstants\T_INTEGER.

◆ getNumberOfTrashedNodesForTrashedContainer()

ilTreeTrashQueries::getNumberOfTrashedNodesForTrashedContainer ( int  $ref_id)
Parameters
int$ref_id
Returns
int

Definition at line 121 of file class.ilTreeTrashQueries.php.

122 {
123 $res = $this->db->query($this->tree->getTrashSubTreeQuery($ref_id, ['child']));
124 return (int) $res->numRows();
125 }

References $ref_id, and $res.

◆ getTrashedNodesForContainerUsingRecursion()

ilTreeTrashQueries::getTrashedNodesForContainerUsingRecursion ( int  $ref_id)

Unfortunately not supported by mysql 5.

Parameters
int$ref_id

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

206 {
207 $query = 'with recursive trash (child,tree) as ' .
208 '( select child, tree from tree where child = ' . $this->db->quote($ref_id, \ilDBConstants::T_INTEGER) . ' ' .
209 'union select tc.child,tc.tree from tree tc join tree tp on tp.child = tc.parent ) ' .
210 'select * from trash where tree < 1 ';
211
212 $trash_ids = [];
213
214 try {
215 $res = $this->db->query($query);
216 while ($row = $res->fetchRow(\ilDBConstants::FETCHMODE_OBJECT)) {
217 $trash_ids[] = $row->child;
218 }
219 } catch (\ilDatabaseException $e) {
220 $this->logger->warning($query . ' is not supported');
221 }
222 }
Class ilDatabaseException.

References Vendor\Package\$e, $query, $ref_id, $res, ilDBConstants\FETCHMODE_OBJECT, and ilDBConstants\T_INTEGER.

◆ getTrashedNodeTypesForContainer()

ilTreeTrashQueries::getTrashedNodeTypesForContainer ( int  $ref_id)
Parameters
int$ref_id
Returns
string[]

Definition at line 97 of file class.ilTreeTrashQueries.php.

98 {
99 $subtreequery = $this->tree->getTrashSubTreeQuery($ref_id, ['child']);
100
101 $query = 'select distinct(type) obj_type from object_data obd ' .
102 'join object_reference obr on obd.obj_id = obr.obj_id ' .
103 'where ref_id in (' .
104 $subtreequery . ' ' .
105 ') ';
106
107 $this->logger->dump($query);
108
109 $res = $this->db->query($query);
110 $obj_types = [];
111 while ($row = $res->fetchRow(\ilDBConstants::FETCHMODE_OBJECT)) {
112 $obj_types[] = $row->obj_type;
113 }
114 return $obj_types;
115 }

References $query, $ref_id, $res, and ilDBConstants\FETCHMODE_OBJECT.

◆ getTrashNodeForContainer()

ilTreeTrashQueries::getTrashNodeForContainer ( int  $ref_id,
array  $filter,
int &  $max_entries,
string  $order_field,
string  $order_direction,
int  $limit = self::QUERY_LIMIT,
int  $offset = 0 
)

Get trashed nodes.

Parameters
int$ref_id
array$filter
int$max_entries
string$order_field
string$order_direction
int$limit
int$offset
Returns
\ilTreeTrashItem[]
Exceptions

ilDatabaseException

Count query

Definition at line 139 of file class.ilTreeTrashQueries.php.

147 {
148 $subtreequery = $this->tree->getTrashSubTreeQuery($ref_id, ['child']);
149
150 $select = 'select ref_id, obd.obj_id, type, title, description, deleted, deleted_by ';
151 $select_count = 'select count(ref_id) max_entries ';
152
153 $from = 'from object_data obd ' .
154 'join object_reference obr on obd.obj_id = obr.obj_id ' .
155 'where ref_id in (' .
156 $subtreequery . ' ' .
157 ') ';
158
159 $order = ' ';
160 if ($order_field) {
161 $order = 'ORDER BY ' . $order_field . ' ' . $order_direction;
162 }
163
164 $query = $select . $from . $this->appendTrashNodeForContainerQueryFilter($filter) . $order;
165 $query_count = $select_count . $from . $this->appendTrashNodeForContainerQueryFilter($filter);
166
167
168 $this->logger->dump($query);
169
173 $res_max_entries = $this->db->query($query_count);
174 while ($max_entries_row = $res_max_entries->fetchRow(\ilDBConstants::FETCHMODE_OBJECT)) {
175 $max_entries = $max_entries_row->max_entries;
176 }
177
178 $this->db->setLimit($limit, $offset);
179 $res = $this->db->query($query);
180
181
182 $items = [];
183 while ($row = $res->fetchRow(\ilDBConstants::FETCHMODE_OBJECT)) {
184 $item = new \ilTreeTrashItem();
185 $item->setObjId($row->obj_id);
186 $item->setRefId($row->ref_id);
187 $item->setTitle($row->title);
188 $item->setDescription($row->description);
189 $item->setType($row->type);
190 $item->setDeleted($row->deleted);
191 $item->setDeletedBy($row->deleted_by);
192
193 $items[] = $item;
194 }
195 return $items;
196 }
appendTrashNodeForContainerQueryFilter(array $filter)

References $query, $ref_id, $res, appendTrashNodeForContainerQueryFilter(), and ilDBConstants\FETCHMODE_OBJECT.

+ Here is the call graph for this function:

◆ isTrashedTrash()

ilTreeTrashQueries::isTrashedTrash ( array  $ref_ids)
Parameters
array$ref_ids
Returns
bool

Definition at line 53 of file class.ilTreeTrashQueries.php.

54 {
55 global $DIC;
56
57 $tree = $DIC->repositoryTree();
58
59 $query = 'select tree,child,parent from tree ' .
60 'where ' . $this->db->in('child', $ref_ids, false, \ilDBConstants::T_INTEGER);
61 $res = $this->db->query($query);
62 $trashed_trash = false;
63 while ($row = $res->fetchRow(\ilDBConstants::FETCHMODE_OBJECT)) {
64 if ((int) $row->child != ((int) $row->tree * -1)) {
65 $trashed_trash = true;
66 }
67 if ($tree->isDeleted($row->parent)) {
68 $trashed_trash = true;
69 }
70 }
71 return $trashed_trash;
72 }

References $DIC, $query, $res, $tree, ilDBConstants\FETCHMODE_OBJECT, and ilDBConstants\T_INTEGER.

Field Documentation

◆ $db

ilTreeTrashQueries::$db
private

Definition at line 32 of file class.ilTreeTrashQueries.php.

◆ $logger

ilTreeTrashQueries::$logger
private

Definition at line 27 of file class.ilTreeTrashQueries.php.

◆ $ref_id

◆ $tree

ilTreeTrashQueries::$tree = null
private

Definition at line 22 of file class.ilTreeTrashQueries.php.

Referenced by isTrashedTrash().

◆ QUERY_LIMIT

const ilTreeTrashQueries::QUERY_LIMIT = 10
protected

Definition at line 14 of file class.ilTreeTrashQueries.php.


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