ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
All Data Structures Namespaces Files Functions Variables Modules Pages
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.

References $DIC.

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

Member Function Documentation

◆ appendTrashNodeForContainerQueryFilter()

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

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

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

Referenced by getTrashNodeForContainer().

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'])) {
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  }
static _lookupId($a_user_str)
Lookup id by login.
Class for single dates.
$query
const IL_CAL_DATE
+ 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

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

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

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
$query

◆ getNumberOfTrashedNodesForTrashedContainer()

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

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

References $res.

122  {
123  $res = $this->db->query($this->tree->getTrashSubTreeQuery($ref_id, ['child']));
124  return (int) $res->numRows();
125  }
foreach($_POST as $key=> $value) $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.

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

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.
foreach($_POST as $key=> $value) $res
$query

◆ getTrashedNodeTypesForContainer()

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

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

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

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  }
foreach($_POST as $key=> $value) $res
$query

◆ 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
[]
Exceptions

Count query

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

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

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)
foreach($_POST as $key=> $value) $res
$query
+ 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.

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

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  }
foreach($_POST as $key=> $value) $res
$query
$DIC
Definition: xapitoken.php:46

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

ilTreeTrashQueries::$ref_id = 0
private

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

◆ $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: