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', 'delete');
     $mform->setType('action', PARAM_ACTION);
     $deletableslots = false;
     if (isset($data['slots'])) {
         list($sql, $params) = $DB->get_in_or_equal($data['slots']);
         $slots = $DB->get_records_sql('SELECT * FROM {organizer_slots} WHERE {organizer_slots}.id ' . $sql, $params);
         $mform->addElement('static', '', '', '<b>' . get_string('deleteheader', 'organizer') . '</b>');
         foreach ($slots as $slot) {
             $slot = new organizer_slot($slot);
             $deletableslots = true;
             $mform->addElement('hidden', 'slots[]', $slot->id);
             $mform->setType('slots[]', PARAM_INT);
             if (!$slot->has_participants()) {
                 $date = userdate($slot->starttime, get_string('datetemplate', 'organizer'));
                 $stime = userdate($slot->starttime, get_string('timetemplate', 'organizer'));
                 $etime = userdate($slot->starttime + $slot->duration, get_string('timetemplate', 'organizer'));
                 $mform->addElement('static', '', '', "{$date} " . get_string('slotfrom', 'organizer') . " {$stime} " . get_string('slotto', 'organizer') . " {$etime} " . get_string('atlocation', 'organizer') . " {$slot->location}");
             }
         }
         if (!$deletableslots) {
             $mform->addElement('static', '', '', get_string('deletenoslots', 'organizer'));
         }
         $exceptions = false;
         foreach ($slots as $slot) {
             $slot = new organizer_slot($slot);
             if ($slot->has_participants()) {
                 $exceptions = true;
                 break;
             }
         }
         if ($exceptions) {
             $mform->addElement('static', '', '', '<br/><b>' . get_string('deletekeep', 'organizer') . '</b>');
             foreach ($slots as $slot) {
                 $slot = new organizer_slot($slot);
                 if ($slot->has_participants()) {
                     $date = userdate($slot->starttime, get_string('datetemplate', 'organizer'));
                     $stime = userdate($slot->starttime, get_string('timetemplate', 'organizer'));
                     $etime = userdate($slot->starttime + $slot->duration, get_string('timetemplate', 'organizer'));
                     $mform->addElement('static', '', '', "{$date} " . get_string('slotfrom', 'organizer') . " {$stime} " . get_string('slotto', 'organizer') . " {$etime} " . get_string('atlocation', 'organizer') . " {$slot->location}");
                 }
             }
         }
     }
     $buttonarray = array();
     $buttonarray[] =& $mform->createElement('submit', 'confirm', get_string('confirm_delete', 'organizer'));
     $buttonarray[] =& $mform->createElement('cancel');
     $mform->addGroup($buttonarray, 'buttonar', '', array(' '), false);
     $mform->closeHeaderBefore('buttonar');
 }
