/**
  * Parse object data
  * @return 
  * @param object $a_ids
  */
 public function parseObjectIds($a_ids)
 {
     foreach ($a_ids as $object_id) {
         $row = array();
         $type = ilObject::_lookupType($object_id);
         $row['title'] = ilObject::_lookupTitle($object_id);
         $row['desc'] = ilObject::_lookupDescription($object_id);
         $row['id'] = $object_id;
         switch ($type) {
             case 'crs':
             case 'grp':
                 include_once './Services/Membership/classes/class.ilParticipants.php';
                 if (ilParticipants::hasParticipantListAccess($object_id)) {
                     $row['member'] = count(ilParticipants::getInstanceByObjId($object_id)->getParticipants());
                 } else {
                     $row['member'] = 0;
                 }
                 break;
             case 'role':
                 global $rbacreview;
                 include_once './Services/User/classes/class.ilUserFilter.php';
                 $row['member'] = count(ilUserFilter::getInstance()->filter($rbacreview->assignedUsers($object_id)));
                 break;
         }
         $data[] = $row;
     }
     $this->setData($data ? $data : array());
 }
 /**
  * List users of course/group/roles
  * @return 
  */
 protected function listUsers()
 {
     // get parameter is used e.g. in exercises to provide
     // "add members of course" link
     if ($_GET["list_obj"] != "" && !is_array($_POST['obj'])) {
         $_POST['obj'][0] = $_GET["list_obj"];
     }
     if (!is_array($_POST['obj']) or !$_POST['obj']) {
         ilUtil::sendFailure($this->lng->txt('select_one'));
         $this->showSearchResults();
         return false;
     }
     $_SESSION['rep_search']['objs'] = $_POST['obj'];
     // Get all members
     $members = array();
     foreach ($_POST['obj'] as $obj_id) {
         $type = ilObject::_lookupType($obj_id);
         switch ($type) {
             case 'crs':
             case 'grp':
                 include_once './Services/Membership/classes/class.ilParticipants.php';
                 if (ilParticipants::hasParticipantListAccess($obj_id)) {
                     $members = array_merge((array) $members, ilParticipants::getInstanceByObjId($obj_id)->getParticipants());
                 }
                 break;
             case 'role':
                 global $rbacreview;
                 include_once './Services/User/classes/class.ilUserFilter.php';
                 $members = array_merge($members, ilUserFilter::getInstance()->filter($rbacreview->assignedUsers($obj_id)));
                 break;
         }
     }
     $members = array_unique((array) $members);
     $this->__appendToStoredResults($members);
     $this->tpl->addBlockFile('ADM_CONTENT', 'adm_content', 'tpl.rep_search_result.html', 'Services/Search');
     $this->addNewSearchButton();
     $this->showSearchUserTable($_SESSION['rep_search']['usr'], 'storedUserList');
     return true;
 }
 /**
  * Assign mmissing course/groups to new user accounts
  * @param ilObjUser $user
  */
 protected static function handleMembership(ilObjUser $user)
 {
     $GLOBALS['ilLog']->write(__METHOD__ . ': Handling ECS assignments ');
     include_once './Services/WebServices/ECS/classes/class.ilECSSetting.php';
     if ($user->getAuthMode() != ilECSSetting::lookupAuthMode()) {
         $GLOBALS['ilLog']->write(__METHOD__ . ': Not user with authmode ' . ilECSSetting::lookupAuthMode());
         return TRUE;
     }
     include_once './Services/WebServices/ECS/classes/Course/class.ilECSCourseMemberAssignment.php';
     $assignment_ids = ilECSCourseMemberAssignment::lookupMissingAssignmentsOfUser($user->getExternalAccount());
     foreach ($assignment_ids as $obj_id) {
         include_once './Services/Membership/classes/class.ilParticipants.php';
         $part = ilParticipants::getInstanceByObjId($obj_id);
         $part->add($user->getId(), IL_CRS_MEMBER);
     }
 }
 /**
  * refuse subscribers
  *
  * @access public
  * @return
  */
 public function refuseSubscribersObject()
 {
     global $lng;
     $this->checkPermission('write');
     if (!count($_POST['subscribers'])) {
         ilUtil::sendFailure($this->lng->txt('no_checkbox'));
         $this->membersObject();
         return false;
     }
     include_once './Services/Membership/classes/class.ilParticipants.php';
     $part = ilParticipants::getInstanceByObjId($this->object->getId());
     foreach ($_POST['subscribers'] as $usr_id) {
         $part->deleteSubscriber($usr_id);
         include_once './Modules/Session/classes/class.ilSessionMembershipMailNotification.php';
         $noti = new ilSessionMembershipMailNotification();
         $noti->setRefId($this->object->getRefId());
         $noti->setRecipients(array($usr_id));
         $noti->setType(ilSessionMembershipMailNotification::TYPE_REFUSED_SUBSCRIPTION_MEMBER);
         $noti->send();
     }
     ilUtil::sendSuccess($this->lng->txt("sess_msg_applicants_removed"));
     $this->membersObject();
     return true;
 }
 public function findSharedObjects(array $a_filter = null, array $a_crs_ids = null, array $a_grp_ids = null)
 {
     global $ilDB, $ilUser;
     if (!$a_filter["acl_type"]) {
         $obj_ids = $this->getPossibleSharedTargets();
     } else {
         include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceAccessGUI.php";
         switch ($a_filter["acl_type"]) {
             case "all":
                 $obj_ids = array(ilWorkspaceAccessGUI::PERMISSION_ALL);
                 break;
             case "password":
                 $obj_ids = array(ilWorkspaceAccessGUI::PERMISSION_ALL_PASSWORD);
                 break;
             case "registered":
                 $obj_ids = array(ilWorkspaceAccessGUI::PERMISSION_REGISTERED);
                 break;
             case "course":
                 $obj_ids = $a_crs_ids;
                 break;
             case "group":
                 $obj_ids = $a_grp_ids;
                 break;
             case "user":
                 $obj_ids = array($ilUser->getId());
                 break;
         }
     }
     $res = array();
     $sql = "SELECT ref.wsp_id,obj.obj_id,obj.type,obj.title,obj.owner," . "acl.object_id acl_type, acl.tstamp acl_date" . " FROM object_data obj" . " JOIN object_reference_ws ref ON (obj.obj_id = ref.obj_id)" . " JOIN tree_workspace tree ON (tree.child = ref.wsp_id)" . " JOIN acl_ws acl ON (acl.node_id = tree.child)" . " WHERE " . $ilDB->in("acl.object_id", $obj_ids, "", "integer") . " AND obj.owner <> " . $ilDB->quote($ilUser->getId(), "integer");
     if ($a_filter["obj_type"]) {
         $sql .= " AND obj.type = " . $ilDB->quote($a_filter["obj_type"], "text");
     }
     if ($a_filter["title"] && strlen($a_filter["title"]) >= 3) {
         $sql .= " AND " . $ilDB->like("obj.title", "text", "%" . $a_filter["title"] . "%");
     }
     if ($a_filter["user"] && strlen($a_filter["user"]) >= 3) {
         $usr_ids = array();
         $set = $ilDB->query("SELECT usr_id FROM usr_data" . " WHERE (" . $ilDB->like("login", "text", "%" . $a_filter["user"] . "%") . " " . "OR " . $ilDB->like("firstname", "text", "%" . $a_filter["user"] . "%") . " " . "OR " . $ilDB->like("lastname", "text", "%" . $a_filter["user"] . "%") . " " . "OR " . $ilDB->like("email", "text", "%" . $a_filter["user"] . "%") . ")");
         while ($row = $ilDB->fetchAssoc($set)) {
             $usr_ids[] = $row["usr_id"];
         }
         if (!sizeof($usr_ids)) {
             return;
         }
         $sql .= " AND " . $ilDB->in("obj.owner", $usr_ids, "", "integer");
     }
     if ($a_filter["acl_date"]) {
         $dt = $a_filter["acl_date"]->get(IL_CAL_DATE);
         $dt = new ilDateTime($dt . " 00:00:00", IL_CAL_DATETIME);
         $sql .= " AND acl.tstamp > " . $ilDB->quote($dt->get(IL_CAL_UNIX), "integer");
     }
     if ($a_filter["crsgrp"]) {
         include_once "Services/Membership/classes/class.ilParticipants.php";
         $part = ilParticipants::getInstanceByObjId($a_filter['crsgrp']);
         $part = $part->getParticipants();
         if (!sizeof($part)) {
             return;
         }
         $sql .= " AND " . $ilDB->in("obj.owner", $part, "", "integer");
     }
     // we use the oldest share date
     $sql .= " ORDER BY acl.tstamp";
     $set = $ilDB->query($sql);
     while ($row = $ilDB->fetchAssoc($set)) {
         if (!isset($res[$row["wsp_id"]])) {
             $row["acl_type"] = array($row["acl_type"]);
             $res[$row["wsp_id"]] = $row;
         } else {
             $res[$row["wsp_id"]]["acl_type"][] = $row["acl_type"];
         }
     }
     return $res;
 }