WordPress.org

Ready to get started?Download WordPress

Forums

punBB Latest Topics Widget
Here is a version that works with wp3.1 and buddypress (1 post)

  1. Kchun
    Member
    Posted 3 years ago #

    I just kludged this together. Basically took out the wp database connect stuff and replaced it with standard wpdb calls. Also changed the sql to match the bbpress forum tables. Watch out because I hard coded the bb names to be the default if you let buddypress install the forum. Maybe someone wants to improve this to get these table names from options or wherever they're stored.

    bbpress_latest_topics.php
    ----------------------

    <?php
    
    /*
    
    Plugin Name: bbpress Latest Topics
    
    Plugin URI: http://www.erikadelson.com/current-projects/bbpress-latest-topics-wordpress-widget/
    
    Version: v2.0
    
    Author: Erik Adelson
    
    Description: A plugin to list the latest topics in your bbpress forum.
    
    Copyright 2007 Erik Adelson  (email : erik [a t ] erikadelson DOT com)
    
        This program is free software; you can redistribute it and/or modify
    
        it under the terms of the GNU General Public License as published by
    
        the Free Software Foundation; either version 2 of the License, or
    
        (at your option) any later version.
    
        This program is distributed in the hope that it will be useful,
    
        but WITHOUT ANY WARRANTY; without even the implied warranty of
    
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    
        GNU General Public License for more details.
    
        You should have received a copy of the GNU General Public License
    
        along with this program; if not, write to the Free Software
    
        Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    
    Modified by Karen Chun to work with bbpress
    
    */
    
    if (!class_exists("bbpresslatestPlugin")) {
    
    	class bbpresslatestPlugin {
    
    		function bbpresslatestPlugin() { //constructor
    
    		}
    
    		function init() {
    
    		    $opt=Array();
    
    			$opt['text']="";
    
    			add_option('widget_bbpresslt2');
    
    		}
    
    		function findLatestPosts() {
    
    			$bbpressltoutput = '';
    
    			global $wpdb;		
    
    			$sql = 'SELECT * FROM <code>wp_bb_posts</code> ORDER BY <code>wp_bb_posts</code>.<code>post_time</code> DESC LIMIT  6';
    
    			$result = $wpdb->get_results($sql );
    
    			foreach ($result as $p) {
    
    			    $sql='SELECT * FROM <code>wp_bb_topics</code> WHERE <code>topic_id</code> = '.$p->topic_id;
    
    				$t= $wpdb->get_row($sql, ARRAY_A, 0);
    
    				$topic_name=$t['topic_title'];
    
    				$sql='SELECT * FROM <code>wp_bb_forums</code> WHERE <code>forum_id</code> = '.$p->forum_id;
    
    				$f= $wpdb->get_row($sql, ARRAY_A, 0);
    
    				$sql= 'SELECT * FROM <code>wp_users</code> WHERE <code>ID</code> = '.$p->poster_id;
    
    				$u= $wpdb->get_row($sql, ARRAY_A, 0);
    
    				$user=$u['display_name'];
    
    				$bbpressltoutput .= $user.' posted in<br><a href="/groups/'.$f['forum_slug'].'/forum/topic/'.$t['topic_slug'].'/">'.$topic_name.'</a><br><br>';   
    
    			}
    
    			//Get options for the widget text
    
    			$options = get_option('widget_bbpresslt2');
    
    			$options['text'] = "<br>".$bbpressltoutput;
    
    			//Update widget text with Forum Latest Topics
    
    			update_option('widget_bbpresslt2', $options);
    
    			return;
    
    	    }
    
    		function getTopic ($postID) {
    
    			$topics = '';
    
    			$table = $db_prefix.'topics';
    
    			$sql2 = 'SELECT <code>poster</code> , <code>subject</code> FROM '.$table.' WHERE <code>last_post_id</code> = '.$postID.' ';
    
    			$result = $wpdb->get_results($sql2 );
    
    			foreach ($result as $p) {
    
    				$topics .= '<a href="/viewtopic.php?pid='.$postID.'">'.$p->subject.'</a><br>Last Post By: '.$p->poster.'<br />'; 
    
    			}	
    
    			return $topics;
    
    		}
    
    		function db_close($link) {
    
    			mysql_close($link);
    
    		}
    
    	}
    
    } //End Class bbpresslatestPlugin
    
    if (class_exists("bbpresslatestPlugin")) {
    
    	$ea_bbpresslatestPlugin = new bbpresslatestPlugin();
    
    }
    
    //Initialize the admin panel
    
    if (!function_exists("bbpresslatestPlugin_ap")) {
    
    	function bbpresslatestPlugin_ap() {
    
    		global $ea_bbpresslatestPlugin;
    
    		if (!isset($ea_bbpresslatestPlugin)) {
    
    			return;
    
    		}
    
    	}	
    
    }
    
    //Actions and Filters	
    
    if (isset($ea_bbpresslatestPlugin)) {
    
    	//Actions
    
    	add_action('bbpress_latest_topics.php',  array(&$ea_bbpresslatestPlugin, 'init'));
    
     	$ea_bbpresslatestPlugin->findLatestPosts();
    
    }
    
    function widget_bbpresslt2_init() {
    
    	// Check to see required Widget API functions are defined...
    
    	if ( !function_exists('register_sidebar_widget') || !function_exists('register_widget_control') )
    
    		return; // ...and if not, exit gracefully from the script.
    
    	// This function prints the sidebar widget--the cool stuff!
    
    	function widget_bbpresslt2($args) {
    
    		// $args is an array of strings which help your widget
    
    		// conform to the active theme: before_widget, before_title,
    
    		// after_widget, and after_title are the array keys.
    
    		extract($args);
    
    		// Collect our widget's options, or define their defaults.
    
    		$options = get_option('widget_bbpresslt2');
    
    		$title = empty($options['title']) ? 'Forum Latest Topics' : $options['title'];
    
    		$text = empty($options['text']) ? '' : $options['text'];
    
     		// It's important to use the $before_widget, $before_title,
    
     		// $after_title and $after_widget variables in your output.
    
     		echo $before_widget;
    
    		echo $before_title . $title . $after_title;
    
    		echo $text;
    
    		echo $after_widget;
    
    	}
    
    	function widget_bbpresslt2_control() {
    
    		// Get widget's options.
    
    		$options = get_option('widget_bbpresslt2');
    
    		// handle control form submission.
    
    		if ( $_POST['bbpresslt-submit'] ) {
    
    			// Clean up control form submission options
    
    			$newoptions['title'] = strip_tags(stripslashes($_POST['bbpresslt-title']));
    
    			$newoptions['text'] = strip_tags(stripslashes($_POST['bbpresslt-text']));
    
    		}
    
    		// If original widget options do not match control form
    
    		// submission options, update them.
    
    		if ( $options != $newoptions ) {
    
    			$options = $newoptions;
    
    			update_option('widget_bbpresslt2', $options);
    
    		}
    
    		// Format options as valid HTML. 
    
    		$title = htmlspecialchars($options['title'], ENT_QUOTES);
    
    		$text = htmlspecialchars($options['text'], ENT_QUOTES);
    
    // The HTML below is the control form for editing options.
    
    ?>
    
    		<div>
    
    		<label for="bbpresslt-title" style="line-height:35px;display:block;">Title: <input type="text" id="bbpresslt-title" name="bbpresslt-title" value="<?php echo $title; ?>" /></label>
    
    		<input type="hidden" name="bbpresslt-submit" id="bbpresslt-submit" value="1" />
    
    		</div>
    
    	<?php
    
    	// end of widget_bbpresslt2_control()
    
    	}
    
    	register_sidebar_widget('bbpress Latest', 'widget_bbpresslt2');
    
    	register_widget_control('bbpress Latest', 'widget_bbpresslt2_control');
    
    }
    
    add_action('plugins_loaded', 'widget_bbpresslt2_init');
    
    ?>

    You can see it in action on the front page of http://mauifoodweb.org

Topic Closed

This topic has been closed to new replies.

About this Plugin

About this Topic