Exemplo n.º 1
0
 /**
  * Checks if given user is the responsible lecturer or is member of a
  * related group
  *
  * @global object $perm The globa perm object.
  * @param CourseEvent $event The course event to check against.
  * @param string $user_id The id of the user.
  * @return boolean
  */
 protected static function checkRelated(CourseEvent $event, $user_id)
 {
     global $perm;
     $check_related = false;
     $permission = $perm->get_studip_perm($event->range_id, $user_id);
     switch ($permission) {
         case 'dozent':
             $related_persons = $event->dozenten->pluck(user_id);
             if (sizeof($related_persons)) {
                 if (in_array($user_id, $related_persons)) {
                     $check_related = true;
                 }
             } else {
                 $check_related = true;
             }
             break;
         case 'tutor':
             $check_related = true;
             break;
         default:
             $group_ids = $event->statusgruppen->pluck('statusgruppe_id');
             if (sizeof($group_ids)) {
                 $member = StatusgruppeUser::findBySQL('statusgruppe_id IN(?) AND user_id = ?', array($group_ids, $user_id));
                 $check_related = sizeof($member) > 0;
             } else {
                 $check_related = true;
             }
     }
     return $check_related;
 }
Exemplo n.º 2
0
 /**
  * Retrieves all contact groups (statusgruppen) owned by the given user
  * where at least one member has granted access to his calender for the user.
  *
  * @param string $user_id User id of the owner.
  * @return type
  */
 public static function getGroups($user_id)
 {
     $groups = array();
     $calendar_owners = CalendarUser::getOwners($user_id)->pluck('owner_id');
     $sg_groups = SimpleORMapCollection::createFromArray(Statusgruppen::findByRange_id($user_id))->orderBy('position')->pluck('statusgruppe_id');
     if (sizeof($calendar_owners)) {
         $sg_users = StatusgruppeUser::findBySQL('statusgruppe_id IN(?) AND user_id IN(?)', array($sg_groups, $calendar_owners));
         foreach ($sg_users as $sg_user) {
             $groups[$sg_user->group->id] = $sg_user->group;
         }
     }
     return $groups;
 }