Example #2
0
function organizer_reregister_appointment($slotid, $groupid = 0)
{
    global $DB, $USER;
    $semaphore = sem_get($slotid);
    sem_acquire($semaphore);
    $slot = new organizer_slot($slotid);
    if ($slot->is_full()) {
        return false;
    }
    $ok = true;
    if (organizer_is_group_mode()) {
        $memberids = $DB->get_fieldset_select('groups_members', 'userid', "groupid = {$groupid}");
        foreach ($memberids as $memberid) {
            $app = organizer_get_last_user_appointment($slot->organizerid, $memberid);
            $ok ^= organizer_register_single_appointment($slotid, $memberid, $USER->id, $groupid);
            if (isset($app)) {
                $ok ^= organizer_unregister_single_appointment($app->slotid, $memberid);
            }
        }
    } else {
        $app = organizer_get_last_user_appointment($slot->organizerid);
        $ok ^= organizer_register_single_appointment($slotid, $USER->id);
        if (isset($app)) {
            $ok ^= organizer_unregister_single_appointment($app->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);
    sem_release($semaphore);
    return $ok;
}
function organizer_organizer_student_action_allowed($action, $slot)
{
    global $DB;
    if (!$DB->record_exists('organizer_slots', array('id' => $slot))) {
        return false;
    }
    $slotx = new organizer_slot($slot);
    list($cm, $course, $organizer, $context) = organizer_get_course_module_data();
    $canregister = has_capability('mod/organizer:register', $context, null, false);
    $canunregister = has_capability('mod/organizer:unregister', $context, null, false);
    $canreregister = $canregister && $canunregister;
    $myapp = organizer_get_last_user_appointment($organizer);
    if ($myapp) {
        $regslot = $DB->get_record('organizer_slots', array('id' => $myapp->slotid));
        if (isset($regslot)) {
            $regslotx = new organizer_slot($regslot);
        }
    }
    $myslotexists = isset($regslot);
    $organizerdisabled = $slotx->organizer_unavailable() || $slotx->organizer_expired();
    $slotdisabled = $slotx->is_past_due() || $slotx->is_past_deadline();
    $myslotpending = $myslotexists && $regslotx->is_past_deadline() && !$regslotx->is_evaluated();
    $ismyslot = $myslotexists && $slotx->id == $regslot->id;
    $slotfull = $slotx->is_full();
    $disabled = $myslotpending || $organizerdisabled || $slotdisabled || !$slotx->organizer_user_has_access() || $slotx->is_evaluated();
    if ($myslotexists) {
        if (!$slotdisabled) {
            if ($ismyslot) {
                $disabled |= !$canunregister || isset($regslotx) && $regslotx->is_evaluated() && !$myapp->allownewappointments;
            } else {
                $disabled |= $slotfull || !$canreregister || isset($regslotx) && $regslotx->is_evaluated() && !$myapp->allownewappointments;
            }
        }
        $allowedaction = $ismyslot ? ORGANIZER_ACTION_UNREGISTER : ORGANIZER_ACTION_REREGISTER;
    } else {
        $disabled |= $slotfull || !$canregister || $ismyslot;
        $allowedaction = $ismyslot ? ORGANIZER_ACTION_UNREGISTER : ORGANIZER_ACTION_REGISTER;
    }
    return !$disabled && $action == $allowedaction;
}
Example #4
0
function organizer_student_action($params, $slot)
{
    global $DB, $OUTPUT;
    $slotx = new organizer_slot($slot);
    list($cm, $course, $organizer, $context) = organizer_get_course_module_data();
    $canregister = has_capability('mod/organizer:register', $context, null, false);
    $canunregister = has_capability('mod/organizer:unregister', $context, null, false);
    $canreregister = $canregister && $canunregister;
    $myapp = organizer_get_last_user_appointment($organizer);
    if ($myapp) {
        $regslot = $DB->get_record('organizer_slots', array('id' => $myapp->slotid));
        if (isset($regslot)) {
            $regslotx = new organizer_slot($regslot);
        }
    }
    $myslotexists = isset($regslot);
    $organizerdisabled = $slotx->organizer_unavailable() || $slotx->organizer_expired();
    $slotdisabled = $slotx->is_past_due() || $slotx->is_past_deadline();
    $myslotpending = $myslotexists && $regslotx->is_past_deadline() && !$regslotx->is_evaluated();
    $ismyslot = $myslotexists && $slotx->id == $regslot->id;
    $slotfull = $slotx->is_full();
    $disabled = $myslotpending || $organizerdisabled || $slotdisabled || !$slotx->organizer_user_has_access() || $slotx->is_evaluated();
    if ($myslotexists) {
        if (!$slotdisabled) {
            if ($ismyslot) {
                $disabled |= !$canunregister || isset($regslotx) && $regslotx->is_evaluated() && !$myapp->allownewappointments;
            } else {
                $disabled |= $slotfull || !$canreregister || isset($regslotx) && $regslotx->is_evaluated() && !$myapp->allownewappointments;
            }
        }
        $action = $ismyslot ? 'unregister' : 'reregister';
    } else {
        $disabled |= $slotfull || !$canregister || $ismyslot;
        $action = $ismyslot ? 'unregister' : 'register';
    }
    if ($ismyslot || organizer_is_my_slot($slotx)) {
        $comment_url = new moodle_url('/mod/organizer/comment_edit.php', array('id' => $params['id'], 'slot' => $slotx->id));
        $comment_btn_disabled = $organizerdisabled || !$slotx->organizer_user_has_access();
        $comment_btn = $OUTPUT->single_button($comment_url, get_string("btn_comment", 'organizer'), 'post', array('disabled' => $comment_btn_disabled));
        return organizer_get_reg_button($action, $slotx->id, $params, $disabled) . '<br/>' . $comment_btn;
    } else {
        return organizer_get_reg_button($action, $slotx->id, $params, $disabled);
    }
}