File: /home/vmasmheia229/domains/overtoneband.com/html/wp-content/plugins/mingle-forum/wpf.class.php
<?php
include("wpf_define.php");
include_once( 'bbcode.php' );
//@ob_start();
if(!class_exists('mingleforum')){
class mingleforum{
var $db_version = 1; //MANAGES DB VERSION
function mingleforum()
{
$this->get_forum_admin_ops();
$this->get_set_ads_options();
if($this->options['forum_use_seo_friendly_urls'])
{
add_filter("init", array(&$this, "flush_wp_rewrite_rules"));
add_filter("rewrite_rules_array", array(&$this, "set_seo_friendly_rules"));
}
add_action("admin_menu", array(&$this,"add_admin_pages"));
add_action("admin_head", array(&$this, "admin_header"));
add_action("wp_head", array(&$this, "setup_header"));
add_action("plugins_loaded", array(&$this, "wpf_load_widget"));
add_action("wp_footer", array(&$this, "wpf_footer"));
if($this->options['wp_posts_to_forum'])
{
add_action("add_meta_boxes", array(&$this, "send_wp_posts_to_forum"));
add_action("publish_post", array(&$this, "saving_posts"));
}
//Ads filter hooks
add_filter('mf_ad_above_forum', array(&$this, 'mf_ad_above_forum'));
add_filter('mf_ad_below_forum', array(&$this, 'mf_ad_below_forum'));
add_filter('mf_ad_above_branding', array(&$this, 'mf_ad_above_branding'));
add_filter('mf_ad_above_info_center', array(&$this, 'mf_ad_above_info_center'));
add_filter('mf_ad_above_quick_reply', array(&$this, 'mf_ad_above_quick_reply'));
add_filter('mf_ad_above_breadcrumbs', array(&$this, 'mf_ad_above_breadcrumbs'));
add_filter('mf_ad_below_first_post', array(&$this, 'mf_ad_below_first_post'));
$this->init();
}
// !Member variables
var $showing = false;
var $page_id = "";
var $reg_link = "";
var $profile_link = "";
var $logout_link = "";
var $home_url = "";
var $forum_link = "";
var $group_link = "";
var $thread_link = "";
var $add_topic_link = "";
// DB tables
var $t_groups = "";
var $t_forums = "";
var $t_threads = "";
var $t_posts = "";
var $_usergroups = "";
var $t_usergroup2user = "";
var $o = "";
var $current_group = "";
var $current_forum = "";
var $current_thread = "";
var $notify_msg = "";
var $current_view = "";
var $opt = array();
var $base_url = "";
var $skin_url = "";
var $curr_page = "";
var $last_visit = "";
var $user_options = array();
var $options = array();
var $ads_options = array();
// Initialize varables
function init(){
global $table_prefix, $user_ID;
$this->page_id = $this->get_pageid();
$this->profile_link = site_url()."/wp-admin/profile.php";
$this->t_groups = $table_prefix."forum_groups";
$this->t_forums = $table_prefix."forum_forums";
$this->t_threads = $table_prefix."forum_threads";
$this->t_posts = $table_prefix."forum_posts";
$this->t_usergroups = $table_prefix."forum_usergroups";//! check this later
$this->t_usergroup2user = $table_prefix."forum_usergroup2user"; //x testing
$this->current_forum = false;
$this->current_group = false;
$this->current_thread = false;
$this->curr_page = 0;
$this->user_options = array('allow_profile' => true,
'signature' => ""
);
// Get the options
$this->opt = get_option('mingleforum_options');
if ($this->opt['forum_skin'] == "Default")
$this->skin_url = OLDSKINURL.$this->opt['forum_skin'];
else
$this->skin_url = SKINURL.$this->opt['forum_skin'];
}
function get_set_ads_options() {
$this->ads_options = array( 'mf_ad_above_forum_on' => false,
'mf_ad_above_forum' => '',
'mf_ad_below_forum_on' => false,
'mf_ad_below_forum' => '',
'mf_ad_above_branding_on' => false,
'mf_ad_above_branding' => '',
'mf_ad_above_info_center_on' => false,
'mf_ad_avove_info_center' => '',
'mf_ad_above_quick_reply_on' => false,
'mf_ad_above_quick_reply' => '',
'mf_ad_above_breadcrumbs_on' => false,
'mf_ad_above_breadcrumbs' => '',
'mf_ad_below_first_post_on' => false,
'mf_ad_below_first_post' => '',
'mf_ad_custom_css' => ''
);
$initOps = get_option('mingleforum_ads_options');
if (!empty($initOps)){
foreach ($initOps as $key => $option)
$this->ads_options[$key] = $option;
}
update_option('mingleforum_ads_options', $this->ads_options);
}
function get_forum_admin_ops() {
$this->options = array( 'wp_posts_to_forum' => false,
'forum_posts_per_page' => 10,
'forum_threads_per_page' => 20,
'forum_require_registration' => true,
'forum_show_login_form' => true,
'forum_date_format' => "F j, Y, H:i",
'forum_use_gravatar' => true,
'forum_show_bio' => true,
'forum_skin' => "Default",
'forum_use_rss' => true,
'forum_use_seo_friendly_urls' => false,
'forum_allow_image_uploads' => false,
'notify_admin_on_new_posts' => false,
'set_sort' => "DESC",
'forum_use_spam' => false,
'forum_use_bbcode' => true,
'forum_captcha' => true,
'hot_topic' => 15,
'veryhot_topic' => 25,
'forum_display_name' => 'user_login',
'level_one' => 25,
'level_two' => 50,
'level_three' => 100,
'level_newb_name' => __("Newbie", "mingleforum"),
'level_one_name' => __("Beginner", "mingleforum"),
'level_two_name' => __("Advanced", "mingleforum"),
'level_three_name' => __("Pro", "mingleforum"),
'forum_db_version' => 0,
'forum_disabled_cats' => array()
);
$initOps = get_option('mingleforum_options');
//Don't overwrite current opitions but allow the flexibility to add more options
if (!empty($initOps)){
foreach ($initOps as $key => $option)
$this->options[$key] = $option;
}
update_option('mingleforum_options', $this->options);
return $this->options;
}
// Add admin pages
function add_admin_pages(){
include_once("fs-admin/fs-admin.php");
$wpfa = new mingleforumadmin();
add_menu_page(__("Mingle Forum - Options", "mingleforum"), "Mingle Forum", "administrator", "mingle-forum", array(&$wpfa, "options"), WPFURL."images/logo.png");
add_submenu_page("mingle-forum", __("Mingle Forum - Options", "mingleforum"), __("Options", "mingleforum"), "administrator", 'mingle-forum', array(&$wpfa, "options"));
add_submenu_page('mingle-forum', __('Ads', 'mingleforum'), __('Ads', 'mingleforum'), "administrator", 'mfads', array(&$wpfa, "ads"));
add_submenu_page("mingle-forum", __("Skins", "mingleforum"), __("Skins", "mingleforum"), "administrator", 'mfskins', array(&$wpfa, "skins"));
add_submenu_page("mingle-forum", __("Forum Structure - Categories & Forums", "mingleforum"), __("Forum Structure", "mingleforum"), "administrator", 'mfstructure', array(&$wpfa, "structure"));
add_submenu_page("mingle-forum", __("Moderators", "mingleforum"), __("Moderators", "mingleforum"), "administrator", 'mfmods', array(&$wpfa, "moderators"));
add_submenu_page("mingle-forum", __("User Groups", "mingleforum"), __("User Groups", "mingleforum"), "administrator", 'mfgroups', array(&$wpfa, "usergroups"));
add_submenu_page("mingle-forum", __("About", "mingleforum"), __("About", "mingleforum"), "administrator", 'mfabout', array(&$wpfa, "about"));
}
function admin_header(){
echo "<link rel='stylesheet' href='".get_bloginfo('wpurl')."/wp-content/plugins/".WPFPLUGIN."/wpf_admin.css' type='text/css' media='screen' />";
?>
<script language="JavaScript" type="text/javascript" src="<?php echo WPFURL."js/script.js"?>"></script>
<?php
}
function wpf_load_widget() {
wp_register_sidebar_widget("MFWidget", __("Forums Latest Activity", "mingleforum"), array(&$this, "widget"));
wp_register_widget_control("MFWidget", __("Forums Latest Activity", "mingleforum"), array(&$this, "widget_wpf_control"));
}
function widget($args) {
global $wpdb;
$toShow = 0;
$unique = array();
$this->setup_links();
$this->get_forum_admin_ops();
$widget_option = get_option("wpf_widget");
$posts = $wpdb->get_results("SELECT * FROM $this->t_posts ORDER BY `date` DESC LIMIT 50");
echo $args['before_widget'];
echo $args['before_title'] . $widget_option["wpf_title"] . $args['after_title'];
echo "<ul>";
foreach($posts as $post) {
if(!in_array($post->parent_id, $unique) && $toShow < $widget_option["wpf_num"])
{
//$user = get_userdata($post->author_id);
if($this->have_access($this->forum_get_group_from_post($post->parent_id)))
echo "<li><a href='".$this->get_paged_threadlink($post->parent_id, '#postid-'.$post->id)."'>".$this->output_filter($post->subject)."</a><br/>".__("by:", "mingleforum")." ".$this->profile_link($post->author_id)."<br /><small>".$this->format_date($post->date)."</small></li>";
$unique[] = $post->parent_id;
$toShow += 1;
}
}
echo "</ul>";
echo $args['after_widget'];
}
function latest_activity($num = 5, $ul = true){
global $wpdb;
$toShow = 0;
$unique = array();
$posts = $wpdb->get_results("SELECT * FROM $this->t_posts ORDER BY `date` DESC LIMIT 50");
if($ul) echo "<ul class='forumtwo'>";
foreach($posts as $post){
if(!in_array($post->parent_id, $unique) && $toShow < $num)
{
//$user = get_userdata($post->author_id);
if($this->have_access($this->forum_get_group_from_post($post->parent_id)))
echo "<li class='forum'><a href='".$this->get_paged_threadlink($post->parent_id, '#postid-'.$post->id)."'>".$this->output_filter($post->subject)."</a><br />".__("by:", "mingleforum")." ".$this->profile_link($post->author_id)."<br/><small>".$this->format_date($post->date)."</small></li>";
$unique[] = $post->parent_id;
$toShow += 1;
}
}
if($ul)echo "</ul>";
}
function widget_wpf_control(){
if (isset($_POST["wpf_submit"])) {
$name = strip_tags(stripslashes($_POST["wpf_title"]));
$num = strip_tags(stripslashes($_POST["wpf_num"]));
$widget_option["wpf_title"] = $name;
$widget_option["wpf_num"] = $num;
update_option("wpf_widget", $widget_option);
}
$widget_option = get_option("wpf_widget");
echo "<p><label for='wpf_title'>".__("Title to display in the sidebar:", "mingleforum")."
<input style='width: 250px;' id='wpf_title' name='wpf_title' type='text' class='wpf-input' value='{$widget_option['wpf_title']}' /></label></p>";
echo "<p><label for='wpf_num'>".__("How many items would you like to display?", "mingleforum");
echo "<select name='wpf_num'>";
for($i = 1; $i < 21; ++$i){
if($widget_option["wpf_num"] == $i)
$selected = "selected = 'selected'";
else
$selected = "";
echo "<option value='$i' $selected>$i</option>";
}
echo "</select>";
echo "</label></p>
<input type='hidden' id='wpf_submit' name='wpf_submit' value='1' />";
}
function wpf_footer(){
if(is_page($this->get_pageid()))
{
?>
<script type="text/javascript" >
<?php echo "var skinurl = '$this->skin_url';";?>
fold();
function notify(){
var answer = confirm ('<?php echo $this->notify_msg;?>');
if (!answer)
return false;
else
return true;
}
</script>
<?php
}
}
function setup_links(){
global $wp_rewrite;
if($wp_rewrite->using_permalinks())
$delim = "?";
else
$delim = "&";
$perm = get_permalink($this->page_id);
$this->forum_link = $perm.$delim."mingleforumaction=viewforum&f=";
$this->group_link = $perm.$delim."mingleforumaction=vforum&g=";
$this->thread_link = $perm.$delim."mingleforumaction=viewtopic&t=";
$this->add_topic_link = $perm.$delim."mingleforumaction=addtopic&forum=$this->current_forum";
$this->post_reply_link = $perm.$delim."mingleforumaction=postreply&thread=$this->current_thread";
$this->base_url = $perm.$delim."mingleforumaction=";
//START MINGLE REG LINK
if(!function_exists('is_plugin_active'))
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
if(is_plugin_active('mingle/mingle.php'))
{
global $mngl_options;
if(!empty($mngl_options->signup_page_id) and $mngl_options->signup_page_id > 0)
$this->reg_link = get_permalink($mngl_options->signup_page_id);
else
$this->reg_link = $mngl_blogurl . '/wp-login.php?action=register';
}
else
{
$this->reg_link = site_url()."/wp-login.php?action=register";
}
//END MINGLE REG LINK
$this->topic_feed_url = WPFURL."feed.php?topic=";
$this->global_feed_url = WPFURL."feed.php?topic=all";
$this->home_url = $perm;
$this->logout_link = site_url()."/wp-login.php?action=logout&redirect_to=".get_permalink($this->get_pageid());
}
function setup_linksdk($perm){
global $wp_rewrite;
if($wp_rewrite->using_permalinks())
$delim = "?";
else
$delim = "&";
$this->forum_link = $perm.$delim."mingleforumaction=viewforum&f=";
$this->group_link = $perm.$delim."mingleforumaction=vforum&g=";
$this->thread_link = $perm.$delim."mingleforumaction=viewtopic&t=";
$this->add_topic_link = $perm.$delim."mingleforumaction=addtopic&forum=$this->current_forum";
$this->post_reply_link = $perm.$delim."mingleforumaction=postreply&thread=$this->current_thread";
$this->base_url = $perm.$delim."mingleforumaction=";
//START MINGLE REG LINK
if(!function_exists('is_plugin_active'))
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
if(is_plugin_active('mingle/mingle.php'))
{
global $mngl_options;
if(!empty($mngl_options->signup_page_id) and $mngl_options->signup_page_id > 0)
$this->reg_link = get_permalink($mngl_options->signup_page_id);
else
$this->reg_link = $mngl_blogurl . '/wp-login.php?action=register';
}
else
{
$this->reg_link = site_url()."/wp-login.php?action=register";
}
//END MINGLE REG LINK
$this->topic_feed_url = WPFURL."feed.php?topic=";
$this->global_feed_url = WPFURL."feed.php?topic=all";
$this->home_url = $perm;
$this->logout_link = site_url()."/wp-login.php?action=logout&redirect_to=".get_permalink($this->get_pageid());
}
function get_addtopic_link(){
return $this->add_topic_link.".$this->curr_page";
}
function get_post_reply_link(){
return $this->post_reply_link.".$this->curr_page";
}
function get_forumlink($id, $page = ''){
if($this->options['forum_use_seo_friendly_urls'])
{
$group = $this->get_seo_friendly_title($this->get_groupname($this->get_parent_id(FORUM, $id))."-group".$this->get_parent_id(FORUM, $id));
$forum = $this->get_seo_friendly_title($this->get_forumname($id)."-forum".$id).$page;
return rtrim($this->home_url, '/').'/'.$group.'/'.$forum;
}
else
if($page == '')
return $this->forum_link.$id.".$this->curr_page";
else
return $this->forum_link.$id.$page;
}
function get_grouplink($id){
if($this->options['forum_use_seo_friendly_urls'])
{
$group = $this->get_seo_friendly_title($this->get_groupname($id)."-group".$id);
return rtrim($this->home_url, '/').'/'.$group;
}
else
return $this->group_link.$id.".$this->curr_page";
}
function get_threadlink($id, $page = ''){
if($this->options['forum_use_seo_friendly_urls'])
{
$group = $this->get_seo_friendly_title($this->get_groupname($this->get_parent_id(FORUM, $this->get_parent_id(THREAD, $id)))."-group".$this->get_parent_id(FORUM, $this->get_parent_id(THREAD, $id)));
$forum = $this->get_seo_friendly_title($this->get_forumname($this->get_parent_id(THREAD, $id))."-forum".$this->get_parent_id(THREAD, $id));
$thread = $this->get_seo_friendly_title($this->get_subject($id)."-thread".$id);
return rtrim($this->home_url, '/').'/'.$group.'/'.$forum.'/'.$thread.$page;
}
else
return $this->thread_link.$id.$page;
}
function get_paged_threadlink($id, $postid = ''){
global $wpdb;
$wpdb->query($wpdb->prepare("SELECT * FROM $this->t_posts WHERE parent_id = $id"));
$num = ceil($wpdb->num_rows / $this->options['forum_posts_per_page']) - 1;
if($num < 0)
$num = 0;
if($this->options['forum_use_seo_friendly_urls'])
{
$group = $this->get_seo_friendly_title($this->get_groupname($this->get_parent_id(FORUM, $this->get_parent_id(THREAD, $id)))."-group".$this->get_parent_id(FORUM, $this->get_parent_id(THREAD, $id)));
$forum = $this->get_seo_friendly_title($this->get_forumname($this->get_parent_id(THREAD, $id))."-forum".$this->get_parent_id(THREAD, $id));
$thread = $this->get_seo_friendly_title($this->get_subject($id)."-thread".$id);
return rtrim($this->home_url, '/').'/'.$group.'/'.$forum.'/'.$thread.".".$num.$postid;
}
else
return $this->thread_link.$id.".".$num.$postid;
}
function get_pageid(){
global $wpdb;
return $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_content LIKE '%[mingleforum]%' AND post_status = 'publish' AND post_type = 'page'");
}
function get_groups($id = ''){
global $wpdb;
$cond = "";
if($id)
$cond = "WHERE id = $id";
return $wpdb->get_results("SELECT * FROM $this->t_groups $cond ORDER BY sort ".SORT_ORDER);
}
function get_forums($id = ''){
global $wpdb;
if($id){
$forums = $wpdb->get_results("SELECT * FROM $this->t_forums WHERE parent_id = $id ORDER BY SORT ".SORT_ORDER);
return $forums;
}
else
return $wpdb->get_results("SELECT * FROM $this->t_forums ORDER BY sort ".SORT_ORDER);
}
function get_threads($id = ''){
global $wpdb;
$start = $this->curr_page*$this->opt['forum_threads_per_page'];
$end = $this->opt['forum_threads_per_page'];
$limit = "$start, $end";
if($id){
$threads = $wpdb->get_results("SELECT * FROM $this->t_threads WHERE parent_id = $id AND status='open' ORDER BY last_post ".SORT_ORDER." LIMIT $limit");
return $threads;
}
else
return $wpdb->get_results("SELECT * FROM $this->t_threads ORDER BY `date` ".SORT_ORDER);
}
function get_sticky_threads($id){
global $wpdb;
if($id){
$threads = $wpdb->get_results("SELECT * FROM $this->t_threads WHERE parent_id = $id AND status='sticky' ORDER BY last_post ".SORT_ORDER);
return $threads;
}
}
function get_posts($thread_id){
global $wpdb;
$start = $this->curr_page*$this->opt['forum_posts_per_page'];
$end = $this->opt['forum_posts_per_page'];
$limit = "$start, $end";
if($thread_id){
$posts = $wpdb->get_results("SELECT * FROM $this->t_posts WHERE parent_id = $thread_id ORDER BY `date` ASC LIMIT $limit");
return $posts;
}else{
return false;
}
}
function get_groupname($id){
global $wpdb;
return $this->output_filter($wpdb->get_var("SELECT name FROM $this->t_groups WHERE id = $id"));
}
function get_forumname($id){
global $wpdb;
return $this->output_filter($wpdb->get_var("SELECT name FROM $this->t_forums WHERE id = $id"));
}
function get_threadname($id){
global $wpdb;
return $this->output_filter($wpdb->get_var("SELECT subject FROM $this->t_threads WHERE id = $id"));
}
function get_postname($id){
global $wpdb;
return $this->output_filter($wpdb->get_var("SELECT subject FROM $this->t_posts WHERE id = $id"));
}
function get_group_description($id){
global $wpdb;
return $wpdb->get_var("SELECT description FROM $this->t_groups WHERE id = $id");
}
function get_forum_description($id){
global $wpdb;
return $wpdb->get_var("SELECT description FROM $this->t_forums WHERE id = $id");
}
function current_group(){
return $this->current_group;
}
function current_forum(){
return $this->current_forum;
}
function current_thread(){
return $this->current_thread;
}
function check_parms($parm){
$regexp = "/^([+-]?((([0-9]+(\.)?)|([0-9]*\.[0-9]+))([eE][+-]?[0-9]+)?))$/";
if (!preg_match($regexp, $parm)){
//@ob_end_clean();
wp_die("Bad request, please re-enter.");
}
$p = explode(".", $parm);
if(count($p) > 1)
$this->curr_page = $p[1];
else
$this->curr_page = 0;
return $p[0];
}
function before_go()
{
$this->setup_links();
if(isset($_GET['markallread']) && $_GET['markallread'] == "true")
$this->markallread();
if(isset($_GET['mingleforumaction']))
$action = $_GET['mingleforumaction'];
else
$action = false;
if (!isset($_GET['getNewForumID']) && !isset($_GET['delete_topic']) && !isset($_GET['remove_post']) && !isset($_GET['forumsubs']) && !isset($_GET['threadsubs']) && !isset($_GET['sticky']) && !isset($_GET['closed']))
{
if ($action != false)
{
if ($this->options['forum_use_seo_friendly_urls'])
{
switch($action)
{
case 'vforum':
$whereto = $this->get_grouplink($this->check_parms($_GET['g']));
break;
case 'viewforum':
$whereto = $this->get_forumlink($this->check_parms($_GET['f']));
break;
case 'viewtopic':
$whereto = $this->get_threadlink($this->check_parms($_GET['t']));
break;
}
if (!empty($whereto))
{
header("HTTP/1.1 301 Moved Permanently");
if($this->curr_page > 0)
header("Location: ".$whereto.".".$this->curr_page);
else
header("Location: ".$whereto);
}
}
}
}
}
function go() {
global $user_ID;
$start_time = microtime(true);
get_currentuserinfo();
if($user_ID){
if(get_user_meta($user_ID, 'wpf_useroptions', true) == ''){
update_user_meta($user_ID, 'wpf_useroptions', $this->user_options);
}
}
if(isset($_GET['mingleforumaction']))
$action = $_GET['mingleforumaction'];
else
$action = false;
if ($action == false)
{
if ($this->options['forum_use_seo_friendly_urls'])
{
$uri = $this->get_seo_friendly_query();
if (!empty($uri) && $uri['action'] && $uri['id'])
{
switch($uri['action'])
{
case 'group':
$action = 'vforum';
$_GET['g'] = $uri['id'];
break;
case 'forum':
$action = 'viewforum';
$_GET['f'] = $uri['id'];
break;
case 'thread':
$action = 'viewtopic';
$_GET['t'] = $uri['id'];
break;
}
}
}
}
ob_start();
if($action){
switch($action){
case 'viewforum':
$this->current_view = FORUM;
$this->showforum($this->check_parms($_GET['f']));
break;
case 'viewtopic':
$this->current_view = THREAD;
$this->showthread($this->check_parms($_GET['t']));
break;
case 'addtopic':
include(WPFPATH.'wpf-thread.php');
break;
case 'postreply':
if($this->is_closed($_GET['thread'])){
wp_die(__("Cheating, are we?", "mingleforum"));
}else{
$this->current_thread = $this->check_parms($_GET['thread']);
include(WPFPATH.'wpf-post.php');
}
break;
case 'shownew':
$this->show_new();
break;
case 'editpost':
include(WPFPATH.'wpf-post.php');
break;
case 'profile':
$this->view_profile();
break;
case 'search':
$this->search_results();
break;
case 'editprofile':
include(WPFPATH.'wpf-edit-profile.php');
break;
case 'vforum':
$this->vforum($this->check_parms($_GET['g']));
break;
}
}
else{
$this->current_view = MAIN;
$this->mydefault();
}
$end_time = microtime(true);
$load = __("Page loaded in:", "mingleforum")." ".round($end_time-$start_time, 3)." ".__("seconds.", "mingleforum")."";
$this->o .= apply_filters('mf_ad_above_branding', ''); //Adsense Area -- Above Branding
$this->o .= "<div id='wpf-info'><small>
".__("Mingle Forum ", "mingleforum")." by <a href='http://cartpauj.icomnow.com'>cartpauj</a><br />
".__("Version:", "mingleforum").$this->get_version().";
$load</small>
</div>";
$above_forum_ad = apply_filters('mf_ad_above_forum', ''); //Adsense Area -- Above Forum
$below_forum_ad = apply_filters('mf_ad_below_forum', ''); //Adsense Area -- Below Forum
echo $above_forum_ad."<div id='wpf-wrapper'>".$this->o."</div>".$below_forum_ad;
return ob_get_clean();
}
function get_version(){
$plugin_data = implode('', file(ABSPATH."wp-content/plugins/".WPFPLUGIN."/wpf-main.php"));
if (preg_match("|Version:(.*)|i", $plugin_data, $version))
$version = $version[1];
return $version;
}
function get_userdata($user_id, $data){
global $wpdb;
$user = get_userdata($user_id);
if(!$user)
return __("Guest", "mingleforum");
return $user->$data;
}
function get_lastpost($thread_id){
global $wpdb;
$post = $wpdb->get_row("select `date`, author_id, id from $this->t_posts where parent_id = $thread_id order by `date` DESC limit 1");
if (!empty($post)) {
$link = $this->get_paged_threadlink($thread_id);
return __("by", "mingleforum")." ".$this->profile_link($post->author_id)."<br />".__("on", "mingleforum")." <a href='".$link."'>".date($this->opt['forum_date_format'], strtotime($post->date))."</a>";
}
else
return false;
}
function get_lastpost_all(){
global $wpdb;
$post = $wpdb->get_row("select `date`, author_id, id from $this->t_posts order by `date` DESC limit 1");
return __("Latest Post by", "mingleforum")." ".$this->profile_link($post->author_id)."<br />".__("on", "mingleforum")." ".date($this->opt['forum_date_format'], strtotime($post->date));
}
function showforum($forum_id){
global $user_ID, $wpdb;
if(isset($_GET['delete_topic']))
$this->remove_topic();
if(isset($_GET['move_topic']))
$this->move_topic();
if(!empty($forum_id)){
$out = "";
$del = "";
$threads = $this->get_threads($forum_id);
$sticky_threads = $this->get_sticky_threads($forum_id);
$t = $sticky_threads + $threads;
$this->current_group = $this->get_parent_id(FORUM, $forum_id);
$this->current_forum = $forum_id;
$this->forum_subscribe();
if($this->is_forum_subscribed())
$this->notify_msg = __("Remove this Forum from your email notifications?", "mingleforum");
else
$this->notify_msg = __("This will notify you of all new Topics created in this Forum. Are you sure that is what you want to do?", "mingleforum");
$this->header();
if(isset($_GET['getNewForumID'])){
$out .= $this->getNewForumID();
}else{
if(!$this->have_access($this->current_group)){
//@ob_end_clean();
wp_die(__("Sorry, but you don't have access to this forum", "mingleforum"));
}
$out .= "<table cellpadding='0' cellspacing='0'>
<tr class='pop_menus'>
<td width='100%'>".$this->thread_pageing($forum_id)."</td>
<td>".$this->forum_menu($this->current_group)."</td>
</tr>
</table>";
$out .= "<div class='wpf'><table class='wpf-table' id='topicTable'>
<tr>
<th width='7%' class='forumIcon'>".__("Status", "mingleforum")."</th>
<th>".__("Topic Title", "mingleforum")."</th>
<th width='11%' nowrap='nowrap'>".__("Started by", "mingleforum")."</th>
<th width='4%'>".__("Replies", "mingleforum")."</th>
<th width='4%'>".__("Views", "mingleforum")."</th>
<th width='22%'>".__("Last post", "mingleforum")."</th>
</tr>";
/***************************************************************************************/
if($sticky_threads){
$out .= "<tr><th class='wpf-bright' colspan='6'>".__("Sticky Topics", "mingleforum")."</th></tr>";
foreach($sticky_threads as $thread){
if($this->is_moderator($user_ID, $this->current_forum)){
if($this->options['forum_use_seo_friendly_urls'])
$strCommands = "<a href='".$this->forum_link.$this->current_forum."&getNewForumID&topic=$thread->id'>".__("Move Topic", "mingleforum")."</a> | <a href='".$this->forum_link.$this->current_forum."&delete_topic&topic=$thread->id' onclick='return wpf_confirm();'>".__("Delete Topic", "mingleforum")."</a>";
else
$strCommands = "<a href='".$this->get_forumlink($this->current_forum)."&getNewForumID&topic=$thread->id'>".__("Move Topic", "mingleforum")."</a> | <a href='".$this->get_forumlink($this->current_forum)."&delete_topic&topic=$thread->id' onclick='return wpf_confirm();'>".__("Delete Topic", "mingleforum")."</a>";
$del = "<small><br />($strCommands)</small>";
}
$image = "";
if($user_ID){
$poster_id = $this->last_posterid_thread($thread->id); // date and author_id
if($user_ID != $poster_id){
$lp = strtotime($this->last_poster_in_thread($thread->id)); // date
$lv = strtotime($this->last_visit());
if($lp > $lv)
$image = "<img src='$this->skin_url/images/new.gif' alt='".__("New posts since last visit", "mingleforum")."'>";
}
}
$sticky_img = "<img alt='' src='$this->skin_url/images/topic/normal_post_sticky.gif'/>";
$out .= "<tr>
<td class='forumIcon' align='center'>$sticky_img</td>
<td class='wpf-alt sticky'><span class='topicTitle'><a href='"
.$this->get_threadlink($thread->id)."'>"
.$this->output_filter($thread->subject)."</a> $image</span> $del
</td>
<td>".$this->profile_link($thread->starter)."</td>
<td class='wpf-alt' align='center'>".( $this->num_posts($thread->id) - 1 )."</td>
<td class='wpf-alt' align='center'>".$thread->views."</td>
<td><small>".$this->get_lastpost($thread->id)."</small></td>
</tr>";
}
/********************************************************************************************************/
$out .= "<tr><th class='wpf-bright forumTopics' colspan='6'>".__("Forum Topics", "mingleforum")."</th></tr>";
}
$alt = "alt even";
foreach($threads as $thread){
$alt = ($alt=="alt even")?"odd":"alt even";
if($user_ID){
$image = "";
$poster_id = $this->last_posterid_thread($thread->id); // date and author_id
if($user_ID != $poster_id){
$lp = strtotime($this->last_poster_in_thread($thread->id)); // date
$lv = strtotime($this->last_visit());
if($lp > $lv)
$image = "<img src='$this->skin_url/images/new.gif' alt='".__("New posts since last visit", "mingleforum")."'>";
}
}
if($this->is_moderator($user_ID, $this->current_forum)){
if($this->options['forum_use_seo_friendly_urls'])
$strCommands = "<a href='".$this->forum_link.$this->current_forum."&getNewForumID&topic=$thread->id'>".__("Move Topic", "mingleforum")."</a> | <a href='".$this->forum_link.$this->current_forum."&delete_topic&topic=$thread->id' onclick='return wpf_confirm();'>".__("Delete Topic", "mingleforum")."</a>";
else
$strCommands = "<a href='".$this->get_forumlink($this->current_forum)."&getNewForumID&topic=$thread->id'>".__("Move Topic", "mingleforum")."</a> | <a href='".$this->get_forumlink($this->current_forum)."&delete_topic&topic=$thread->id' onclick='return wpf_confirm();'>".__("Delete Topic", "mingleforum")."</a>";
$del = "<small class='adminActions'><br />($strCommands)</small>";
}
$out .= "<tr class='$alt'>
<td class='forumIcon' align='center'>".$this->get_topic_image($thread->id)."</td>
<td class='wpf-alt'><span class='topicTitle'><a href='"
.$this->get_threadlink($thread->id)."'>"
.$this->output_filter($thread->subject)."</a> $image</span> $del
</td>
<td>".$this->profile_link($thread->starter)."</td>
<td class='wpf-alt' align='center'>".( $this->num_posts($thread->id) - 1 )."</td>
<td class='wpf-alt' align='center'>".$thread->views."</td>
<td><small>".$this->get_lastpost($thread->id)."</small></td>
</tr>";
}
$out .= "</table></div>";
$out .= "<table cellpadding='0' cellspacing='0'>
<tr class='pop_menus'>
<td width='100%'>".$this->thread_pageing($forum_id)."</td>
<td>".$this->forum_menu($this->current_group, "bottom")."</td>
</tr>
</table>";
}
$this->o .= $out;
$this->footer();
}
}
function get_subject($id){
global $wpdb;
return stripslashes($wpdb->get_var("SELECT subject FROM $this->t_threads WHERE id = $id"));
}
function showthread($thread_id){
global $wpdb, $user_ID;
$this->current_group = $this->forum_get_group_from_post($thread_id);
$this->current_forum = $this->get_parent_id(THREAD, $thread_id);
$this->current_thread = $thread_id;
if(isset($_GET['remove_post']))
$this->remove_post();
if(isset($_GET['sticky']))
$this->sticky_post();
$this->thread_subscribe();
if($posts = $this->get_posts($thread_id)){
if($this->is_thread_subscribed())
$this->notify_msg = __("Remove this Topic from your email notifications?", "mingleforum");
else
$this->notify_msg = __(" This will notify you of all responses to this Topic. Are you sure that is what you want to do?", "mingleforum");
if(!current_user_can('administrator') && !is_super_admin($user_ID) && !$this->is_moderator($user_ID, $this->current_forum))
$wpdb->query($wpdb->prepare("UPDATE $this->t_threads SET views = views+1 WHERE id = $thread_id"));
if($this->is_sticky($thread_id))
$image = "normal_post_sticky.gif";
else
$image = $this->get_topic_image_two($thread_id);
if(!$this->have_access($this->current_group)){
//@ob_end_clean();
wp_die(__("Sorry, but you don't have access to this forum", "mingleforum"));
}
$this->header();
$out = "<table cellpadding='0' cellspacing='0'>
<tr class='pop_menus'>
<td width='100%'>".$this->post_pageing($thread_id)."</td>
<td>".$this->topic_menu($thread_id)."
</td>
</tr>
</table>";
if ($this->is_closed())
$meClosed = " ".__("TOPIC CLOSED", "mingleforum")." ";
else
$meClosed = "";
$out .= "<div class='wpf'>
<table class='wpf-table' width='100%'>
<tr>
<th width='100'><img src='$this->skin_url/images/topic/$image' align='left'/> ".__("Author", "mingleforum")."</th>
<th>".__("Topic: ", "mingleforum").$this->get_subject($thread_id).$meClosed."</th>
</tr>
</table>";
$out .= "</div>";
$class = "";
$c = 0;
foreach($posts as $post){
$class = ($class == "wpf-alt")?"":"wpf-alt";
$user = get_user_meta($post->author_id, "wpf_useroptions", true);
$out .= "<table class='wpf-post-table' width='100%' id='postid-$post->id'>
<tr class='$class'>
<td valign='top' width='100'>".
$this->profile_link($post->author_id, true)
."<div class='wpf-small'>";
$out .= $this->get_userrole($post->author_id)."<br />";
$out .=__("Posts:", "mingleforum")." ".$this->get_userposts_num($post->author_id)."<br />";
if (($post->author_id != $user_ID) && ($post->author_id))
$out .= $this->get_send_message_link($post->author_id);
if($this->opt["forum_use_gravatar"])
$out .= $this->get_avatar($post->author_id);
$out .= "</div>".apply_filters('mf_below_post_avatar', '', $post->author_id, $post->id)."</td>
<td valign='top'>
<table width='100%' cellspacing='0' cellpadding='0' class='wpf-meta-table'>
<tr>
<td class='wpf-meta' valign='top'>".$this->get_postmeta($post->id, $post->author_id)."</td>
</tr>
<tr>
<td valign='top' colspan='2' class='topic_text'>";
if(!$c)
$out .= apply_filters('mf_thread_start', '', $this->current_thread, $this->get_threadlink($post->parent_id));
$out .= apply_filters('mf_before_reply', '', $post->id).make_clickable(convert_smilies(wpautop($this->autoembed($this->output_filter($post->text))))).apply_filters('mf_after_reply', '', $post->id)."</td>
</tr>";
if($user['signature'] && $this->options['forum_show_bio']){
$out .= "<tr><td class='user_desc'><small>".$this->output_filter(make_clickable(convert_smilies(wpautop($user['signature'], true))))."</small></td></tr>";
}
$out .= "</table>
</td>
</tr>";
if(!$c)
$out .= apply_filters('mf_ad_below_first_post', ''); //Adsense Area -- Below First Post
$out .= "</table>";
$c += 1;
}
$quick_thread = $this->check_parms($_GET['t']);
//QUICK REPLY AREA
if(!$this->is_closed() && ($user_ID || !$this->options['forum_require_registration'])) {
$out .= "<table class='wpf-post-table' width='100%' id='wpf-quick-reply'>
<form action='".WPFURL."wpf-insert.php' name='addform' method='post'>
<tr>
<td>";
$out .= apply_filters('mf_ad_above_quick_reply', ''); //Adsense Area -- Above Quick Reply Form
$out .= "<strong>".__("Quick Reply", "mingleforum").": </strong><br/>".
$this->form_buttons()."<br/>
<input type='hidden' name='add_post_subject' value='".__('Re:', 'mingleforum')." ".$this->get_subject(floor($quick_thread))."'/>
<textarea rows='6' style='width:99% !important;' name='message' class='wpf-textarea' ></textarea>
</td>
</tr>";
$out .= $this->get_quick_reply_captcha();
$out .= "<tr>
<td>
<input type='submit' id='quick-reply-submit' name='add_post_submit' value='".__("Submit Quick Reply", "mingleforum")."' />
<input type='hidden' name='add_post_forumid' value='".floor($quick_thread)."'/>
<input type='hidden' name='add_topic_plink' value='".get_permalink($this->page_id)."'/>
</td>
</tr>
</form>
</table>";
}
$out .= "<table cellpadding='0' cellspacing='0'>
<tr class='pop_menus'>
<td width='100%'>".$this->post_pageing($thread_id)."</td>
<td style='height:30px;'>"./*.$this->topic_menu($thread_id, "bottom")*/''."
</td>
</tr>
</table>";
$this->o .= $out;
$this->footer();
}
}
function get_postmeta($post_id, $author_id){
global $user_ID;
$image = "<img align='left' src='$this->skin_url/images/post/xx.gif' alt='".__("Post", "mingleforum")."' style='padding-right:10px;'/>";
$o = "<table width='100% cellspacing='0' cellpadding='0' style='margin:0; padding:0; border-collapse:collapse:' border='0'>
<tr>
<td colspan='3'>$image <strong>".$this->get_postname($post_id)."</strong><br /><small><strong>".__("on:", "mingleforum")." </strong>".$this->get_postdate($post_id)."</small></td></tr><tr>";
if($this->options['forum_use_seo_friendly_urls'])
{
if(is_user_logged_in() && !$this->is_closed())
$o .= "<td nowrap='nowrap' width='10%'><img src='$this->skin_url/images/buttons/quote.gif' alt='' align='left'><a href='$this->post_reply_link"e=$post_id.$this->curr_page'> ".__("Quote", "mingleforum")."</a></td>";
if($this->is_moderator($user_ID, $this->current_forum))
$o .= "<td nowrap='nowrap' width='10%'><img src='$this->skin_url/images/buttons/delete.gif' alt='' align='left'><a onclick=\"return wpf_confirm();\" href='".$this->thread_link.$this->current_thread."&remove_post&id=$post_id'> ".__("Remove", "mingleforum")."</a></td>";
if(($this->is_moderator($user_ID, $this->current_forum)) || ($user_ID == $author_id && $user_ID))
$o .= "<td nowrap='nowrap' width='10%'><img src='$this->skin_url/images/buttons/modify.gif' alt='' align='left'><a href='".$this->base_url."editpost&id=$post_id&t=$this->current_thread.0'>" .__("Edit", "mingleforum")."</a></td>";
}
else
{
if(is_user_logged_in() && !$this->is_closed())
$o .= "<td nowrap='nowrap' width='10%'><img src='$this->skin_url/images/buttons/quote.gif' alt='' align='left'><a href='$this->post_reply_link"e=$post_id.$this->curr_page'> ".__("Quote", "mingleforum")."</a></td>";
if($this->is_moderator($user_ID, $this->current_forum))
$o .= "<td nowrap='nowrap' width='10%'><img src='$this->skin_url/images/buttons/delete.gif' alt='' align='left'><a onclick=\"return wpf_confirm();\" href='".$this->get_threadlink($this->current_thread)."&remove_post&id=$post_id'> ".__("Remove", "mingleforum")."</a></td>";
if(($this->is_moderator($user_ID, $this->current_forum)) || ($user_ID == $author_id && $user_ID))
$o .= "<td nowrap='nowrap' width='10%'><img src='$this->skin_url/images/buttons/modify.gif' alt='' align='left'><a href='".$this->base_url."editpost&id=$post_id&t=$this->current_thread.0'>" .__("Edit", "mingleforum")."</a></td>";
}
$o .= "</tr>
</table>";
return $o;
}
function get_postdate($post){
global $wpdb;
return $this->format_date($wpdb->get_var("select `date` from $this->t_posts where id = $post"));
}
function format_date($date){
if($date)
return date($this->opt['forum_date_format'], strtotime($date));
else
return false;
}
function wpf_current_time_fixed( $type, $gmt = 0 ) {
$t = ( $gmt ) ? gmdate( 'Y-m-d H:i:s' ) : gmdate( 'Y-m-d H:i:s', ( time() + ( get_option( 'gmt_offset' ) * 3600 ) ) );
switch ( $type ) {
case 'mysql':
return $t;
break;
case 'timestamp':
return strtotime($t);
break;
}
}
function get_userposts_num($id){
global $wpdb;
return $wpdb->get_var("select count(*) from $this->t_posts where author_id = $id");
}
function get_post_owner($id) {
global $wpdb;
return $wpdb->get_var($wpdb->prepare("SELECT `author_id` FROM {$this->t_posts} WHERE `id` = %d", $id));
}
function mydefault(){
global $user_ID, $wp_rewrite;
$alt = "";
if($wp_rewrite->using_permalinks())
$delim = "?";
else
$delim = "&";
$grs = $this->get_groups();
$this->header();
foreach($grs as $g){
if($this->have_access($g->id)){
$this->o .= "<div class='wpf'><table width='100%' class='wpf-table forumsList'>";
$this->o .= "<tr><th colspan='4'><a href='".$this->get_grouplink($g->id)."'>".$this->output_filter($g->name)."</a></th></tr>";
$frs = $this->get_forums($g->id);
foreach($frs as $f){
$alt = ($alt=="alt even")?"odd":"alt even";
$this->o .= "<tr class='$alt'>";
$image = "off.gif";
if($user_ID){
$lpif = $this->last_poster_in_forum($f->id, true);
$last_posterid = $this->last_posterid($f->id);
if($last_posterid != $user_ID){
$lp = strtotime($lpif); // date
$lv = strtotime($this->last_visit());
if($lv < $lp)
$image = "on.gif";
else
$image = "off.gif";
}
}
$this->o .= "
<td class='wpf-alt forumIcon' width='6%' align='center'><img alt='' src='$this->skin_url/images/$image' /></td>
<td valign='top'><strong><a href='".$this->get_forumlink($f->id)."'>"
.$this->output_filter($f->name)."</a></strong><br />"
.$this->output_filter($f->description);
if($f->description != "")$this->o .= "<br />";
$this->o .= $this->get_forum_moderators($f->id)
."</td>";
$this->o .= "<td nowrap='nowrap' width='11%' align='left' class='wpf-alt'><small>".__("Topics: ", "mingleforum")."".$this->num_threads($f->id)."<br />".__("Posts: ", "mingleforum").$this->num_posts_forum($f->id)."</small></td>";
$this->o .= "<td width='28%' ><small>".$this->last_poster_in_forum($f->id)."</small></td>";
$this->o .= "</tr>";
}
$this->o .= "</table>
</div><br class='clear'/>";
}
}
$this->o .= apply_filters('wpwf_new_posts',"<table>
<tr>
<td><small><img alt='' align='top' src='$this->skin_url/images/new_some.gif' /> ".__("New posts", "mingleforum")." <img alt='' align='top' src='$this->skin_url/images/new_none.gif' /> ".__("No new posts", "mingleforum")." - <a href='".get_permalink($this->get_pageid()).$delim."markallread=true'>".__("Mark All Read", "mingleforum")."</a></small></td>
</tr>
</table><br class='clear'/>");
$this->footer();
}
function vforum($groupid){
global $user_ID;
$alt = "";
$grs = $this->get_groups($groupid);
$this->current_group = $groupid;
$this->header();
foreach($grs as $g){
if($this->have_access($g->id)){
$this->o .= "<div class='wpf'><table width='100%' class='wpf-table'>";
$this->o .= "<tr><th colspan='4'><a href='".$this->get_grouplink($g->id)."'>".$this->output_filter($g->name)."</a></th></tr>";
$frs = $this->get_forums($g->id);
foreach($frs as $f){
$alt = ($alt=="alt even")?"odd":"alt even";
$this->o .= "<tr class='$alt'>";
$image = "off.gif";
if($user_ID){
$lpif = $this->last_poster_in_forum($f->id, true);
$last_posterid = $this->last_posterid($f->id);
if($last_posterid != $user_ID){
$lp = strtotime($lpif); // date
$lv = strtotime($this->last_visit());
if($lv < $lp)
$image = "on.gif";
else
$image = "off.gif";
}
}
$this->o .= "
<td class='wpf-alt forumIcon' width='6%' align='center'><img alt='' src='$this->skin_url/images/$image' /></td>
<td valign='top'><strong><a href='".$this->get_forumlink($f->id)."'>"
.$this->output_filter($f->name)."</a></strong><br />"
.$this->output_filter($f->description);
if($f->description != "")$this->o .= "<br />";
$this->o .= $this->get_forum_moderators($f->id)
."</td>";
$this->o .= "<td nowrap='nowrap' width='11%' align='left' class='wpf-alt'><small>".__("Topics: ", "mingleforum")."".$this->num_threads($f->id)."<br />".__("Posts: ", "mingleforum").$this->num_posts_forum($f->id)."</small></td>";
$this->o .= "<td width='28%' ><small>".$this->last_poster_in_forum($f->id)."</small></td>";
$this->o .= "</tr>";
}
$this->o .= "</table>
</div><br class='clear'/>";
}
}
$this->o .= apply_filters('wpwf_new_posts',"<table>
<tr>
<td><small><img alt='' align='top' src='$this->skin_url/images/new_some.gif' /> ".__("New posts", "mingleforum")." <img alt='' align='top' src='$this->skin_url/images/new_none.gif' /> ".__("No new posts", "mingleforum")."</small></td>
</tr>
</table><br class='clear'/>");
$this->footer();
}
function output_filter($string){
$parser = new cartpaujBBCodeParser();
return stripslashes($parser->bbc2html($string));
}
function input_filter($string){
global $wpdb;
$Find = array("<", "%", "$");
$Replace = array("<", "%", "$");
$newStr = str_replace($Find, $Replace, $string);
return $newStr;
}
function sig_input_filter($string){
global $wpdb;
$Find = array("<", "%", "$");
$Replace = array("<", "%", "$");
$newStr = str_replace($Find, $Replace, $string);
return $newStr;
}
function last_posterid($forum){
global $wpdb;
return $wpdb->get_var("SELECT $this->t_posts.author_id FROM $this->t_posts INNER JOIN $this->t_threads ON $this->t_posts.parent_id=$this->t_threads.id WHERE $this->t_threads.parent_id = $forum ORDER BY $this->t_posts.date DESC");
}
function last_posterid_thread($thread_id){
global $wpdb;
return $wpdb->get_var("SELECT $this->t_posts.author_id FROM $this->t_posts INNER JOIN $this->t_threads ON $this->t_posts.parent_id=$this->t_threads.id WHERE $this->t_posts.parent_id = $thread_id ORDER BY $this->t_posts.date DESC");
}
function num_threads($forum){
global $wpdb;
return $wpdb->get_var("select count(id) from $this->t_threads where parent_id = $forum ");
}
function num_posts_forum($forum){
global $wpdb;
return $wpdb->get_var("SELECT count($this->t_posts.id) FROM $this->t_posts INNER JOIN $this->t_threads ON $this->t_posts.parent_id=$this->t_threads.id WHERE $this->t_threads.parent_id = $forum ORDER BY $this->t_posts.date DESC");
}
function num_posts_total(){
global $wpdb;
return $wpdb->get_var("select count(id) from $this->t_posts");
}
function num_posts($thread_id){
global $wpdb;
return $wpdb->get_var("select count(id) from $this->t_posts where parent_id = $thread_id ");
}
function num_threads_total(){
global $wpdb;
return $wpdb->get_var("select count(id) from $this->t_threads");
}
function last_poster_in_forum($forum, $post_date = false){
global $wpdb, $table_posts, $profile, $table_threads;
$date = $wpdb->get_row("SELECT $this->t_posts.date, $this->t_posts.id, $this->t_posts.parent_id, $this->t_posts.author_id FROM $this->t_posts INNER JOIN $this->t_threads ON $this->t_posts.parent_id=$this->t_threads.id WHERE $this->t_threads.parent_id = $forum ORDER BY $this->t_posts.date DESC");
if($post_date && is_object($date))
return $date->date;
if(!$date)
return __("No topics yet", "mingleforum");
$d = date($this->opt['forum_date_format'], strtotime($date->date));
return "<strong>".__("Last post", "mingleforum")."</strong> ".__("by", "mingleforum")." ".$this->profile_link($date->author_id)
."<br />".__("in", "mingleforum")." <a href='".$this->get_paged_threadlink($date->parent_id)."#postid-$date->id'>".$this->get_postname($date->id)."</a><br />".__("on", "mingleforum")." $d";
}
function last_poster_in_thread($thread_id) {
global $wpdb;
return $wpdb->get_var("select `date` from $this->t_posts where parent_id = $thread_id order by `date` DESC");
}
function have_access($groupid) {
global $wpdb, $user_ID;
if(current_user_can("administrator") || is_super_admin($user_ID))
return true;
$user_groups = $wpdb->get_var("select usergroups from {$this->t_groups} where id = {$groupid}");
$user_groups = maybe_unserialize($user_groups);
if(!$user_groups)
return true;
foreach($user_groups as $user_group) {
if($this->is_user_ingroup($user_ID, $user_group))
return true;
}
return false;
}
function get_usergroups(){
global $wpdb;
return $wpdb->get_results("SELECT * FROM $this->t_usergroups");
}
function get_members($usergroup){
global $wpdb, $table_prefix;
return $wpdb->get_results("SELECT user_id FROM $this->t_usergroup2user WHERE `group` = $usergroup");
}
function is_user_ingroup($user_id = "0", $user_group_id){
global $wpdb;
if(!$user_id)
return false;
$id = $wpdb->get_var("select user_id from $this->t_usergroup2user where user_id = $user_id and `group` = $user_group_id");
if($id != "")
return true;
return false;
}
// TODO
function setup_header(){
$this->setup_links();
global $user_ID;
if($this->options['forum_use_rss']) { ?>
<link rel='alternate' type='application/rss+xml' title="<?php echo __("Forums RSS", "mingleforum"); ?>" href="<?php echo $this->global_feed_url;?>" /> <?php }
if(is_page($this->get_pageid()))
{
if($this->ads_options['mf_ad_custom_css'] != "") {
?>
<style type="text/css"><?php echo stripslashes($this->ads_options['mf_ad_custom_css']); ?></style>
<?php } //ENDIF FOR CUSTOM ADS CSS ?>
<link rel='stylesheet' type='text/css' href="<?php echo "$this->skin_url/style.css";?>" />
<script language="JavaScript" type="text/javascript" src="<?php echo WPFURL."js/script.js"?>"></script>
<script language="JavaScript" type="text/javascript">
function wpf_confirm(){
var answer = confirm ('<?php echo __("Are you sure you want to remove this?", "mingleforum");?>');
if (!answer)
return false;
else
return true;
}
</script>
<?php
}
}
// Some SEO friendly stuff
function get_pagetitle($bef_title){
global $wpdb;
$default_title = " » ";
$action = "";
$title = "";
if(isset($_GET['mingleforumaction']) && !empty($_GET['mingleforumaction']))
$action = $_GET['mingleforumaction'];
elseif($this->options['forum_use_seo_friendly_urls'])
{
$uri = $this->get_seo_friendly_query();
if (!empty($uri) && $uri['action'] && $uri['id'])
{
switch($uri['action'])
{
case 'group':
$action = 'vforum';
$_GET['g'] = $uri['id'];
break;
case 'forum':
$action = 'viewforum';
$_GET['f'] = $uri['id'];
break;
case 'thread':
$action = 'viewtopic';
$_GET['t'] = $uri['id'];
break;
}
}
}
switch($action){
case "vforum":
$title = $default_title.$this->get_groupname($this->check_parms($_GET['g']));
break;
case "viewforum":
$title = $default_title.$this->get_groupname($this->get_parent_id(FORUM, $this->check_parms($_GET['f'])))." » ".$this->get_forumname($this->check_parms($_GET['f']));
break;
case "viewtopic":
$group = $this->get_groupname($this->get_parent_id(FORUM, $this->get_parent_id(THREAD, $this->check_parms($_GET['t']))));
$title = $default_title.$group." » ".$this->get_forumname($this->get_parent_id(THREAD, $this->check_parms($_GET['t'])))." » ".$this->get_threadname($this->check_parms($_GET['t']));
break;
case "search":
$terms = $wpdb->escape($_POST['search_words']);
$title = $default_title.__("Search Results", "mingleforum"). " » $terms | ";
break;
case "profile":
$title = $default_title.__("Profile", "mingleforum")."";
break;
case "editpost":
$title = $default_title.__("Edit Post", "mingleforum")."";
break;
case "postreply":
$title = $default_title.__("Post Reply", "mingleforum")."";
break;
case "addtopic":
$title = $default_title.__("New Topic", "mingleforum")."";
break;
}
return $bef_title.$title;
}
function set_pagetitle($title){
return $this->get_pagetitle($title);
}
function array_search( $needle, $haystack, $strict = FALSE ){
if( !is_array($haystack) )return false;
foreach($haystack as $key => $val){
if( ( ( $strict ) && ( $needle === $val ) ) || ( ( !$strict ) && ( $needle == $val ) ) )return $val;
}
return false;
}
function get_usergroup_name($usergroup_id){
global $wpdb, $table_prefix;
return $wpdb->get_var("SELECT name FROM $this->t_usergroups WHERE id = $usergroup_id");
}
function get_usergroup_description($usergroup_id){
global $wpdb, $table_prefix;
return $wpdb->get_var("SELECT description FROM $this->t_usergroups WHERE id = $usergroup_id");
}
function is_moderator($user_id, $forum_id = ''){
$user = get_userdata($user_id);
if($user->user_level >= 9)
return true;
$forums = get_user_meta($user_id, 'wpf_moderator', true);
if(!$forum_id)
return $forums;
if($forums == "mod_global")
return true;
return $this->array_search( $forum_id, $forums );
}
function get_users(){
global $wpdb, $table_prefix;
return $wpdb->get_results("SELECT user_login, ID FROM {$wpdb->users} ORDER BY user_login ASC");
}
function get_moderators(){
global $wpdb, $table_prefix;
return $wpdb->get_results("
select $wpdb->usermeta.user_id, $wpdb->users.user_login
from
$wpdb->usermeta
inner join
$wpdb->users on $wpdb->usermeta.user_id = $wpdb->users.ID
where
$wpdb->usermeta.meta_key = 'wpf_moderator' ORDER BY $wpdb->users.user_login ASC");
}
function get_forum_moderators($forum_id){
global $wpdb;
$out = "";
$mods = $wpdb->get_results("SELECT user_id, meta_value FROM $wpdb->usermeta WHERE meta_key = 'wpf_moderator'");
foreach($mods as $mod){
if($this->is_moderator($mod->user_id, $forum_id)){
$out .= $this->profile_link($mod->user_id).", ";
}
}
$out = substr($out, 0, strlen($out)-2);
return "<small><i>".__("Moderators:", "mingleforum")." $out</i></small>";
}
function wp_forum_install()
{
global $table_prefix, $wpdb;
$table_threads = $table_prefix."forum_threads";
$table_posts = $table_prefix."forum_posts";
$table_forums = $table_prefix."forum_forums";
$table_groups = $table_prefix."forum_groups";
$table_usergroup2user = $table_prefix."forum_usergroup2user";
$table_usergroups = $table_prefix."forum_usergroups";
$oldops = get_option('mingleforum_options');
if($oldops['forum_db_version'] < $this->db_version) //Don't run all the friggin queries if db is already at latest version
{
$charset_collate = '';
if( $wpdb->has_cap('collation'))
{
if(!empty($wpdb->charset))
$charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
if(!empty($wpdb->collate))
$charset_collate .= " COLLATE $wpdb->collate";
}
$sql1 = "
CREATE TABLE ". $table_forums." (
id int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',
parent_id int(11) NOT NULL default '0',
`description` varchar(255) NOT NULL default '',
views int(11) NOT NULL default '0',
`sort` int( 11 ) NOT NULL default '0',
PRIMARY KEY (id)
){$charset_collate};";
$sql2 = "
CREATE TABLE ". $table_groups." (
id int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',
`description` varchar(255) default '',
`usergroups` varchar(255) default '',
`sort` int( 11 ) NOT NULL default '0',
PRIMARY KEY (id)
){$charset_collate};";
$sql3 = "
CREATE TABLE ". $table_posts." (
id int(11) NOT NULL auto_increment,
`text` longtext,
parent_id int(11) NOT NULL default '0',
`date` datetime NOT NULL default '0000-00-00 00:00:00',
author_id int(11) NOT NULL default '0',
`subject` varchar(255) NOT NULL default '',
views int(11) NOT NULL default '0',
PRIMARY KEY (id)
){$charset_collate};";
$sql4 = "
CREATE TABLE ". $table_threads." (
id int(11) NOT NULL auto_increment,
parent_id int(11) NOT NULL default '0',
views int(11) NOT NULL default '0',
`subject` varchar(255) NOT NULL default '',
`date` datetime NOT NULL default '0000-00-00 00:00:00',
`status` varchar(20) NOT NULL default 'open',
closed int(11) NOT NULL default '0',
mngl_id int(11) NOT NULL default '-1',
starter int(11) NOT NULL,
`last_post` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (id)
){$charset_collate};";
$sql5 = "
CREATE TABLE ". $table_usergroup2user." (
`id` int(11) NOT NULL auto_increment,
`user_id` int(11) NOT NULL,
`group` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
){$charset_collate};";
$sql6 =
"CREATE TABLE ". $table_usergroups." (
`id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`description` varchar(255) default NULL,
`leaders` varchar(255) default NULL,
PRIMARY KEY (`id`)
){$charset_collate};";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql1);
dbDelta($sql2);
dbDelta($sql3);
dbDelta($sql4);
dbDelta($sql5);
dbDelta($sql6);
$xyquery1="ALTER TABLE ".$table_groups." ADD sort int( 11 ) NOT NULL;";
$xyquery2="ALTER TABLE ".$table_forums." ADD sort int( 11 ) NOT NULL;";
$xyquery3="ALTER TABLE ".$table_threads." ADD last_post datetime NOT NULL;";
$xyquery4="ALTER TABLE ".$table_groups." ADD description varchar(255);";
$xyquery5="ALTER TABLE ".$table_groups." ADD usergroups varchar(255);";
$xyquery6="ALTER TABLE ".$table_threads." CHANGE forum_id parent_id int(11);";
$xyquery7="ALTER TABLE ".$table_posts." CHANGE thread_id parent_id int(11);";
$xyquery8="ALTER TABLE `".$table_posts."` ADD FULLTEXT ( `text` );";
$xyquery9="ALTER TABLE ".$table_threads." ADD closed int(11) NOT NULL default '0';";
$xyquery10="ALTER TABLE ".$table_threads." ADD mngl_id int(11) NOT NULL default '-1';";
// 1.7.3
maybe_add_column($table_groups, sort, $xyquery1);
maybe_add_column($table_forums, sort, $xyquery2);
// 1.7.5
maybe_add_column($table_threads, last_post, $xyquery3);
// 2.0
maybe_add_column($table_groups, description, $xyquery4);
maybe_add_column($table_groups, usergroups, $xyquery5);
maybe_add_column($table_groups, parent_id, $xyquery6);
maybe_add_column($table_posts, parent_id, $xyquery7);
$wpdb->query($xyquery8);
// Mingle Forum 1.0
maybe_add_column($table_threads, closed, $xyquery9);
maybe_add_column($table_threads, mngl_id, $xyquery10);
//Setup the Skin Folder outside of the plugin
$target_path = ABSPATH.'wp-content/mingle-forum-skins';
if(!file_exists($target_path))
@mkdir($target_path."/");
$oldops['forum_db_version'] = 1;
update_option('mingleforum_options', $oldops);
}
$this->convert_moderators();
}
function forum_menu($group, $pos = "top"){
global $user_ID;
$menu = "";
if($user_ID || $this->allow_unreg()){
if($pos == "top")
$class = "mirrortab";
else
$class= "maintab";
$menu = "<table cellpadding='0' cellspacing='0' style='margin-right:10px;' id='forummenu'>";
$menu .= "<tr>
<td class='".$class."_first'> </td>
<td valign='top' class='".$class."_back' nowrap='nowrap'><a href='".$this->get_addtopic_link()."'>".__("New Topic", "mingleforum")."</a></td>";
if($user_ID)
{
if($this->is_forum_subscribed()) //Check if user has already subscribed to topic
$menu .= "<td class='".$class."_back' nowrap='nowrap'><a onclick='return notify();' href='".$this->forum_link.$this->current_forum."&forumsubs'>".__("Unsubscribe", "mingleforum")."</a></td>";
else
$menu .= "<td class='".$class."_back' nowrap='nowrap'><a onclick='return notify();' href='".$this->forum_link.$this->current_forum."&forumsubs'>".__("Subscribe", "mingleforum")."</a></td>";
}
$menu .= "<td valign='top' class='".$class."_last'> </td>
</tr>
</table>";
}
return $menu;
}
function topic_menu($thread, $pos = "top"){
global $user_ID;
$menu = "";
$stick = "";
$closed = "";
if($user_ID || $this->allow_unreg()){
if($pos == "top"){
$class = "mirrortab";
}else{
$class = "maintab";
}
if($this->is_moderator($user_ID, $this->current_forum)){
if($this->options['forum_use_seo_friendly_urls'])
{
if($this->is_sticky()){
$stick = "<td class='".$class."_back' nowrap='nowrap'><a href='".$this->thread_link.$this->current_thread.".".$this->curr_page."&sticky&id=$this->current_thread'>".__("Undo Sticky", "mingleforum")."</a></td>";
}else{
$stick = "<td class='".$class."_back' nowrap='nowrap'><a href='".$this->thread_link.$this->current_thread.".".$this->curr_page."&sticky&id=$this->current_thread'>".__("Sticky", "mingleforum")."</a></td>";
}
if($this->is_closed()){
$closed = "<td class='".$class."_back' nowrap='nowrap'><a href='".$this->thread_link.$this->current_thread.".".$this->curr_page."&closed=0&id=$this->current_thread'>".__("Re-open", "mingleforum")."</a></td>";
}else{
$closed = "<td class='".$class."_back' nowrap='nowrap'><a href='".$this->thread_link.$this->current_thread.".".$this->curr_page."&closed=1&id=$this->current_thread'>".__("Close", "mingleforum")."</a></td>";
}
}
else
{
if($this->is_sticky()){
$stick = "<td class='".$class."_back' nowrap='nowrap'><a href='".$this->get_threadlink($this->current_thread)."&sticky&id=$this->current_thread'>".__("Undo Sticky", "mingleforum")."</a></td>";
}else{
$stick = "<td class='".$class."_back' nowrap='nowrap'><a href='".$this->get_threadlink($this->current_thread)."&sticky&id=$this->current_thread'>".__("Sticky", "mingleforum")."</a></td>";
}
if($this->is_closed()){
$closed = "<td class='".$class."_back' nowrap='nowrap'><a href='".$this->get_threadlink($this->current_thread)."&closed=0&id=$this->current_thread'>".__("Re-open", "mingleforum")."</a></td>";
}else{
$closed = "<td class='".$class."_back' nowrap='nowrap'><a href='".$this->get_threadlink($this->current_thread)."&closed=1&id=$this->current_thread'>".__("Close", "mingleforum")."</a></td>";
}
}
}
$menu .= "<table cellpadding='0' cellspacing='0' style='margin-right:10px;' id='topicmenu'>";
$menu .= "<tr><td class='".$class."_first'> </td>";
if(!$this->is_closed())
$menu .= "<td valign='top' class='".$class."_back' nowrap='nowrap'><a href='".$this->get_post_reply_link()."'>".__("Reply", "mingleforum")."</a></td>";
if($user_ID)
{
if($this->is_thread_subscribed()) //Check if user has already subscribed to topic
$menu .= "<td class='".$class."_back' nowrap='nowrap'><a onclick='return notify();' href='".$this->thread_link.$this->current_thread.".".$this->curr_page."&threadsubs'>".__("Unsubscribe", "mingleforum")."</a></td>";
else
$menu .= "<td class='".$class."_back' nowrap='nowrap'><a onclick='return notify();' href='".$this->thread_link.$this->current_thread.".".$this->curr_page."&threadsubs'>".__("Subscribe", "mingleforum")."</a></td>";
}
if($this->options['forum_use_rss'])
$menu .= "<td class='".$class."_back' nowrap='nowrap'><a href='$this->topic_feed_url"."$this->current_thread'>".__("RSS feed", "mingleforum")."</a></td>";
$menu .= $stick.$closed."
<td valign='top' class='".$class."_last'> </td>
</tr></table>";
}
return $menu;
}
function setup_menu(){
global $user_ID;
$this->setup_links();
if(isset($_GET['closed']))
$this->closed_post();
//START MINGLE MY PROFILE LINK
if(!function_exists('is_plugin_active'))
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
if(is_plugin_active('mingle/mingle.php'))
{
$MnglUser = get_userdata($user_ID);
global $mngl_options;
$myProfURL2 = '';
if(isset($mngl_options->profile_page_id) and $mngl_options->profile_page_id != 0)
{
if( MnglUtils::rewriting_on() and $mngl_options->pretty_profile_urls )
{
global $mngl_blogurl;
$struct = MnglUtils::get_permalink_pre_slug_uri();
$myProfURL2 = "{$mngl_blogurl}{$struct}{$MnglUser->user_login}";
}
else
{
$permalink = get_permalink($mngl_options->profile_page_id);
$param_char = ((preg_match("#\?#",$permalink))?'&':'?');
$myProfURL2 = "{$permalink}{$param_char}u={$MnglUser->user_login}";
}
}
$link = "<a id='user_button' href='" . $myProfURL2 . "' title='".__("My profile", "mingleforum")."'>".__("My Profile", "mingleforum")."</a>";
}
else
{
$link = "<a id='user_button' href='".$this->base_url."profile&id=$user_ID' title='".__("My profile", "mingleforum")."'>".__("My Profile", "mingleforum")."</a>";
}
//END MINGLE MY PROFILE LINK
if($this->options['forum_use_seo_friendly_urls'])
{
$menuitems = array(
"home" => "<a id='home_button' href='".$this->home_url."'>".__("Forum Home", "mingleforum")."</a>",
"logout" => "<a href='$this->logout_link'>".__("Log out", "mingleforum")."</a>",
"profile" => $link,
"reply" => "<a id='reply_button' href='".$this->get_post_reply_link()."'>".__("Reply", "mingleforum")."</a>",
"new_topic" => "<a href='".$this->get_addtopic_link()."'>".__("New Topic", "mingleforum")."</a>",
"feed" => "<a id='rss_button' href='$this->topic_feed_url"."$this->current_thread'>".__("RSS-Feed", "mingleforum")."</a>",
"sticky" => "<a href='".$this->thread_link.$this->current_thread.".".$this->curr_page."&sticky&id=$this->current_thread'>".__("Sticky", "mingleforum")."</a>",
"unsticky" => "<a href='".$this->thread_link.$this->current_thread.".".$this->curr_page."&sticky&id=$this->current_thread'>".__("Undo Sticky", "mingleforum")."</a>",
"closed" => "<a id='close_button' href='".$this->thread_link.$this->current_thread.".".$this->curr_page."&closed=1&id=$this->current_thread'>".__("Close", "mingleforum")."</a>",
"unclosed" => "<a href='".$this->thread_link.$this->current_thread.".".$this->curr_page."&closed=0&id=$this->current_thread'>".__("Re-open", "mingleforum")."</a>",
"move" => "<a href='".$this->forum_link.$this->current_forum.".".$this->curr_page."&getNewForumID&topic=$this->current_thread'>".__("Move Topic", "mingleforum")."</a>"
);
}
else
{
$menuitems = array(
"home" => "<a id='home_button' href='".$this->home_url."'>".__("Forum Home", "mingleforum")."</a>",
"logout" => "<a href='$this->logout_link'>".__("Log out", "mingleforum")."</a>",
"profile" => $link,
"reply" => "<a id='reply_button' href='".$this->get_post_reply_link()."'>".__("Reply", "mingleforum")."</a>",
"new_topic" => "<a href='".$this->get_addtopic_link()."'>".__("New Topic", "mingleforum")."</a>",
"feed" => "<a id='rss_button' href='$this->topic_feed_url"."$this->current_thread'>".__("RSS-Feed", "mingleforum")."</a>",
"sticky" => "<a href='".$this->get_threadlink($this->current_thread)."&sticky&id=$this->current_thread'>".__("Sticky", "mingleforum")."</a>",
"unsticky" => "<a href='".$this->get_threadlink($this->current_thread)."&sticky&id=$this->current_thread'>".__("Undo Sticky", "mingleforum")."</a>",
"closed" => "<a id='close_button' href='".$this->get_threadlink($this->current_thread)."&closed=1&id=$this->current_thread'>".__("Close", "mingleforum")."</a>",
"unclosed" => "<a href='".$this->get_threadlink($this->current_thread)."&closed=0&id=$this->current_thread'>".__("Re-open", "mingleforum")."</a>",
"move" => "<a href='".$this->get_forumlink($this->current_forum)."&getNewForumID&topic=$this->current_thread'>".__("Move Topic", "mingleforum")."</a>");
}
$menu = "";
if($user_ID || $this->allow_unreg()){
$menu .= "<table cellpadding='0' cellspacing='5' id='wp-mainmenu'><tr>";
$menu .= "<td valign='top' class='menu_sub'>{$menuitems['home']}</td>";
if($user_ID)
$menu .= "<td valign='top' class='menu_sub'>{$menuitems['profile']}</td>";
switch($this->current_view){
case FORUM:
$menu .= " <td valign='top' class='menu_sub'>{$menuitems['new_topic']}</td>";
break;
case THREAD:
if(!$this->is_closed()){
$menu .= "<td valign='top' class='menu_sub'>{$menuitems['reply']}</td>";
}
if($this->options['forum_use_rss'])
$menu .= "<td valign='top' class='menu_sub'>{$menuitems['feed']}</td>";
if($this->is_moderator($user_ID, $this->current_forum)){
$menu .= "<td valign='top' class='menu_sub'>{$menuitems['move']}</td>";
if($this->is_sticky()){
$menu .= "<td valign='top' class='menu_sub'>{$menuitems['unsticky']}</td>";
}else{
$menu .= "<td valign='top' class='menu_sub'>{$menuitems['sticky']}</td>";
}
if($this->is_closed()){
$menu .= "<td valign='top' class='menu_sub'>{$menuitems['unclosed']}</td>";
}else{
$menu .= "<td valign='top' class='menu_sub'>{$menuitems['closed']}</td>";
}
}
}
$menu .= "</tr></table>";
}
return $menu;
}
function convert_moderators(){
global $wpdb, $table_prefix;
if(!get_option('wpf_mod_option_vers')){
$mods = $wpdb->get_results("SELECT user_id, user_login, meta_value FROM $wpdb->usermeta
INNER JOIN $wpdb->users ON $wpdb->usermeta.user_id=$wpdb->users.ID WHERE meta_key = 'moderator' AND meta_value <> ''");
foreach($mods as $mod){
$string = explode(",", substr_replace($mod->meta_value, "", 0, 1));
update_user_meta($mod->user_id, 'wpf_moderator', maybe_serialize($string));
}
update_option('wpf_mod_option_vers', '2');
}
}
function login_form(){
global $user_ID;
if($user_ID)
$user = get_userdata($user_ID);
$login_msg = "";
if ($user_ID)
$login_msg = "<p>".__("You are logged in as:", "mingleforum")." ".$user->user_login."</p>";
else
$login_msg = "";
if(!is_user_logged_in() && $this->options['forum_show_login_form']){
return "<form action='".site_url()."/wp-login.php' method='post'>
<label style='font-size:100%;' for='log'>".__("Username: ", "mingleforum")."</label><br /><input type='text' name='log' id='log' value='' size='20' class='wpf-input'/><br />
<label style='font-size:100%;' for='pwd'>".__("Password: ", "mingleforum")."</label><br /><input type='password' name='pwd' id='pwd' size='20' class='wpf-input'/>
<input type='submit' name='submit' value='Login' id='wpf-login-button' class='button' /><br />
<label style='font-size:100%;' for='rememberme'><input name='rememberme' id='rememberme' type='checkbox' checked='checked' value='forever' /> ".__("Remember Me", "mingleforum")."</label>
<input type='hidden' name='redirect_to' value='".$_SERVER['REQUEST_URI']."'/>
</form>";
}
else
return $login_msg;
}
function pre($array){
echo "<pre>";
print_r($array);
echo "</pre>";
}
function print_curr(){
$this->o .= "<p>Group: $this->current_group<br>
Forum: $this->current_forum<br>
Thread: $this->current_thread</p>";
}
function get_parent_id($type, $id){
global $wpdb;
switch($type){
case FORUM:
return $wpdb->get_var("select parent_id from $this->t_forums where id = $id");
break;
case THREAD:
return $wpdb->get_var("select parent_id from $this->t_threads where id = $id");
break;
}
}
// TODO
function get_userrole($user_id){
$user = get_userdata($user_id);
if($user->user_level >= 9)
return __("Administrator", "mingleforum");
if(!$user_id)
return ""; //User is a guest
if($this->is_moderator($user_id, $this->current_forum))
return __("Moderator", "mingleforum");
else
{
$mePosts = $this->get_userposts_num($user_id);
if ($mePosts < $this->opt['level_one'])
return __($this->opt['level_newb_name'], "mingleforum");
if ($mePosts < $this->opt['level_two'])
return __($this->opt['level_one_name'], "mingleforum");
if ($mePosts < $this->opt['level_three'])
return __($this->opt['level_two_name'], "mingleforum");
else
return __($this->opt['level_three_name'], "mingleforum");
}
}
/**************************************************/
function forum_get_group_id($group){
global $wpdb, $table_groups;
return $wpdb->get_var("SELECT id FROM $this->t_groups WHERE id = $group");
}
function forum_get_parent($forum){
global $wpdb, $table_forums;
return $wpdb->get_var("SELECT parent_id FROM $this->t_forums WHERE id = $forum");
}
function forum_get_forum_from_post($thread){
global $wpdb, $table_threads;
return $wpdb->get_var("SELECT parent_id FROM $this->t_threads WHERE id = $thread");
}
function forum_get_group_from_post($thread_id){
return $this->forum_get_group_id($this->forum_get_parent($this->forum_get_forum_from_post($thread_id)));
}
/****************************************************/
function trail(){
global $wpdb;
$this->setup_links();
$trail = "<a href='".get_permalink($this->page_id)."'>".__("Forum", "mingleforum")."</a>";
if($this->current_group)
if($this->options['forum_use_seo_friendly_urls'])
{
$group = $this->get_seo_friendly_title($this->get_groupname($this->current_group))."-group".$this->current_group;
$trail .= " <strong>»</strong> <a href='".rtrim($this->home_url, '/').'/'.$group.".0'>".$this->get_groupname($this->current_group)."</a>";
}
else
$trail .= " <strong>»</strong> <a href='$this->base_url"."vforum&g=$this->current_group.0'>".$this->get_groupname($this->current_group)."</a>";
if($this->current_forum)
if ($this->options['forum_use_seo_friendly_urls'])
{
$group = $this->get_seo_friendly_title($this->get_groupname($this->get_parent_id(FORUM, $this->current_forum))."-group".$this->get_parent_id(FORUM, $this->current_forum));
$forum = $this->get_seo_friendly_title($this->get_forumname($this->current_forum)."-forum".$this->current_forum);
$trail .= " <strong>»</strong> <a href='".rtrim($this->home_url, '/').'/'.$group.'/'.$forum.".0'>".$this->get_forumname($this->current_forum)."</a>";
}
else
$trail .= " <strong>»</strong> <a href='$this->base_url"."viewforum&f=$this->current_forum.0'>".$this->get_forumname($this->current_forum)."</a>";
if($this->current_thread)
if ($this->options['forum_use_seo_friendly_urls'])
{
$group = $this->get_seo_friendly_title($this->get_groupname($this->get_parent_id(FORUM, $this->get_parent_id(THREAD, $this->current_thread)))."-group".$this->get_parent_id(FORUM, $this->get_parent_id(THREAD, $this->current_thread)));
$forum = $this->get_seo_friendly_title($this->get_forumname($this->get_parent_id(THREAD, $this->current_thread))."-forum".$this->get_parent_id(THREAD, $this->current_thread));
$thread = $this->get_seo_friendly_title($this->get_threadname($this->current_thread)."-thread".$this->current_thread);
$trail .= " <strong>»</strong> <a href='".rtrim($this->home_url, '/').'/'.$group.'/'.$forum.'/'.$thread.".0'>".$this->get_threadname($this->current_thread)."</a>";
}
else
$trail .= " <strong>»</strong> <a href='$this->base_url"."viewtopic&t=$this->current_thread.0'>".$this->get_threadname($this->current_thread)."</a>";
if($this->current_view == NEWTOPICS)
$trail .= " <strong>»</strong> ".__("New Topics since last visit", "mingleforum");
if($this->current_view == SEARCH){
$terms = "";
if(isset($_POST['search_words']))
$terms = $wpdb->escape($_POST['search_words']);
$trail .= " <strong>»</strong> ".__("Search Results", "mingleforum")." » $terms";
}
if($this->current_view == PROFILE)
$trail .= " <strong>»</strong> ".__("Profile Info", "mingleforum");
if($this->current_view == POSTREPLY)
$trail .= " <strong>»</strong> ".__("Post Reply", "mingleforum");
if($this->current_view == EDITPOST)
$trail .= " <strong>»</strong> ".__("Edit Post", "mingleforum");
if($this->current_view == NEWTOPIC)
$trail .= " <strong>»</strong> ".__("New Topic", "mingleforum");
return apply_filters('mf_ad_above_breadcrumbs', '')."<p id='trail' class='breadcrumbs'>$trail</p>"; //Adsense Area -- Above Breadcrumbs
}
function last_visit(){
global $user_ID;
if($user_ID)
return $_COOKIE['wpmfcookie'];
else
return "0000-00-00 00:00:00";
}
function set_cookie()
{
global $user_ID;
if($user_ID && !isset($_COOKIE['wpmfcookie']))
{
$last = get_user_meta($user_ID, 'lastvisit', true);
setcookie("wpmfcookie", $last, 0, "/");
update_user_meta($user_ID, 'lastvisit', $this->wpf_current_time_fixed('mysql', 0));
}
}
function markallread()
{
global $user_ID;
if($user_ID)
{
update_user_meta($user_ID, 'lastvisit', $this->wpf_current_time_fixed('mysql', 0));
$last = get_user_meta($user_ID, 'lastvisit', true);
setcookie("wpmfcookie", $last, 0, "/");
}
}
function get_avatar($user_id, $size = 60){
if($this->opt['forum_use_gravatar'] == 'true')
return get_avatar($user_id, $size);
else
return "";
}
function header(){
global $user_ID, $wpdb, $mingleforum;
$avatar = "";
$this->setup_links();
if(!function_exists('is_plugin_active'))
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
if(is_plugin_active('mingle/mingle.php'))
{
$ProfLinky = "";
}
else
{
$ProfLinky = "<a href='".site_url("wp-admin/profile.php") . "'>".__("Edit Profile", "mingleforum")."<br />";
}
if($user_ID){
$welcome = __("Welcome", "mingleforum")." ".$this->get_userdata($user_ID, $this->options['forum_display_name']);
$meta = "<div style='float:left'>".__("Your last visit was:", "mingleforum")." ".$this->format_date($this->last_visit())."<br />";
$meta .= $this->get_inbox_link();
$meta .= "<a href='".$this->base_url."shownew'>".__("Show new topics since your last visit", "mingleforum")."</a><br />";
$meta .= "<a href='".$this->base_url."editprofile&user_id=$user_ID'>".__("Edit your forum options", "mingleforum")."</a><br />";
$meta .= $ProfLinky;
$meta .= "<a href='".wp_nonce_url( site_url("wp-login.php?action=logout&redirect_to=".get_permalink($this->get_pageid()), 'login'), 'log-out' )."'>".__("Log out", "mingleforum")."</a></div>";
$avatar = "<td class='wpf-alt' width='6%'>".$this->get_avatar($user_ID, 60)."</td>";
$colspan = "colspan = '2'";
}
else{
$meta = apply_filters('wpwf_guest_welcome_msg', "<p>".__("Welcome Guest, please login or", "mingleforum")." "."<a href='$this->reg_link'>".__("register.", "mingleforum")."</a></p>".$this->login_form()); //--weaver--
$welcome = __("Welcome", "mingleforum"). " <strong>".$this->get_userdata($user_ID, $this->options['forum_display_name'])."</strong>";
$colspan = "";
}
if(!$user_ID && !$this->allow_unreg()){
$meta = "<p>".__("Welcome Guest, posting in this forum requires", "mingleforum")." <a href='$this->reg_link'>".__("registration.", "mingleforum")."</a></p>".$this->login_form();
$colspan = "";
}
$o = "<div class='wpf'>
<table width='100%' class='wpf-table' id='profileHeader'>
<tr>
<th $colspan ><h4 style='float:left;'>$welcome </h4>
<a id='upshrink' style='float:right;' href='#' onclick='shrinkHeader(!current_header); return false;'>".__("Show/Hide Header", "mingleforum")."</a>
</th>
</tr>
<tr id='upshrinkHeader'>
$avatar
<td valign='top'>$meta</td>
</tr>
<tr id='upshrinkHeader2'>
<th class='wpf-bright' $colspan align='right'>
<div>
<form name='wpf_search_form' method='post' action='$this->base_url"."search'>
<input type='text' name='search_words' class='wpf-input' />
<input type='submit' id='wpf-search-submit' name='search_submit' value='".__("Search forums", "mingleforum")."' />
</form>
</div>
</th>
</tr>
</table>
</div>";
$o .= $this->setup_menu();
$o .= $this->trail();
$this->o .= $o;
}
/* function get_pagelinks($thread_id){
global $wpdb;
$pages = $wpdb->get_results("SELECT * FROM $this->t_posts WHERE parent_id = $thread_id");
if(count($pages) > $this->opt['forum_posts_per_page']){
$num_pages = ceil(count($pages)/$this->opt['forum_posts_per_page']);
for($i = 0; $i < $num_pages; ++$i){
if($this->options['forum_use_seo_friendly_urls'])
$out .= " <a href='".$this->get_threadlink($thread_id).".".$i."'>".($i+1)."</a>";
else
$out .= " <a href='".$this->thread_link.$thread_id.".".$i."'>".($i+1)."</a>";
}
return " « $out »";
}
else
return "";
}
DISABLED THIS IN 1.0.25*/
function post_pageing($thread_id){
global $wpdb;
$out = __("Pages:", "mingleforum");
$count = $wpdb->get_var("SELECT count(*) FROM $this->t_posts WHERE parent_id = $thread_id");
$num_pages = ceil($count/$this->opt['forum_posts_per_page']);
if($num_pages <= 6) {
for($i = 0; $i < $num_pages; ++$i){
if($i == $this->curr_page)
$out .= " [<strong>".($i+1)."</strong>]";
else
$out .= " <a href='".$this->get_threadlink($this->current_thread, ".".$i)."'>".($i+1)."</a>";
}
}
else {
if($this->curr_page >= 4)
$out .= " <a href='".$this->get_threadlink($this->current_thread)."'>".__("First", "mingleforum")."</a> << ";
for($i = 3; $i > 0; $i--) {
if((($this->curr_page + 1) - $i) > 0)
$out .= " <a href='".$this->get_threadlink($this->current_thread, ".".($this->curr_page - $i))."'>".(($this->curr_page + 1) - $i)."</a>";
}
$out .= " [<strong>".($this->curr_page + 1)."</strong>]";
for($i = 1; $i <= 3; $i++) {
if((($this->curr_page + 1) + $i) <= $num_pages)
$out .= " <a href='".$this->get_threadlink($this->current_thread, ".".($this->curr_page + $i))."'>".(($this->curr_page + 1) + $i)."</a>";
}
if($num_pages - $this->curr_page >= 5)
$out .= " >> <a href='".$this->get_threadlink($this->current_thread, ".".($num_pages-1))."'>".__("Last", "mingleforum")."</a>";
}
return "<span class='wpf-pages'>".$out."</span>";
}
function thread_pageing($forum_id){
global $wpdb;
$out = __("Pages:", "mingleforum");
$count = $wpdb->get_var("SELECT count(*) FROM $this->t_threads WHERE parent_id = $forum_id AND `status` <> 'sticky'");
$num_pages = ceil($count/$this->opt['forum_threads_per_page']);
if($num_pages <= 6) {
for($i = 0; $i < $num_pages; ++$i){
if($i == $this->curr_page)
$out .= " [<strong>".($i+1)."</strong>]";
else
$out .= " <a href='".$this->get_forumlink($this->current_forum, '.'.$i)."'>".($i+1)."</a>";
}
}
else {
if($this->curr_page >= 4)
$out .= " <a href='".$this->get_forumlink($this->current_forum, ".0")."'>".__("First", "mingleforum")."</a> << ";
for($i = 3; $i > 0; $i--) {
if((($this->curr_page + 1) - $i) > 0)
$out .= " <a href='".$this->get_forumlink($this->current_forum, ".".($this->curr_page - $i))."'>".(($this->curr_page + 1) - $i)."</a>";
}
$out .= " [<strong>".($this->curr_page + 1)."</strong>]";
for($i = 1; $i <= 3; $i++) {
if((($this->curr_page + 1) + $i) <= $num_pages)
$out .= " <a href='".$this->get_forumlink($this->current_forum, ".".($this->curr_page + $i))."'>".(($this->curr_page + 1) + $i)."</a>";
}
if($num_pages - $this->curr_page >= 5)
$out .= " >> <a href='".$this->get_forumlink($this->current_forum, ".".($num_pages-1))."'>".__("Last", "mingleforum")."</a>";
}
return "<span class='wpf-pages'>".$out."</span>";
}
function remove_topic(){
global $user_ID, $wpdb;
$topic = $_GET['topic'];
if($this->is_moderator($user_ID, $this->current_forum)){
//DELETE MINGLE ENTRY AS WELL
if(!function_exists('is_plugin_active'))
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
if(is_plugin_active('mingle/mingle.php') and is_user_logged_in())
{
$board_post =& MnglBoardPost::get_stored_object();
$myDelID = $wpdb->get_var("SELECT mngl_id from $this->t_threads where id = $topic");
if ($myDelID > 0)
$board_post->delete( $myDelID );
}
//END DELETE MINGLE ENTRY
$wpdb->query($wpdb->prepare("DELETE FROM $this->t_posts WHERE parent_id = $topic"));
$wpdb->query($wpdb->prepare("DELETE FROM $this->t_threads WHERE id = $topic"));
}else{
//@ob_end_clean();
wp_die(__("Cheating, are we?", "mingleforum"));
}
}
function getNewForumID(){
global $user_ID, $wpdb;
$topic = !empty($_GET['topic']) ? (int)$_GET['topic'] : 0;
$topic = !empty($_GET['t']) ? (int)$_GET['t'] : $topic;
if($this->is_moderator($user_ID, $this->current_forum)){
$currentForumID = $this->check_parms($_GET['f']);
$strOUT = '
<form id="" method="post" action="'.$this->base_url.'viewforum&f='.$currentForumID.'&move_topic&topic='.$topic.'">
Move "<strong>'.$this->get_subject($topic).'</strong>" to new forum: <select id="newForumID" name="newForumID" onchange="location=\''.$this->base_url.'viewforum&f='.$currentForumID.'&move_topic&topic='.$topic.'&newForumID=\'+this.options[this.selectedIndex].value">';
$frs = $this->get_forums();
foreach($frs as $f){
$strOUT .= '
<option value="'.$f->id.'"'.($f->id==$currentForumID ? ' selected="selected"' : '').'>'.$f->name.'</option>';
}
$strOUT .= '
</select>
<noscript><input type="submit" value="Go!" /></noscript>
</form>';
return $strOUT;
}else{
//@ob_end_clean();
wp_die(__("Cheating, are we?", "mingleforum"));
}
}
function move_topic(){
global $user_ID, $wpdb;
$topic = $_GET['topic'];
$currentForumID = $this->check_parms($_GET['f']);
$newForumID = !empty($_GET['newForumID']) ? (int)$_GET['newForumID'] : 0;
$newForumID = !empty($_POST['newForumID']) ? (int)$_POST['newForumID'] : $newForumID;
if($this->is_moderator($user_ID, $this->current_forum)){
$strSQL = "UPDATE $this->t_threads SET parent_id = $newForumID WHERE id = $topic";
$wpdb->query($wpdb->prepare($strSQL));
//@ob_end_clean();
@header("location: ".$this->base_url."viewforum&f=".$newForumID);
@exit;
}else{
//@ob_end_clean();
wp_die(__("Cheating, are we?", "mingleforum"));
}
}
function remove_post(){
global $user_ID, $wpdb;
$id = $_GET['id'];
$author = $wpdb->get_var($wpdb->prepare("SELECT author_id from $this->t_posts where id = $id"));
$del = "fail";
if(current_user_can("administrator") || is_super_admin($user_ID))
$del = "ok";
if($this->is_moderator($user_ID, $this->current_forum))
$del = "ok";
if($user_ID == $author)
$del = "ok";
if($del == "ok"){
$wpdb->query($wpdb->prepare("DELETE FROM $this->t_posts WHERE id = $id"));
$this->o .= "<div class='updated'>".__("Post deleted", "mingleforum")."</div>";
}else{
//@ob_end_clean();
wp_die(__("Cheating, are we?", "mingleforum"));
}
}
function sticky_post(){
global $user_ID, $wpdb;
if(current_user_can("administrator") || is_super_admin($user_ID)){
if(!$this->is_moderator($user_ID, $this->current_forum)){
//@ob_end_clean();
wp_die(__("Cheating, are we?", "mingleforum"));
}
}
$id = $_GET['id'];
$status = $wpdb->get_var($wpdb->prepare("select status from $this->t_threads where id = $id"));
switch($status){
case 'sticky':
$wpdb->query($wpdb->prepare("update $this->t_threads set status = 'open' where id = $id"));
break;
case 'open':
$wpdb->query($wpdb->prepare("update $this->t_threads set status = 'sticky' where id = $id"));
break;
}
}
function forum_subscribe()
{
global $user_ID;
if(isset($_GET['forumsubs']) && $user_ID)
{
$useremail = $this->get_userdata($user_ID, 'user_email');
if(!empty($useremail))
{
$list = get_option("mf_forum_subscribers_".$this->current_forum, array());
if($this->is_forum_subscribed()) //remove user if already exists (user clicked unsubscribe)
{
$key = array_search($useremail, $list);
unset($list[$key]);
}
else
$list[] = $useremail;
update_option("mf_forum_subscribers_".$this->current_forum, $list);
}
}
}
function is_forum_subscribed()
{
global $user_ID;
if($user_ID)
{
$useremail = $this->get_userdata($user_ID, 'user_email');
$list = get_option("mf_forum_subscribers_".$this->current_forum, array());
if(in_array($useremail, $list))
return true;
}
return false;
}
function get_subscribed_forums()
{
global $user_ID, $wpdb;
$results = array();
$email = $this->get_userdata($user_ID, 'user_email');
$forums = $wpdb->get_results("SELECT id FROM {$this->t_forums}");
if(!empty($forums))
foreach($forums as $f)
{
$list = get_option("mf_forum_subscribers_".$f->id, array());
if(in_array($email, $list))
$results[] = $f->id;
}
return $results;
}
function thread_subscribe()
{
global $user_ID;
if(isset($_GET['threadsubs']) && $user_ID)
{
$useremail = $this->get_userdata($user_ID, 'user_email');
if(!empty($useremail))
{
$list = get_option("mf_thread_subscribers_".$this->current_thread, array());
if($this->is_thread_subscribed()) //remove user if already exists (user clicked unsubscribe)
{
$key = array_search($useremail, $list);
unset($list[$key]);
}
else
$list[] = $useremail;
update_option("mf_thread_subscribers_".$this->current_thread, $list);
}
}
}
function is_thread_subscribed()
{
global $user_ID;
if($user_ID)
{
$useremail = $this->get_userdata($user_ID, 'user_email');
$list = get_option("mf_thread_subscribers_".$this->current_thread, array());
if(in_array($useremail, $list))
return true;
}
return false;
}
function get_subscribed_threads()
{
global $user_ID, $wpdb;
$results = array();
$email = $this->get_userdata($user_ID, 'user_email');
$threads = $wpdb->get_results("SELECT id FROM {$this->t_threads}");
if(!empty($threads))
foreach($threads as $t)
{
$list = get_option("mf_thread_subscribers_".$t->id, array());
if(in_array($email, $list))
$results[] = $t->id;
}
return $results;
}
function is_sticky($thread_id = ''){
global $wpdb;
if($thread_id){
$id = $thread_id;
}else{
$id = $this->current_thread;
}
$status = $wpdb->get_var("select status from $this->t_threads where id = $id");
if($status == "sticky")
return true;
else
return false;
}
function closed_post(){
global $user_ID, $wpdb;
if(current_user_can("administrator") || is_super_admin($user_ID)){
if(!$this->is_moderator($user_ID, $this->current_forum)){
//@ob_end_clean();
wp_die(__("Cheating, are we?", "mingleforum"));
}
}
$strSQL = "update $this->t_threads set closed = '".$_GET['closed']."' where id = ".$_GET['id'];
$wpdb->query($wpdb->prepare($strSQL));
}
function is_closed($thread_id = ''){
global $wpdb;
if($thread_id){
$id = $thread_id;
}else{
$id = $this->current_thread;
}
$strSQL = "select closed from $this->t_threads where id = $id";
$closed = $wpdb->get_var($strSQL);
if($closed){
return true;
}else{
return false;
}
}
function allow_unreg(){
if($this->opt['forum_require_registration'] == false)
return true;
return false;
}
function profile_link($user_id, $toWrap = false){
if($toWrap)
$user = wordwrap($this->get_userdata($user_id, $this->options['forum_display_name']), 10, "-<br/>", 1);
else
$user = $this->get_userdata($user_id, $this->options['forum_display_name']);
//START MINGLE PROFILE LINKS
if(!function_exists('is_plugin_active'))
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
if(is_plugin_active('mingle/mingle.php'))
{
$MnglUser = get_userdata($user_id);
global $mngl_options;
$myProfURL3 = '';
if(isset($mngl_options->profile_page_id) and $mngl_options->profile_page_id != 0)
{
if( MnglUtils::rewriting_on() and $mngl_options->pretty_profile_urls )
{
global $mngl_blogurl;
$struct = MnglUtils::get_permalink_pre_slug_uri();
$myProfURL3 = "{$mngl_blogurl}{$struct}{$MnglUser->user_login}";
}
else
{
$permalink = get_permalink($mngl_options->profile_page_id);
$param_char = ((preg_match("#\?#",$permalink))?'&':'?');
$myProfURL3 = "{$permalink}{$param_char}u={$MnglUser->user_login}";
}
}
$link = "<a href='" . $myProfURL3 . "' title='".__("View profile", "mingleforum")."'>$user</a>";
}
else
{
$link = "<a href='".$this->base_url."profile&id=$user_id' title='".__("View profile", "mingleforum")."'>$user</a>";
}
//END MINGLE PROFILE LINKS
if($user == __("Guest", "mingleforum"))
return $user;
$user_op = get_user_meta($user_id, "wpf_useroptions", true);
if($user_op)
if($user_op['allow_profile'] == false)
return $user;
return $link;
}
function form_buttons(){
$button = '
<a title="'.__("Bold", "mingleforum").'" href="javascript:void(0);" onclick=\'surroundText("[b]", "[/b]", document.forms.addform.message); return false;\'><img src="'.$this->skin_url.'/images/bbc/b.png" /></a><a title="'.__("Italic", "mingleforum").'" href="javascript:void(0);" onclick=\'surroundText("[i]", "[/i]", document.forms.addform.message); return false;\'><img src="'.$this->skin_url.'/images/bbc/i.png" /></a><a title="'.__("Underline", "mingleforum").'" href="javascript:void(0);" onclick=\'surroundText("[u]", "[/u]", document.forms.addform.message); return false;\'><img src="'.$this->skin_url.'/images/bbc/u.png" /></a><a title="'.__("Strikethrough", "mingleforum").'" href="javascript:void(0);" onclick=\'surroundText("[s]", "[/s]", document.forms.addform.message); return false;\'><img src="'.$this->skin_url.'/images/bbc/s.png" /></a><a title="'.__("Code", "mingleforum").'" href="javascript:void(0);" onclick=\'surroundText("[code]", "[/code]", document.forms.addform.message); return false;\'><img src="'.$this->skin_url.'/images/bbc/code.png" /></a><a title="'.__("Quote", "mingleforum").'" href="javascript:void(0);" onclick=\'surroundText("[quote]", "[/quote]", document.forms.addform.message); return false;\'><img src="'.$this->skin_url.'/images/bbc/quote.png" /></a><a title="'.__("List", "mingleforum").'" href="javascript:void(0);" onclick=\'surroundText("[list]", "[/list]", document.forms.addform.message); return false;\'><img src="'.$this->skin_url.'/images/bbc/list.png" /></a><a title="'.__("List item", "mingleforum").'" href="javascript:void(0);" onclick=\'surroundText("[*]", "", document.forms.addform.message); return false;\'><img src="'.$this->skin_url.'/images/bbc/li.png" /></a><a title="'.__("Link", "mingleforum").'" href="javascript:void(0);" onclick=\'surroundText("[url]", "[/url]", document.forms.addform.message); return false;\'><img src="'.$this->skin_url.'/images/bbc/url.png" /></a><a title="'.__("Image", "mingleforum").'" href="javascript:void(0);" onclick=\'surroundText("[img]", "[/img]", document.forms.addform.message); return false;\'><img src="'.$this->skin_url.'/images/bbc/img.png" /></a><a title="'.__("Email", "mingleforum").'" href="javascript:void(0);" onclick=\'surroundText("[email]", "[/email]", document.forms.addform.message); return false;\'><img src="'.$this->skin_url.'/images/bbc/email.png" /></a><a title="'.__("Add Hex Color", "mingleforum").'" href="javascript:void(0);" onclick=\'surroundText("[color=#]", "[/color]", document.forms.addform.message); return false;\'><img src="'.$this->skin_url.'/images/bbc/color.png" /></a><a title="'.__("Embed YouTube Video", "mingleforum").'" href="javascript:void(0);" onclick=\'surroundText("[embed]", "[/embed]", document.forms.addform.message); return false;\'><img src="'.$this->skin_url.'/images/bbc/yt.png" /></a><a title="'.__("Embed Google Map", "mingleforum").'" href="javascript:void(0);" onclick=\'surroundText("[map]", "[/map]", document.forms.addform.message); return false;\'><img src="'.$this->skin_url.'/images/bbc/gm.png" /></a>';
return $button;
}
function form_smilies(){
$button = '
<a title="'.__("Smile", "mingleforum").'" href="javascript:void(0);" onclick=\'surroundText(" :) ", "", document.forms.addform.message); return false;\'><img src="'.$this->skin_url.'/images/smilies/smile.gif" /></a><a title="'.__("Big Grin", "mingleforum").'" href="javascript:void(0);" onclick=\'surroundText(" :D ", "", document.forms.addform.message); return false;\'><img src="'.$this->skin_url.'/images/smilies/biggrin.gif" /></a><a title="'.__("Sad", "mingleforum").'" href="javascript:void(0);" onclick=\'surroundText(" :( ", "", document.forms.addform.message); return false;\'><img src="'.$this->skin_url.'/images/smilies/sad.gif" /></a><a title="'.__("Neutral", "mingleforum").'" href="javascript:void(0);" onclick=\'surroundText(" :| ", "", document.forms.addform.message); return false;\'><img src="'.$this->skin_url.'/images/smilies/neutral.gif" /></a><a title="'.__("Razz", "mingleforum").'" href="javascript:void(0);" onclick=\'surroundText(" :P ", "", document.forms.addform.message); return false;\'><img src="'.$this->skin_url.'/images/smilies/razz.gif" /></a><a title="'.__("Mad", "mingleforum").'" href="javascript:void(0);" onclick=\'surroundText(" :x ", "", document.forms.addform.message); return false;\'><img src="'.$this->skin_url.'/images/smilies/mad.gif" /></a><a title="'.__("Confused", "mingleforum").'" href="javascript:void(0);" onclick=\'surroundText(" :? ", "", document.forms.addform.message); return false;\'><img src="'.$this->skin_url.'/images/smilies/confused.gif" /></a><a title="'.__("Eek!", "mingleforum").'" href="javascript:void(0);" onclick=\'surroundText(" :o ", "", document.forms.addform.message); return false;\'><img src="'.$this->skin_url.'/images/smilies/eek.gif" /></a><a title="'.__("Wink", "mingleforum").'" href="javascript:void(0);" onclick=\'surroundText(" ;) ", "", document.forms.addform.message); return false;\'><img src="'.$this->skin_url.'/images/smilies/wink.gif" /></a><a title="'.__("Surprised", "mingleforum").'" href="javascript:void(0);" onclick=\'surroundText(" 8O ", "", document.forms.addform.message); return false;\'><img src="'.$this->skin_url.'/images/smilies/surprised.gif" /></a><a title="'.__("Cool", "mingleforum").'" href="javascript:void(0);" onclick=\'surroundText(" 8-) ", "", document.forms.addform.message); return false;\'><img src="'.$this->skin_url.'/images/smilies/cool.gif" /></a>';
return $button;
}
function footer(){
$o = "";
switch($this->current_view){
case MAIN:
$o = apply_filters('mf_ad_above_info_center', ''); //Adsense Area -- Above Info Center
$o .= "<div class='wpf'>";
$o .= "<table class='wpf-table' width='100%' cellspacing='0' cellpadding='0'>";
$o .= "<tr>
<th align='center' colspan='2'>".__("Info Center", "mingleforum")."</th>
</tr>
<tr>
</tr>
<tr>
<td width='3%' class='forumIcon' align='center'><img alt='' src='$this->skin_url/images/icons/info.gif' /></td>
<td>
".$this->num_posts_total()." ".__("Posts in", "mingleforum")." ".$this->num_threads_total()." ".__("Topics Made by", "mingleforum")." ".count($this->get_users())." ".__("Members", "mingleforum").". ".__("Latest Member:", "mingleforum")." ".$this->profile_link($this->latest_member())."
<br />".$this->get_lastpost_all()."
</td>
</tr>
</table>";
$o .= "</div>";
break;
case FORUM: break;
case THREAD: break;
}
$this->o .= $o;
}
function latest_member(){
global $wpdb;
return $wpdb->get_var("select ID from $wpdb->users order by user_registered DESC limit 1");
}
function show_new(){
$this->current_view = NEWTOPICS;
global $wpdb;
$this->header();
$lastvisit = $this->last_visit();
$threads = $wpdb->get_results("select distinct($this->t_threads.id) from $this->t_posts inner join $this->t_threads on $this->t_posts.parent_id = $this->t_threads.id where $this->t_posts.date > '$lastvisit' order by $this->t_posts.date desc");
$o = "<div class='wpf'><table class='wpf-table' cellpadding='0' cellspacing='0'>
<tr>
<th colspan='5' class='wpf-bright'>".__("New topics since your last visit", "mingleforum")."</th>
</tr>
<tr>
<th width='7%'>".__("Status", "mingleforum")."</th>
<th>".__("Topic Title", "mingleforum")."</th>
<th width='11%' nowrap='nowrap'>".__("Started by", "mingleforum")."</th>
<th width='4%'>".__("Replies", "mingleforum")."</th>
<th width='22%'>".__("Last post", "mingleforum")."</th>
</tr>";
foreach($threads as $thread){
if($this->have_access($this->forum_get_group_from_post($thread->id)))
{
$starter_id = $wpdb->get_var("SELECT starter FROM $this->t_threads WHERE id = $thread->id");
$o .= "<tr>
<td align='center' class='forumIcon'>".$this->get_topic_image($thread->id)."</td>
<td class='wpf-alt' align='top'><a href='"
.$this->get_paged_threadlink($thread->id)."'>"
.$this->output_filter($this->get_threadname($thread->id))."</a>
</td>
<td>".$this->profile_link($starter_id)."</td>
<td class='wpf-alt' align='center'>".( $this->num_posts($thread->id) - 1 )."</td>
<td><small>".$this->get_lastpost($thread->id)."</small></td>
</tr>";
}
}
$o .= "</table></div>";
$this->o .= $o;
$this->footer();
}
function num_post_user($user){
global $wpdb;
return $wpdb->get_var("SELECT count(author_id) FROM $this->t_posts WHERE author_id = $user");
}
function view_profile(){
global $wpdb, $user_ID;
$this->current_view = PROFILE;
if(is_numeric($_GET['id'])) //Security fix to prevent SQL injections
$user_id = $_GET['id'];
else
$user_id = 0;
$user = get_userdata($user_id);
$this->header();
$o = "<div class='wpf'>
<table class='wpf-table' cellpadding='0' cellspacing='0' width='100%'>
<tr>
<th class='wpf-bright'>".__("Summary", "mingleforum")." - ".$this->get_userdata($user_id, $this->options['forum_display_name'])."</th>
</tr>
<tr>
<td>
<table class='wpf-table' cellpadding='0' cellspacing='0' width='100%'>
<tr>
<td width='20%'><strong>".__("Name:", "mingleforum")."</strong></td>
<td>$user->first_name $user->last_name</td>
<td rowspan='9' valign='top' width='1%'>".$this->get_avatar($user_id, 60)."</td>
</tr>
<tr>
<td><strong>".__("Registered:", "mingleforum")."</strong></td>
<td>".$this->format_date($user->user_registered)."</td>
</tr>
<tr>
<td><strong>".__("Posts:", "mingleforum")."</strong></td>
<td>".$this->num_post_user($user_id)."</td>
</tr>
<tr>
<td><strong>".__("Position:", "mingleforum")."</strong></td>
<td>".$this->get_userrole($user_id)."</td></tr>
<tr>
<td><strong>".__("Website:", "mingleforum")."</strong></td>
<td><a href='$user->user_url'>$user->user_url</a></td>
</tr>
<tr>
<td><strong>".__("AIM:", "mingleforum")."</strong></td>
<td>$user->aim</td>
</tr>
<tr>
<td><strong>".__("Yahoo:", "mingleforum")."</strong></td>
<td>$user->yim</td></tr>
<tr>
<td><strong>".__("Jabber/google Talk:", "mingleforum")."</strong></td>
<td>$user->jabber</td>
</tr>
<tr>
<td valign='top'><strong>".__("Biographical Info:", "mingleforum")."</strong></td>
<td valign='top'>".$this->output_filter(make_clickable(convert_smilies(wpautop($user->description))))."</td>
</tr>
</table>
</td>
</tr>
</table></div>";
$this->o .= $o;
$this->footer();
}
function search_results(){
global $wpdb;
$o = "";
$this->current_view = SEARCH;
$this->header();
$search_string = $wpdb->escape($_POST['search_words']);
$sql = "SELECT $this->t_posts.id, `text`, $this->t_posts.subject, $this->t_posts.parent_id, $this->t_posts.`date`, MATCH (`text`) AGAINST (' $search_string') AS score
FROM $this->t_posts JOIN $this->t_threads on $this->t_posts.parent_id = $this->t_threads.id
AND MATCH (`text`) AGAINST ('$search_string')
ORDER BY score DESC
LIMIT 30";
$results = $wpdb->get_results($sql);
$max = 0;
foreach($results as $result)
if($result->score > $max)
$max = $result->score;
if($results)
$const = 100/$max;
$o .= "<table class='wpf-table' cellspacing='0' cellpadding='0' width='100%'>
<tr>
<th width='8%'>Status</th>
<th width='100%'>".__("Subject", "mingleforum")."</th>
<th>".__("Relevance", "mingleforum")."</th>
<th>".__("Started by", "mingleforum")."</th>
<th>".__("Posted", "mingleforum")."</th>
</tr>";
foreach($results as $result){
if($this->have_access($this->forum_get_group_from_post($result->parent_id))){
$starter = $wpdb->get_var($wpdb->prepare("select starter from $this->t_threads where id = $result->parent_id"));
$o .= "<tr>
<td valign='top' align='center'>".$this->get_topic_image($result->parent_id)."</td>
<td valign='top' class='wpf-alt'><a href='".$this->get_threadlink($result->parent_id)."'>".stripslashes($result->subject)."</a>
</td>
<td valign='top'><small>".round($result->score*$const, 1)."%</small></td>
<td valign='top' nowrap='nowrap' class='wpf-alt'>".$this->profile_link($starter)."</td>
<td valign='top' class='wpf-alt' nowrap='nowrap'>".$this->format_date($result->date)."</td>
</tr>";
}
}
$o .= "</table>";
$this->o .= $o;
$this->footer();
}
function ext_str_ireplace($findme, $replacewith, $subject){
return substr($subject, 0, stripos($subject, $findme)).
str_replace('$1', substr($subject, stripos($subject, $findme), strlen($findme)), $replacewith).
substr($subject, stripos($subject, $findme)+strlen($findme));
}
function cuttext($value, $length){
if(is_array($value)) list($string, $match_to) = $value;
else { $string = $value; $match_to = $value{0}; }
$match_start = stristr($string, $match_to);
$match_compute = strlen($string) - strlen($match_start);
if (strlen($string) > $length)
{
if ($match_compute < ($length - strlen($match_to)))
{
$pre_string = substr($string, 0, $length);
$pos_end = strrpos($pre_string, " ");
if($pos_end === false) $string = $pre_string."...";
else $string = substr($pre_string, 0, $pos_end)."...";
}
else if ($match_compute > (strlen($string) - ($length - strlen($match_to))))
{
$pre_string = substr($string, (strlen($string) - ($length - strlen($match_to))));
$pos_start = strpos($pre_string, " ");
$string = "...".substr($pre_string, $pos_start);
if($pos_start === false) $string = "...".$pre_string;
else $string = "...".substr($pre_string, $pos_start);
}
else
{
$pre_string = substr($string, ($match_compute - round(($length / 3))), $length);
$pos_start = strpos($pre_string, " "); $pos_end = strrpos($pre_string, " ");
$string = "...".substr($pre_string, $pos_start, $pos_end)."...";
if($pos_start === false && $pos_end === false) $string = "...".$pre_string."...";
else $string = "...".substr($pre_string, $pos_start, $pos_end)."...";
}
$match_start = stristr($string, $match_to);
$match_compute = strlen($string) - strlen($match_start);
}
return $string;
}
function get_topic_image($thread){
$post_count = $this->num_posts($thread);
if($this->is_closed($thread)){
return "<img src='$this->skin_url/images/topic/closed.gif' alt='".__("Closed topic", "mingleforum")."' title='".__("Closed topic", "mingleforum")."'>";
}
if($post_count < $this->opt['hot_topic']){
return "<img src='$this->skin_url/images/topic/normal_post.gif' alt='".__("Normal topic", "mingleforum")."' title='".__("Normal topic", "mingleforum")."'>";
}
if($post_count >= $this->opt['hot_topic'] && $post_count < $this->opt['veryhot_topic']){
return "<img src='$this->skin_url/images/topic/hot_post.gif' alt='".__("Hot topic", "mingleforum")."' title='".__("Hot topic", "mingleforum")."'>";
}
if($post_count >= $this->opt['veryhot_topic']){
return "<img src='$this->skin_url/images/topic/my_hot_post.gif' alt='".__("Very Hot topic", "mingleforum")."' title='".__("Very Hot topic", "mingleforum")."'>";
}
}
function get_topic_image_two($thread){
$post_count = $this->num_posts($thread);
if($this->is_closed($thread)){
return "closed.gif";
}
if($post_count < $this->opt['hot_topic']){
return "normal_post.gif";
}
if($post_count >= $this->opt['hot_topic'] && $post_count < $this->opt['veryhot_topic']){
return "hot_post.gif";
}
if($post_count >= $this->opt['veryhot_topic']){
return "my_hot_post.gif";
}
}
function get_captcha(){
global $user_ID;
$out = "";
if(!$user_ID && $this->opt['forum_captcha'])
{
include_once(WPFPATH."captcha/shared.php");
include_once(WPFPATH."captcha/captcha_code.php");
$wpf_captcha = new CaptchaCode();
$wpf_code = wpf_str_encrypt($wpf_captcha->generateCode(6));
$out .= " <tr>
<td><img alt='' src='".WPFURL."captcha/captcha_images.php?width=120&height=40&code=".$wpf_code."' />
<input type='hidden' name='wpf_security_check' value='".$wpf_code."'></td>
<td>".__("Security Code:", "mingleforum")."<input id='wpf_security_code' name='wpf_security_code' type='text' class='wpf-input'/></td>
</tr>";
}
return $out;
}
function get_quick_reply_captcha(){
global $user_ID;
$out = "";
$out .= apply_filters('wpwf_quick_form_guestinfo',"");//--weaver-- show the guest info form
if(!$user_ID && $this->opt['forum_captcha'])
{
include_once(WPFPATH."captcha/shared.php");
include_once(WPFPATH."captcha/captcha_code.php");
$wpf_captcha = new CaptchaCode();
$wpf_code = wpf_str_encrypt($wpf_captcha->generateCode(6));
$out .= " <tr>
<td>
<img src='".WPFURL."captcha/captcha_images.php?width=120&height=40&code=".$wpf_code."' />
<input type='hidden' name='wpf_security_check' value='".$wpf_code."'><br/>
<input id='wpf_security_code' name='wpf_security_code' type='text' class='wpf-input'/>".__("Enter Security Code: (required)", "mingleforum")
."</td>
</tr>";
}
return $out;
}
function notify_thread_subscribers($thread_id, $subject, $content, $date)
{
global $user_ID;
$submitter_name = (!$user_ID)?"Guest":$this->get_userdata($user_ID, $this->options['forum_display_name']);
$submitter_email = (!$user_ID)?"guest@nosite.com":$this->get_userdata($user_ID, 'user_email');
$sender = get_bloginfo("name");
$to = get_option("mf_thread_subscribers_".$thread_id, array());
$subject = __("Forum post - ", "mingleforum").$subject;
$message = __("DETAILS:", "mingleforum")."<br/><br/>".
__("Name:", "mingleforum")." ".$submitter_name."<br/>".
// __("Email:", "mingleforum")." ".$submitter_email."<br/>".
__("Date:", "mingleforum")." ".$this->format_date($date)."<br/>".
__("Reply Content:", "mingleforum")."<br/>".$content."<br/><br/>".
__("View Post Here:", "mingleforum")." ".$this->get_threadlink($thread_id);
$headers = "MIME-Version: 1.0\r\n".
"From: ".$sender." "."<".get_bloginfo("admin_email").">\r\n".
"Content-Type: text/HTML; charset=\"".get_option('blog_charset')."\"\r\n".
"BCC: ".implode(",", $to)."\r\n";
if(!empty($to))
wp_mail("", $subject, make_clickable(convert_smilies(wpautop($this->output_filter(stripslashes($message))))), $headers);
}
function notify_forum_subscribers($thread_id, $subject, $content, $date, $forum_id)
{
global $user_ID;
$submitter_name = (!$user_ID)?"Guest":$this->get_userdata($user_ID, $this->options['forum_display_name']);
$submitter_email = (!$user_ID)?"guest@nosite.com":$this->get_userdata($user_ID, 'user_email');
$sender = get_bloginfo("name");
$to = get_option("mf_forum_subscribers_".$forum_id, array());
$subject = __("Forum post - ", "mingleforum").$subject;
$message = __("DETAILS:", "mingleforum")."<br/><br/>".
__("Name:", "mingleforum")." ".$submitter_name."<br/>".
// __("Email:", "mingleforum")." ".$submitter_email."<br/>".
__("Date:", "mingleforum")." ".$this->format_date($date)."<br/>".
__("Reply Content:", "mingleforum")."<br/>".$content."<br/><br/>".
__("View Post Here:", "mingleforum")." ".$this->get_threadlink($thread_id);
$headers = "MIME-Version: 1.0\r\n".
"From: ".$sender." "."<".get_bloginfo("admin_email").">\r\n".
"Content-Type: text/HTML; charset=\"".get_option('blog_charset')."\"\r\n".
"BCC: ".implode(",", $to)."\r\n";
if(!empty($to))
wp_mail("", $subject, make_clickable(convert_smilies(wpautop($this->output_filter(stripslashes($message))))), $headers);
}
function notify_admins($thread_id, $subject, $content, $date)
{
global $user_ID;
$submitter_name = (!$user_ID)?"Guest":$this->get_userdata($user_ID, $this->options['forum_display_name']);
$submitter_email = (!$user_ID)?"guest@nosite.com":$this->get_userdata($user_ID, 'user_email');
$sender = get_bloginfo("name");
$to = get_bloginfo("admin_email");
$subject = __("New Forum content - ", "mingleforum").$subject;
$message = __("DETAILS:", "mingleforum")."<br/><br/>".
__("Name:", "mingleforum")." ".$submitter_name."<br/>".
__("Email:", "mingleforum")." ".$submitter_email."<br/>".
__("Date:", "mingleforum")." ".$this->format_date($date)."<br/>".
__("Reply Content:", "mingleforum")."<br/>".$content."<br/><br/>".
__("View Post Here:", "mingleforum")." ".$this->get_threadlink($thread_id);
$headers = "MIME-Version: 1.0\r\n".
"From: ".$sender." "."<".$to.">\n".
"Content-Type: text/HTML; charset=\"".get_option('blog_charset')."\"\r\n";
if($this->options['notify_admin_on_new_posts'])
if(!empty($to))
wp_mail($to, $subject, make_clickable(convert_smilies(wpautop($this->output_filter(stripslashes($message))))), $headers);
}
function autoembed($string)
{
global $wp_embed;
if (is_object($wp_embed))
return $wp_embed->autoembed($string);
else
return $string;
}
function rewriting_on()
{
$permalink_structure = get_option('permalink_structure');
return ($permalink_structure and !empty($permalink_structure));
}
//Integrate forum with Cartpauj PM OR Mingle -- Following two functions
function get_inbox_link()
{
if(!function_exists('is_plugin_active'))
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
if(is_plugin_active('cartpauj-pm/pm-main.php'))
{
global $cartpaujPMS;
if($this->convert_version_to_int($cartpaujPMS->get_version()) >= 1009)
{
$URL = get_permalink($cartpaujPMS->getPageID());
$numNew = $cartpaujPMS->getNewMsgs();
return "<a href='".$URL."'>".__("Inbox", "mingleforum")."</a> (<font color='red'>".$numNew."</font>)<br/>";
}
}
if(is_plugin_active('mingle/mingle.php'))
{
if($this->convert_version_to_int($this->get_mingle_version()) >= 32)
{
global $mngl_options, $mngl_message, $mngl_user;
$numNew = $mngl_message->get_unread_count();
if( MnglUtils::is_user_logged_in() and MnglUser::user_exists_and_visible($mngl_user->id) )
return "<a href='".get_permalink($mngl_options->inbox_page_id)."'>".__("Inbox", "mingleforum")."</a> (<font color='red'>".$numNew."</font>)<br/>";
}
}
return "";
}
function get_send_message_link($id)
{
if(!function_exists('is_plugin_active'))
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
if(is_plugin_active('cartpauj-pm/pm-main.php'))
{
global $cartpaujPMS;
if($this->convert_version_to_int($cartpaujPMS->get_version()) >= 1009)
{
$cartpaujPMS->setPageURLs();
$URL = $cartpaujPMS->actionURL."newmessage&to=".$id;
return "<a href='".$URL."'>".__("Send Message", "mingleforum")."</a><br/>";
}
}
if(is_plugin_active('mingle/mingle.php'))
{
if($this->convert_version_to_int($this->get_mingle_version()) >= 32)
{
global $mngl_options, $mngl_friend, $mngl_user, $user_ID;
if( (MnglUtils::is_user_logged_in() and
MnglUser::user_exists_and_visible($mngl_user->id) and
$mngl_friend->is_friend($mngl_user->id, $id)) or current_user_can('administrator') or is_super_admin($user_ID))
{
$param_char = MnglAppController::get_param_delimiter_char($permalink);
return "<a href='".get_permalink($mngl_options->inbox_page_id).$param_char."u=".$id."'>".__("Send Message", "mingleforum")."</a><br/>";
}
}
}
return "";
}
function get_mingle_version()
{
$plugin_data = implode('', file(ABSPATH."wp-content/plugins/mingle/mingle.php"));
if (preg_match("|Version:(.*)|i", $plugin_data, $version))
$version = $version[1];
return (string)$version;
}
function convert_version_to_int($version)
{
$result = str_replace(".", "", $version);
return (int)$result;
}
function admin_get_pages()
{
global $wpdb;
$query = "SELECT * FROM {$wpdb->posts} WHERE post_status=%s AND post_type=%s";
$query = $wpdb->prepare( $query, "publish", "page" );
$results = $wpdb->get_results( $query );
if($results)
return $results;
else
return array();
}
//SEO Friendly URL stuff -- Pain in the @$$! -- But I am the bomb.com
function get_seo_friendly_query()
{
$end = array();
$request_uri = $_SERVER['REQUEST_URI'];
$link = str_replace(site_url(), '', get_permalink($this->get_pageid()));
$uri = trim(str_replace($link, '', $request_uri), '/');
$uri = explode('/', $uri);
if (array_count_values($uri))
{
$m = end($uri);
preg_match("/.*-(group|forum|thread)(\d*(\.?\d+)?)$/", $m, $found);
}
if (!empty($found))
{
$end = array('action' => $found[1], 'id' => $found[2]);
}
return $end;
}
function get_seo_friendly_title($str, $replace=array())
{
if(!empty($replace)) //Currently not used
{
$str = str_replace((array)$replace, ' ', $str);
}
if(function_exists('ctl_sanitize_title')) //perfect for crillic languages
return ctl_sanitize_title($str);
return sanitize_title_with_dashes($str); //Seems to work for most other languages
}
function flush_wp_rewrite_rules()
{
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
function set_seo_friendly_rules($args)
{
$new = array();
$link = trim(str_replace(array(site_url(), 'index.php/'), '', get_permalink($this->get_pageid())), '/');
$new['('.$link.')(/[-/0-9a-zA-Z]+)?/(.*)$'] = 'index.php?pagename=$matches[1]&page=$matches[2]';
return $new + $args;
}
//Add a dynamic sitemap for the forum posts
function do_sitemap()
{
global $wpdb;
$priority = "0.8";
$freq = "daily";
$threads = $this->get_threads(false);
$ind = " ";
$nl = "\n";
if(!empty($threads))
{
$out = "<?xml version='1.0' encoding='UTF-8'?>".$nl."<urlset xmlns='http://www.sitemaps.org/schemas/sitemap/0.9'>".$nl;
foreach($threads as $t)
{
$time = explode(' ', $t->last_post, 2);
$time = explode('-', $time[0], 3);
$out .= $ind."<url>".$nl.$ind.$ind."<loc>".$this->clean_link($this->get_threadlink($t->id))."</loc>".$nl.$ind.$ind."<lastmod>".date('Y-m-d', mktime(0, 0, 0, $time[1], $time[2], $time[0]))."</lastmod>".$nl.$ind.$ind."<changefreq>".$freq."</changefreq>".$nl.$ind.$ind."<priority>".$priority."</priority>".$nl.$ind."</url>".$nl;
}
$out .= "</urlset>";
}
echo $out;
}
function clean_link($l)
{
$l = str_replace('&', '&', $l);
return $l;
}
//Filter function for ads
function mf_ad_above_forum($value)
{
if($this->ads_options['mf_ad_above_forum_on'])
$str = "<div class='mf-ad-above-forum'>".stripslashes($this->ads_options['mf_ad_above_forum'])."</div><br/>";
else
$str = '';
return $str;
}
function mf_ad_below_forum($value)
{
if($this->ads_options['mf_ad_below_forum_on'])
$str = "<br/><div class='mf-ad-below-forum'>".stripslashes($this->ads_options['mf_ad_below_forum'])."</div>";
else
$str = '';
return $str;
}
function mf_ad_above_branding($value)
{
if($this->ads_options['mf_ad_above_branding_on'])
$str = "<br/><div class='mf-ad-above-branding'>".stripslashes($this->ads_options['mf_ad_above_branding'])."</div><br/>";
else
$str = '';
return $str;
}
function mf_ad_above_info_center($value)
{
if($this->ads_options['mf_ad_above_info_center_on'])
$str = "<div class='mf-ad-above-info-center'>".stripslashes($this->ads_options['mf_ad_above_info_center'])."</div><br/>";
else
$str = '';
return $str;
}
function mf_ad_above_quick_reply($value)
{
if($this->ads_options['mf_ad_above_quick_reply_on'])
$str = "<div class='mf-ad-above-quick-reply'>".stripslashes($this->ads_options['mf_ad_above_quick_reply'])."</div>";
else
$str = '';
return $str;
}
function mf_ad_above_breadcrumbs($value)
{
if($this->ads_options['mf_ad_above_breadcrumbs_on'])
$str = "<br/><div class='mf-ad-above-breadcrumbs'>".stripslashes($this->ads_options['mf_ad_above_breadcrumbs'])."</div>";
else
$str = '';
return $str;
}
function mf_ad_below_first_post($value)
{
if($this->ads_options['mf_ad_below_first_post_on'])
$str = "<tr><td colspan='2'><div class='mf-ad-below-first-post'>".stripslashes($this->ads_options['mf_ad_below_first_post'])."</div></td></tr>";
else
$str = '';
return $str;
}
//Integrate WP Posts with the Forum
function send_wp_posts_to_forum()
{
add_meta_box('mf_posts_to_forum', __('Mingle Forum Post Options', 'mingleforum'), array(&$this, 'show_meta_box_options'), 'post');
}
function show_meta_box_options()
{
$forums = $this->get_forums();
echo '<input type="checkbox" name="mf_post_to_forum" value="true" /> '.__('Add this post to', 'mingleforum');
echo ' <select name="mf_post_to_forum_forum">';
foreach($forums as $f)
echo '<option value="'.$f->id.'">'.$f->name.'</option>';
echo '</select><br/><small>'.__('Do not check this if this post has already been linked to the forum!', 'mingleforum').'</small>';
}
function saving_posts($post_id)
{
global $wpdb, $user_ID;
$this->setup_links();
if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
return;
if('post' == $_POST['post_type'])
{
if(!current_user_can('edit_post', $post_id))
return;
}
else
return;
$mydata = ($_POST['mf_post_to_forum'] == 'true')?true:false;
if($mydata)
{
$date = $this->wpf_current_time_fixed('mysql', 0);
$fid = $_POST['mf_post_to_forum_forum'];
$_POST['mf_post_to_forum'] = 'false'; //Eternal loop if this isn't set to false
$post = get_post($post_id);
$sql_thread = "INSERT INTO {$this->t_threads} (last_post, subject, parent_id, `date`, status, starter) VALUES('{$date}', '".$this->strip_single_quote($post->post_title)."', '{$fid}', '{$date}', 'open', '{$user_ID}')";
$wpdb->query($sql_thread);
$tid = $wpdb->insert_id;
$sql_post = "INSERT INTO {$this->t_posts} (text, parent_id, `date`, author_id, subject) VALUES('".$this->input_filter($wpdb->escape($post->post_content))."', '{$tid}', '{$date}', '{$user_ID}', '".$this->strip_single_quote($post->post_title)."')";
$wpdb->query($wpdb->prepare($sql_post));
$new = $post->post_content."\n".'<p><a href="'.$this->get_threadlink($tid).'">'.__("Join the Forum discussion on this post", "mingleforum").'</a></p>';
$post->post_content = $new;
wp_update_post($post);
}
}
function strip_single_quote($string)
{
global $wpdb;
$Find = array("'", "\\");
$Replace = array("", "");
$newStr = str_replace($Find, $Replace, $string);
return $newStr;
}
} // End class
} // End
?>