, Ghent University * @Copyright Ghent University * @Copyright Patrick Cool * * @package chamilo.forum */ require_once __DIR__.'/../inc/global.inc.php'; $current_course_tool = TOOL_FORUM; // Notification for unauthorized people. api_protect_course_script(true); // The section (tabs). $this_section = SECTION_COURSES; $nameTools = get_lang('ToolForum'); // Are we in a lp ? $origin = api_get_origin(); /* Including necessary files */ require 'forumconfig.inc.php'; require_once 'forumfunction.inc.php'; $userId = api_get_user_id(); $sessionId = api_get_session_id(); $groupId = api_get_group_id(); $courseId = api_get_course_int_id(); $groupInfo = GroupManager::get_group_properties($groupId); $isTutor = GroupManager::is_tutor_of_group($userId, $groupInfo, $courseId); /* MAIN DISPLAY SECTION */ $my_forum = isset($_GET['forum']) ? (int) $_GET['forum'] : ''; // Note: This has to be validated that it is an existing forum. $current_forum = get_forum_information($my_forum); $isForumOpenByDateAccess = api_is_date_in_date_range($current_forum['start_time'], $current_forum['end_time']); if (!$isForumOpenByDateAccess) { if ($origin) { api_not_allowed(); } else { api_not_allowed(true); } } if (empty($current_forum)) { api_not_allowed(); } $current_forum_category = get_forumcategory_information($current_forum['forum_category']); $is_group_tutor = false; if (!empty($groupId)) { //Group info & group category info $group_properties = GroupManager::get_group_properties($groupId); //User has access in the group? $user_has_access_in_group = GroupManager::user_has_access( $userId, $group_properties['iid'], GroupManager::GROUP_TOOL_FORUM ); $is_group_tutor = GroupManager::is_tutor_of_group( api_get_user_id(), $group_properties ); // Course if ( !api_is_allowed_to_edit(false, true) && //is a student (($current_forum_category && $current_forum_category['visibility'] == 0) || $current_forum['visibility'] == 0 || !$user_has_access_in_group) ) { api_not_allowed(true); } } else { //Course if ( !api_is_allowed_to_edit(false, true) && //is a student ( ($current_forum_category && $current_forum_category['visibility'] == 0) || $current_forum['visibility'] == 0 ) //forum category or forum visibility is false ) { api_not_allowed(); } } /* Header and Breadcrumbs */ $my_search = isset($_GET['search']) ? $_GET['search'] : ''; $my_action = isset($_GET['action']) ? $_GET['action'] : ''; $gradebook = null; if (isset($_SESSION['gradebook'])) { $gradebook = $_SESSION['gradebook']; } if (!empty($gradebook) && $gradebook == 'view') { $interbreadcrumb[] = array( 'url' => '../gradebook/'.$_SESSION['gradebook_dest'], 'name' => get_lang('ToolGradebook') ); } $forumUrl = api_get_path(WEB_CODE_PATH).'forum/'; if (!empty($groupId)) { $interbreadcrumb[] = array( 'url' => api_get_path(WEB_CODE_PATH).'group/group.php?'.api_get_cidreq(), 'name' => get_lang('Groups') ); $interbreadcrumb[] = array( 'url' => api_get_path(WEB_CODE_PATH).'group/group_space.php?'.api_get_cidreq(), 'name' => get_lang('GroupSpace').' '.$group_properties['name'] ); $interbreadcrumb[] = array( 'url' => '#', 'name' => get_lang('Forum').' '.Security::remove_XSS($current_forum['forum_title']) ); } else { $interbreadcrumb[] = array( 'url' => $forumUrl.'index.php?search='.Security::remove_XSS($my_search), 'name' => get_lang('ForumCategories') ); $interbreadcrumb[] = array( 'url' => $forumUrl.'viewforumcategory.php?forumcategory='.$current_forum_category['cat_id'] . '&search='.Security::remove_XSS(urlencode($my_search)), 'name' => prepare4display($current_forum_category['cat_title']) ); $interbreadcrumb[] = array( 'url' => '#', 'name' => Security::remove_XSS($current_forum['forum_title']) ); } if ($origin == 'learnpath') { Display::display_reduced_header(); } else { // The last element of the breadcrumb navigation is already set in interbreadcrumb, so give empty string. Display::display_header(''); } /* Actions */ // Change visibility of a forum or a forum category. if ( ($my_action == 'invisible' || $my_action == 'visible') && isset($_GET['content']) && isset($_GET['id']) && api_is_allowed_to_edit(false, true) && api_is_allowed_to_session_edit(false, true) ) { $message = change_visibility($_GET['content'], $_GET['id'], $_GET['action']); } // Locking and unlocking. if ( ($my_action == 'lock' || $my_action == 'unlock') && isset($_GET['content']) && isset($_GET['id']) && api_is_allowed_to_edit(false, true) && api_is_allowed_to_session_edit(false, true) ) { $message = change_lock_status($_GET['content'], $_GET['id'], $my_action); } // Deleting. if ( $my_action == 'delete' && isset($_GET['content']) && isset($_GET['id']) && api_is_allowed_to_edit(false, true) && api_is_allowed_to_session_edit(false, true) ) { $locked = api_resource_is_locked_by_gradebook($_GET['id'], LINK_FORUM_THREAD); if ($locked == false) { $message = deleteForumCategoryThread($_GET['content'], $_GET['id']); // Delete link $link_info = GradebookUtils::isResourceInCourseGradebook( api_get_course_id(), 5, intval($_GET['id']), api_get_session_id() ); $link_id = $link_info['id']; if ($link_info !== false) { GradebookUtils::remove_resource_from_course_gradebook($link_id); } } } // Moving. if ($my_action == 'move' && isset($_GET['thread']) && api_is_allowed_to_edit(false, true) && api_is_allowed_to_session_edit(false, true) ) { $message = move_thread_form(); } // Notification. if ( $my_action == 'notify' && isset($_GET['content']) && isset($_GET['id']) && api_is_allowed_to_session_edit(false, true) ) { $return_message = set_notification($_GET['content'], $_GET['id']); Display::display_confirmation_message($return_message, false); } // Student list if ( $my_action == 'liststd' && isset($_GET['content']) && isset($_GET['id']) && (api_is_allowed_to_edit(null, true) || $is_group_tutor) ) { $active = null; $listType = isset($_GET['list']) ? $_GET['list'] : null; switch ($listType) { case 'qualify': $student_list = get_thread_users_qualify($_GET['id']); $nrorow3 = -2; $active = 2; break; case 'notqualify': $student_list = get_thread_users_not_qualify($_GET['id']); $nrorow3 = -2; $active = 3; break; default: $student_list = get_thread_users_details($_GET['id']); $nrorow3 = Database::num_rows($student_list); $active = 1; break; } $table_list = Display::page_subheader(get_lang('ThreadUsersList').': '.get_name_thread_by_id($_GET['id'])); if ($nrorow3 > 0 || $nrorow3 == -2) { $url = api_get_cidreq().'&forum='.$my_forum.'&action=' . Security::remove_XSS($_GET['action']).'&content=' . Security::remove_XSS($_GET['content'], STUDENT).'&id='.intval($_GET['id']); $tabs = array( array( 'content' => get_lang('AllStudents'), 'url' => $forumUrl.'viewforum.php?'.$url.'&list=all' ), array( 'content' => get_lang('StudentsQualified'), 'url' => $forumUrl.'viewforum.php?'.$url.'&list=qualify' ), array( 'content' => get_lang('StudentsNotQualified'), 'url' => $forumUrl.'viewforum.php?'.$url.'&list=notqualify' ), ); $table_list .= Display::tabsOnlyLink($tabs, $active); $icon_qualify = 'quiz.png'; $table_list .= '
'.get_lang('NamesAndLastNames').' | '; if ($listType == 'qualify') { $table_list .= ''.get_lang('Qualification').' | '; } if (api_is_allowed_to_edit(null, true)) { $table_list .= ''.get_lang('Qualify').' | '; } $table_list .= '
---|---|---|
'; $table_list .= UserManager::getUserProfileLink($userInfo); $table_list .= ' | '; if ($listType == 'qualify') { $table_list .= ''.$row_student_list['qualify'].'/'.$max_qualify.' | '; } if (api_is_allowed_to_edit(null, true)) { $current_qualify_thread = showQualify( '1', $row_student_list['id'], $_GET['id'] ); $table_list .= '' . Display::return_icon($icon_qualify, get_lang('Qualify')).' |
'.get_lang('ThereIsNotQualifiedLearners').' | ||
'.get_lang('ThereIsNotUnqualifiedLearners').' |
'.get_lang('By').' '.$authorName.'
'; $html .= ''.api_convert_and_format_date($row['insert_date']).'
'; if ($current_forum['moderated'] == 1 && api_is_allowed_to_edit(false, true)) { $waitingCount = getCountPostsWithStatus( CForumPost::STATUS_WAITING_MODERATION, $current_forum, $row['thread_id'] ); if (!empty($waitingCount)) { $html .= Display::label( get_lang('PostsPendingModeration').': '.$waitingCount, 'warning' ); } } $html .= '