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'); }
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; }
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); } }