Example #1
0
 public function __construct(IRestServer $server, User $user, IEntityAttributeList $attributes)
 {
     $userId = $user->Id();
     $this->id = $userId;
     $this->emailAddress = $user->EmailAddress();
     $this->firstName = $user->FirstName();
     $this->lastName = $user->LastName();
     $this->language = $user->Language();
     $this->lastLogin = Date::FromDatabase($user->LastLogin())->ToIso();
     $this->organization = $user->GetAttribute(UserAttribute::Organization);
     $this->phoneNumber = $user->GetAttribute(UserAttribute::Phone);
     $this->position = $user->GetAttribute(UserAttribute::Position);
     $this->statusId = $user->StatusId();
     $this->timezone = $user->Timezone();
     $this->username = $user->Username();
     $attributeValues = $attributes->GetAttributes($userId);
     if (!empty($attributeValues)) {
         foreach ($attributeValues as $av) {
             $this->customAttributes[] = new CustomAttributeResponse($server, $av->Id(), $av->Label(), $av->Value());
         }
     }
     foreach ($user->AllowedResourceIds() as $allowedResourceId) {
         $this->permissions[] = new ResourceItemResponse($server, $allowedResourceId, '');
     }
     foreach ($user->Groups() as $group) {
         $this->groups[] = new GroupItemResponse($server, $group->GroupId, $group->GroupName);
     }
     if ($user->GetIsCalendarSubscriptionAllowed()) {
         $url = new CalendarSubscriptionUrl($user->GetPublicId(), null, null);
         $this->icsUrl = $url->__toString();
     }
 }
Example #2
0
 /**
  * @param User $user
  * @return bool
  */
 public function IsAdminFor(User $user)
 {
     if ($this->isApplicationAdmin) {
         return true;
     }
     if (!$this->isGroupAdmin) {
         return false;
     }
     $adminIdsForUser = array();
     foreach ($user->Groups() as $userGroup) {
         if (!empty($userGroup->AdminGroupId)) {
             $adminIdsForUser[$userGroup->AdminGroupId] = true;
         }
     }
     foreach ($this->Groups() as $group) {
         if ($group->IsGroupAdmin) {
             if (array_key_exists($group->GroupId, $adminIdsForUser)) {
                 return true;
             }
         }
     }
     return false;
 }
Example #3
0
 /**
  * @param User $user
  * @return int
  */
 public function Add(User $user)
 {
     $db = ServiceLocator::GetDatabase();
     $id = $db->ExecuteInsert(new RegisterUserCommand($user->Username(), $user->EmailAddress(), $user->FirstName(), $user->LastName(), $user->encryptedPassword, $user->passwordSalt, $user->Timezone(), $user->Language(), $user->Homepage(), $user->GetAttribute(UserAttribute::Phone), $user->GetAttribute(UserAttribute::Organization), $user->GetAttribute(UserAttribute::Position), $user->StatusId(), $user->GetPublicId(), $user->GetDefaultScheduleId()));
     $user->WithId($id);
     if (Configuration::Instance()->GetKey(ConfigKeys::REGISTRATION_NOTIFY, new BooleanConverter())) {
         ServiceLocator::GetEmailService()->Send(new AccountCreationEmail($user));
     }
     foreach ($user->GetAddedAttributes() as $added) {
         $db->Execute(new AddAttributeValueCommand($added->AttributeId, $added->Value, $user->Id(), CustomAttributeCategory::USER));
     }
     $addedPreferences = $user->GetAddedEmailPreferences();
     foreach ($addedPreferences as $event) {
         $db->Execute(new AddEmailPreferenceCommand($id, $event->EventCategory(), $event->EventType()));
     }
     $userGroups = $user->Groups();
     if (!empty($userGroups)) {
         foreach ($userGroups as $group) {
             $db->Execute(new AddUserGroupCommand($id, $group->GroupId));
         }
     }
     return $id;
 }
Example #4
0
 /**
  * @param ReservationSeries $reservationSeries
  * @param User $user
  * @param Schedule $schedule
  * @param IReservationViewRepository $reservationViewRepository
  * @return bool
  */
 public function ExceedsQuota($reservationSeries, $user, $schedule, IReservationViewRepository $reservationViewRepository)
 {
     $timezone = $schedule->GetTimezone();
     if (!is_null($this->resourceId)) {
         $appliesToResource = false;
         foreach ($reservationSeries->AllResourceIds() as $resourceId) {
             if (!$appliesToResource && $this->AppliesToResource($resourceId)) {
                 $appliesToResource = true;
             }
         }
         if (!$appliesToResource) {
             return false;
         }
     }
     if (!is_null($this->groupId)) {
         $appliesToGroup = false;
         foreach ($user->Groups() as $group) {
             if (!$appliesToGroup && $this->AppliesToGroup($group->GroupId)) {
                 $appliesToGroup = true;
             }
         }
         if (!$appliesToGroup) {
             return false;
         }
     }
     if (!$this->AppliesToSchedule($reservationSeries->ScheduleId())) {
         return false;
     }
     if (count($reservationSeries->Instances()) == 0) {
         return false;
     }
     $dates = $this->duration->GetSearchDates($reservationSeries, $timezone);
     $reservationsWithinRange = $reservationViewRepository->GetReservationList($dates->Start(), $dates->End(), $reservationSeries->UserId(), ReservationUserLevel::OWNER);
     try {
         $this->CheckAll($reservationsWithinRange, $reservationSeries, $timezone);
     } catch (QuotaExceededException $ex) {
         return true;
     }
     return false;
 }