} if (get_conf('mail_notification', false) && !get_conf('automatic_mail_notification', false)) { $cmdList[] = array('img' => 'settings', 'name' => get_lang('Assignments preferences'), 'url' => claro_htmlspecialchars(Url::Contextualize('work_settings.php'))); } } $out = ''; $out .= claro_html_tool_title($nameTools, $helpUrl, $cmdList); if ($is_allowedToEdit) { $out .= $dialogBox->render(); // Form if (isset($displayAssigForm) && $displayAssigForm) { $out .= '<form method="post" action="' . $_SERVER['PHP_SELF'] . '" enctype="multipart/form-data">' . "\n" . '<input type="hidden" name="claroFormId" value="' . uniqid('') . '" />' . "\n" . '<input type="hidden" name="cmd" value="' . $cmdToSend . '" />' . "\n" . claro_form_relay_context() . "\n" . '<fieldset>'; if (!is_null($assigId)) { $out .= '<input type="hidden" name="assigId" value="' . $assigId . '" />' . "\n"; } $out .= '<dl>' . '<dt><label for="title">' . get_lang('Assignment title') . ' <span class="required">*</span></label></dt>' . '<dd><input type="text" name="title" id="title" size="50" maxlength="200" value="' . claro_htmlspecialchars($assignment->getTitle()) . '" /></dd>' . '<dt><label for="description">' . get_lang('Description') . '<br /></label></dt>' . '<dd>' . claro_html_textarea_editor('description', $assignment->getDescription()) . '</dd>' . '<dt>' . get_lang('Submission type') . '</dt>' . '<dd>' . '<input type="radio" name="authorized_content" id="authorizeFile" value="FILE" ' . ($assignment->getSubmissionType() == "FILE" ? 'checked="checked"' : '') . ' /> <label for="authorizeFile"> ' . get_lang('File (file required, description text optional)') . '</label> <br /> <input type="radio" name="authorized_content" id="authorizeText" value="TEXT" ' . ($assignment->getSubmissionType() == "TEXT" ? 'checked="checked"' : '') . '/> <label for="authorizeText"> ' . get_lang('Text only (text required, no file)') . '</label> <br /> <input type="radio" name="authorized_content" id="authorizeTextFile" value="TEXTFILE" ' . ($assignment->getSubmissionType() == "TEXTFILE" ? 'checked="checked"' : '') . ' /> <label for="authorizeTextFile"> ' . get_lang('Text with attached file (text required, file optional)') . '</label>' . '</dd>' . '<dt>' . get_lang('Assignment type') . '</dt>' . '<dd>' . '<input type="radio" name="assignment_type" id="individual" value="INDIVIDUAL" ' . ($assignment->getAssignmentType() == "INDIVIDUAL" ? 'checked="checked"' : '') . ' /> <label for="individual"> ' . get_lang('Individual') . '</label> <br /> <input type="radio" name="assignment_type" id="group" value="GROUP" ' . ($assignment->getAssignmentType() == "GROUP" ? 'checked="checked"' : '') . ' /> <label for="group"> ' . get_lang('Groups (from groups tool, only group members can post)') . '</label>' . '</dd>' . '<dt>' . get_lang('Start date') . '</dt>' . '<dd>' . claro_html_date_form('startDay', 'startMonth', 'startYear', $assignment_data['start_date'], 'long') . ' ' . claro_html_time_form('startHour', 'startMinute', $assignment_data['start_date']) . '<p class="notice">' . get_lang('(d/m/y hh:mm)') . '</p>' . '</dd>' . '<dt>' . get_lang('End date') . '</dt>' . '<dd>' . claro_html_date_form('endDay', 'endMonth', 'endYear', $assignment_data['end_date'], 'long') . ' ' . claro_html_time_form('endHour', 'endMinute', $assignment_data['end_date']) . '<p class="notice">' . get_lang('(d/m/y hh:mm)') . '</p>' . '</dd>' . '<dt>' . get_lang('Allow late upload') . '</dt>' . '<dd> <input type="radio" name="allow_late_upload" id="allowUpload" value="YES" ' . ($assignment->getAllowLateUpload() == "YES" ? 'checked="checked"' : '') . ' /> <label for="allowUpload"> ' . get_lang('Yes, allow users to submit works after end date') . '</label> <br /> <input type="radio" name="allow_late_upload" id="preventUpload" value="NO" ' . ($assignment->getAllowLateUpload() == "NO" ? 'checked="checked"' : '') . ' />
if ($thisWrk['is_mine']) { $workList[$workId]['name'] = '<b>' . $thisWrk['name'] . '</b>'; } $workList[$workId]['name'] = '<a class="item" href="' . claro_htmlspecialchars(Url::Contextualize('user_work.php' . '?authId=' . $thisWrk['authId'] . '&assigId=' . $req['assignmentId'])) . '">' . $workList[$workId]['name'] . '</a>'; } /** * HEADER */ $nameTools = get_lang('Assignment'); ClaroBreadCrumbs::getInstance()->setCurrent($nameTools, Url::Contextualize($_SERVER['PHP_SELF'] . '?assigId=' . (int) $req['assignmentId'])); ClaroBreadCrumbs::getInstance()->prepend(get_lang('Assignments'), Url::Contextualize('../work/work.php')); /** * TOOL TITLE */ $pageTitle['mainTitle'] = $nameTools; $pageTitle['subTitle'] = $assignment->getTitle(); // SHOW FEEDBACK // only if : // - there is a text OR a file in automatic feedback // AND // feedback must be shown after end date and end date is past // OR feedback must be shown directly after a post (from the time a work was uploaded by the student) // there is a prefill_ file or text, so there is something to show $textOrFilePresent = (bool) $assignment->getAutoFeedbackText() != '' || $assignment->getAutoFeedbackFilename() != ''; // feedback must be shown after end date and end date is past $showAfterEndDate = (bool) ($assignment->getAutoFeedbackSubmitMethod() == 'ENDDATE' && $assignment->getEndDate() < time()); // feedback must be shown directly after a post // check if user has already posted a work // do not show to anonymous users because we can't know // if the user already uploaded a work $showAfterPost = (bool) claro_is_user_authenticated() && ($assignment->getAutoFeedbackSubmitMethod() == 'AFTERPOST' && count($assignment->getSubmissionList(claro_get_current_user_id())) > 0);
if ($assignmentId == 0) { $assignmentRestriction = ''; if (!empty($tmpFolderPath)) { $zipPath = $tmpFolderPath . '/' . claro_get_current_course_id() . '/work/tmp'; } else { $zipPath = get_path('coursesRepositorySys') . claro_get_course_path(claro_get_current_course_id()) . '/work/tmp'; } $zipName = claro_get_current_course_id() . '_' . replace_dangerous_char(get_lang('Assignments')) . $wanted . '.zip'; } else { $assignmentRestriction = " AND s.`assignment_id` = " . (int) $assignmentId; if (!empty($tmpFolderPath)) { $zipPath = $tmpFolderPath . '/' . claro_get_current_course_id() . '/work/assig_' . (int) $assignmentId . '/' . 'tmp'; } else { $zipPath = get_path('coursesRepositorySys') . claro_get_course_path(claro_get_current_course_id()) . '/work/tmp'; } $zipName = replace_dangerous_char(claro_get_course_name(claro_get_current_course_id())) . '_' . replace_dangerous_char($assignment->getTitle(), 'strict') . $wanted . '.zip'; } if (!empty($tmpFolderPath)) { $downloadArchiveFolderPath = $tmpFolderPath . '/' . claro_get_current_course_id() . '/work'; } else { $downloadArchiveFolderPath = get_path('coursesRepositorySys') . claro_get_course_path(claro_get_current_course_id()) . '/tmp/zip'; } if (!is_dir($downloadArchiveFolderPath)) { mkdir($downloadArchiveFolderPath, CLARO_FILE_PERMISSIONS, true); } $downloadArchiveFilePath = $downloadArchiveFolderPath . '/' . $zipName; $sql = "SELECT s.`id`,\n s.`assignment_id`,\n s.`authors`,\n s.`submitted_text`,\n s.`submitted_doc_path`,\n s.`title`,\n s.`creation_date`,\n s.`last_edit_date`\n FROM `" . $submissionTbl . "` AS s\n {$userRestrictions}\n WHERE s.`parent_id` IS NULL " . $assignmentRestriction . $sqlDateCondition . "\n ORDER BY s.`authors`,\n s.`creation_date`"; if (!is_dir($zipPath)) { mkdir($zipPath, CLARO_FILE_PERMISSIONS, true); } $results = claro_sql_query_fetch_all($sql);