示例#1
0
function organizer_unregister_appointment($slotid, $groupid)
{
    global $DB, $USER;
    $ok = true;
    if (organizer_is_group_mode()) {
        $memberids = $DB->get_fieldset_select('groups_members', 'userid', "groupid = {$groupid}");
        foreach ($memberids as $memberid) {
            $ok ^= organizer_unregister_single_appointment($slotid, $memberid);
        }
    } else {
        $ok ^= organizer_unregister_single_appointment($slotid, $USER->id);
    }
    list($cm, $course, $organizer, $context) = organizer_get_course_module_data();
    $slot = $DB->get_record('organizer_slots', array('id' => $slotid));
    organizer_add_event_slot($cm->id, $slot);
    //FIXME!!!
    return $ok;
}
 if (!organizer_security_check_slots($slot)) {
     print_error('Security failure: Selected slot doesn\'t belong to this organizer!');
 }
 if (!organizer_organizer_student_action_allowed($action, $slot)) {
     print_error('Inconsistent state: Cannot execute registration action! Please navigate back and refresh your browser!');
 }
 $group = organizer_fetch_my_group();
 $groupid = $group ? $group->id : 0;
 $success = organizer_reregister_appointment($slot, $groupid);
 if ($success) {
     organizer_prepare_and_send_message($slot, 'register_notify:teacher:reregister');
     if ($group) {
         organizer_prepare_and_send_message($slot, 'group_registration_notify:student:reregister');
     }
 } else {
     if (organizer_is_group_mode()) {
         $redirecturl->param('messages[]', 'message_error_slot_full_group');
     } else {
         $redirecturl->param('messages[]', 'message_error_slot_full_single');
     }
 }
 redirect($redirecturl);
 /*
 } else if ($action == ORGANIZER_ACTION_REMIND) {
 list($cm, $course, $organizer, $context) = organizer_get_course_module_data();
 $count = 0;
 if ($organizer->isgrouporganizer) {
     $members = groups_get_members($user);
     foreach ($members as $member) {
         $success = organizer_prepare_and_send_message(array('user' => $member->id, 'organizer' => $organizer),
                 'register_reminder:student'); // ---------------------------------------- MESSAGE!!!
 private function _addfields($defaults)
 {
     $mform = $this->_form;
     $mform->addElement('header', 'slotdetails', get_string('slotdetails', 'organizer'));
     $teachers = $this->_load_teachers($defaults);
     /*
     if (!isset($defaults['teacherid'])) {
         $teachers[-1] = get_string('teacher_unchanged', 'organizer');
     }
     */
     $group = array();
     $group[] = $mform->createElement('select', 'teacherid', get_string('teacher', 'organizer'), $teachers);
     $group[] = $mform->createElement('static', '', '', $this->_warning_icon('teacherid', isset($defaults['teacherid'])));
     $mform->setType('teacherid', PARAM_INT);
     $mform->addGroup($group, 'teachergrp', get_string('teacher', 'organizer'), ORGANIZER_SPACING, false);
     $mform->addElement('hidden', 'mod_teacherid', 0);
     $mform->setType('mod_teacherid', PARAM_BOOL);
     /*
     if (!isset($defaults['teacherid'])) {
         $mform->setDefault('teacherid', -1);
     }
     */
     $group = array();
     $group[] = $mform->createElement('advcheckbox', 'teachervisible', get_string('teachervisible', 'organizer'), null, null, array(0, 1));
     $group[] = $mform->createElement('static', '', '', $this->_warning_icon('teachervisible', isset($defaults['teachervisible'])));
     $mform->setDefault('teachervisible', 1);
     $mform->addGroup($group, '', get_string('teachervisible', 'organizer'), ORGANIZER_SPACING, false);
     $mform->addElement('hidden', 'mod_teachervisible', 0);
     $mform->setType('mod_teachervisible', PARAM_BOOL);
     $group = array();
     $group[] = $mform->createElement('advcheckbox', 'isanonymous', get_string('isanonymous', 'organizer'), null, null, array(0, 1));
     $group[] = $mform->createElement('static', '', '', $this->_warning_icon('isanonymous', isset($defaults['isanonymous'])));
     $mform->setDefault('isanonymous', 0);
     $mform->addGroup($group, '', get_string('isanonymous', 'organizer'), ORGANIZER_SPACING, false);
     $mform->addElement('hidden', 'mod_isanonymous', 0);
     $mform->setType('mod_isanonymous', PARAM_BOOL);
     $group = array();
     $group[] = $mform->createElement('text', 'location', get_string('location', 'organizer'), array('size' => '64', 'group' => null));
     $group[] = $mform->createElement('static', '', '', $this->_warning_icon('location', isset($defaults['location'])));
     $mform->setType('location', PARAM_TEXT);
     $mform->addGroup($group, 'locationgroup', get_string('location', 'organizer'), ORGANIZER_SPACING, false);
     $mform->addElement('hidden', 'mod_location', 0);
     $mform->setType('mod_location', PARAM_BOOL);
     $group = array();
     $group[] = $mform->createElement('text', 'locationlink', get_string('locationlink', 'organizer'), array('size' => '64', 'group' => null));
     $group[] = $mform->createElement('static', '', '', $this->_warning_icon('locationlink', isset($defaults['locationlink'])));
     $mform->setType('locationlink', PARAM_URL);
     $mform->addGroup($group, 'locationlinkgroup', get_string('locationlink', 'organizer'), ORGANIZER_SPACING, false);
     $mform->addElement('hidden', 'mod_locationlink', 0);
     $mform->setType('mod_locationlink', PARAM_BOOL);
     if (!organizer_is_group_mode()) {
         $group = array();
         $group[] = $mform->createElement('text', 'maxparticipants', get_string('maxparticipants', 'organizer'), array('size' => '3', 'group' => null));
         $group[] = $mform->createElement('static', '', '', $this->_warning_icon('maxparticipants', isset($defaults['maxparticipants'])));
         $mform->addGroup($group, 'maxparticipantsgroup', get_string('maxparticipants', 'organizer'), ORGANIZER_SPACING, false);
         $mform->addElement('hidden', 'mod_maxparticipants', 0);
         $mform->setType('mod_maxparticipants', PARAM_BOOL);
         $mform->setType('maxparticipants', PARAM_INT);
     } else {
         $mform->addElement('hidden', 'maxparticipants', 1);
         $mform->addElement('hidden', 'mod_maxparticipants', 0);
         $mform->setType('maxparticipants', PARAM_INT);
         $mform->setType('mod_maxparticipants', PARAM_BOOL);
     }
     $group = array();
     if ($defaults['now']) {
         $group[] = $mform->createElement('duration', 'availablefrom', get_string('availablefrom', 'organizer'), null, array('group' => null, 'disabled' => true));
     } else {
         $group[] = $mform->createElement('duration', 'availablefrom', get_string('availablefrom', 'organizer'));
     }
     $group[] = $mform->createElement('static', '', '', get_string('relative_deadline_before', 'organizer') . '   ' . get_string('relative_deadline_now', 'organizer'));
     $group[] = $mform->createElement('checkbox', 'availablefrom[now]', get_string('relative_deadline_now', 'organizer'));
     $group[] = $mform->createElement('static', '', '', $this->_warning_icon('availablefrom', isset($defaults['availablefrom'])));
     $mform->setDefault('availablefrom', '');
     $mform->setDefault('availablefrom[now]', $defaults['now']);
     $mform->addGroup($group, 'availablefromgroup', get_string('availablefrom', 'organizer'), ORGANIZER_SPACING, false);
     $availablefromgroup = $mform->getElement('availablefromgroup')->getElements();
     $availablefrom = $availablefromgroup[0]->getElements();
     $availablefrom[1]->removeOption(1);
     $mform->addElement('hidden', 'mod_availablefrom', 0);
     $mform->setType('mod_availablefrom', PARAM_BOOL);
     $group = array();
     $group[] = $mform->createElement('duration', 'notificationtime', get_string('notificationtime', 'organizer'), null, null, array(0, 1));
     $group[] = $mform->createElement('static', '', '', $this->_warning_icon('notificationtime', isset($defaults['notificationtime'])));
     $mform->setDefault('notificationtime', '');
     $mform->addGroup($group, 'notificationtimegroup', get_string('notificationtime', 'organizer'), ORGANIZER_SPACING, false);
     $mform->addElement('hidden', 'mod_notificationtime', 0);
     $mform->setType('mod_notificationtime', PARAM_BOOL);
     $notificationtimegroup = $mform->getElement('notificationtimegroup')->getElements();
     $notificationtime = $notificationtimegroup[0]->getElements();
     $notificationtime[1]->removeOption(1);
     $mform->addElement('header', 'other', get_string('otherheader', 'organizer'));
     $group = array();
     $group[] = $mform->createElement('textarea', 'comments', get_string('appointmentcomments', 'organizer'), array('wrap' => 'virtual', 'rows' => '10', 'cols' => '60'));
     $group[] = $mform->createElement('static', '', '', $this->_warning_icon('comments', isset($defaults['comments'])));
     $mform->setDefault('comments', '');
     $mform->addGroup($group, '', get_string('appointmentcomments', 'organizer'), ORGANIZER_SPACING, false);
     $mform->addElement('hidden', 'mod_comments', 0);
     $mform->setType('mod_comments', PARAM_BOOL);
 }
