diff --git a/root/portal/includes/functions.php b/root/portal/includes/functions.php index ce662dbc..f5ed7844 100644 --- a/root/portal/includes/functions.php +++ b/root/portal/includes/functions.php @@ -71,16 +71,16 @@ include($phpbb_root_path . 'includes/message_parser.'.$phpEx); function phpbb_fetch_posts($forum_from, $number_of_posts, $text_length, $time, $type) { global $db, $phpbb_root_path, $auth, $user, $bbcode_bitfield; - - $posts = array(); - $post_time = ($time == 0) ? '' : 't.topic_last_post_time > ' . (time() - $time * 86400) . ' AND'; + $posts = array(); + + $post_time = ($time == 0) ? '' : 'AND t.topic_last_post_time > ' . (time() - $time * 86400); $forum_from = ( strpos($forum_from, ',') !== FALSE ) ? explode(',', $forum_from) : (($forum_from != '') ? array($forum_from) : array()); $str_where = ''; - $allow_access = $auth->acl_getf('f_read', true); + $allow_access = array_unique(array_keys($auth->acl_getf('f_read', true))); if( sizeof($allow_access) ){ @@ -100,7 +100,7 @@ function phpbb_fetch_posts($forum_from, $number_of_posts, $text_length, $time, $ } else { - foreach( $allow_access as $acc_id => $acc_bool ) + foreach( $allow_access as $acc_id => $acc_data ) { $str_where .= "t.forum_id = $acc_id OR "; @@ -111,186 +111,72 @@ function phpbb_fetch_posts($forum_from, $number_of_posts, $text_length, $time, $ } } - if ($type == 'announcements') + if( strlen($str_where) > 0 ) { - // only global announcements for announcements block - $topic_type = '(( t.topic_type = ' . POST_ANNOUNCE . ') OR ( t.topic_type = ' . POST_GLOBAL . ')) AND'; - - if( strlen($str_where) > 0 ) - { - $str_where = ( strlen($str_where) > 0 ) ? 'AND (t.forum_id = 0 OR ' . substr($str_where, 0, -4) . ')' : ''; - $sql = 'SELECT - t.forum_id, - t.topic_id, - t.topic_last_post_id, - t.topic_last_post_time, - t.topic_time, - t.topic_title, - t.topic_attachment, - t.topic_views, - t.poll_title, - t.topic_replies, - t.topic_poster, - u.username, - u.user_id, - u.user_type, - u.user_colour, - p.post_id, - p.post_time, - p.post_text, - p.post_attachment, - p.enable_smilies, - p.enable_bbcode, - p.enable_magic_url, - p.bbcode_bitfield, - p.bbcode_uid, - f.forum_name - FROM - ' . TOPICS_TABLE . ' AS t - LEFT JOIN - ' . USERS_TABLE . ' as u - ON - t.topic_poster = u.user_id - LEFT JOIN - ' . FORUMS_TABLE . ' as f - ON - t.forum_id=f.forum_id - LEFT JOIN - ' . POSTS_TABLE . ' as p - ON - t.topic_first_post_id = p.post_id - WHERE - ' . $topic_type . ' - ' . $post_time . ' - t.topic_status <> 2 AND - t.topic_approved = 1 - ' . $str_where .' - ORDER BY - t.topic_time DESC'; - - - // query the database - if(!($result = $db->sql_query_limit($sql, $number_of_posts))) - { - die('Could not query topic information for board3 Portal announcements section'); - } - - // - // fetch all postings - // - - // Instantiate BBCode if need be - if ($bbcode_bitfield !== '') - { - $phpEx = substr(strrchr(__FILE__, '.'), 1); - include_once($phpbb_root_path . 'includes/bbcode.' . $phpEx); - $bbcode = new bbcode(base64_encode($bbcode_bitfield)); - } - $i = 0; - while ( ($row = $db->sql_fetchrow($result)) && ( ($i < $number_of_posts) || ($number_of_posts == '0') ) ) - { - if ($row['user_id'] != ANONYMOUS && $row['user_colour']) - { - $row['username'] = '' . $row['username'] . ''; - } - $posts[$i]['bbcode_uid'] = $row['bbcode_uid']; - $len_check = $row['post_text']; - $maxlen = $text_length; - if (($text_length != 0) && (strlen($len_check) > $text_length)) - { - $posts[$i]['post_text'] = censor_text(get_sub_taged_string(str_replace("\n", '
', $row['post_text']), $row['bbcode_uid'], $maxlen)); - $posts[$i]['striped'] = true; - } else $posts[$i]['post_text'] = censor_text($row['post_text']); - - $posts[$i]['topic_id'] = $row['topic_id']; - $posts[$i]['topic_last_post_id'] = $row['topic_last_post_id']; - $posts[$i]['forum_id'] = $row['forum_id']; - $posts[$i]['topic_replies'] = $row['topic_replies']; - $posts[$i]['topic_time'] = $user->format_date($row['topic_time']); - $posts[$i]['topic_last_post_time'] = $row['topic_last_post_time']; - $posts[$i]['topic_title'] = $row['topic_title']; - $posts[$i]['username'] = $row['username']; - $posts[$i]['user_id'] = $row['user_id']; - $posts[$i]['user_type'] = $row['user_type']; - $posts[$i]['user_user_colour'] = $row['user_colour']; - $posts[$i]['poll'] = ($row['poll_title']) ? true : false; - $posts[$i]['attachment'] = ($row['topic_attachment']) ? true : false; - $posts[$i]['topic_views'] = ($row['topic_views']); - $posts[$i]['forum_name'] = ($row['forum_name']); - $posts[$i]['global_id'] = ($global_f); - - $message = $posts[$i]['post_text']; - $message = str_replace("\n", '
', $message); - - - if ($auth->acl_get('f_html', $row['forum_id'])) - { - $message = preg_replace('##is', '', $message); // Remove Comments from post content - } - // Second parse bbcode here - if ($row['bbcode_bitfield']) - { - $bbcode->bbcode_second_pass($message, $row['bbcode_uid'], $row['bbcode_bitfield']); - } - $message = smiley_text($message); // Always process smilies after parsing bbcodes - $posts[$i]['post_text']= ap_validate($message); - $i++; - } - } - // return the result - return $posts; - } - - // news - get last post - - else if ($type == 'news_all') + switch( $type ) { - // not show global announcements - $topic_type = '( t.topic_type != ' . POST_ANNOUNCE . ' ) AND ( t.topic_type != ' . POST_GLOBAL . ') AND'; + case "announcements": + + $topic_type = '(( t.topic_type = ' . POST_ANNOUNCE . ') OR ( t.topic_type = ' . POST_GLOBAL . '))'; + $str_where = ( strlen($str_where) > 0 ) ? 'AND (t.forum_id = 0 OR ' . substr($str_where, 0, -4) . ')' : ''; + $user_link = 't.topic_poster = u.user_id'; + $post_link = 't.topic_first_post_id = p.post_id'; + $topic_order = 't.topic_time DESC'; + + break; + case "news": + + $topic_type = 't.topic_type = ' . POST_NORMAL; + $str_where = 'AND (' . substr($str_where, 0, -4) . ')'; + $user_link = 't.topic_last_poster_id = u.user_id'; + $post_link = 't.topic_last_post_id = p.post_id'; + $topic_order = 't.topic_last_post_time DESC'; + + break; + case "news_all": + + $topic_type = '( t.topic_type != ' . POST_ANNOUNCE . ' ) AND ( t.topic_type != ' . POST_GLOBAL . ')'; + $str_where = 'AND (' . substr($str_where, 0, -4) . ')'; + $user_link = 't.topic_last_poster_id = u.user_id'; + $post_link = 't.topic_last_post_id = p.post_id'; + $topic_order = 't.topic_last_post_time DESC'; + + break; } - else - { - // only normal topic - $topic_type = 't.topic_type = ' . POST_NORMAL . ' AND'; - } - - - $str_where = 'AND (' . substr($str_where, 0, -4) . ')'; - - $sql = 'SELECT - t.forum_id, - t.topic_id, - t.topic_last_post_id, - t.topic_last_post_time, - t.topic_time, - t.topic_title, - t.topic_attachment, - t.topic_views, - t.poll_title, - t.topic_replies, - t.forum_id, - t.topic_poster, - u.username, - u.user_id, - u.user_type, - u.user_colour, - p.post_id, - p.post_time, - p.post_text, - p.post_attachment, - p.enable_smilies, - p.enable_bbcode, - p.enable_magic_url, - p.bbcode_bitfield, - p.bbcode_uid, - f.forum_name + + $sql = 'SELECT + t.forum_id, + t.topic_id, + t.topic_last_post_id, + t.topic_last_post_time, + t.topic_time, + t.topic_title, + t.topic_attachment, + t.topic_views, + t.poll_title, + t.topic_replies, + t.topic_poster, + u.username, + u.user_id, + u.user_type, + u.user_colour, + p.post_id, + p.post_time, + p.post_text, + p.post_attachment, + p.enable_smilies, + p.enable_bbcode, + p.enable_magic_url, + p.bbcode_bitfield, + p.bbcode_uid, + f.forum_name FROM ' . TOPICS_TABLE . ' AS t LEFT JOIN ' . USERS_TABLE . ' as u ON - t.topic_last_poster_id = u.user_id + ' . $user_link . ' LEFT JOIN ' . FORUMS_TABLE . ' as f ON @@ -298,57 +184,74 @@ function phpbb_fetch_posts($forum_from, $number_of_posts, $text_length, $time, $ LEFT JOIN ' . POSTS_TABLE . ' as p ON - t.topic_last_post_id = p.post_id + ' . $post_link . ' WHERE ' . $topic_type . ' ' . $post_time . ' - t.topic_status <> 2 AND - t.topic_approved = 1 - ' . $str_where . ' - ORDER BY - t.topic_last_post_time DESC'; + AND t.topic_status <> 2 + AND t.topic_approved = 1 + ' . $str_where .' + ORDER BY + ' . $topic_order; + + if( $number_of_posts == '' OR $number_of_posts == 0) + { + $result = $db->sql_query($sql); + } + else + { + $result = $db->sql_query_limit($sql, $number_of_posts); + } + + // Instantiate BBCode if need be + if ($bbcode_bitfield !== '') + { + $phpEx = substr(strrchr(__FILE__, '.'), 1); + include_once($phpbb_root_path . 'includes/bbcode.' . $phpEx); + $bbcode = new bbcode(base64_encode($bbcode_bitfield)); + } - // query the database - if(!($result = $db->sql_query_limit($sql, $number_of_posts))) - { - die('Could not query topic information for board Portal news section'); - } - - // - // fetch all postings - // - - // Instantiate BBCode if need be - if ($bbcode_bitfield !== '') - { - $phpEx = substr(strrchr(__FILE__, '.'), 1); - include_once($phpbb_root_path . 'includes/bbcode.' . $phpEx); - $bbcode = new bbcode(base64_encode($bbcode_bitfield)); - } - $i = 0; - while ( ($row = $db->sql_fetchrow($result)) && ( ($i < $number_of_posts) || ($number_of_posts == '0') ) ) - { - if ( ($auth->acl_get('f_read', $row['forum_id'])) || ($row['forum_id'] == '0') ) + $i = 0; + + while ( $row = $db->sql_fetchrow($result) ) { if ($row['user_id'] != ANONYMOUS && $row['user_colour']) { $row['username'] = '' . $row['username'] . ''; } + $posts[$i]['bbcode_uid'] = $row['bbcode_uid']; $len_check = $row['post_text']; $maxlen = $text_length; + if (($text_length != 0) && (strlen($len_check) > $text_length)) { - $posts[$i]['post_text'] = censor_text(get_sub_taged_string(str_replace("\n", '
', $row['post_text']), $row['bbcode_uid'], $maxlen)); - $posts[$i]['striped'] = true; - } else $posts[$i]['post_text'] = censor_text($row['post_text']); - - + $message = censor_text(get_sub_taged_string(str_replace("\n", '
', $row['post_text']), $row['bbcode_uid'], $maxlen)); + $posts[$i]['striped'] = true; + } + else + { + $message = censor_text( str_replace("\n", '
', $row['post_text']) ); + } + + if ($auth->acl_get('f_html', $row['forum_id'])) + { + $message = preg_replace('##is', '', $message); // Remove Comments from post content + } + + // Second parse bbcode here + if ($row['bbcode_bitfield']) + { + $bbcode->bbcode_second_pass($message, $row['bbcode_uid'], $row['bbcode_bitfield']); + } + $message = smiley_text($message); // Always process smilies after parsing bbcodes + $posts[$i]['post_text']= ap_validate($message); + $posts[$i]['topic_id'] = $row['topic_id']; $posts[$i]['topic_last_post_id'] = $row['topic_last_post_id']; $posts[$i]['forum_id'] = $row['forum_id']; $posts[$i]['topic_replies'] = $row['topic_replies']; - $posts[$i]['topic_time'] = $user->format_date($row['topic_last_post_time']); + $posts[$i]['topic_time'] = $user->format_date($row['topic_time']); $posts[$i]['topic_last_post_time'] = $row['topic_last_post_time']; $posts[$i]['topic_title'] = $row['topic_title']; $posts[$i]['username'] = $row['username']; @@ -359,32 +262,14 @@ function phpbb_fetch_posts($forum_from, $number_of_posts, $text_length, $time, $ $posts[$i]['attachment'] = ($row['topic_attachment']) ? true : false; $posts[$i]['topic_views'] = ($row['topic_views']); $posts[$i]['forum_name'] = ($row['forum_name']); - - $message = $posts[$i]['post_text']; - $message = str_replace("\n", '
', $message); - - - if ($auth->acl_get('f_html', $row['forum_id'])) - { - $message = preg_replace('##is', '', $message); // Remove Comments from post content - } - // Second parse bbcode here - if ($row['bbcode_bitfield']) - { - $bbcode->bbcode_second_pass($message, $row['bbcode_uid'], $row['bbcode_bitfield']); - } - $message = smiley_text($message); // Always process smilies after parsing bbcodes - $posts[$i]['post_text']= ap_validate($message); + $posts[$i]['global_id'] = ($global_f); + $i++; } } - // return the result - return $posts; - } - else - { - return array(); } + + return $posts; } /** diff --git a/root/styles/prosilver/template/portal/block/announcements.html b/root/styles/prosilver/template/portal/block/announcements.html index 158ec487..cc007d16 100644 --- a/root/styles/prosilver/template/portal/block/announcements.html +++ b/root/styles/prosilver/template/portal/block/announcements.html @@ -24,7 +24,7 @@
{announcements_row.TEXT}

- {L_TOPIC_VIEWS}: {announcements_row.TOPIC_VIEWS}  •  {L_COMMENTS}: {announcements_row.REPLIES}  •  {L_POST_REPLY} + {L_TOPIC_VIEWS}: {announcements_row.TOPIC_VIEWS}  •  {L_COMMENTS}: {announcements_row.REPLIES}  •  {L_POST_REPLY} {announcements_row.OPEN}{announcements_row.L_READ_FULL}{announcements_row.CLOSE}
{L_BACK_TO_TOP}
diff --git a/templates/subsilver2/template/portal/block/announcements.html b/templates/subsilver2/template/portal/block/announcements.html index 3a258571..fcbb63f1 100644 --- a/templates/subsilver2/template/portal/block/announcements.html +++ b/templates/subsilver2/template/portal/block/announcements.html @@ -30,7 +30,7 @@ - {L_TOPIC_VIEWS}: {announcements_row.TOPIC_VIEWS}  •  {L_COMMENTS}: {announcements_row.REPLIES}  •  {L_POST_REPLY} + {L_TOPIC_VIEWS}: {announcements_row.TOPIC_VIEWS}  •  {L_COMMENTS}: {announcements_row.REPLIES}  •  {L_POST_REPLY} {announcements_row.OPEN}{announcements_row.L_READ_FULL}{announcements_row.CLOSE} {L_BACK_TO_TOP}