Ejemplo n.º 1
0
 function index_action()
 {
     $form_fields['comment'] = array('caption' => _("Kommentar"), 'type' => 'textarea', 'attributes' => array('rows' => 4, 'style' => 'width:100%'));
     $form_fields['snd_message'] = array('caption' => _("Benachrichtigung über ausfallende Termine an alle Teilnehmer verschicken"), 'type' => 'checkbox', 'attributes' => array('style' => 'vertical-align:middle'));
     $form_buttons['save_close'] = array('caption' => _('OK'), 'info' => _("Termine absagen und Dialog schließen"));
     $form = new StudipForm($form_fields, $form_buttons, 'cancel_dates', false);
     if ($form->isClicked('save_close')) {
         $sem = Seminar::getInstance($this->course_id);
         $comment = $form->getFormFieldValue('comment');
         foreach ($this->dates as $date) {
             $sem->cancelSingleDate($date->getTerminId(), $date->getMetadateId());
             $date->setComment($comment);
             $date->setExTermin(true);
             $date->store();
         }
         if ($form->getFormFieldValue('snd_message') && count($this->dates)) {
             $snd_messages = raumzeit_send_cancel_message($comment, $this->dates);
             if ($snd_messages) {
                 $msg = sprintf(_("Es wurden %s Benachrichtigungen gesendet."), $snd_messages);
             }
         }
         PageLayout::postMessage(MessageBox::success(_("Folgende Termine wurden abgesagt") . ($msg ? ' (' . $msg . '):' : ':'), array_map(function ($d) {
             return $d->toString();
         }, $this->dates)));
         $this->redirect($this->url_for('course/dates'));
     }
     $this->form = $form;
 }
Ejemplo n.º 2
0
 function resource_message_action($resource_id)
 {
     $r_perms = new ResourceObjectPerms($resource_id, $GLOBALS['user']->id);
     if (!$r_perms->havePerm('admin')) {
         throw new AccessDeniedException();
     }
     $this->resource = new ResourceObject($resource_id);
     $title = sprintf(_("Nutzer von %s benachrichtigen"), htmlReady($this->resource->getName()));
     $form_fields['start_day'] = array('type' => 'text', 'size' => '10', 'required' => true, 'caption' => _("Belegungen berücksichtigen von"));
     $form_fields['start_day']['attributes'] = array('onMouseOver' => 'jQuery(this).datepicker();this.blur();', 'onChange' => '$(this).closest("form").submit();');
     $form_fields['start_day']['default_value'] = strftime('%x');
     $form_fields['end_day'] = array('type' => 'text', 'size' => '10', 'required' => true, 'caption' => _("Belegungen berücksichtigen bis"));
     $form_fields['end_day']['attributes'] = array('onMouseOver' => 'jQuery(this).datepicker();this.blur();', 'onChange' => '$(this).closest("form").submit();');
     $form_fields['end_day']['default_value'] = strftime('%x', strtotime('+6 months'));
     $form_fields['subject'] = array('type' => 'text', 'size' => '200', 'attributes' => array('style' => 'width:100%'), 'required' => true, 'caption' => _("Betreff"));
     $form_fields['subject']['default_value'] = $this->resource->getName();
     $form_fields['message'] = array('caption' => _("Nachricht"), 'type' => 'textarea', 'required' => true, 'attributes' => array('rows' => 4, 'style' => 'width:100%'));
     $form_buttons['save_close'] = array('caption' => _('OK'), 'info' => _("Benachrichtigung verschicken und Dialog schließen"));
     $form = new StudipForm($form_fields, $form_buttons, 'resource_message', false);
     $start_time = strtotime($form->getFormFieldValue('start_day'));
     $end_time = strtotime($form->getFormFieldValue('end_day'));
     $assign_events = new AssignEventList($start_time, $end_time, $resource_id, '', '', TRUE, 'all');
     $rec = array();
     while ($event = $assign_events->nextEvent()) {
         if ($owner_type = $event->getOwnerType()) {
             if ($owner_type == 'date') {
                 $seminar = new Seminar(Seminar::GetSemIdByDateId($event->getAssignUserId()));
                 foreach ($seminar->getMembers('dozent') as $dozent) {
                     $rec[$dozent['username']][] = strftime('%x %R', $event->begin) . ' - ' . strftime('%R', $event->end) . ' ' . $seminar->getName();
                 }
             } else {
                 $rec[get_username($event->getAssignUserId())][] = strftime('%x %R', $event->begin) . ' - ' . strftime('%R', $event->end);
             }
         }
     }
     if ($form->isSended() && count($rec) && $form->getFormFieldValue('message')) {
         $messaging = new Messaging();
         $ok = $messaging->insert_message($form->getFormFieldValue('message'), array_keys($rec), $GLOBALS['user']->id, null, null, null, '', $form->getFormFieldValue('subject'), true);
         PageLayout::postMessage(MessageBox::success(sprintf(_("Die Nachricht wurde an %s Nutzer verschickt"), $ok)));
         return $this->redirect(URLHelper::getUrl('resources.php?view=resources'));
     }
     if (!count($rec)) {
         PageLayout::postMessage(MessageBox::error(sprintf(_("Im Zeitraum %s - %s wurden keine Belegungen gefunden!"), strftime('%x', $start_time), strftime('%x', $end_time))));
         $this->no_receiver = true;
     } else {
         $submessage = array();
         foreach ($rec as $username => $slots) {
             $submessage[] = get_fullname_from_uname($username, 'full_rev_username', true) . ' ' . sprintf(_('(%s Belegungen)'), count($slots));
         }
         PageLayout::postMessage(MessageBox::info(sprintf(_("Benachrichtigung an %s Nutzer verschicken"), count($rec)), $submessage, true));
     }
     $this->form = $form;
     $this->response->add_header('X-Title', $title);
 }