Example #1
0
/**
 * Function for either adding to log or triggering an event
 * depending on Moodle version
 * @param int $courseid Moodle course ID
 * @param string $event_name The event we are logging
 * @param string $link A link to the Turnitin activity
 * @param string $desc Description of the logged event
 * @param int $cmid Course module id
 */
function turnitintool_add_to_log($courseid, $event_name, $link, $desc, $cmid)
{
    global $CFG;
    if ((property_exists($CFG, 'branch') and $CFG->branch < 27) || !property_exists($CFG, 'branch')) {
        add_to_log($courseid, "turnitintool", $event_name, $link, $desc, $cmid);
    } else {
        $event_name = str_replace(' ', '_', $event_name);
        $event_path = '\\mod_turnitintool\\event\\' . $event_name;
        $event = $event_path::create(array('objectid' => $cmid, 'context' => $cmid == 0 ? turnitintool_get_context('COURSE', $courseid) : turnitintool_get_context('MODULE', $cmid), 'other' => array('desc' => $desc)));
        $event->trigger();
    }
}
Example #2
0
    }
}
$table->class = '';
$table->width = '100%';
$i = 1;
foreach ($turnitintools as $turnitintool) {
    $dimmed = '';
    if (!$turnitintool->visible) {
        //Show dimmed if the mod is hidden
        $dimmed = ' class="dimmed"';
    }
    $link = '<a' . $dimmed . ' href="view.php?id=' . $turnitintool->coursemodule . '">' . $turnitintool->name . '</a>';
    $part = turnitintool_get_record_select('turnitintool_parts', 'turnitintoolid=' . $turnitintool->id . ' AND deleted=0', NULL, 'MIN(dtstart) AS dtstart');
    $dtstart = '<span' . $dimmed . '>' . userdate($part->dtstart, get_string('strftimedatetimeshort', 'langconfig')) . '</span>';
    $partcount = turnitintool_count_records_select('turnitintool_parts', 'turnitintoolid=' . $turnitintool->id . ' AND deleted=0');
    if (has_capability('mod/turnitintool:grade', turnitintool_get_context('MODULE', $turnitintool->coursemodule))) {
        $submissioncount = '<a' . $dimmed . ' href="view.php?id=' . $turnitintool->coursemodule . '&do=allsubmissions">' . turnitintool_count_records('turnitintool_submissions', 'turnitintoolid', $turnitintool->id) . '</a>';
    } else {
        $submissioncount = '<a' . $dimmed . ' href="view.php?id=' . $turnitintool->coursemodule . '&do=submissions">' . turnitintool_count_records_select('turnitintool_submissions', 'turnitintoolid=' . $turnitintool->id . ' AND userid=' . $USER->id) . '</a>';
    }
    if ($course->format == "weeks" or $course->format == "topics") {
        unset($cells);
        $cells[0] = new stdClass();
        $cells[0]->data = $turnitintool->section;
        $cells[0]->class = "cell c0 cellcenter cellthin";
        $cells[1] = new stdClass();
        $cells[1]->data = $link;
        $cells[1]->class = "cell c1 cellleft";
        $cells[2] = new stdClass();
        $cells[2]->data = $dtstart;
        $cells[2]->class = "cell c2 cellcenter cellthin";
if (!is_null($param_sub)) {
    if (!($submission = turnitintool_get_record('turnitintool_submissions', 'id', $param_sub))) {
        turnitintool_print_error('submissiongeterror', 'turnitintool', $CFG->wwwroot . '/mod/turnitintool/view.php?id=' . $cm->id, NULL, __FILE__, __LINE__);
        exit;
    }
    if (!has_capability('mod/turnitintool:grade', turnitintool_get_context('MODULE', $cm->id)) and $USER->id != $submission->userid) {
        // Check to see if the user logged in is the user that submitted or is a grader (tutor)
        turnitintool_print_error('permissiondeniederror', 'turnitintool', NULL, NULL, __FILE__, __LINE__);
        exit;
    }
    $fs = get_file_storage();
    $file = $fs->get_file($cm->id, 'mod_turnitintool', 'submission', $submission->id, '/', $submission->submission_filename);
    send_stored_file($file, 0, 0, true);
}
if (!is_null($param_part)) {
    if (!has_capability('mod/turnitintool:grade', turnitintool_get_context('MODULE', $cm->id))) {
        turnitintool_print_error('permissiondeniederror', 'turnitintool', NULL, NULL, __FILE__, __LINE__);
        exit;
    }
    $owner = turnitintool_get_owner($course->id);
    $loaderbar = null;
    $tii = new turnitintool_commclass(turnitintool_getUID($owner), $owner->firstname, $owner->lastname, $owner->email, 2, $loaderbar);
    $post = new stdClass();
    $post->cid = turnitintool_getCID($course->id);
    $post->assignid = turnitintool_getAID($param_part);
    $post->ctl = turnitintool_getCTL($course->id);
    $post->assign = $turnitintool->name . ' - ' . turnitintool_partnamefromnum($param_part) . ' (Moodle ' . $post->assignid . ')';
    $post->fcmd = 4;
    $tii->listSubmissions($post, get_string('downloadingfile', 'turnitintool'));
    if ($tii->getRerror()) {
        if (!$tii->getAPIunavailable()) {
 public function definition()
 {
     global $CFG, $USER, $COURSE, $cm, $turnitintool;
     $cm = $this->_customdata['cm'];
     $turnitintool = $this->_customdata['turnitintool'];
     $optional_params = $this->_customdata['optional_params'];
     $cansubmit = $this->_customdata['cansubmit'];
     if (has_capability('mod/turnitintool:grade', turnitintool_get_context('MODULE', $cm->id))) {
         $submissions = turnitintool_get_records_select('turnitintool_submissions', 'turnitintoolid=' . $turnitintool->id);
     } else {
         $submissions = turnitintool_get_records_select('turnitintool_submissions', 'userid=' . $USER->id . ' AND turnitintoolid=' . $turnitintool->id);
     }
     $output_js = '<script language="javascript" type="text/javascript">' . PHP_EOL;
     $output_js .= 'var stringsArray = new Array("' . get_string('addsubmission', 'turnitintool') . '","' . get_string('resubmit', 'turnitintool') . '","' . get_string('resubmission', 'turnitintool') . '","' . get_string('resubmissionnotenabled', 'turnitintool') . '","' . get_string('anonenabled', 'turnitintool') . '");' . PHP_EOL;
     $output_js .= 'var submissionArray = new Array();' . PHP_EOL;
     if ($turnitintool->allowlate == 1) {
         $parts = turnitintool_get_records_select('turnitintool_parts', "turnitintoolid='" . $turnitintool->id . "' AND deleted=0 AND dtstart < '" . time() . "'", null, 'dtstart,dtdue,dtpost,id');
     } else {
         $parts = turnitintool_get_records_select('turnitintool_parts', "turnitintoolid='" . $turnitintool->id . "' AND deleted=0 AND dtstart < '" . time() . "' AND dtdue > '" . time() . "'", NULL, 'dtstart,dtdue,dtpost,id');
     }
     if (is_array($submissions)) {
         $i = 0;
         foreach ($submissions as $submission) {
             $lockresubmission = 0;
             if (isset($parts[$submission->submission_part]) and $parts[$submission->submission_part]->dtdue < time()) {
                 $lockresubmission = 1;
             }
             $output_js .= 'submissionArray[' . $i . '] = new Array("' . $submission->userid . '","' . $submission->submission_part . '","' . $submission->submission_title . '","' . $submission->submission_unanon . '",' . $lockresubmission . ');' . PHP_EOL;
             $submittedparts[] = $submission->submission_part;
             $i++;
         }
     }
     $output_js .= '</script>' . PHP_EOL;
     echo $output_js;
     $mform = $this->_form;
     // Display file upload error if need be.
     if (isset($_SESSION["notice"]["type"]) and $_SESSION["notice"]["type"] == "error") {
         $mform->addElement('html', '<div id="upload_error" class="felement ftext error"><span id="upload_error_text" class="error">' . $_SESSION["notice"]["message"] . '</span></div>');
         unset($_SESSION["notice"]["type"]);
         unset($_SESSION["notice"]["message"]);
     }
     if (!empty($parts)) {
         // Upload type.
         switch ($turnitintool->type) {
             case 0:
                 $options = array("1" => "File Upload", "2" => "Text Submission");
                 $mform->addElement('select', 'submissiontype', get_string('selectoption', 'turnitintool'), $options, array("class" => "formnarrow"));
                 $mform->addHelpButton('submissiontype', 'submissiontype', 'turnitintool');
                 break;
             case 1:
             case 2:
                 $mform->addElement('hidden', 'submissiontype', $turnitintool->type);
                 $mform->setType('submissiontype', PARAM_INT);
         }
         $istutor = turnitintool_istutor($USER->email);
         $userid = $USER->id;
         // User id if applicable.
         if ($istutor) {
             $mform->addElement('hidden', 'studentsname', $USER->id);
             $mform->setType('studentsname', PARAM_INT);
         }
         $context = turnitintool_get_context('MODULE', $cm->id);
         $submissiontitle = optional_param('submissiontitle', '', PARAM_CLEAN);
         $disableform = false;
         if (has_capability('mod/turnitintool:grade', turnitintool_get_context('MODULE', $cm->id))) {
             $utype = "tutor";
             // If tutor submitting on behalf of student
             if (count($cansubmit) > 0) {
                 $module_group = turnitintool_module_group($cm);
                 $studentusers = array_keys(get_users_by_capability($context, 'mod/turnitintool:submit', 'u.id', '', '', '', $module_group, '', false));
                 // Append course users.
                 $courseusers = array();
                 $selected = "";
                 foreach ($cansubmit as $courseuser) {
                     // Filter Guest users, admins and grader users
                     if (in_array($courseuser->id, $studentusers)) {
                         if (!is_null($optional_params->userid) and $optional_params->userid == $courseuser->id) {
                             $selected = $courseuser->id;
                         }
                         $courseusers[$courseuser->id] = $courseuser->lastname . ', ' . $courseuser->firstname;
                     }
                 }
                 $select = $mform->addElement('select', 'userid', get_string('studentsname', 'turnitintool'), $courseusers, array("class" => "formnarrow", "onchange" => "updateSubForm(submissionArray,stringsArray,this.form," . $turnitintool->reportgenspeed . ")"));
                 $mform->addHelpButton('userid', 'studentsname', 'turnitintool');
                 if ($selected != "") {
                     $select->setSelected($selected);
                 }
                 if (empty($courseusers)) {
                     $mform->addElement('static', 'allsubmissionsmade', get_string('allsubmissionsmade', 'turnitintool'));
                 }
             } else {
                 $mform->addElement('static', 'noenrolledstudents', get_string('noenrolledstudents', 'turnitintool'));
             }
         } else {
             // If student submitting
             $utype = "student";
             $mform->addElement('hidden', 'userid', $USER->id);
             $mform->setType('userid', PARAM_INT);
         }
         if (!$disableform) {
             // Submission Title.
             $mform->addElement('text', 'submissiontitle', get_string('submissiontitle', 'turnitintool'), array("class" => "formwide"));
             $mform->setType('submissiontitle', PARAM_TEXT);
             $mform->addHelpButton('submissiontitle', 'submissiontitle', 'turnitintool');
             $mform->addRule('submissiontitle', get_string('submissiontitleerror', 'turnitintool'), 'required', '', 'client');
             // Handle assignment parts.
             if (count($parts) > 1) {
                 foreach ($parts as $part) {
                     $options_parts[$part->id] = $part->partname;
                 }
                 $mform->addElement('select', 'submissionpart', get_string('submissionpart', 'turnitintool'), $options_parts, array("class" => "formnarrow", "onchange" => "updateSubForm(submissionArray,stringsArray,this.form," . $turnitintool->reportgenspeed . ",'" . $utype . "')"));
                 $mform->addHelpButton('submissionpart', 'submissionpart', 'turnitintool');
             } else {
                 foreach ($parts as $part) {
                     $mform->addElement('hidden', 'submissionpart', $part->id);
                     $mform->setType('submissionpart', PARAM_INT);
                     break;
                 }
             }
             // File input.
             $maxbytessite = $CFG->maxbytes == 0 || $CFG->maxbytes > TURNITINTOOL_MAX_FILE_UPLOAD_SIZE ? TURNITINTOOL_MAX_FILE_UPLOAD_SIZE : $CFG->maxbytes;
             $maxbytescourse = $COURSE->maxbytes == 0 || $COURSE->maxbytes > TURNITINTOOL_MAX_FILE_UPLOAD_SIZE ? TURNITINTOOL_MAX_FILE_UPLOAD_SIZE : $COURSE->maxbytes;
             $maxfilesize = get_user_max_upload_file_size(context_module::instance($cm->id), $maxbytessite, $maxbytescourse, $turnitintool->maxfilesize);
             $maxfilesize = $maxfilesize <= 0 ? TURNITINTOOL_MAX_FILE_UPLOAD_SIZE : $maxfilesize;
             $turnitintoolfileuploadoptions = array('maxbytes' => $maxfilesize, 'subdirs' => false, 'maxfiles' => 1, 'accepted_types' => array('.doc', '.docx', '.rtf', '.txt', '.pdf', '.htm', '.html', '.odt', '.eps', '.ps', '.wpd', '.hwp', '.ppt', '.pptx', '.ppsx', '.pps'));
             $mform->addElement('filemanager', 'submissionfile', get_string('filetosubmit', 'turnitintool'), null, $turnitintoolfileuploadoptions);
             $mform->addHelpButton('submissionfile', 'filetosubmit', 'turnitintool');
             // Text input input.
             $mform->addElement('textarea', 'submissiontext', get_string('texttosubmit', 'turnitintool'), array("class" => "submissionText"));
             $mform->addHelpButton('submissiontext', 'texttosubmit', 'turnitintool');
             $checked = '';
             if (!is_null($optional_params->agreement)) {
                 $checked = ' checked';
             }
             if (has_capability('mod/turnitintool:grade', $context) or empty($CFG->turnitin_agreement)) {
                 $mform->addElement('hidden', 'agreement', '1');
                 $mform->setType('agreement', PARAM_INT);
             } else {
                 $mform->addElement('checkbox', 'agreement', '', $CFG->turnitin_agreement);
                 $mform->setDefault('agreement', '1', true);
             }
             $mform->addElement('submit', 'submitbutton', get_string('addsubmission', 'turnitintool'));
         }
     }
 }