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')))); }