find($id); if (null === $work) { api_not_allowed(true); } $parentId = $work->getPublicationParent()->getIid(); protectWork(api_get_course_info(), $parentId); $action = $_REQUEST['action'] ?? null; $page = $_REQUEST['page'] ?? null; /*$work['title'] = isset($work['title']) ? Security::remove_XSS($work['title']) : ''; $work['description'] = isset($work['description']) ? Security::remove_XSS($work['description']) : '';*/ $htmlHeadXtra[] = ''; $interbreadcrumb[] = [ 'url' => api_get_path(WEB_CODE_PATH).'work/work.php?'.api_get_cidreq(), 'name' => get_lang('Assignments'), ]; $folderData = get_work_data_by_id($parentId); $courseInfo = api_get_course_info(); $courseEntity = api_get_course_entity(); $isCourseManager = api_is_platform_admin() || api_is_coach() || api_is_allowed_to_edit(false, false, true); $allowEdition = false; if ($isCourseManager) { $allowEdition = true; if (!empty($work->getQualification()) && ('true' === api_get_setting('work.block_student_publication_score_edition')) ) { $allowEdition = false; } } if (api_is_platform_admin()) { $allowEdition = true; } $isDrhOfCourse = CourseManager::isUserSubscribedInCourseAsDrh( api_get_user_id(), $courseInfo ); $isDrhOfSession = false; // @todo fix $isDrhOfSession check //$isDrhOfSession = !empty(SessionManager::getSessionFollowedByDrh(api_get_user_id(), $work['session_id'])); if (($isDrhOfCourse || $allowEdition || $isDrhOfSession || user_is_author($id)) || ( 0 == $courseInfo['show_score'] && 1 == $work->getActive() && 1 == $work->getAccepted() ) ) { 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='.$folderData['iid'].'&'.api_get_cidreq(); } else { $url_dir = api_get_path(WEB_CODE_PATH).'work/work_list.php?id='.$folderData['iid'].'&'.api_get_cidreq(); } $userInfo = api_get_user_info($work->getUser()->getId()); $interbreadcrumb[] = ['url' => $url_dir, 'name' => $folderData['title']]; $interbreadcrumb[] = ['url' => '#', 'name' => $userInfo['complete_name']]; $interbreadcrumb[] = ['url' => '#', 'name' => $work->getTitle()]; $workId = $work->getIid(); if (( 0 == $courseInfo['show_score'] && 1 == $work->getActive() && 1 == $work->getAccepted() ) || $isCourseManager || $isDrhOfCourse || $isDrhOfSession || user_is_author($id) ) { if ('edit' === $page) { $url = api_get_path(WEB_CODE_PATH). 'work/edit.php?id='.$folderData['iid'].'&item_id='.$workId.'&'.api_get_cidreq(); } else { $url = api_get_path(WEB_CODE_PATH).'work/view.php?id='.$workId.'&'.api_get_cidreq(); $allowRedirect = ('true' === api_get_setting('work.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(), $folderData, $work, $_POST ); if ($allowEdition) { $work_table = Database::get_course_table(TABLE_STUDENT_PUBLICATION); if (isset($_POST['qualification'])) { $work->setQualificatorId(api_get_user_id()); $work->setQualification(api_float_val($_POST['qualification'])); $work->setDateOfQualification(api_get_utc_datetime(time(), false, true)); $repo->update($work); } Display::addFlash(Display::return_message(get_lang('Updated'))); /*$resultUpload = uploadWork( $folderData, $courseEntity, 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.')) ); } }*/ $request = Container::getRequest(); $file = $request->files->get('file'); if (is_array($file)) { /** @var UploadedFile $file */ $file = $file[0]; } if (null !== $file) { $em = Database::getManager(); $correction = (new CStudentPublicationCorrection()) ->setParent($work) ->setTitle($file->getClientOriginalName()) ; // @todo improve file upload. $correctionRepo = Container::getStudentPublicationCorrectionRepository(); $correctionRepo->create($correction); $correctionRepo->addFile($correction, $file); $correctionRepo->update($correction); } } 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 ($allowEdition) { deleteCorrection($work); Display::addFlash(Display::return_message(get_lang('Deleted'))); } header('Location: '.$url); exit; break; } $comments = getWorkComments($work); $commentForm = getWorkCommentForm($work, $folderData); $tpl = new Template(); $tpl->assign('work', $work); $tpl->assign('comments', $comments); $actions = ''; if ($work->getContainsFile()) { if ($work->getResourceNode()->hasResourceFile()) { $actions = Display::url( Display::getMdiIcon(ActionIcon::BACK, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Back to Assignments list')), api_get_path(WEB_CODE_PATH).'work/work.php?'.api_get_cidreq() ); $url = $repo->getResourceFileDownloadUrl($work).'?'.api_get_cidreq(); $actions .= Display::url( Display::getMdiIcon(ActionIcon::SAVE_FORM, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Download')), $url ); } } $correctionNode = $work->getCorrection(); if (null !== $correctionNode) { $router = Container::getRouter(); $url = $router->generate( 'chamilo_core_resource_download', [ 'id' => $correctionNode->getId(), 'tool' => 'student_publication', 'type' => 'student_publications_corrections', ] ).'?'.api_get_cidreq(); $actions .= Display::url( Display::getMdiIcon(StateIcon::COMPLETE, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Correction')), $url ); if ($allowEdition) { $actions .= Display::url( Display::getMdiIcon(ActionIcon::DELETE, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Delete').': '.get_lang('Correction')), 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()); $content = $tpl->fetch('@ChamiloCore/Work/view.html.twig'); $tpl->assign('content', $content); $tpl->display_one_col_template(); } else { api_not_allowed(true); } } else { api_not_allowed(true); }