Show Top Commenters plugin for Wordpress by Nate Sanden Version: 1.4 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', '
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