示例#4
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;
}
 private function _add_review_slots()
 {
     $mform =& $this->_form;
     if (isset($mform->_submitValues['now'])) {
         $mform->insertElementBefore($mform->createElement('static', 'availablefromdummy', get_string('availablefrom', 'organizer'), 'Starting now'), 'notificationtime');
         $mform->addHelpButton('availablefromdummy', 'availablefrom', 'organizer');
         $mform->addElement('hidden', 'availablefrom', 0);
     } else {
         $mform->insertElementBefore($mform->createElement('duration', 'availablefrom', get_string('availablefrom', 'organizer')), 'notificationtime');
         $mform->addHelpButton('availablefrom', 'availablefrom', 'organizer');
     }
     $mform->insertElementBefore($mform->createElement('header', 'slottimeframes', get_string('rewievslotsheader', 'organizer')), 'other');
     $slots = isset($mform->_submitValues['newslots']) ? $mform->_submitValues['newslots'] : array();
     $startdate = mktime(0, 0, 0, $mform->_submitValues['startdate']['month'], $mform->_submitValues['startdate']['day'], $mform->_submitValues['startdate']['year']);
     $enddate = mktime(0, 0, 0, $mform->_submitValues['enddate']['month'], $mform->_submitValues['enddate']['day'], $mform->_submitValues['enddate']['year']);
     $teacherid = $mform->_submitValues['teacherid'];
     $events = $this->_organizer_load_events($teacherid, $startdate, $enddate + ORGANIZER_DAY_IN_SECS);
     $id = 0;
     $totalslots = 0;
     $collcount = 0;
     for ($day = 0; $day < ORGANIZER_NUM_DAYS; $day++) {
         $dayempty = true;
         for ($date = $startdate; $date < $enddate + ORGANIZER_DAY_IN_SECS; $date += ORGANIZER_DAY_IN_SECS) {
             $datedata = getdate($date);
             $dayofweek = ($datedata['wday'] + 6) % 7;
             if ($day == $dayofweek) {
                 $heading = true;
                 foreach ($slots as $slot) {
                     if ($slot['selected'] && $slot['day'] == $day) {
                         if ($heading) {
                             $mform->insertElementBefore($mform->createElement('html', '<strong>' . userdate($date, get_string('fulldatelongtemplate', 'organizer')) . '</strong><br />'), 'other');
                             $heading = false;
                         }
                         $duration = $mform->_submitValues['duration']['number'];
                         $unit = $mform->_submitValues['duration']['timeunit'];
                         $collisions = $this->_check_collision($slot, $date, $events);
                         $collcount += count($collisions);
                         $disabled = count($collisions) ? true : false;
                         $dayslot = $this->_create_slot_review_group($date, $id, $slot['from'], $slot['to'], $duration, $unit, $disabled);
                         $mform->insertElementBefore($mform->createElement('group', "reviewgroup{$id}", '', $dayslot, ORGANIZER_SPACING, false), 'other');
                         $head = true;
                         foreach ($collisions as $event) {
                             if ($head) {
                                 $mform->insertElementBefore($mform->createElement('html', '<span class="error">' . get_string('collision', 'organizer') . '</span><br />'), 'other');
                                 $head = false;
                             }
                             $mform->insertElementBefore($mform->createElement('html', '&nbsp;&nbsp;- <strong>' . $event->name . '</strong> from ' . userdate($event->timestart, get_string('timetemplate', 'organizer')) . ' to ' . userdate($event->timestart + $event->timeduration, get_string('timetemplate', 'organizer')) . '<br />'), 'other');
                             $disabled = true;
                         }
                         if (!$disabled) {
                             $totalslots += intval(($slot['to'] - $slot['from']) / ($duration * $unit));
                         }
                         $dayempty = false;
                         $id++;
                     }
                 }
             }
         }
         if ($dayempty) {
             $mform->insertElementBefore($mform->createElement('html', get_string('noslots', 'organizer') . get_string("day_{$day}", 'organizer')), 'other');
         }
         $mform->insertElementBefore($mform->createElement('html', '<hr />'), 'other');
     }
     global $DB;
     if (organizer_is_group_mode()) {
         list($cm, $course, $organizer, $context) = organizer_get_course_module_data();
         $slots = $DB->get_records('organizer_slots', array('organizerid' => $organizer->id));
         $a = new stdClass();
         $a->numplaces = $totalslots;
         $a->totalplaces = count($slots) + $a->numplaces;
         $groups = groups_get_all_groups($course->id, 0, $cm->groupingid);
         $a->numgroups = count($groups);
         $html = get_string('addslots_placesinfo_group', 'organizer', $a);
     } else {
         list($cm, $course, $organizer, $context) = organizer_get_course_module_data();
         $slots = $DB->get_records('organizer_slots', array('organizerid' => $organizer->id));
         $placecount = 0;
         foreach ($slots as $slot) {
             $placecount += $slot->maxparticipants;
         }
         $a = new stdClass();
         $a->numplaces = $totalslots * $mform->_submitValues['maxparticipants'];
         $a->totalplaces = $placecount + $a->numplaces;
         $a->numstudents = count(get_enrolled_users($context, 'mod/organizer:register'));
         $html = get_string('addslots_placesinfo', 'organizer', $a);
     }
     $mform->insertElementBefore($mform->createElement('html', $html), 'other');
     return count($collcount) == 0;
 }