Example #1
0
 public function store_permissions_action($range_id = null)
 {
     $this->range_id = $range_id ?: $this->range_id;
     $this->calendar = new SingleCalendar($this->range_id);
     $deleted = 0;
     $read = 0;
     $write = 0;
     $submitted_permissions = Request::intArray('perm');
     foreach ($submitted_permissions as $user_id => $new_perm) {
         $calendar_user = new CalendarUser(array($this->calendar->getRangeId(), $user_id));
         if (!$calendar_user->isNew() && $new_perm == 1) {
             $deleted += $calendar_user->delete();
             $new_perm = 0;
         }
         if ($new_perm >= Calendar::PERMISSION_READABLE && $calendar_user->permission != $new_perm) {
             $calendar_user->permission = $new_perm;
             if ($calendar_user->store()) {
                 if ($new_perm == Calendar::PERMISSION_READABLE) {
                     $read++;
                 } else {
                     $write++;
                 }
             }
         }
     }
     $sum = $deleted + $read + $write;
     if ($sum) {
         if ($deleted) {
             $details[] = sprintf(ngettext('Einer Person wurde die Berechtigungen entzogen.', '%s Personen wurden die Berechtigungen entzogen.', $deleted), $deleted);
         }
         if ($read) {
             $details[] = sprintf(ngettext('Eine Person wurde auf leseberechtigt gesetzt.', '%s Personen wurden auf leseberechtigt gesetzt.', $read), $read);
         }
         if ($write) {
             $details[] = sprintf(ngettext('Eine Person wurde auf schreibberechtigt gesetzt.', '%s Personen wurden auf schreibberechtigt gesetzt.', $write), $write);
         }
         PageLayout::postMessage(MessageBox::success(sprintf(ngettext('Die Berechtigungen von einer Person wurde geändert.', 'Die Berechtigungen von %s Personen wurden geändert.', $sum), $sum), $details));
         // no message if the group was changed
     } else {
         if (!Request::submitted('calendar_group_submit')) {
             PageLayout::postMessage(MessageBox::success(_('Es wurden keine Berechtigungen geändert.')));
         }
     }
     $this->redirect($this->url_for('calendar/single/manage_access/' . $this->calendar->getRangeId(), array('group_filter' => Request::option('group_filter', 'list'))));
 }