ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilPDSelectedItemsBlockMembershipsProvider.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2017 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 require_once 'Services/Membership/classes/class.ilParticipants.php';
5 require_once 'Services/PersonalDesktop/ItemsBlock/interfaces/interface.ilPDSelectedItemsBlockProvider.php';
6 
11 {
15  protected $actor;
16 
20  protected $tree;
21 
26  public function __construct(ilObjUser $actor)
27  {
28  global $DIC;
29 
30  $this->actor = $actor;
31  $this->tree = $DIC->repositoryTree();
32  }
33 
39  protected function getObjectsByMembership($types = array())
40  {
41  $items = array();
42 
43  if (is_array($types) && count($types)) {
44  foreach ($types as $type) {
45  switch ($type) {
46  case 'grp':
47  $items = array_merge(ilParticipants::_getMembershipByType($this->actor->getId(), 'grp'), $items);
48  break;
49  case 'crs':
50  $items = array_merge(ilParticipants::_getMembershipByType($this->actor->getId(), 'crs'), $items);
51  break;
52  default:
53  break;
54  }
55  }
56  } else {
57  $crs_mbs = ilParticipants::_getMembershipByType($this->actor->getId(), 'crs');
58  $grp_mbs = ilParticipants::_getMembershipByType($this->actor->getId(), 'grp');
59  $items = array_merge($crs_mbs, $grp_mbs);
60  }
61 
62  $references = array();
63 
64  foreach ($items as $key => $obj_id) {
65  $item_references = ilObject::_getAllReferences($obj_id);
66  foreach ($item_references as $ref_id) {
67  if ($this->tree->isInTree($ref_id)) {
68  $object = ilObjectFactory::getInstanceByRefId($ref_id);
69 
70  $parent_ref_id = $this->tree->getParentId($ref_id);
71  $par_left = $this->tree->getLeftValue($parent_ref_id);
72  $par_left = sprintf("%010d", $par_left);
73 
74  $references[$par_left . $object->getTitle() . $ref_id] = array(
75  'ref_id' => $ref_id,
76  'obj_id' => $obj_id,
77  'type' => $object->getType(),
78  'title' => $object->getTitle(),
79  'description' => $object->getDescription(),
80  'parent_ref' => $parent_ref_id,
81  'start' => $object->getType() == 'grp' ? $object->getStart() : $object->getCourseStart(),
82  'end' => $object->getType() == 'grp' ? $object->getEnd() : $object->getCourseEnd()
83  );
84  }
85  }
86  }
87 
88  ksort($references);
89 
90  return $references;
91  }
92 
96  public function getItems($object_type_white_list = array())
97  {
98  return $this->getObjectsByMembership($object_type_white_list);
99  }
100 }
getItems($object_type_white_list=array())
An optional array of object_types used for filter purposes array An array of repository items...
$type
global $DIC
Definition: saml.php:7
static _getMembershipByType($a_usr_id, $a_type, $a_only_member_role=false)
get membership by type Get course or group membership
static _getAllReferences($a_id)
get all reference ids of object
Interface ilPDSelectedItemsBlockProvider.
__construct(ilObjUser $actor)
ilPDSelectedItemsBlockSelectedItemsProvider constructor.
static getInstanceByRefId($a_ref_id, $stop_on_error=true)
get an instance of an Ilias object by reference id
getObjectsByMembership($types=array())
Gets all objects the current user is member of.
$key
Definition: croninfo.php:18