, Ghent University * @author Julio Montoya UI Improvements + lots of bugfixes * * @package chamilo.forum */ $forumUrl = api_get_path(WEB_CODE_PATH) . 'forum/'; $_user = api_get_user_info(); $sortDirection = isset($_GET['posts_order']) && $_GET['posts_order'] === 'desc' ? 'DESC' : 'ASC'; $rows = getPosts($_GET['thread'], $sortDirection, true); $sessionId = api_get_session_id(); $currentThread = get_thread_information($_GET['thread']); $post_id = isset($_GET['post']) ? (int) $_GET['post'] : 0; $userId = api_get_user_id(); if (isset($_GET['post']) && $_GET['post']) { $display_post_id = intval($_GET['post']); } else { // We need to display the first post reset($rows); $current = current($rows); $display_post_id = $current['post_id']; } // Are we in a lp ? $origin = ''; if (isset($_GET['origin'])) { $origin = Security::remove_XSS($_GET['origin']); } // Delete attachment file. if ( isset($_GET['action']) && $_GET['action']=='delete_attach' && isset($_GET['id_attach']) ) { delete_attachment(0, $_GET['id_attach']); if (!isset($_GET['thread'])) { exit; } } // Displaying the thread (structure) $thread_structure = "
" .get_lang('Structure')."
"; $counter = 0; $count = 0; $prev_next_array = array(); $forumId = intval($_GET['forum']); $threadId = intval($_GET['thread']); $groupId = api_get_group_id(); foreach ($rows as $post) { $counter++; $indent = $post['indent_cnt'] * '20'; $thread_structure .= "
"; if ( !empty($whatsnew_post_info[$forumId][$post['thread_id']]) && isset($whatsnew_post_info[$forumId][$threadId][$post['post_id']]) && !empty($whatsnew_post_info[$forumId][$threadId][$post['post_id']]) ) { $post_image = Display::return_icon('forumpostnew.gif'); } else { $post_image = Display::return_icon('forumpost.gif'); } $thread_structure .= $post_image; if ( isset($_GET['post']) && $_GET['post'] == $post['post_id'] || ( $counter == 1 AND !isset($_GET['post']) ) ) { $thread_structure .= '' .prepare4display($post['post_title']) . '
'; $prev_next_array[] = $post['post_id']; } else { if ($post['visible'] == '0') { $class = ' class="invisible"'; } else { $class = ''; } $count_loop = ($count == 0) ? '&id=1' : ''; $thread_structure .= "" . prepare4display($post['post_title']) . ""; $prev_next_array[] = $post['post_id']; } $count++; } $locked = api_resource_is_locked_by_gradebook($threadId, LINK_FORUM_THREAD); /* NAVIGATION CONTROLS */ $current_id = array_search($display_post_id, $prev_next_array); $max = count($prev_next_array); $next_id = $current_id + 1; $prev_id = $current_id - 1; // Text $first_message = get_lang('FirstMessage'); $last_message = get_lang('LastMessage'); $next_message = get_lang('NextMessage'); $prev_message = get_lang('PrevMessage'); // Images $first_img = Display::return_icon( 'action_first.png', get_lang('FirstMessage'), array('style' => 'vertical-align: middle;') ); $last_img = Display::return_icon( 'action_last.png', get_lang('LastMessage'), array('style' => 'vertical-align: middle;') ); $prev_img = Display::return_icon( 'action_prev.png', get_lang('PrevMessage'), array('style' => 'vertical-align: middle;') ); $next_img = Display::return_icon( 'action_next.png', get_lang('NextMessage'), array('style' => 'vertical-align: middle;') ); $class_prev = ''; $class_next = ''; // Links $first_href = $forumUrl . 'viewthread.php?' . api_get_cidreq() . '&forum=' . $forumId . '&thread=' . $threadId . '&gradebook=' . $gradebook . '&id=1&post=' . $prev_next_array[0]; $last_href = $forumUrl . 'viewthread.php?' . api_get_cidreq() . '&forum=' . $forumId . '&thread=' . $threadId . '&gradebook=' . $gradebook . '&post=' . $prev_next_array[$max-1]; $prev_href = $forumUrl . 'viewthread.php?' . api_get_cidreq() . '&forum=' . $forumId . '&thread=' . $threadId . '&gradebook=' . $gradebook . '&post=' . $prev_next_array[$prev_id]; $next_href = $forumUrl . 'viewthread.php?' . api_get_cidreq() . '&forum=' . $forumId . '&thread=' . $threadId . '&post=' . $prev_next_array[$next_id]; echo '
'; // Go to: first and previous if (((int) $current_id) > 0) { echo '' . $first_img . ' ' . $first_message .''; echo '' . $prev_img . ' ' . $prev_message . ''; } else { echo ''; echo ''; } // Current counter echo ' [ ' . ($current_id + 1) . ' / ' . $max . ' ] '; // Go to: next and last if (($current_id + 1) < $max) { echo '' . $next_message . ' ' . $next_img . ''; echo '' . $last_message . ' ' . $last_img . ''; } else { echo ''; echo ''; } echo '
'; // The style depends on the status of the message: approved or not if ($rows[$display_post_id]['visible'] == '0') { $titleclass = 'forum_message_post_title_2_be_approved'; $messageclass = 'forum_message_post_text_2_be_approved'; $leftclass = 'forum_message_left_2_be_approved'; } else { $titleclass = 'forum_message_post_title'; $messageclass = 'forum_message_post_text'; $leftclass = 'forum_message_left'; } // Displaying the message // We mark the image we are displaying as set unset($whatsnew_post_info[$forumId][$threadId][$rows[$display_post_id]['post_id']]); echo ""; echo ""; echo ""; // Note: this can be removed here because it will be displayed in the tree if ( isset($whatsnew_post_info[$forumId][$threadId][$rows[$display_post_id]['post_id']]) AND !empty($whatsnew_post_info[$forumId][$threadId][$rows[$display_post_id]['post_id']]) AND !empty($whatsnew_post_info[$_GET['forum']][$rows[$display_post_id]['thread_id']]) ) { $post_image = Display::return_icon('forumpostnew.gif'); } else { $post_image = Display::return_icon('forumpost.gif'); } if ( $rows[$display_post_id]['post_notification'] == '1' AND $rows[$display_post_id]['poster_id'] == $_user['user_id'] ) { $post_image .= Display::return_icon('forumnotification.gif',get_lang('YouWillBeNotified')); } // The post title echo ""; echo ""; // The post message echo ""; echo ""; echo ""; // The check if there is an attachment $attachment_list = getAllAttachment($display_post_id); if (!empty($attachment_list) && is_array($attachment_list)) { foreach ($attachment_list as $attachment) { echo ''; } } // The post has been displayed => it can be removed from the what's new array if (isset($whatsnew_post_info[$forumId][$threadId][$row['post_id']])) { unset($whatsnew_post_info[$forumId][$threadId][$row['post_id']]); unset($_SESSION['whatsnew_post_info'][$forumId][$threadId][$row['post_id']]); } echo "
"; $username = sprintf(get_lang('LoginX'), $rows[$display_post_id]['username']); if ($rows[$display_post_id]['user_id'] == '0') { $name = prepare4display($rows[$display_post_id]['poster_name']); } else { $name = api_get_person_name( $rows[$display_post_id]['firstname'], $rows[$display_post_id]['lastname'] ); } if (api_get_course_setting('allow_user_image_forum')) { echo '
' . display_user_image($rows[$display_post_id]['user_id'], $name, $origin) . '
'; } echo display_user_link( $rows[$display_post_id]['user_id'], $name, $origin, $username ) . "
"; echo api_convert_and_format_date( $rows[$display_post_id]['post_date'] ) . '

'; // Get attach id $attachment_list = get_attachment($display_post_id); $id_attach = !empty($attachment_list) ? $attachment_list['id'] : ''; // The user who posted it can edit his thread only if the course admin allowed this in the properties of the forum // The course admin him/herself can do this off course always if ( GroupManager::is_tutor_of_group(api_get_user_id(), $groupId) || ( $current_forum['allow_edit'] == 1 && $row['user_id'] == $_user['user_id'] ) || ( api_is_allowed_to_edit(false, true) && !( api_is_course_coach() && $current_forum['session_id'] != $sessionId ) ) ) { if ($locked == false) { echo "" . Display::return_icon( 'edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL ) . ''; } } // Verified the post minor $my_post = getPosts($_GET['thread']); $id_posts = array(); if (!empty($my_post) && is_array($my_post)) { foreach ($my_post as $post_value) { $id_posts[] = $post_value['post_id']; } sort($id_posts, SORT_NUMERIC); reset($id_posts); // The post minor $post_minor = (int)$id_posts[0]; } if ( GroupManager::is_tutor_of_group(api_get_user_id(), $groupId) || api_is_allowed_to_edit(false, true) && !(api_is_course_coach() &&$current_forum['session_id'] != $sessionId) ) { if ($locked == false) { echo "" . Display::return_icon( 'delete.png', get_lang('Delete'), array(), ICON_SIZE_SMALL ).""; } display_visible_invisible_icon( 'post', $rows[$display_post_id]['post_id'], $rows[$display_post_id]['visible'], array( 'forum' => $forumId, 'thread' => $threadId, 'post' => Security::remove_XSS($_GET['post']) ) ); if (!isset($_GET['id']) && $post_id > $post_minor) { echo "" . Display::return_icon( 'move.png', get_lang('MovePost'), array(), ICON_SIZE_SMALL ) . ""; } } $userCanQualify = $currentThread['thread_peer_qualify'] == 1 && $rows[$display_post_id]['poster_id'] != $userId; if (api_is_allowed_to_edit(null, true)) { $userCanQualify = true; } if (empty($currentThread['thread_qualify_max'])) { $userCanQualify = false; } if ($userCanQualify) { if ($post_id > $post_minor) { $current_qualify_thread = showQualify( '1', $rows[$display_post_id]['user_id'], $_GET['thread'] ); if ($locked == false) { echo "" . Display::return_icon( 'quiz.gif', get_lang('Qualify') ) . ""; } } } if (($current_forum_category && $current_forum_category['locked'] == 0) && $current_forum['locked'] == 0 && $current_thread['locked'] == 0 || api_is_allowed_to_edit(false, true) ) { if ($_user['user_id'] || ($current_forum['allow_anonymous'] == 1 && !$_user['user_id']) ) { if (!api_is_anonymous() && api_is_allowed_to_session_edit(false, true)) { echo '' . Display::return_icon( 'message_reply_forum.png', get_lang('ReplyToMessage') ) . ""; echo '' . Display::return_icon( 'quote.gif', get_lang('QuoteMessage') ) . ""; } } } else { if ($current_forum_category && $current_forum_category['locked'] == 1) { echo get_lang('ForumcategoryLocked') . '
'; } if ($current_forum['locked'] == 1) { echo get_lang('ForumLocked') . '
'; } if ($current_thread['locked'] == 1) { echo get_lang('ThreadLocked') . '
'; } } echo "
" . prepare4display($rows[$display_post_id]['post_title']) . "
" . prepare4display($rows[$display_post_id]['post_text']) . "
'; $realname = $attachment['path']; $user_filename = $attachment['filename']; echo Display::return_icon('attachment.gif', get_lang('Attachment')); echo ' ' . $user_filename . ' '; echo '' . Security::remove_XSS($attachment['comment'], STUDENT) . ''; if ( ($current_forum['allow_edit'] == 1 &&$rows[$display_post_id]['user_id'] == $_user['user_id']) || (api_is_allowed_to_edit(false, true) && !(api_is_course_coach() && $current_forum['session_id'] != $sessionId)) ) { echo '  ' . Display::return_icon( 'delete.gif', get_lang('Delete') ).'
'; } echo '
"; echo $thread_structure;