123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 |
- <?php
- /* For licensing terms, see /license.txt */
- require_once __DIR__.'/../inc/global.inc.php';
- $current_course_tool = TOOL_STUDENTPUBLICATION;
- require_once 'work.lib.php';
- $id = isset($_GET['id']) ? (int) $_GET['id'] : null;
- $work = get_work_data_by_id($id);
- if (empty($id) || empty($work)) {
- api_not_allowed(true);
- }
- if ($work['active'] != 1) {
- api_not_allowed(true);
- }
- $work['title'] = isset($work['title']) ? Security::remove_XSS($work['title']) : '';
- $work['description'] = isset($work['description']) ? Security::remove_XSS($work['description']) : '';
- $htmlHeadXtra[] = '<script>'.ExerciseLib::getJsCode().'</script>';
- $interbreadcrumb[] = [
- 'url' => api_get_path(WEB_CODE_PATH).'work/work.php?'.api_get_cidreq(),
- 'name' => get_lang('Assignments'),
- ];
- $my_folder_data = get_work_data_by_id($work['parent_id']);
- $courseInfo = api_get_course_info();
- $blockScoreEdition = api_get_configuration_value('block_student_publication_score_edition');
- if ($blockScoreEdition && !empty($work['qualification']) && !api_is_platform_admin()) {
- api_not_allowed(true);
- }
- protectWork(api_get_course_info(), $work['parent_id']);
- $isDrhOfCourse = CourseManager::isUserSubscribedInCourseAsDrh(
- api_get_user_id(),
- $courseInfo
- );
- if ((user_is_author($id) || $isDrhOfCourse || (api_is_allowed_to_edit() || api_is_coach())) ||
- (
- $courseInfo['show_score'] == 0 &&
- $work['active'] == 1 &&
- $work['accepted'] == 1
- )
- ) {
- if ((api_is_allowed_to_edit() || api_is_coach()) || api_is_drh()) {
- $url_dir = api_get_path(WEB_CODE_PATH).'work/work_list_all.php?id='.$my_folder_data['id'].'&'.api_get_cidreq();
- } else {
- $url_dir = api_get_path(WEB_CODE_PATH).'work/work_list.php?id='.$my_folder_data['id'].'&'.api_get_cidreq();
- }
- $userInfo = api_get_user_info($work['user_id']);
- $interbreadcrumb[] = ['url' => $url_dir, 'name' => $my_folder_data['title']];
- $interbreadcrumb[] = ['url' => '#', 'name' => $userInfo['complete_name']];
- $interbreadcrumb[] = ['url' => '#', 'name' => $work['title']];
- if ((
- $courseInfo['show_score'] == 0 &&
- $work['active'] == 1 &&
- $work['accepted'] == 1
- ) ||
- (api_is_allowed_to_edit() || api_is_coach()) || user_is_author($id) || $isDrhOfCourse
- ) {
- $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : null;
- $page = isset($_REQUEST['page']) ? $_REQUEST['page'] : null;
- if ($page == 'edit') {
- $url = api_get_path(WEB_CODE_PATH).'work/edit.php?id='.$my_folder_data['id'].'&item_id='.$work['id'].'&'.api_get_cidreq();
- } else {
- $url = api_get_path(WEB_CODE_PATH).'work/view.php?id='.$work['id'].'&'.api_get_cidreq();
- $allowRedirect = api_get_configuration_value('allow_redirect_to_main_page_after_work_upload');
- $urlToRedirect = '';
- if ($allowRedirect) {
- $url = api_get_path(WEB_CODE_PATH).'work/work.php?'.api_get_cidreq();
- }
- }
- switch ($action) {
- case 'send_comment':
- if (isset($_FILES['attachment'])) {
- $_POST['attachment'] = $_FILES['attachment'];
- }
- addWorkComment(
- api_get_course_info(),
- api_get_user_id(),
- $my_folder_data,
- $work,
- $_POST
- );
- if (api_is_allowed_to_edit()) {
- $work_table = Database::get_course_table(TABLE_STUDENT_PUBLICATION);
- $sql = "UPDATE $work_table
- SET
- qualificator_id = '".api_get_user_id()."',
- qualification = '".api_float_val($_POST['qualification'])."',
- date_of_qualification = '".api_get_utc_datetime()."'
- WHERE c_id = ".$courseInfo['real_id']." AND id = $id";
- Database::query($sql);
- Display::addFlash(Display::return_message(get_lang('Update successful')));
- $resultUpload = uploadWork(
- $my_folder_data,
- $courseInfo,
- true,
- $work
- );
- if ($resultUpload) {
- $work_table = Database::get_course_table(
- TABLE_STUDENT_PUBLICATION
- );
- if (isset($resultUpload['url']) && !empty($resultUpload['url'])) {
- $title = isset($resultUpload['filename']) && !empty($resultUpload['filename']) ? $resultUpload['filename'] : get_lang('Untitled');
- $urlToSave = Database::escape_string($resultUpload['url']);
- $title = Database::escape_string($title);
- $sql = "UPDATE $work_table SET
- url_correction = '".$urlToSave."',
- title_correction = '".$title."'
- WHERE iid = ".$work['iid'];
- Database::query($sql);
- Display::addFlash(
- Display::return_message(get_lang('The file has successfully been uploaded.'))
- );
- }
- }
- }
- $blockScoreEdition = api_get_configuration_value('block_student_publication_score_edition');
- if ($blockScoreEdition && !api_is_platform_admin()) {
- $url = api_get_path(WEB_CODE_PATH).'work/work_list_all.php?'.api_get_cidreq().'&id='.$my_folder_data['id'];
- }
- header('Location: '.$url);
- exit;
- break;
- case 'delete_attachment':
- deleteCommentFile(
- $_REQUEST['comment_id'],
- api_get_course_info()
- );
- Display::addFlash(Display::return_message(get_lang('Document deleted')));
- header('Location: '.$url);
- exit;
- break;
- case 'delete_correction':
- if (isset($work['url_correction']) && !empty($work['url_correction'])) {
- if (api_is_allowed_to_edit()) {
- deleteCorrection($courseInfo, $work);
- Display::addFlash(
- Display::return_message(get_lang('Deleted'))
- );
- }
- }
- header('Location: '.$url);
- exit;
- break;
- }
- $comments = getWorkComments($work);
- $commentForm = getWorkCommentForm($work, $my_folder_data);
- $tpl = new Template();
- $tpl->assign('work', $work);
- $tpl->assign('comments', $comments);
- $actions = '';
- if (isset($work['contains_file']) && !empty($work['contains_file'])) {
- if (isset($work['download_url']) && !empty($work['download_url'])) {
- $actions = Display::url(
- Display::return_icon(
- 'back.png',
- get_lang('Back to Assignments list'),
- null,
- ICON_SIZE_MEDIUM
- ),
- api_get_path(WEB_CODE_PATH).'work/work.php?'.api_get_cidreq()
- );
- // Check if file can be downloaded
- $file = getFileContents($work['id'], $courseInfo, api_get_session_id(), false);
- if (!empty($file)) {
- $actions .= Display::url(
- Display::return_icon(
- 'save.png',
- get_lang('Download'),
- null,
- ICON_SIZE_MEDIUM
- ),
- $work['download_url']
- );
- }
- }
- }
- if (isset($work['url_correction']) && !empty($work['url_correction']) && !empty($work['download_url'])) {
- $actions .= Display::url(
- Display::return_icon(
- 'check-circle.png',
- get_lang('Correction'),
- null,
- ICON_SIZE_MEDIUM
- ),
- $work['download_url'].'&correction=1'
- );
- if (api_is_allowed_to_edit()) {
- $actions .= Display::url(
- Display::return_icon(
- 'delete.png',
- get_lang('Delete').': '.get_lang('Correction'),
- null,
- ICON_SIZE_MEDIUM
- ),
- api_get_self().'?action=delete_correction&id='.$id.'&'.api_get_cidreq()
- );
- }
- }
- if (!empty($actions)) {
- $tpl->assign(
- 'actions',
- Display::toolbarAction('toolbar', [$actions])
- );
- }
- if (api_is_allowed_to_session_edit()) {
- $tpl->assign('form', $commentForm);
- }
- $tpl->assign('is_allowed_to_edit', api_is_allowed_to_edit());
- $template = $tpl->get_template('work/view.tpl');
- $content = $tpl->fetch($template);
- $tpl->assign('content', $content);
- $tpl->display_one_col_template();
- } else {
- api_not_allowed(true);
- }
- } else {
- api_not_allowed(true);
- }
|