function organizer_remind_all($recipient = null, $custommessage = "")
{
    global $DB;
    list($cm, $course, $organizer, $context) = organizer_get_course_module_data();
    if ($recipient != null) {
        $entries = $DB->get_records_list('user', 'id', array($recipient));
    } else {
        if ($cm->groupingid == 0) {
            $entries = get_enrolled_users($context, 'mod/organizer:register');
        } else {
            $query = "SELECT u.* FROM {user} u\n            INNER JOIN {groups_members} gm ON u.id = gm.userid\n            INNER JOIN {groups} g ON gm.groupid = g.id\n            INNER JOIN {groupings_groups} gg ON g.id = gg.groupid\n            WHERE gg.groupingid = :grouping";
            $par = array('grouping' => $cm->groupingid);
            $entries = $DB->get_records_sql($query, $par);
        }
    }
    $query = "SELECT DISTINCT u.id FROM {organizer} o\n        INNER JOIN {organizer_slots} s ON o.id = s.organizerid\n        INNER JOIN {organizer_slot_appointments} a ON s.id = a.slotid\n        INNER JOIN {user} u ON a.userid = u.id\n        WHERE o.id = :id AND (a.attended = 1 OR a.attended IS NULL)";
    $par = array('id' => $organizer->id);
    $nonrecepients = $DB->get_fieldset_sql($query, $par);
    $count = 0;
    foreach ($entries as $entry) {
        if (!in_array($entry->id, $nonrecepients)) {
            organizer_prepare_and_send_message(array('user' => $entry->id, 'organizer' => $organizer, 'custommessage' => $custommessage), 'register_reminder:student');
            // ---------------------------------------- MESSAGE!!!
            $count++;
        }
    }
    return $count;
}
Esempio n. 2
0
function organizer_display_printable_table($allowsubmissionsfromdate, $timedue, $columns, $slots, $entriesperpage = false, $textsize = '10', $orientation = 'L', $headerfooter = true, $filename = '')
{
    global $USER;
    list($cm, $course, $organizer, $context) = organizer_get_course_module_data();
    $columnwitdh = array();
    $titles = array();
    $columnformats = array();
    $tsort = isset($_SESSION['organizer_tsort']) ? $_SESSION['organizer_tsort'] : "";
    if ($tsort != "") {
        $order = "ASC";
        if (substr($tsort, strlen($tsort) - strlen("DESC")) == "DESC") {
            $tsort = substr($tsort, 0, strlen($tsort) - strlen("DESC"));
            $order = "DESC";
        }
    }
    $colorder = array();
    $dosort = false;
    $i = 0;
    foreach ($columns as $column) {
        if ($column != "") {
            $titles[] = get_string("th_{$column}", 'organizer');
            if ($tsort == $column) {
                $dosort = true;
            }
            $colorder[$column] = $i++;
            switch ($column) {
                case 'datetime':
                    $columnwitdh[] = array('value' => 64, 'mode' => 'Relativ');
                    $columnformats[] = array('fill' => 0, 'align' => 'C');
                    break;
                case 'location':
                    $columnwitdh[] = array('value' => 48, 'mode' => 'Relativ');
                    $columnformats[] = array('fill' => 0, 'align' => 'C');
                    break;
                case 'teacher':
                    $columnwitdh[] = array('value' => 32, 'mode' => 'Relativ');
                    $columnformats[] = array('fill' => 0, 'align' => 'C');
                    break;
                case 'groupname':
                    $columnwitdh[] = array('value' => 32, 'mode' => 'Relativ');
                    $columnformats[] = array('fill' => 0, 'align' => 'C');
                    break;
                case 'participant':
                    $columnwitdh[] = array('value' => 32, 'mode' => 'Relativ');
                    $columnformats[] = array('fill' => 0, 'align' => 'C');
                    break;
                case 'idnumber':
                    $columnwitdh[] = array('value' => 24, 'mode' => 'Relativ');
                    $columnformats[] = array('fill' => 0, 'align' => 'C');
                    break;
                case 'attended':
                    $columnwitdh[] = array('value' => 12, 'mode' => 'Relativ');
                    $columnformats[] = array('fill' => 0, 'align' => 'C');
                    break;
                case 'grade':
                    $columnwitdh[] = array('value' => 18, 'mode' => 'Relativ');
                    $columnformats[] = array('fill' => 0, 'align' => 'C');
                    break;
                case 'feedback':
                    $columnwitdh[] = array('value' => 64, 'mode' => 'Relativ');
                    $columnformats[] = array('fill' => 1, 'align' => 'L');
                    break;
            }
        }
    }
    switch ($tsort) {
        case "datetime":
            $sort = "starttime";
            break;
        case "location":
            $sort = "s.location";
            break;
        case "teacher":
            $sort = "teacherfirstname";
            break;
        case "participant":
            $sort = "u.lastname";
            break;
        case "idnumber":
            $sort = "u.idnumber";
            break;
        case "attended":
            $sort = "a.attended";
            break;
        case "grade":
            $sort = "a.grade";
            break;
        case "feedback":
            $sort = "a.feedback";
            break;
        default:
            $sort = NULL;
    }
    if (!isset($order)) {
        $order = "";
    } else {
        if ($order != "DESC" && $order != "ASC") {
            $order = "";
        }
    }
    if ($dosort) {
        $dosort = $sort . ' ' . $order;
    } else {
        $dosort = "";
    }
    $allowsubmissionsfromdate = $allowsubmissionsfromdate ? userdate($allowsubmissionsfromdate) : get_string('pdf_notactive', 'organizer');
    $timedue = $timedue ? userdate($timedue) : get_string('pdf_notactive', 'organizer');
    $mpdftable = new MTablePDF($orientation, $columnwitdh);
    $mpdftable->SetTitle(get_string('modulename', 'organizer') . " " . $organizer->name . " - " . get_string('printout', 'organizer'));
    $mpdftable->setRowsperPage($entriesperpage);
    $mpdftable->ShowHeaderFooter($headerfooter);
    $mpdftable->SetFontSize($textsize);
    $mpdftable->setHeaderText(get_string('course') . ':', "{$course->idnumber} {$course->fullname}", get_string('availablefrom', 'organizer') . ':', $allowsubmissionsfromdate, get_string('date') . ':', userdate(time()), get_string('modulename', 'organizer') . ':', $organizer->name, get_string('duedate', 'organizer') . ':', $timedue, '', '');
    $mpdftable->setTitles($titles);
    $mpdftable->setColumnFormat($columnformats);
    $entries = fetch_table_entries($slots, $dosort);
    $rowspan = 0;
    foreach ($entries as $entry) {
        $row = array();
        if ($rowspan == 0) {
            $rowspan = $entry->rowspan;
        }
        foreach ($columns as $column) {
            switch ($column) {
                // these columns may have rowspan
                case 'datetime':
                    if ($rowspan != $entry->rowspan) {
                        $row[] = null;
                    } else {
                        $datetime = userdate($entry->starttime, get_string('fulldatetimetemplate', 'organizer')) . ' - ' . userdate($entry->starttime + $entry->duration, get_string('timetemplate', 'organizer'));
                        $row[] = array('data' => $datetime, 'rowspan' => $rowspan - 1);
                    }
                    break;
                case 'location':
                    if ($rowspan != $entry->rowspan) {
                        $row[] = null;
                    } else {
                        $row[] = array('data' => $entry->location, 'rowspan' => $rowspan - 1);
                    }
                    break;
                case 'teacher':
                    if ($rowspan != $entry->rowspan) {
                        $row[] = null;
                    } else {
                        $a = new stdClass();
                        $a->firstname = $entry->teacherfirstname;
                        $a->lastname = $entry->teacherlastname;
                        $name = get_string('fullname_template', 'organizer', $a);
                        $row[] = array('data' => $name, 'rowspan' => $rowspan - 1);
                    }
                    break;
                case 'groupname':
                    if ($rowspan != $entry->rowspan) {
                        $row[] = null;
                    } else {
                        $groupname = isset($entry->groupname) ? $entry->groupname : '';
                        $row[] = array('data' => $groupname, 'rowspan' => $rowspan - 1);
                    }
                    break;
                    // these columns cannot have rowspan
                // these columns cannot have rowspan
                case 'participant':
                    $a = new stdClass();
                    $a->firstname = $entry->firstname;
                    $a->lastname = $entry->lastname;
                    $name = get_string('fullname_template', 'organizer', $a);
                    $row[] = array('data' => $name, 'rowspan' => 0);
                    break;
                case 'idnumber':
                    $idnumber = isset($entry->idnumber) && $entry->idnumber !== '' ? $entry->idnumber : '';
                    $row[] = array('data' => $idnumber, 'rowspan' => 0);
                    break;
                case 'attended':
                    $attended = isset($entry->attended) ? $entry->attended == 1 ? get_string('yes') : get_string('no') : '';
                    $row[] = array('data' => $attended, 'rowspan' => 0);
                    break;
                case 'grade':
                    $grade = isset($entry->grade) ? sprintf("%01.2f", $entry->grade) : '';
                    $row[] = array('data' => $grade, 'rowspan' => 0);
                    break;
                case 'feedback':
                    $feedback = isset($entry->feedback) && $entry->feedback !== '' ? $entry->feedback : '';
                    $row[] = array('data' => $feedback, 'rowspan' => 0);
                    break;
            }
        }
        $mpdftable->addRow($row);
        $rowspan--;
    }
    $format = optional_param('format', 'pdf', PARAM_TEXT);
    switch ($format) {
        case 'xlsx':
            $mpdftable->setOutputFormat(MTablePDF::OUTPUT_FORMAT_XLSX);
            break;
        case 'xls':
            $mpdftable->setOutputFormat(MTablePDF::OUTPUT_FORMAT_XLS);
            break;
        case 'ods':
            $mpdftable->setOutputFormat(MTablePDF::OUTPUT_FORMAT_ODS);
            break;
        case 'csv_comma':
            $mpdftable->setOutputFormat(MTablePDF::OUTPUT_FORMAT_CSV_COMMA);
            break;
        case 'csv_tab':
            $mpdftable->setOutputFormat(MTablePDF::OUTPUT_FORMAT_CSV_TAB);
            break;
        default:
            $mpdftable->setOutputFormat(MTablePDF::OUTPUT_FORMAT_PDF);
            break;
    }
    $mpdftable->generate($filename);
    die;
}
Esempio n. 3
0
// If not, see <http://www.gnu.org/licenses/>.
/**
 * addslot.php
 *
 * @package       mod_organizer
 * @author        Andreas Windbichler
 * @author        Andreas Hruska (andreas.hruska@tuwien.ac.at)
 * @author        Katarzyna Potocka (katarzyna.potocka@tuwien.ac.at)
 * @copyright     2014 Academic Moodle Cooperation {@link http://www.academic-moodle-cooperation.org}
 * @license       http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
require_once dirname(dirname(dirname(__FILE__))) . '/config.php';
require_once dirname(__FILE__) . '/view_action_form_add.php';
require_once dirname(__FILE__) . '/view_lib.php';
//--------------------------------------------------------------------------------------------------
list($cm, $course, $organizer, $context) = organizer_get_course_module_data();
require_login($course, false, $cm);
$mode = optional_param('mode', null, PARAM_INT);
$action = optional_param('action', null, PARAM_ACTION);
$user = optional_param('user', null, PARAM_INT);
$slot = optional_param('slot', null, PARAM_INT);
$slots = optional_param_array('slots', array(), PARAM_INT);
$app = optional_param('app', null, PARAM_INT);
$tsort = optional_param('tsort', null, PARAM_ALPHA);
$url = new moodle_url('/mod/organizer/view_action.php');
$url->param('id', $cm->id);
$url->param('mode', $mode);
$url->param('action', $action);
$url->param('sesskey', sesskey());
$PAGE->set_url($url);
$PAGE->set_pagelayout('standard');
Esempio n. 4
0
function organizer_evaluate_slots($data)
{
    global $DB;
    list($cm, $course, $organizer, $context) = organizer_get_course_module_data();
    $slotids = array();
    if (isset($data->apps) && count($data->apps) > 0 && isset($data->slotenable)) {
        foreach ($data->apps as $appid => $app) {
            $newapp = $DB->get_record('organizer_slot_appointments', array('id' => $appid));
            if (array_search($newapp->slotid, array_keys($data->slotenable)) === false) {
                continue;
            }
            $newapp->attended = $app['attended'];
            if ($organizer->grade > 0) {
                $newapp->grade = isset($app['grade']) ? $app['grade'] : -1;
            } else {
                $newapp->grade = isset($app['grade']) ? $app['grade'] : 0;
            }
            $newapp->feedback = isset($app['feedback']) ? $app['feedback'] : "";
            $newapp->allownewappointments = $app['allownewappointments'];
            $DB->update_record('organizer_slot_appointments', $newapp);
            organizer_update_grades($organizer, $newapp->userid);
            $slotids[] = $newapp->slotid;
        }
    }
    return $slotids;
}
 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_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;
}
Esempio n. 7
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);
    }
}
 private function _load_teachers()
 {
     list($cm, $course, $organizer, $context) = organizer_get_course_module_data();
     $teachersraw = get_users_by_capability($context, 'mod/organizer:addslots');
     $teachers = array();
     foreach ($teachersraw as $teacher) {
         $a = new stdClass();
         $a->firstname = $teacher->firstname;
         $a->lastname = $teacher->lastname;
         $name = get_string('fullname_template', 'organizer', $a) . " ({$teacher->email})";
         $teachers[$teacher->id] = $name;
     }
     return $teachers;
 }