diff --git a/root/portal/block/announcements.php b/root/portal/block/announcements.php index 5dba476d..b6281c99 100644 --- a/root/portal/block/announcements.php +++ b/root/portal/block/announcements.php @@ -17,77 +17,23 @@ if (!defined('IN_PORTAL')) { exit; } - -$announcement = request_var('announcement', -1); +$template->assign_vars(array( + 'NEWEST_POST_IMG' => $user->img('icon_topic_newest', 'VIEW_NEWEST_POST'), + 'READ_POST_IMG' => $user->img('icon_topic_latest', 'VIEW_NEWEST_POST'), + 'GOTO_PAGE_IMG' => $user->img('icon_post_target', 'GOTO_PAGE'), + 'S_DISPLAY_ANNOUNCEMENTS' => true, +)); + +$announcement = request_var('announcement', -1); $start = request_var('ap', 0); $start = ($start < 0) ? 0 : $start; -// Pagnition -if ( $portal_config['portal_announcements_archive'] ) -{ - $permissions = $portal_config['portal_announcements_permissions']; - $forum_from = $portal_config['portal_global_announcements_forum']; +// Fetch announcements from portal/includes/functions.php with check if "read full" is requested. +$portal_announcement_length = ($announcement < 0) ? $portal_config['portal_announcements_length'] : 0; +$fetch_news = phpbb_fetch_posts($portal_config['portal_global_announcements_forum'], $portal_config['portal_announcements_permissions'], $portal_config['portal_number_of_announcements'], $portal_announcement_length, $portal_config['portal_announcements_day'], 'announcements', $start); - $forum_from = ( strpos($forum_from, ',') !== FALSE ) ? explode(',', $forum_from) : (($forum_from != '') ? array($forum_from) : array()); - - $str_where = ''; - - if( $permissions == TRUE ) - { - $disallow_access = array_unique(array_keys($auth->acl_getf('!f_read', true))); - } else { - $disallow_access = array(); - } - - $global_f = 0; - - if( sizeof($forum_from) ) - { - $disallow_access = array_diff($forum_from, $disallow_access); - if( !sizeof($disallow_access) ) - { - return array(); - } - - foreach( $disallow_access as $acc_id) - { - $acc_id = (int) $acc_id; - $str_where .= "forum_id = $acc_id OR "; - if( $global_f < 1 && $acc_id > 0 ) - { - $global_f = $acc_id; - } - } - } - else - { - foreach( $disallow_access as $acc_id ) - { - $acc_id = (int) $acc_id; - $str_where .= "forum_id <> $acc_id AND "; - } - } - - $str_where = ( strlen($str_where) > 0 ) ? 'AND (forum_id = 0 OR (' . trim(substr($str_where, 0, -4)) . '))' : ''; - - $sql = 'SELECT COUNT(topic_id) AS num_topics - FROM ' . TOPICS_TABLE . ' - WHERE ((topic_type = ' . POST_GLOBAL . ') - OR topic_type = ' . POST_ANNOUNCE . ') - AND topic_approved = 1 - AND topic_moved_id = 0 - ' . $str_where; - $result = $db->sql_query($sql); - $total_announcements = (int) $db->sql_fetchfield('num_topics'); - $db->sql_freeresult($result); -} - - -if($announcement < 0) -{ - $fetch_news = phpbb_fetch_posts($portal_config['portal_global_announcements_forum'], $portal_config['portal_announcements_permissions'], $portal_config['portal_number_of_announcements'], $portal_config['portal_announcements_length'], $portal_config['portal_announcements_day'], 'announcements', $start); - + // Any announcements present? If not terminate it here. if (count($fetch_news) == 0) { $template->assign_block_vars('announcements_row', array( @@ -99,61 +45,178 @@ if($announcement < 0) } else { - $count = count($fetch_news)-1; - for ($i = 0; $i < $count; $i++) + // Count number of posts for announcements archive, considering if permission check is dis- or enabled. + if ( $portal_config['portal_announcements_archive'] ) { - if( isset($fetch_news[$i]['striped']) && $fetch_news[$i]['striped'] == true ) + $permissions = $portal_config['portal_announcements_permissions']; + $forum_from = $portal_config['portal_global_announcements_forum']; + + $forum_from = ( strpos($forum_from, ',') !== FALSE ) ? explode(',', $forum_from) : (($forum_from != '') ? array($forum_from) : array()); + + $str_where = ''; + + if( $permissions == TRUE ) { - $open_bracket = '[ '; - $close_bracket = ' ]'; - $read_full = $user->lang['READ_FULL']; + $disallow_access = array_unique(array_keys($auth->acl_getf('!f_read', true))); + } else { + $disallow_access = array(); + } + + $global_f = 0; + + if( sizeof($forum_from) ) + { + $disallow_access = array_diff($forum_from, $disallow_access); + if( !sizeof($disallow_access) ) + { + return array(); + } + foreach( $disallow_access as $acc_id) + { + $acc_id = (int) $acc_id; + $str_where .= "forum_id = $acc_id OR "; + if( $global_f < 1 && $acc_id > 0 ) + { + $global_f = $acc_id; + } + } } else { - $open_bracket = ''; - $close_bracket = ''; - $read_full = ''; + foreach( $disallow_access as $acc_id ) + { + $acc_id = (int) $acc_id; + $str_where .= "forum_id <> $acc_id AND "; + } } - // unread? + + $str_where = ( strlen($str_where) > 0 ) ? 'AND (forum_id = 0 OR (' . trim(substr($str_where, 0, -4)) . '))' : ''; + + $sql = 'SELECT COUNT(topic_id) AS num_topics + FROM ' . TOPICS_TABLE . ' + WHERE ((topic_type = ' . POST_GLOBAL . ') + OR topic_type = ' . POST_ANNOUNCE . ') + AND topic_approved = 1 + AND topic_moved_id = 0 + ' . $str_where; + $result = $db->sql_query($sql); + $total_announcements = (int) $db->sql_fetchfield('num_topics'); + $db->sql_freeresult($result); + } + + + if($announcement < 0) + // Show the announcements overview + { + $count = count($fetch_news)-1; + for ($i = 0; $i < $count; $i++) + { + if( isset($fetch_news[$i]['striped']) && $fetch_news[$i]['striped'] == true ) + { + $open_bracket = '[ '; + $close_bracket = ' ]'; + $read_full = $user->lang['READ_FULL']; + + } + else + { + $open_bracket = ''; + $close_bracket = ''; + $read_full = ''; + } + // unread? + $forum_id = $fetch_news[$i]['forum_id']; + $topic_id = $fetch_news[$i]['topic_id']; + $topic_tracking_info = get_complete_topic_tracking($forum_id, $topic_id, $global_announce_list = false); + $unread_topic = (isset($topic_tracking_info[$topic_id]) && $fetch_news[$i]['topic_last_post_time'] > $topic_tracking_info[$topic_id]) ? true : false; + + $real_forum_id = ( $forum_id == 0 ) ? $fetch_news['global_id']: $forum_id; + + $read_full_url = (isset($_GET['ap'])) ? 'ap='. $start . '&announcement=' . $i . '#a' . $i : 'announcement=' . $i . '#a' . $i; + $view_topic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . (($fetch_news[$i]['forum_id']) ? $fetch_news[$i]['forum_id'] : $forum_id) . '&t=' . $topic_id); + if ( $portal_config['portal_announcements_archive'] ) + { + $pagination = generate_portal_pagination(append_sid("{$phpbb_root_path}portal.$phpEx"), $total_announcements, $portal_config['portal_number_of_announcements'], $start, 'announcements'); + } + + $template->assign_block_vars('announcements_row', array( + 'ATTACH_ICON_IMG' => ($fetch_news[$i]['attachment']) ? $user->img('icon_topic_attach', $user->lang['TOTAL_ATTACHMENTS']) : '', + 'FORUM_NAME' => ( $forum_id ) ? $fetch_news[$i]['forum_name'] : '', + 'TITLE' => $fetch_news[$i]['topic_title'], + 'POSTER' => $fetch_news[$i]['username'], + 'POSTER_FULL' => $fetch_news[$i]['username_full'], + 'U_USER_PROFILE' => (($fetch_news[$i]['user_type'] == USER_NORMAL || $fetch_news[$i]['user_type'] == USER_FOUNDER) && $fetch_news[$i]['user_id'] != ANONYMOUS) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $fetch_news[$i]['user_id']) : '', + 'TIME' => $fetch_news[$i]['topic_time'], + 'TEXT' => $fetch_news[$i]['post_text'], + 'REPLIES' => $fetch_news[$i]['topic_replies'], + 'TOPIC_VIEWS' => $fetch_news[$i]['topic_views'], + 'A_ID' => $i, + 'U_VIEWFORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $fetch_news[$i]['forum_id']), + 'U_LAST_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", (($real_forum_id) ? 'f=' . $real_forum_id . '&' : '') . 'p=' . $fetch_news[$i]['topic_last_post_id'] . '#p' . $fetch_news[$i]['topic_last_post_id']), + 'U_VIEW_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 't=' . $topic_id), + 'U_POST_COMMENT' => append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=reply&' . (($real_forum_id) ? 'f=' . $real_forum_id . '&' : '') . 't=' . $topic_id), + 'U_READ_FULL' => append_sid("{$phpbb_root_path}portal.$phpEx", $read_full_url), + 'L_READ_FULL' => $read_full, + 'OPEN' => $open_bracket, + 'CLOSE' => $close_bracket, + 'S_NOT_LAST' => ($i < count($fetch_news) - 1) ? true : false, + 'S_POLL' => $fetch_news[$i]['poll'], + 'S_UNREAD_INFO' => $unread_topic, + 'PAGINATION' => topic_generate_pagination($fetch_news[$i]['topic_replies'], $view_topic_url), + )); + + if ($portal_config['portal_number_of_announcements'] <> 0 && $portal_config['portal_announcements_archive']) + { + $template->assign_vars(array( + 'AP_PAGINATION' => $pagination, + 'TOTAL_ANNOUNCEMENTS' => ($total_announcements == 1) ? $user->lang['VIEW_LATEST_ANNOUNCEMENT'] : sprintf($user->lang['VIEW_LATEST_ANNOUNCEMENTS'], $total_announcements), + 'AP_PAGE_NUMBER' => on_page($total_announcements, $portal_config['portal_number_of_announcements'], $start)) + ); + } + } + } + else + // Show "read full" page + { + $i = $announcement; $forum_id = $fetch_news[$i]['forum_id']; $topic_id = $fetch_news[$i]['topic_id']; $topic_tracking_info = get_complete_topic_tracking($forum_id, $topic_id, $global_announce_list = false); - $unread_topic = (isset($topic_tracking_info[$topic_id]) && $fetch_news[$i]['topic_last_post_time'] > $topic_tracking_info[$topic_id]) ? true : false; - - $real_forum_id = ( $forum_id == 0 ) ? $fetch_news['global_id']: $forum_id; - - $read_full_url = (isset($_GET['ap'])) ? 'ap='. $start . '&announcement=' . $i . '#a' . $i : 'announcement=' . $i . '#a' . $i; + $unread_topic = (isset($topic_tracking_info[$topic_id]) && $fetch_news[$i]['topic_last_post_time'] > $topic_tracking_info[$topic_id]) ? true : false; + $open_bracket = '[ '; + $close_bracket = ' ]'; + $read_full = $user->lang['BACK']; + + $read_full_url = (isset($_GET['ap'])) ? append_sid("{$phpbb_root_path}portal.$phpEx", "ap=$start#a$i") : append_sid("{$phpbb_root_path}portal.$phpEx#a$i"); $view_topic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . (($fetch_news[$i]['forum_id']) ? $fetch_news[$i]['forum_id'] : $forum_id) . '&t=' . $topic_id); if ( $portal_config['portal_announcements_archive'] ) { $pagination = generate_portal_pagination(append_sid("{$phpbb_root_path}portal.$phpEx"), $total_announcements, $portal_config['portal_number_of_announcements'], $start, 'announcements'); - } - - $template->assign_block_vars('announcements_row', array( - 'ATTACH_ICON_IMG' => ($fetch_news[$i]['attachment']) ? $user->img('icon_topic_attach', $user->lang['TOTAL_ATTACHMENTS']) : '', - 'FORUM_NAME' => ( $forum_id ) ? $fetch_news[$i]['forum_name'] : '', - 'TITLE' => $fetch_news[$i]['topic_title'], - 'POSTER' => $fetch_news[$i]['username'], - 'POSTER_FULL' => $fetch_news[$i]['username_full'], - 'U_USER_PROFILE' => (($fetch_news[$i]['user_type'] == USER_NORMAL || $fetch_news[$i]['user_type'] == USER_FOUNDER) && $fetch_news[$i]['user_id'] != ANONYMOUS) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $fetch_news[$i]['user_id']) : '', - 'TIME' => $fetch_news[$i]['topic_time'], - 'TEXT' => $fetch_news[$i]['post_text'], - 'REPLIES' => $fetch_news[$i]['topic_replies'], - 'TOPIC_VIEWS' => $fetch_news[$i]['topic_views'], - 'A_ID' => $i, - 'U_VIEWFORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $fetch_news[$i]['forum_id']), - 'U_LAST_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", (($real_forum_id) ? 'f=' . $real_forum_id . '&' : '') . 'p=' . $fetch_news[$i]['topic_last_post_id'] . '#p' . $fetch_news[$i]['topic_last_post_id']), - 'U_VIEW_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 't=' . $topic_id), - 'U_POST_COMMENT' => append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=reply&' . (($real_forum_id) ? 'f=' . $real_forum_id . '&' : '') . 't=' . $topic_id), - 'U_READ_FULL' => append_sid("{$phpbb_root_path}portal.$phpEx", $read_full_url), - 'L_READ_FULL' => $read_full, - 'OPEN' => $open_bracket, - 'CLOSE' => $close_bracket, - 'S_NOT_LAST' => ($i < count($fetch_news) - 1) ? true : false, - 'S_POLL' => $fetch_news[$i]['poll'], - 'S_UNREAD_INFO' => $unread_topic, - 'PAGINATION' => topic_generate_pagination($fetch_news[$i]['topic_replies'], $view_topic_url), + } + + $template->assign_block_vars('announcements_row', array( + 'ATTACH_ICON_IMG' => ($fetch_news[$i]['attachment']) ? $user->img('icon_topic_attach', $user->lang['TOTAL_ATTACHMENTS']) : '', + 'FORUM_NAME' => ( $forum_id ) ? $fetch_news[$i]['forum_name'] : '', + 'TITLE' => $fetch_news[$i]['topic_title'], + 'POSTER' => $fetch_news[$i]['username'], + 'POSTER_FULL' => $fetch_news[$i]['username_full'], + 'TIME' => $fetch_news[$i]['topic_time'], + 'TEXT' => $fetch_news[$i]['post_text'], + 'REPLIES' => $fetch_news[$i]['topic_replies'], + 'TOPIC_VIEWS' => $fetch_news[$i]['topic_views'], + 'A_ID' => $i, + 'U_VIEWFORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $fetch_news[$i]['forum_id']), + 'U_LAST_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", (($forum_id) ? 'f=' . $forum_id . '&' : '') . 'p=' . $fetch_news[$i]['topic_last_post_id'] . '#p' . $fetch_news[$i]['topic_last_post_id']), + 'U_VIEW_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 't=' . $topic_id), + 'U_POST_COMMENT' => append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=reply&' . (($forum_id) ? 'f=' . $forum_id . '&' : '') . 't=' . $topic_id), + 'S_POLL' => $fetch_news[$i]['poll'], + 'S_UNREAD_INFO' => $unread_topic, + 'U_READ_FULL' => $read_full_url, + 'L_READ_FULL' => $read_full, + 'OPEN' => $open_bracket, + 'CLOSE' => $close_bracket, + 'PAGINATION' => topic_generate_pagination($fetch_news[$i]['topic_replies'], $view_topic_url), )); if ($portal_config['portal_number_of_announcements'] <> 0 && $portal_config['portal_announcements_archive']) @@ -166,66 +229,5 @@ if($announcement < 0) } } } -} -else -{ - $fetch_news = phpbb_fetch_posts($portal_config['portal_global_announcements_forum'], $portal_config['portal_announcements_permissions'], $portal_config['portal_number_of_announcements'], 0, $portal_config['portal_announcements_day'], 'announcements', $start); - - $i = $announcement; - $forum_id = $fetch_news[$i]['forum_id']; - $topic_id = $fetch_news[$i]['topic_id']; - $topic_tracking_info = get_complete_topic_tracking($forum_id, $topic_id, $global_announce_list = false); - $unread_topic = (isset($topic_tracking_info[$topic_id]) && $fetch_news[$i]['topic_last_post_time'] > $topic_tracking_info[$topic_id]) ? true : false; - $open_bracket = '[ '; - $close_bracket = ' ]'; - $read_full = $user->lang['BACK']; - - $read_full_url = (isset($_GET['ap'])) ? append_sid("{$phpbb_root_path}portal.$phpEx", "ap=$start#a$i") : append_sid("{$phpbb_root_path}portal.$phpEx#a$i"); - $view_topic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . (($fetch_news[$i]['forum_id']) ? $fetch_news[$i]['forum_id'] : $forum_id) . '&t=' . $topic_id); - if ( $portal_config['portal_announcements_archive'] ) - { - $pagination = generate_portal_pagination(append_sid("{$phpbb_root_path}portal.$phpEx"), $total_announcements, $portal_config['portal_number_of_announcements'], $start, 'announcements'); - } - - $template->assign_block_vars('announcements_row', array( - 'ATTACH_ICON_IMG' => ($fetch_news[$i]['attachment']) ? $user->img('icon_topic_attach', $user->lang['TOTAL_ATTACHMENTS']) : '', - 'FORUM_NAME' => ( $forum_id ) ? $fetch_news[$i]['forum_name'] : '', - 'TITLE' => $fetch_news[$i]['topic_title'], - 'POSTER' => $fetch_news[$i]['username'], - 'POSTER_FULL' => $fetch_news[$i]['username_full'], - 'TIME' => $fetch_news[$i]['topic_time'], - 'TEXT' => $fetch_news[$i]['post_text'], - 'REPLIES' => $fetch_news[$i]['topic_replies'], - 'TOPIC_VIEWS' => $fetch_news[$i]['topic_views'], - 'A_ID' => $i, - 'U_VIEWFORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $fetch_news[$i]['forum_id']), - 'U_LAST_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", (($forum_id) ? 'f=' . $forum_id . '&' : '') . 'p=' . $fetch_news[$i]['topic_last_post_id'] . '#p' . $fetch_news[$i]['topic_last_post_id']), - 'U_VIEW_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 't=' . $topic_id), - 'U_POST_COMMENT' => append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=reply&' . (($forum_id) ? 'f=' . $forum_id . '&' : '') . 't=' . $topic_id), - 'S_POLL' => $fetch_news[$i]['poll'], - 'S_UNREAD_INFO' => $unread_topic, - 'U_READ_FULL' => $read_full_url, - 'L_READ_FULL' => $read_full, - 'OPEN' => $open_bracket, - 'CLOSE' => $close_bracket, - 'PAGINATION' => topic_generate_pagination($fetch_news[$i]['topic_replies'], $view_topic_url), - )); - - if ($portal_config['portal_number_of_announcements'] <> 0 && $portal_config['portal_announcements_archive']) - { - $template->assign_vars(array( - 'AP_PAGINATION' => $pagination, - 'TOTAL_ANNOUNCEMENTS' => ($total_announcements == 1) ? $user->lang['VIEW_LATEST_ANNOUNCEMENT'] : sprintf($user->lang['VIEW_LATEST_ANNOUNCEMENTS'], $total_announcements), - 'AP_PAGE_NUMBER' => on_page($total_announcements, $portal_config['portal_number_of_announcements'], $start)) - ); - } -} - -$template->assign_vars(array( - 'NEWEST_POST_IMG' => $user->img('icon_topic_newest', 'VIEW_NEWEST_POST'), - 'READ_POST_IMG' => $user->img('icon_topic_latest', 'VIEW_NEWEST_POST'), - 'GOTO_PAGE_IMG' => $user->img('icon_post_target', 'GOTO_PAGE'), - 'S_DISPLAY_ANNOUNCEMENTS' => true, -)); ?> \ No newline at end of file diff --git a/root/portal/block/news.php b/root/portal/block/news.php index 7611f013..1063eb15 100644 --- a/root/portal/block/news.php +++ b/root/portal/block/news.php @@ -20,9 +20,7 @@ if (!defined('IN_PORTAL')) exit; } -// -// Fetch Posts for news from portal/includes/functions.php -// + $template->assign_vars(array( 'NEWEST_POST_IMG' => $user->img('icon_topic_newest', 'VIEW_NEWEST_POST'), 'READ_POST_IMG' => $user->img('icon_topic_latest', 'VIEW_NEWEST_POST'), @@ -31,70 +29,15 @@ $template->assign_vars(array( )); $news = request_var('news', -1); - $user->add_lang('viewforum'); $start = request_var('np', 0); $start = ($start < 0) ? 0 : $start; -// Pagnition -if ( $portal_config['portal_news_archive'] ) -{ - $permissions = $portal_config['portal_news_permissions']; - $forum_from = $portal_config['portal_news_forum']; - - $forum_from = ( strpos($forum_from, ',') !== FALSE ) ? explode(',', $forum_from) : (($forum_from != '') ? array($forum_from) : array()); - - $str_where = ''; - - if( $permissions == TRUE ) - { - $disallow_access = array_unique(array_keys($auth->acl_getf('!f_read', true))); - } else { - $disallow_access = array(); - } - - if( sizeof($forum_from) ) - { - $disallow_access = array_diff($forum_from, $disallow_access); - if( !sizeof($disallow_access) ) - { - return array(); - } - - foreach( $disallow_access as $acc_id) - { - $acc_id = (int) $acc_id; - $str_where .= "forum_id = $acc_id OR "; - } - } - else - { - foreach( $disallow_access as $acc_id ) - { - $acc_id = (int) $acc_id; - $str_where .= "forum_id <> $acc_id AND "; - } - } - - $str_where = ( strlen($str_where) > 0 ) ? 'AND (' . trim(substr($str_where, 0, -4)) . ')' : ''; - - $topic_type = ($portal_config['portal_show_all_news']) ? '( topic_type <> ' . POST_ANNOUNCE . ' ) AND ( topic_type <> ' . POST_GLOBAL . ')' : 'topic_type = ' . POST_NORMAL; - - $sql = 'SELECT COUNT(topic_id) AS num_topics - FROM ' . TOPICS_TABLE . ' - WHERE ' . $topic_type . ' - AND topic_approved = 1 - AND topic_moved_id = 0 - ' . $str_where; - $result = $db->sql_query($sql); - $total_news = (int) $db->sql_fetchfield('num_topics'); - $db->sql_freeresult($result); -} - -if($news < 0) -{ - $fetch_news = phpbb_fetch_posts($portal_config['portal_news_forum'], $portal_config['portal_news_permissions'], $portal_config['portal_number_of_news'], $portal_config['portal_news_length'], 0, ($portal_config['portal_show_all_news']) ? 'news_all' : 'news', $start); +// Fetch news from portal/includes/functions.php with check if "read full" is requested. +$portal_news_length = ($news < 0) ? $portal_config['portal_news_length'] : 0; +$fetch_news = phpbb_fetch_posts($portal_config['portal_news_forum'], $portal_config['portal_news_permissions'], $portal_config['portal_number_of_news'], $portal_news_length, 0, ($portal_config['portal_show_all_news']) ? 'news_all' : 'news', $start); + // Any news present? If not terminate it here. if (count($fetch_news) == 0) { $template->assign_block_vars('news_row', array( @@ -104,41 +47,154 @@ if($news < 0) } else { - $count = count($fetch_news)-1; - for ($i = 0; $i < $count; $i++) + // Count number of posts for news archive, considering if permission check is dis- or enabled. + if ( $portal_config['portal_news_archive'] ) { - if( isset($fetch_news[$i]['striped']) && $fetch_news[$i]['striped'] == true ) + $permissions = $portal_config['portal_news_permissions']; + $forum_from = $portal_config['portal_news_forum']; + + $forum_from = ( strpos($forum_from, ',') !== FALSE ) ? explode(',', $forum_from) : (($forum_from != '') ? array($forum_from) : array()); + + $str_where = ''; + + if( $permissions == TRUE ) { - $open_bracket = '[ '; - $close_bracket = ' ]'; - $read_full = $user->lang['READ_FULL']; + $disallow_access = array_unique(array_keys($auth->acl_getf('!f_read', true))); + } else { + $disallow_access = array(); + } + + if( sizeof($forum_from) ) + { + $disallow_access = array_diff($forum_from, $disallow_access); + if( !sizeof($disallow_access) ) + { + return array(); + } + + foreach( $disallow_access as $acc_id) + { + $acc_id = (int) $acc_id; + $str_where .= "forum_id = $acc_id OR "; + } } else { - $open_bracket = ''; - $close_bracket = ''; - $read_full = ''; + foreach( $disallow_access as $acc_id ) + { + $acc_id = (int) $acc_id; + $str_where .= "forum_id <> $acc_id AND "; + } } - // unread? + + $str_where = ( strlen($str_where) > 0 ) ? 'AND (' . trim(substr($str_where, 0, -4)) . ')' : ''; + + $topic_type = ($portal_config['portal_show_all_news']) ? '( topic_type <> ' . POST_ANNOUNCE . ' ) AND ( topic_type <> ' . POST_GLOBAL . ')' : 'topic_type = ' . POST_NORMAL; + + $sql = 'SELECT COUNT(topic_id) AS num_topics + FROM ' . TOPICS_TABLE . ' + WHERE ' . $topic_type . ' + AND topic_approved = 1 + AND topic_moved_id = 0 + ' . $str_where; + $result = $db->sql_query($sql); + $total_news = (int) $db->sql_fetchfield('num_topics'); + $db->sql_freeresult($result); + } + + if($news < 0) + // Show the news overview + { + $count = count($fetch_news)-1; + for ($i = 0; $i < $count; $i++) + { + if( isset($fetch_news[$i]['striped']) && $fetch_news[$i]['striped'] == true ) + { + $open_bracket = '[ '; + $close_bracket = ' ]'; + $read_full = $user->lang['READ_FULL']; + } + else + { + $open_bracket = ''; + $close_bracket = ''; + $read_full = ''; + } + // unread? + $forum_id = $fetch_news[$i]['forum_id']; + $topic_id = $fetch_news[$i]['topic_id']; + $topic_tracking_info = get_complete_topic_tracking($forum_id, $topic_id, $global_announce_list = false); + $unread_topic = (isset($topic_tracking_info[$topic_id]) && $fetch_news[$i]['topic_last_post_time'] > $topic_tracking_info[$topic_id]) ? true : false; + + $read_full_url = (isset($_GET['np'])) ? 'np='. $start . '&news=' . $i . '#n' . $i : 'news=' . $i . '#n' . $i; + $view_topic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . (($fetch_news[$i]['forum_id']) ? $fetch_news[$i]['forum_id'] : $forum_id) . '&t=' . $topic_id); + if ( $portal_config['portal_news_archive'] ) + { + $pagination = generate_portal_pagination(append_sid("{$phpbb_root_path}portal.$phpEx"), $total_news, $portal_config['portal_number_of_news'], $start, ($portal_config['portal_show_all_news']) ? 'news_all' : 'news'); + } + + $template->assign_block_vars('news_row', array( + 'ATTACH_ICON_IMG' => ($fetch_news[$i]['attachment']) ? $user->img('icon_topic_attach', $user->lang['TOTAL_ATTACHMENTS']) : '', + 'FORUM_NAME' => ( $forum_id ) ? $fetch_news[$i]['forum_name'] : '', + 'TITLE' => $fetch_news[$i]['topic_title'], + 'POSTER' => $fetch_news[$i]['username'], + 'POSTER_FULL' => $fetch_news[$i]['username_full'], + 'U_USER_PROFILE' => (($fetch_news[$i]['user_type'] == USER_NORMAL || $fetch_news[$i]['user_type'] == USER_FOUNDER) && $fetch_news[$i]['user_id'] != ANONYMOUS) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $fetch_news[$i]['user_id']) : '', + 'TIME' => $fetch_news[$i]['topic_time'], + 'TEXT' => $fetch_news[$i]['post_text'], + 'REPLIES' => $fetch_news[$i]['topic_replies'], + 'TOPIC_VIEWS' => $fetch_news[$i]['topic_views'], + 'N_ID' => $i, + 'U_VIEWFORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $fetch_news[$i]['forum_id']), + 'U_LAST_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $fetch_news[$i]['forum_id'] . '&p=' . $fetch_news[$i]['topic_last_post_id'] . '#p' . $fetch_news[$i]['topic_last_post_id']), + 'U_VIEW_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $fetch_news[$i]['forum_id'] . '&t=' . $fetch_news[$i]['topic_id']), + 'U_POST_COMMENT' => append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=reply&f=' . $fetch_news[$i]['forum_id'] . '&t=' . $fetch_news[$i]['topic_id']), + 'U_READ_FULL' => append_sid("{$phpbb_root_path}portal.$phpEx", $read_full_url), + 'L_READ_FULL' => $read_full, + 'OPEN' => $open_bracket, + 'CLOSE' => $close_bracket, + 'S_NOT_LAST' => ($i < count($fetch_news) - 1) ? true : false, + 'S_POLL' => $fetch_news[$i]['poll'], + 'S_UNREAD_INFO' => $unread_topic, + 'PAGINATION' => topic_generate_pagination($fetch_news[$i]['topic_replies'], $view_topic_url), + )); + + if ($portal_config['portal_number_of_news'] <> 0 && $portal_config['portal_news_archive']) + { + $template->assign_vars(array( + 'POSTED_BY_TEXT' => ( $portal_config['portal_news_show_last'] ) ? $user->lang['LAST_POST'] : $user->lang['POSTED'], + 'NP_PAGINATION' => $pagination, + 'TOTAL_NEWS' => ($total_news == 1) ? $user->lang['VIEW_FORUM_TOPIC'] : sprintf($user->lang['VIEW_FORUM_TOPICS'], $total_news), + 'NP_PAGE_NUMBER' => on_page($total_news, $portal_config['portal_number_of_news'], $start)) + ); + } + } + } + else + // Show "read full" page + { + $i = $news; $forum_id = $fetch_news[$i]['forum_id']; $topic_id = $fetch_news[$i]['topic_id']; $topic_tracking_info = get_complete_topic_tracking($forum_id, $topic_id, $global_announce_list = false); $unread_topic = (isset($topic_tracking_info[$topic_id]) && $fetch_news[$i]['topic_last_post_time'] > $topic_tracking_info[$topic_id]) ? true : false; - - $read_full_url = (isset($_GET['np'])) ? 'np='. $start . '&news=' . $i . '#n' . $i : 'news=' . $i . '#n' . $i; + $open_bracket = '[ '; + $close_bracket = ' ]'; + $read_full = $user->lang['BACK']; + + $read_full_url = (isset($_GET['np'])) ? append_sid("{$phpbb_root_path}portal.$phpEx", "np=$start#n$i") : append_sid("{$phpbb_root_path}portal.$phpEx#n$i"); $view_topic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . (($fetch_news[$i]['forum_id']) ? $fetch_news[$i]['forum_id'] : $forum_id) . '&t=' . $topic_id); if ( $portal_config['portal_news_archive'] ) { $pagination = generate_portal_pagination(append_sid("{$phpbb_root_path}portal.$phpEx"), $total_news, $portal_config['portal_number_of_news'], $start, ($portal_config['portal_show_all_news']) ? 'news_all' : 'news'); } - + $template->assign_block_vars('news_row', array( 'ATTACH_ICON_IMG' => ($fetch_news[$i]['attachment']) ? $user->img('icon_topic_attach', $user->lang['TOTAL_ATTACHMENTS']) : '', 'FORUM_NAME' => ( $forum_id ) ? $fetch_news[$i]['forum_name'] : '', 'TITLE' => $fetch_news[$i]['topic_title'], 'POSTER' => $fetch_news[$i]['username'], 'POSTER_FULL' => $fetch_news[$i]['username_full'], - 'U_USER_PROFILE' => (($fetch_news[$i]['user_type'] == USER_NORMAL || $fetch_news[$i]['user_type'] == USER_FOUNDER) && $fetch_news[$i]['user_id'] != ANONYMOUS) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $fetch_news[$i]['user_id']) : '', 'TIME' => $fetch_news[$i]['topic_time'], 'TEXT' => $fetch_news[$i]['post_text'], 'REPLIES' => $fetch_news[$i]['topic_replies'], @@ -148,20 +204,18 @@ if($news < 0) 'U_LAST_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $fetch_news[$i]['forum_id'] . '&p=' . $fetch_news[$i]['topic_last_post_id'] . '#p' . $fetch_news[$i]['topic_last_post_id']), 'U_VIEW_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $fetch_news[$i]['forum_id'] . '&t=' . $fetch_news[$i]['topic_id']), 'U_POST_COMMENT' => append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=reply&f=' . $fetch_news[$i]['forum_id'] . '&t=' . $fetch_news[$i]['topic_id']), - 'U_READ_FULL' => append_sid("{$phpbb_root_path}portal.$phpEx", $read_full_url), - 'L_READ_FULL' => $read_full, - 'OPEN' => $open_bracket, - 'CLOSE' => $close_bracket, - 'S_NOT_LAST' => ($i < count($fetch_news) - 1) ? true : false, 'S_POLL' => $fetch_news[$i]['poll'], 'S_UNREAD_INFO' => $unread_topic, + 'U_READ_FULL' => $read_full_url, + 'L_READ_FULL' => $read_full, + 'OPEN' => $open_bracket, + 'CLOSE' => $close_bracket, 'PAGINATION' => topic_generate_pagination($fetch_news[$i]['topic_replies'], $view_topic_url), )); if ($portal_config['portal_number_of_news'] <> 0 && $portal_config['portal_news_archive']) { $template->assign_vars(array( - 'POSTED_BY_TEXT' => ( $portal_config['portal_news_show_last'] ) ? $user->lang['LAST_POST'] : $user->lang['POSTED'], 'NP_PAGINATION' => $pagination, 'TOTAL_NEWS' => ($total_news == 1) ? $user->lang['VIEW_FORUM_TOPIC'] : sprintf($user->lang['VIEW_FORUM_TOPICS'], $total_news), 'NP_PAGE_NUMBER' => on_page($total_news, $portal_config['portal_number_of_news'], $start)) @@ -169,59 +223,5 @@ if($news < 0) } } } -} -else -{ - $fetch_news = phpbb_fetch_posts($portal_config['portal_news_forum'], $portal_config['portal_news_permissions'], $portal_config['portal_number_of_news'], 0, 0, ($portal_config['portal_show_all_news']) ? 'news_all' : 'news', $start); - - $i = $news; - $forum_id = $fetch_news[$i]['forum_id']; - $topic_id = $fetch_news[$i]['topic_id']; - $topic_tracking_info = get_complete_topic_tracking($forum_id, $topic_id, $global_announce_list = false); - $unread_topic = (isset($topic_tracking_info[$topic_id]) && $fetch_news[$i]['topic_last_post_time'] > $topic_tracking_info[$topic_id]) ? true : false; - $open_bracket = '[ '; - $close_bracket = ' ]'; - $read_full = $user->lang['BACK']; - - $read_full_url = (isset($_GET['np'])) ? append_sid("{$phpbb_root_path}portal.$phpEx", "np=$start#n$i") : append_sid("{$phpbb_root_path}portal.$phpEx#n$i"); - $view_topic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . (($fetch_news[$i]['forum_id']) ? $fetch_news[$i]['forum_id'] : $forum_id) . '&t=' . $topic_id); - if ( $portal_config['portal_news_archive'] ) - { - $pagination = generate_portal_pagination(append_sid("{$phpbb_root_path}portal.$phpEx"), $total_news, $portal_config['portal_number_of_news'], $start, ($portal_config['portal_show_all_news']) ? 'news_all' : 'news'); - } - - $template->assign_block_vars('news_row', array( - 'ATTACH_ICON_IMG' => ($fetch_news[$i]['attachment']) ? $user->img('icon_topic_attach', $user->lang['TOTAL_ATTACHMENTS']) : '', - 'FORUM_NAME' => ( $forum_id ) ? $fetch_news[$i]['forum_name'] : '', - 'TITLE' => $fetch_news[$i]['topic_title'], - 'POSTER' => $fetch_news[$i]['username'], - 'POSTER_FULL' => $fetch_news[$i]['username_full'], - 'TIME' => $fetch_news[$i]['topic_time'], - 'TEXT' => $fetch_news[$i]['post_text'], - 'REPLIES' => $fetch_news[$i]['topic_replies'], - 'TOPIC_VIEWS' => $fetch_news[$i]['topic_views'], - 'N_ID' => $i, - 'U_VIEWFORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $fetch_news[$i]['forum_id']), - 'U_LAST_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $fetch_news[$i]['forum_id'] . '&p=' . $fetch_news[$i]['topic_last_post_id'] . '#p' . $fetch_news[$i]['topic_last_post_id']), - 'U_VIEW_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $fetch_news[$i]['forum_id'] . '&t=' . $fetch_news[$i]['topic_id']), - 'U_POST_COMMENT' => append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=reply&f=' . $fetch_news[$i]['forum_id'] . '&t=' . $fetch_news[$i]['topic_id']), - 'S_POLL' => $fetch_news[$i]['poll'], - 'S_UNREAD_INFO' => $unread_topic, - 'U_READ_FULL' => $read_full_url, - 'L_READ_FULL' => $read_full, - 'OPEN' => $open_bracket, - 'CLOSE' => $close_bracket, - 'PAGINATION' => topic_generate_pagination($fetch_news[$i]['topic_replies'], $view_topic_url), - )); - - if ($portal_config['portal_number_of_news'] <> 0 && $portal_config['portal_news_archive']) - { - $template->assign_vars(array( - 'NP_PAGINATION' => $pagination, - 'TOTAL_NEWS' => ($total_news == 1) ? $user->lang['VIEW_FORUM_TOPIC'] : sprintf($user->lang['VIEW_FORUM_TOPICS'], $total_news), - 'NP_PAGE_NUMBER' => on_page($total_news, $portal_config['portal_number_of_news'], $start)) - ); - } -} ?> \ No newline at end of file diff --git a/root/styles/prosilver/template/portal/block/announcements.html b/root/styles/prosilver/template/portal/block/announcements.html index 1b6f8084..8359857f 100644 --- a/root/styles/prosilver/template/portal/block/announcements.html +++ b/root/styles/prosilver/template/portal/block/announcements.html @@ -6,7 +6,13 @@
- + +
+
+ {L_NO_ANNOUNCEMENTS} +
+
+

