Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /*
- * home.php
- * Description: example file for displaying latest posts and topics
- * by battye (for phpBB.com MOD Team)
- * September 29, 2009
- */
- $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './forums/';
- define('IN_PHPBB', true);
- // Start session management
- $user->session_begin();
- $auth->acl($user->data);
- $user->setup('viewforum');
- /* create_where_clauses( int[] gen_id, String type )
- * This function outputs an SQL WHERE statement for use when grabbing
- * posts and topics */
- function create_where_clauses($gen_id, $type)
- {
- global $db, $auth;
- $size_gen_id = sizeof($gen_id);
- switch($type)
- {
- case 'forum':
- $type = 'forum_id';
- break;
- case 'topic':
- $type = 'topic_id';
- break;
- default:
- trigger_error('No type defined');
- }
- // Set $out_where to nothing, this will be used of the gen_id
- // size is empty, in other words "grab from anywhere" with
- // no restrictions
- $out_where = '';
- if( $size_gen_id > 0 )
- {
- // Get a list of all forums the user has permissions to read
- $auth_f_read = array_keys($auth->acl_getf('f_read', true));
- if( $type == 'topic_id' )
- {
- $sql = 'SELECT topic_id FROM ' . TOPICS_TABLE . '
- WHERE ' . $db->sql_in_set('topic_id', $gen_id) . '
- AND ' . $db->sql_in_set('forum_id', $auth_f_read);
- $result = $db->sql_query($sql);
- while( $row = $db->sql_fetchrow($result) )
- {
- // Create an array with all acceptable topic ids
- $topic_id_list[] = $row['topic_id'];
- }
- unset($gen_id);
- $gen_id = $topic_id_list;
- $size_gen_id = sizeof($gen_id);
- }
- $j = 0;
- for( $i = 0; $i < $size_gen_id; $i++ )
- {
- $id_check = (int) $gen_id[$i];
- // If the type is topic, all checks have been made and the query can start to be built
- if( $type == 'topic_id' )
- {
- $out_where .= ($j == 0) ? 'WHERE ' . $type . ' = ' . $id_check . ' ' : 'OR ' . $type . ' = ' . $id_check . ' ';
- }
- // If the type is forum, do the check to make sure the user has read permissions
- else if( $type == 'forum_id' && $auth->acl_get('f_read', $id_check) )
- {
- $out_where .= ($j == 0) ? 'WHERE ' . $type . ' = ' . $id_check . ' ' : 'OR ' . $type . ' = ' . $id_check . ' ';
- }
- $j++;
- }
- }
- if( $out_where == '' && $size_gen_id > 0 )
- {
- trigger_error('A list of topics/forums has not been created');
- }
- return $out_where;
- }
- $search_limit = 5;
- $forum_id = array(2, 5);
- $forum_id_where = create_where_clauses($forum_id, 'forum');
- $topic_id = array(20, 50);
- $topic_id_where = create_where_clauses($topic_id, 'topic');
- $topics = 'SELECT * FROM ' . TOPICS_TABLE . '
- ' . $forum_id_where . '
- AND topic_status <> ' . ITEM_MOVED . '
- AND topic_visibility = 1
- ORDER BY topic_id DESC';
- $topics_result = $db->sql_query_limit($topics, $search_limit);
- while( $topics_row = $db->sql_fetchrow($topics_result) )
- {
- $topic_title = $topics_row['topic_title'];
- $topic_author = get_username_string('full', $topics_row['topic_poster'], $topics_row['topic_first_poster_name'], $topics_row['topic_first_poster_colour']);
- $topic_date = $user->format_date($topics_row['topic_time']);
- $topic_last_post = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $topics_row['forum_id'] . '&t=' . $topics_row['topic_id'] . '&p=' . $topics_row['topic_last_post_id']) . '#p' . $topics_row['topic_last_post_id'];
- $topic_last_author = get_username_string('full', $topics_row['topic_last_poster_id'], $topics_row['topic_last_poster_name'], $topics_row['topic_last_poster_colour']);
- $topic_link = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $topics_row['forum_id'] . '&t=' . $topics_row['topic_id']);
- $template->assign_block_vars('announcements', array(
- 'TOPIC_TITLE' => censor_text($topic_title),
- 'TOPIC_AUTHOR' => $topic_author,
- 'TOPIC_DATE' => $topic_date,
- 'TOPIC_LAST_POST' => $topic_last_post,
- 'TOPIC_LAST_AUTHOR' => $topic_last_author,
- 'TOPIC_LINK' => $topic_link,
- ));
- }
- page_header('External page');
- $template->set_filenames(array(
- 'body' => 'external_body.html'
- ));
- page_footer();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement