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');
 }
예제 #2
0
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);
    }
}
예제 #3
0
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;
}