protected function definition() { global $DB; $mform = $this->_form; $data = $this->_customdata; $mform->addElement('hidden', 'id', $data['id']); $mform->setType('id', PARAM_INT); $mform->addElement('hidden', 'mode', $data['mode']); $mform->setType('mode', PARAM_INT); $mform->addElement('hidden', 'action', 'remindall'); $mform->setType('action', PARAM_ACTION); list($cm, $course, $organizer, $context) = organizer_get_course_module_data(); $entries = organizer_organizer_get_status_table_entries(array('sort' => '')); $recipient = optional_param('user', null, PARAM_INT); if ($recipient != null) { $recepients = array(); $recepients = $DB->get_records_list('user', 'id', array($recipient)); $counter = count($recepients); $mform->addElement('hidden', 'recipient', $recipient); $mform->setType('recipient', PARAM_INT); } else { $counter = 0; $recepients = array(); foreach ($entries as $entry) { if ($entry->status == ORGANIZER_APP_STATUS_NOT_REGISTERED || $entry->status == ORGANIZER_APP_STATUS_NOT_ATTENDED_REAPP) { $counter++; $recepients[] = $entry; } } } $buttonarray = array(); if ($counter > 0) { $a = new stdClass(); $a->count = $counter; if ($counter == 1) { $mform->addElement('static', '', '', get_string('organizer_remind_all_recepients_sg', 'organizer', $a)); } else { $mform->addElement('static', '', '', get_string('organizer_remind_all_recepients_pl', 'organizer', $a)); } foreach ($recepients as $recepient) { $mform->addElement('static', '', '', organizer_get_name_link($recepient->id) . ($recepient->idnumber ? " ({$recepient->idnumber})" : '')); } $buttonarray[] =& $mform->createElement('submit', 'confirm', get_string('confirm_organizer_remind_all', 'organizer')); } else { $mform->addElement('static', '', '', get_string('organizer_remind_all_no_recepients', 'organizer')); $buttonarray[] =& $mform->createElement('submit', 'confirm', get_string('confirm_organizer_remind_all', 'organizer'), array('disabled')); } $buttonarray[] =& $mform->createElement('cancel'); $str_automessage = "register_reminder:"; $str_automessage .= $organizer->isgrouporganizer == 0 ? "student" : "group"; $str_automessage .= ":fullmessage"; $a = new stdClass(); $a->receivername = get_string('recipientname', 'organizer'); $a->courseid = $course->idnumber == "" ? "" : $course->idnumber . ' '; $a->coursefullname = $course->fullname; $a->custommessage = ""; $mform->addElement('static', 'message_autogenerated', get_string('message_autogenerated', 'organizer'), nl2br(str_replace("\n\n\n", "\n", get_string($str_automessage, 'organizer', $a)))); $mform->addElement('editor', 'message_custommessage', get_string('message_custommessage', 'organizer')); $mform->addHelpButton('message_custommessage', 'message_custommessage', 'organizer'); $mform->addGroup($buttonarray, 'buttonar', '', array(' '), false); $mform->closeHeaderBefore('buttonar'); }
function organizer_add_event_appointment($cmid, $appointment) { global $DB; if (is_number($appointment)) { $appointment = $DB->get_record('organizer_slot_appointments', array('id' => $appointment)); } $cm = get_coursemodule_from_id('organizer', $cmid); $course = $DB->get_record('course', array('id' => $cm->course)); $slot = $DB->get_record('organizer_slots', array('id' => $appointment->slotid)); $organizer = $DB->get_record('organizer', array('id' => $cm->instance)); $a = new stdClass(); $courseurl = new moodle_url("/course/view.php?id={$course->id}"); $a->coursename = $course->fullname; $a->courselink = html_writer::link($courseurl, $course->fullname); $organizerurl = new moodle_url("/mod/organizer/view.php?id={$cm->id}"); $a->organizername = $organizer->name; $a->organizerlink = html_writer::link($organizerurl, $organizer->name); if ($organizer->isgrouporganizer) { $a->appwith = get_string('eventappwith:group', 'organizer'); $a->with = get_string('eventwith', 'organizer'); $group = groups_get_group($appointment->groupid); $users = groups_get_members($group->id); if ($slot->teachervisible) { $memberlist = organizer_get_name_link($slot->teacherid) . " ({$group->name}: "; } else { $memberlist = get_string('eventteacheranonymous', 'organizer') . " ({$group->name}: "; } foreach ($users as $user) { $memberlist .= organizer_get_name_link($user->id) . ", "; } $memberlist = trim($memberlist, ", "); $memberlist .= ")"; $a->participants = $memberlist; } else { $a->appwith = get_string('eventappwith:single', 'organizer'); $a->with = get_string('eventwith', 'organizer'); if ($slot->teachervisible) { $a->participants = organizer_get_name_link($slot->teacherid); } else { $a->participants = get_string('eventteacheranonymous', 'organizer'); } } if ($slot->locationlink) { $a->location = html_writer::link($slot->locationlink, $slot->location); } else { $a->location = $slot->location; } $a->description = $slot->comments; $event = new stdClass(); $event->name = get_string('eventtitle', 'organizer', $a); $event->description = get_string('eventtemplate', 'organizer', $a); $event->format = 1; $event->courseid = 0; $event->groupid = 0; $event->userid = $appointment->userid; $event->repeatid = 0; $event->modulename = 0; $event->instance = $cmid; $event->eventtype = 'user'; $event->timestart = $slot->starttime; $event->timeduration = $slot->duration; $event->visible = 1; $event->sequence = 1; $event->timemodified = time(); if (isset($appointment->eventid)) { $event->id = $appointment->eventid; $DB->update_record('event', $event); return $event->id; } else { return $DB->insert_record('event', $event); } }
function organizer_get_participant_list($params, $slot, $app, &$popups) { global $DB, $USER; $slotx = new organizer_slot($slot); $dir = isset($params['pdir']) ? $params['pdir'] : 'ASC'; if (isset($params['psort']) && $params['psort'] == 'name') { $orderby = " ORDER BY u.lastname {$dir}, u.firstname {$dir}, u.idnumber ASC"; } else { if (isset($params['psort']) && $params['psort'] == 'id') { $orderby = " ORDER BY u.idnumber {$dir}, u.lastname ASC, u.firstname ASC"; } else { $orderby = " ORDER BY u.lastname {$dir}, u.firstname {$dir}, u.idnumber ASC"; } } $query = "SELECT a.*, u.firstname, u.lastname, u.idnumber\n FROM {organizer_slot_appointments} a\n INNER JOIN {user} u ON a.userid = u.id\n WHERE a.slotid = :slotid {$orderby}"; $param = array('slotid' => $slotx->id); $appointments = $DB->get_records_sql($query, $param); $count = count($appointments); $groupmode = organizer_is_group_mode(); $isownslot = $app && $app->slotid == $slotx->id; $wasownslot = false; foreach ($appointments as $someapp) { if ($someapp->userid == $USER->id) { $wasownslot = true; break; } } if (!$slotx->is_available()) { $when = userdate($slotx->starttime - $slotx->availablefrom, get_string('fulldatetimetemplate', 'organizer')); return "<em>" . get_string('unavailableslot', 'organizer') . "<br/>{$when}</em>"; } $content = ''; $studentview = $params['mode'] == ORGANIZER_TAB_STUDENT_VIEW; $ismyslot = $isownslot || $wasownslot; $groupmode = organizer_is_group_mode(); if ($studentview) { if ($slot->isanonymous) { if ($ismyslot) { $idnumber = organizer_get_user_idnumber($app->userid); $content .= organizer_get_name_link($app->userid) . ($idnumber ? " ({$idnumber}) " : " ") . '<br />'; $content .= '<em>' . get_string('slot_anonymous', 'organizer') . '</em><br />'; } else { $content .= '<em>' . get_string('slot_anonymous', 'organizer') . '</em><br />'; } } else { // not anonymous if ($groupmode) { $app = reset($appointments); if ($app === false) { $content = '<em>' . get_string('nogroup', 'organizer') . '</em><br />'; } else { $groupid = $app->groupid; $groupname = $DB->get_field('groups', 'name', array('id' => $groupid)); $content = "<em>{$groupname}</em><br />"; } } else { $content = ''; } foreach ($appointments as $appointment) { $idnumber = organizer_get_user_idnumber($appointment->userid); $content .= organizer_get_name_link($appointment->userid) . ($idnumber ? " ({$idnumber}) " : " "); if ($groupmode) { $content .= ' '; $content .= organizer_is_group_mode() && $appointment->userid == $appointment->applicantid ? organizer_get_img('pix/applicant.gif', 'applicant', get_string('applicant', 'organizer')) : ''; } $content .= '<br />'; } } } else { if ($count == 0) { $content .= $groupmode ? '<em>' . get_string('nogroup', 'organizer') . '</em><br />' : '<em>' . get_string('noparticipants', 'organizer') . '</em><br />'; } else { $app = reset($appointments); if ($groupmode) { $groupid = $app->groupid; $groupname = $DB->get_field('groups', 'name', array('id' => $groupid)); $list = "<em>{$groupname}</em><br />"; } else { $list = ''; } foreach ($appointments as $appointment) { $idnumber = organizer_get_user_idnumber($appointment->userid); $list .= '<div style="float: left;">'; $list .= organizer_get_name_link($appointment->userid) . ($idnumber ? " ({$idnumber})" : ""); if ($groupmode) { $list .= ' '; $list .= organizer_is_group_mode() && $appointment->userid == $appointment->applicantid ? organizer_get_img('pix/applicant.gif', 'applicant', get_string('applicant', 'organizer')) : ''; } $list .= '</div>'; $list .= '<div style="float: right;">' . organizer_app_details($params, $appointment, $popups) . '</div><div style="clear: both;"></div>'; } $content .= $list; } } if (!$groupmode) { $a = new stdClass(); $a->numtakenplaces = $count; $a->totalplaces = $slot->maxparticipants; if ($slot->maxparticipants - $count != 0) { if ($count == 1) { $content .= "<em>" . get_string('places_taken_sg', 'organizer', $a) . "</em>"; } else { $content .= "<em>" . get_string('places_taken_pl', 'organizer', $a) . "</em>"; } } else { if ($count == 1) { $content .= "<span style=\"color: red;\"><em>" . get_string('places_taken_sg', 'organizer', $a) . "</em></span>"; } else { $content .= "<span style=\"color: red;\"><em>" . get_string('places_taken_pl', 'organizer', $a) . "</em></span>"; } } } else { if ($count == 0) { $content .= "<em>" . get_string('group_slot_available', 'organizer') . "</em>"; } else { $content .= "<span style=\"color: red;\"><em>" . get_string('group_slot_full', 'organizer') . "</em></span>"; } } $content .= ' ' . ($slot->isanonymous ? organizer_get_img('pix/anon.png', 'anonymous', get_string('slot_anonymous', 'organizer')) : ''); return $content; }