{NEWEST_POST_IMG}{READ_POST_IMG} {announcements_row.ATTACH_ICON_IMG} {L_POLL}: {announcements_row.TITLE}

@@ -43,12 +49,6 @@
- -
-
- {L_NO_ANNOUNCEMENTS} -
-
diff --git a/root/styles/prosilver/template/portal/block/announcements_compact.html b/root/styles/prosilver/template/portal/block/announcements_compact.html index 7a265eeb..f7451ed6 100644 --- a/root/styles/prosilver/template/portal/block/announcements_compact.html +++ b/root/styles/prosilver/template/portal/block/announcements_compact.html @@ -1,5 +1,24 @@ - + +
+
+ + + + +
+
+
@@ -46,25 +65,6 @@
- -
-
- - - - -
-

\ No newline at end of file diff --git a/root/styles/prosilver/template/portal/block/news.html b/root/styles/prosilver/template/portal/block/news.html index de069b83..f26dde5f 100644 --- a/root/styles/prosilver/template/portal/block/news.html +++ b/root/styles/prosilver/template/portal/block/news.html @@ -6,7 +6,13 @@
- + +
+
+ {L_NO_NEWS} +
+
+

{NEWEST_POST_IMG}{READ_POST_IMG} {news_row.ATTACH_ICON_IMG} {L_POLL}: {news_row.TITLE}

@@ -27,6 +33,7 @@
+
-
-
- -
-
- {L_NO_NEWS} +
diff --git a/root/styles/prosilver/template/portal/block/news_compact.html b/root/styles/prosilver/template/portal/block/news_compact.html index 231c10d9..08da9593 100644 --- a/root/styles/prosilver/template/portal/block/news_compact.html +++ b/root/styles/prosilver/template/portal/block/news_compact.html @@ -1,5 +1,24 @@ - + +
+
+ +
    +
  • {L_LATEST_NEWS}
  • +
+
    +
  • +
    +
    + {L_NO_NEWS} +
    +
    +
  • +
+ +
+
+
@@ -43,25 +62,6 @@
- -
-
- -
    -
  • {L_LATEST_NEWS}
  • -
-
    -
  • -
    -
    - {L_NO_NEWS} -
    -
    -
  • -
- -
-