Show Top Commenters plugin for Wordpress by Nate Sanden Version: 1.3 Author: Rhys Wynne Author URI: http://www.gospelrhys.co.uk */ add_action('bb_admin_menu_generator', 'show_top_posters_add_admin_page'); add_action('bb_admin-header.php', 'show_top_poster_admin_page_process'); function show_top_posters_add_admin_page() { bb_admin_add_submenu(__('Show Top Posters'), 'use_keys', 'show_top_posters_admin_page'); } function show_top_posters_admin_page_defaults() { if (!bb_get_option('show_top_posters_reset')){ bb_update_option('show_top_posters_reset', 'monthly'); } if (!bb_get_option('show_top_posters_limit')){ bb_update_option('show_top_posters_limit', '10'); } if (!bb_get_option('show_top_posters_none_text')){ bb_update_option('show_top_posters_none_text', 'None Yet!'); } if (!bb_get_option('show_top_posters_make_links')){ bb_update_option('show_top_posters_make_links', 1); } if (!bb_get_option('show_top_posters_pretty_permalinks')){ bb_update_option('show_top_posters_pretty_permalinks', 0); } if (!bb_get_option('show_top_posters_name_limit')){ bb_update_option('show_top_posters_name_limit', 28); } if (!bb_get_option('show_top_posters_start_html')){ bb_update_option('show_top_posters_start_html', '
  • '); } if (!bb_get_option('show_top_posters_end_html')){ bb_update_option('show_top_posters_end_html', '
  • '); } if (!bb_get_option('show_top_posters_show_posts')){ bb_update_option('show_top_posters_show_posts', 1); } } function show_top_posters_admin_page() { show_top_posters_admin_page_defaults(); ?>

    Show Top Posters

    Options Saved
    Reset Counter?
    Poster Limit:
    URL's to Filter:
    Text To Show If There are No Posters:
    Make Links?

    To Website

    '; } if (bb_get_option('show_top_posters_make_links') == '0') { echo '

    '; } if (bb_get_option('show_top_posters_make_links') == '2') { echo '

    '; } ?>

    Permalink Structure of Your Site
    Name Character Limit
    Start HTML
    Start HTML
    Show Post Count

     

    Like this? Please Donate!

    Donations help keep me chugging away at plugins. Donations as much and as little as you want.

    get_var(" SELECT user_url, COUNT(user_url) AS user_url_count FROM $bbdb->users WHERE ID = $user $options[filter_urls] GROUP BY user_url ORDER BY user_url_count DESC LIMIT 1 "); return $url; } function ns_get_user_profile($user) { global $bbdb, $ns_options; if($ns_options["pretty_permalinks"] == 1) { $url = $bbdb->get_var(" SELECT user_login, COUNT(user_login) AS user_id_count FROM $bbdb->users WHERE ID = $user GROUP BY user_login ORDER BY user_id_count DESC LIMIT 1 "); $url = "profile/" . $url; } if($ns_options["pretty_permalinks"] == 0) { $url = "profile.php?id=" . $user; } return $url; } function show_top_posters() { global $bbdb; $ns_options = ns_get_variables(); $ns_options = ns_format_options($ns_options); if($ns_options["reset"] != '') { $reset_sql = "DATE_FORMAT(post_time, '$ns_options[reset]') = DATE_FORMAT(CURDATE(), '$ns_options[reset]')"; } else { $reset_sql = "1=1"; } $commenters = $bbdb->get_results(" SELECT COUNT(poster_id) AS num_posts, poster_id FROM $bbdb->posts WHERE $reset_sql AND post_status != 1 GROUP BY poster_id ORDER BY num_posts DESC LIMIT 10 "); if(is_array($commenters)) { foreach ($commenters as $k) { echo $ns_options["start_html"]; if($ns_options["make_links"] == 1) { $url = ns_get_user_url($k->poster_id); if(trim($url) != '') { echo ""; } } if($ns_options["make_links"] == 2) { $url = ns_get_user_profile($k->poster_id); echo ""; } $name = $bbdb->get_var(" SELECT user_login FROM $bbdb->users WHERE ID = $k->poster_id"); echo ns_substr_ellipse($name, $ns_options["name_limit"]); if(trim($url) != '' && $ns_options["make_links"] == 1) { echo ""; } if($ns_options["make_links"] == 2) { echo ""; } if ($ns_options["show_posts"] == 1) { echo " (" . $k->num_posts . ")\n"; } echo $ns_options["end_html"] . "\n"; unset($url); } } else { echo $ns_options["start_html"] . $ns_options["none_text"] . $ns_options["end_html"];; } } function ns_get_variables() { $reset = bb_get_option('show_top_posters_reset'); $limit = bb_get_option('show_top_posters_limit'); $filter = bb_get_option('show_top_posters_filter_urls'); $none_text = bb_get_option('show_top_posters_none_text'); $make_links = bb_get_option('show_top_posters_make_links'); $pretty_permalinks = bb_get_option('show_top_posters_pretty_permalinks'); $name_limit = bb_get_option('show_top_posters_name_limit'); $start_html = bb_get_option('show_top_posters_start_html'); $end_html = bb_get_option('show_top_posters_end_html'); $show_posts = bb_get_option('show_top_posters_show_posts'); $variables = array( "reset" => $reset, //reset hourly, daily, weekly, monthly, yearly, all "limit" => $limit, //maximum number of commentator's to show "filter_urls" => $filter, //commma seperated list of full or partial URL's (www.badsite.com,etc) "none_text" => $none_text, //if there are no commentators, what should we display? "make_links" => $make_links, //link the commentator's name to thier website? (1) or Profile? (2) "pretty_permalinks" => $pretty_permalinks, //do you have "pretty permalinks" for your profile (1)? (http://www.example.com/profile/username) or not (2)? (http://www.example.com/profile.php?id=1) "name_limit" => $name_limit, //maximum number of characters a commentator's name can be, before we cut it off with an ellipse "start_html" => $start_html, "end_html" => $end_html, "show_posts" => $show_posts, //Shows the amount of posts people have made or just list their name. ); return $variables; } function ns_substr_ellipse($str, $len) { if(strlen($str) > $len) { $str = substr($str, 0, $len-3) . "..."; } return $str; } function ns_format_options($options) { //$reset needs to turn into %sql format if($options["reset"] == "hourly") { $options["reset"] = "%Y-%m-%d %H"; } elseif($options["reset"] == "daily") { $options["reset"] = "%Y-%m-%d"; } elseif($options["reset"] == "weekly") { $options["reset"] = "%Y-%w"; } elseif($options["reset"] == "monthly") { $options["reset"] = "%Y-%m"; } elseif($options["reset"] == "yearly") { $options["reset"] = "%Y"; } elseif($options["reset"] == "all") { $options["reset"] = ""; //just use monthly } else { $options["reset"] = "%Y-%m"; //just use monthly } //$filter urls needs to be comma seperated with single quotes $filter_urls = trim($options["filter_urls"]); $filter_urls = explode(",", $filter_urls); for($i=0; $i