Example #1
0
 public function handle_deletion($is_topic_post, $id, $tid, $fid)
 {
     global $lang_delete;
     require FEATHER_ROOT . 'include/search_idx.php';
     if ($is_topic_post) {
         // Delete the topic and all of its posts
         delete_topic($tid);
         update_forum($fid);
         redirect(get_link('forum/' . $fid . '/'), $lang_delete['Topic del redirect']);
     } else {
         // Delete just this one post
         delete_post($id, $tid);
         update_forum($fid);
         // Redirect towards the previous post
         $post = DB::for_table('posts')->select('id')->where('topic_id', $tid)->where_lt('id', $id)->order_by_desc('id')->find_one();
         redirect(get_link('post/' . $post['id'] . '/#p' . $post['id']), $lang_delete['Post del redirect']);
     }
 }
Example #2
0
     $prune_from = $_POST['prune_from'];
     $prune_days = intval($_POST['prune_days']);
     $prune_date = $prune_days ? time() - $prune_days * 86400 : -1;
     @set_time_limit(0);
     if ($prune_from == 'all') {
         $result = $db->query('SELECT id FROM ' . $db->prefix . 'forums') or error('Unable to fetch forum list', __FILE__, __LINE__, $db->error());
         $num_forums = $db->num_rows($result);
         for ($i = 0; $i < $num_forums; ++$i) {
             $fid = $db->result($result, $i);
             prune($fid, $_POST['prune_sticky'], $prune_date);
             update_forum($fid);
         }
     } else {
         $prune_from = intval($prune_from);
         prune($prune_from, $_POST['prune_sticky'], $prune_date);
         update_forum($prune_from);
     }
     // Locate any "orphaned redirect topics" and delete them
     $result = $db->query('SELECT t1.id FROM ' . $db->prefix . 'topics AS t1 LEFT JOIN ' . $db->prefix . 'topics AS t2 ON t1.moved_to=t2.id WHERE t2.id IS NULL AND t1.moved_to IS NOT NULL') or error('Unable to fetch redirect topics', __FILE__, __LINE__, $db->error());
     $num_orphans = $db->num_rows($result);
     if ($num_orphans) {
         for ($i = 0; $i < $num_orphans; ++$i) {
             $orphans[] = $db->result($result, $i);
         }
         $db->query('DELETE FROM ' . $db->prefix . 'topics WHERE id IN(' . implode(',', $orphans) . ')') or error('Unable to delete redirect topics', __FILE__, __LINE__, $db->error());
     }
     redirect('admin_prune.php', 'Posts pruned. Redirecting &hellip;');
 }
 $prune_days = $_POST['req_prune_days'];
 if (!@preg_match('#^\\d+$#', $prune_days)) {
     message('Days to prune must be a positive integer.');
// Load the delete.php language file
require PUN_ROOT . 'lang/' . $pun_user['language'] . '/delete.php';
if (isset($_POST['delete'])) {
    if ($is_admmod) {
        confirm_referrer('delete.php');
    }
    require PUN_ROOT . 'include/search_idx.php';
    if ($is_topic_post) {
        // Delete the topic and all of it's posts
        delete_topic($cur_post['tid']);
        update_forum($cur_post['fid']);
        redirect('viewforum.php?id=' . $cur_post['fid'], $lang_delete['Topic del redirect']);
    } else {
        // Delete just this one post
        delete_post($id, $cur_post['tid']);
        update_forum($cur_post['fid']);
        redirect('viewtopic.php?id=' . $cur_post['tid'], $lang_delete['Post del redirect']);
    }
}
$page_title = pun_htmlspecialchars($pun_config['o_board_title']) . ' / ' . $lang_delete['Delete post'];
require PUN_ROOT . 'header.php';
require PUN_ROOT . 'include/parser.php';
$cur_post['message'] = parse_message($cur_post['message'], $cur_post['hide_smilies']);
?>
<div class="linkst">
	<div class="inbox">
		<ul><li><a href="index.php"><?php 
echo $lang_common['Index'];
?>
</a></li><li>&nbsp;&raquo;&nbsp;<a href="viewforum.php?id=<?php 
echo $cur_post['fid'];
Example #4
0
             // To subscribe or not to subscribe, that ...
             if ($pun_config['o_subscriptions'] == 1 && $_POST['subscribe'] == 1) {
                 $db->query('INSERT INTO ' . $db->prefix . 'subscriptions (user_id, topic_id) VALUES(' . $pun_user['id'] . ' ,' . $new_tid . ')') or error('Unable to add subscription', __FILE__, __LINE__, $db->error());
             }
             // Create the post ("topic post")
             $db->query('INSERT INTO ' . $db->prefix . 'posts (poster, poster_id, poster_ip, message, hide_smilies, posted, topic_id) VALUES(\'' . $db->escape($username) . '\', ' . $pun_user['id'] . ', \'' . get_remote_address() . '\', \'' . $db->escape($message) . '\', \'' . $hide_smilies . '\', ' . $_SERVER['REQUEST_TIME'] . ', ' . $new_tid . ')') or error('Unable to create post', __FILE__, __LINE__, $db->error());
         } else {
             // Create the post ("topic post")
             $email_sql = $pun_config['p_force_guest_email'] == 1 || $email ? '\'' . $db->escape($email) . '\'' : 'NULL';
             $db->query('INSERT INTO ' . $db->prefix . 'posts (poster, poster_ip, poster_email, message, hide_smilies, posted, topic_id) VALUES(\'' . $db->escape($username) . '\', \'' . get_remote_address() . '\', ' . $email_sql . ', \'' . $db->escape($message) . '\', \'' . $hide_smilies . '\', ' . $_SERVER['REQUEST_TIME'] . ', ' . $new_tid . ')') or error('Unable to create post', __FILE__, __LINE__, $db->error());
         }
         $new_pid = $db->insert_id();
         // Update the topic with last_post_id
         $db->query('UPDATE ' . $db->prefix . 'topics SET last_post_id=' . $new_pid . ' WHERE id=' . $new_tid) or error('Unable to update topic', __FILE__, __LINE__, $db->error());
         update_search_index('post', $new_pid, $message, $subject);
         update_forum($fid);
     }
 }
 generate_rss();
 $uploaded = 0;
 $upload_result = process_uploaded_files($fid ? $new_tid : $tid, $new_pid, $uploaded);
 // If the posting user is logged in, increment his/her post count
 // MERGE POSTS BEGIN
 if (!$pun_user['is_guest']) {
     if ($uploaded) {
         $add_files = 'num_files=num_files+' . $uploaded . ', ';
     } else {
         $add_files = '';
     }
     if ($merged) {
         $db->query('UPDATE ' . $db->prefix . 'users SET ' . $add_files . 'last_post=' . $_SERVER['REQUEST_TIME'] . ' WHERE id=' . $pun_user['id']) or error('Unable to update user', __FILE__, __LINE__, $db->error());
Example #5
0
            }
            $update = array('deleted' => 0);
            $post_data = array(':id' => $post_id);
            $db->update('posts', $update, 'id=:id', $post_data);
            if (!defined('PANTHER_CJK_HANGUL_REGEX')) {
                require PANTHER_ROOT . 'include/search_idx.php';
            }
            update_search_index('post', $post_id, $post['message']);
            $ps = $db->select('posts', 'id, poster, posted', $topic_data, 'topic_id=:id AND approved=1 AND deleted=0', 'id DESC LIMIT 1');
            list($last_id, $poster, $posted) = $ps->fetch(PDO::FETCH_NUM);
            $ps = $db->select('topics', 'num_replies', $topic_data, 'id=:id');
            $num_replies = $ps->fetchColumn();
            $update = array('num_replies' => $num_replies + 1, 'last_post' => $posted, 'last_post_id' => $last_id, 'last_poster' => $poster);
            $db->update('topics', $update, 'id=:id', $topic_data);
            update_search_index('post', $post_id, $post['message']);
            update_forum($post['forum_id']);
            redirect(panther_link($panther_url['admin_deleted']), $lang_admin_deleted['Post approved redirect']);
        }
    } else {
        if ($is_topic_post) {
            permanently_delete_topic($post['topic_id']);
            redirect(panther_link($panther_url['admin_deleted']), $lang_admin_deleted['Topic deleted redirect']);
        } else {
            permanently_delete_post($post_id);
            redirect(panther_link($panther_url['admin_deleted']), $lang_admin_deleted['Post deleted redirect']);
        }
    }
}
$ps = $db->run('SELECT t.id AS topic_id, t.forum_id, p.poster, p.poster_id, p.posted, p.message, p.id AS pid, p.hide_smilies, t.subject, f.forum_name FROM ' . $db->prefix . 'posts AS p LEFT JOIN ' . $db->prefix . 'topics AS t ON p.topic_id=t.id LEFT JOIN ' . $db->prefix . 'forums AS f ON t.forum_id=f.id WHERE p.deleted=1 OR t.deleted=1 ORDER BY p.posted DESC');
require PANTHER_ROOT . 'include/parser.php';
$page_title = array($panther_config['o_board_title'], $lang_admin_common['Admin'], $lang_admin_common['Deleted']);
Example #6
0
        redirect('thread.php?pid=' . $id . '#p' . $id);
    }
}
if (isset($_POST['delete'])) {
    // Make sure they got here from the site
    confirm_referrer('delete.php');
    require LUNA_ROOT . 'include/search_idx.php';
    if ($is_thread_comment) {
        // Delete the thread and all of its comments
        delete_thread($cur_comment['tid'], "hard");
        update_forum($cur_comment['fid']);
        redirect('viewforum.php?id=' . $cur_comment['fid']);
    } else {
        // Delete just this one comment
        delete_comment($id, $cur_comment['tid'], $cur_comment['commenter_id']);
        update_forum($cur_comment['fid']);
        // Redirect towards the previous comment
        $result = $db->query('SELECT id FROM ' . $db->prefix . 'comments WHERE thread_id=' . $cur_comment['tid'] . ' AND id < ' . $id . ' ORDER BY id DESC LIMIT 1') or error('Unable to fetch comment info', __FILE__, __LINE__, $db->error());
        $comment_id = $db->result($result);
        redirect('thread.php?pid=' . $comment_id . '#p' . $comment_id);
    }
}
$page_title = array(luna_htmlspecialchars($luna_config['o_board_title']), __('Delete comment', 'luna'));
define('LUNA_ACTIVE_PAGE', 'delete');
require LUNA_ROOT . 'include/parser.php';
$cur_comment['message'] = parse_message($cur_comment['message']);
require load_page('header.php');
if ($action == "reset") {
    require load_page('reset.php');
}
if ($action == "soft") {
Example #7
0
 public function delete_topics($topics, $fid)
 {
     global $lang_misc, $lang_common;
     if (@preg_match('%[^0-9,]%', $topics)) {
         message($lang_common['Bad request'], '404');
     }
     require FEATHER_ROOT . 'include/search_idx.php';
     $topics_sql = explode(',', $topics);
     // Verify that the topic IDs are valid
     $result = DB::for_table('topics')->where_in('id', $topics_sql)->where('forum_id', $fid)->find_many();
     if (count($result) != substr_count($topics, ',') + 1) {
         message($lang_common['Bad request'], '404');
     }
     // Verify that the posts are not by admins
     if ($this->user->g_id != FEATHER_ADMIN) {
         $authorized = DB::for_table('posts')->where_in('topic_id', $topics_sql)->where('poster_id', get_admin_ids())->find_many();
         if ($authorized) {
             message($lang_common['No permission'], '403');
         }
     }
     // Delete the topics
     DB::for_table('topics')->where_in('id', $topics_sql)->delete_many();
     // Delete any redirect topics
     DB::for_table('topics')->where_in('moved_to', $topics_sql)->delete_many();
     // Delete any subscriptions
     DB::for_table('topic_subscriptions')->where_in('topic_id', $topics_sql)->delete_many();
     // Create a list of the post IDs in this topic and then strip the search index
     $find_ids = DB::for_table('posts')->select('id')->where_in('topic_id', $topics_sql)->find_many();
     foreach ($find_ids as $id) {
         $ids_post[] = $id['id'];
     }
     $post_ids = implode(', ', $ids_post);
     // We have to check that we actually have a list of post IDs since we could be deleting just a redirect topic
     if ($post_ids != '') {
         strip_search_index($post_ids);
     }
     // Delete posts
     DB::for_table('posts')->where_in('topic_id', $topics_sql)->delete_many();
     update_forum($fid);
     redirect(get_link('forum/' . $fid . '/'), $lang_misc['Delete topics redirect']);
 }
Example #8
0
    $num_updated = 0;
    // Get name of new user
    $result = $db->query('SELECT username FROM ' . $db->prefix . 'users WHERE id=' . $new_user_id) or error('Unable to fetch username', __FILE__, __LINE__, $db->error());
    $new_username = $db->result($result);
    if ($new_username == '') {
        message('User id ' . $new_user_id . ' wasn\'t found.');
    }
    // Update all posts
    foreach ($posts as $cur_post_id) {
        $num_updated += update_post_author($cur_post_id, $new_user_id, $new_username);
    }
    // Get all forums
    $result = $db->query('SELECT id FROM ' . $db->prefix . 'forums') or error('Unable to fetch forum info', __FILE__, __LINE__, $db->error());
    // Update all forums
    while ($cur_forum = $db->fetch_assoc($result)) {
        update_forum($cur_forum['id']);
    }
    redirect($_SERVER['REQUEST_URI'], 'Changed author to "' . pun_htmlspecialchars($new_username) . '" for ' . $num_updated . ' post(s).');
} else {
    if (isset($_POST['sync_post_counts'])) {
        // Synchronize user post counts
        $db->query('CREATE TEMPORARY TABLE IF NOT EXISTS ' . $db->prefix . 'post_counts SELECT poster_id, count(*) as new_num FROM ' . $db->prefix . 'posts GROUP BY poster_id') or error('Creating temporary table failed', __FILE__, __LINE__, $db->error());
        $db->query('UPDATE ' . $db->prefix . 'users SET num_posts=0') or error('Could not reset post counts', __FILE__, __LINE__, $db->error());
        // Zero posts
        $db->query('UPDATE ' . $db->prefix . 'users, ' . $db->prefix . 'post_counts SET num_posts=new_num WHERE id=poster_id') or error('Could not update post counts', __FILE__, __LINE__, $db->error());
        redirect($_SERVER['REQUEST_URI'], 'Post counts synchronized');
    }
}
if (isset($_POST['menu'])) {
    $user_field = array('<td>', "\t\t\t\t\t\t\t\t\t" . '<select name="">');
    $result = $db->query('SELECT id, username FROM ' . $db->prefix . 'users WHERE id > 1 ORDER BY username ASC') or error('Unable to get user list', __FILE__, __LINE__, $db->error());
Example #9
0
 /**
  * setMessage
  *
  * @param array $args
  * @return array
  * @throws Exception
  */
 public function setMessage($args)
 {
     $message = $args['message'];
     $topicId = $args['topicId'];
     $hideSmiles = $args['hideSmiles'];
     $topicId = intval($topicId);
     if ($topicId <= 0) {
         throw new Exception($this->_lang['Bad request']);
     }
     if ($this->_pun_user['is_guest']) {
         throw new Exception($this->_lang['Bad request']);
     }
     if ($this->_pun_user['last_post'] && $_SERVER['REQUEST_TIME'] - $this->_pun_user['last_post'] < $this->_pun_user['g_post_flood']) {
         throw new Exception($this->_lang['Bad request']);
     }
     // Clean up message
     $message = pun_linebreaks(pun_trim($message));
     if (!$message) {
         throw new Exception($this->_lang['Bad request']);
     } else {
         if (mb_strlen($message) > 65535) {
             throw new Exception($this->_lang['Bad request']);
         } else {
             if (!$this->_pun_config['p_message_all_caps'] && mb_strtoupper($message) == $message && $this->_pun_user['g_id'] > PUN_MOD) {
                 $message = ucwords(mb_strtolower($message));
             }
         }
     }
     convert_forum_url($message);
     // Insert the new post
     $r = $this->_db->query('
         INSERT INTO ' . $this->_db->prefix . 'posts (
             poster, poster_id, poster_ip, message, hide_smilies, posted, topic_id
         ) VALUES (
             \'' . $this->_db->escape($this->_pun_user['username']) . '\',
             ' . $this->_pun_user['id'] . ',
             \'' . get_remote_address() . '\',
             \'' . $this->_db->escape($message) . '\',
             \'' . intval($hideSmiles) . '\',
             ' . $_SERVER['REQUEST_TIME'] . ',
             ' . $topicId . '
         )
     ');
     if (!$r) {
         throw new Exception($this->_db->error());
     }
     if (!$this->_db->affected_rows()) {
         throw new Exception($this->_lang['Bad request']);
     }
     $id = $this->_db->insert_id();
     // Count number of replies in the topic
     $result = $this->_db->query('
         SELECT COUNT(1)
         FROM ' . $this->_db->prefix . 'posts
         WHERE topic_id=' . $topicId);
     $num_replies = $this->_db->result($result, 0) - 1;
     // Update topic
     $this->_db->query('
         UPDATE ' . $this->_db->prefix . 'topics
         SET num_replies=' . $num_replies . ',
         last_post=' . $_SERVER['REQUEST_TIME'] . ',
         last_post_id=' . $id . ',
         last_poster=\'' . $this->_db->escape($this->_pun_user['username']) . '\'
         WHERE id=' . $topicId);
     //update_search_index('post', $id, $message);
     $result = $this->_db->query('
         SELECT f.id
         FROM ' . $this->_db->prefix . 'topics AS t
         INNER JOIN ' . $this->_db->prefix . 'forums AS f ON f.id=t.forum_id
         LEFT JOIN ' . $this->_db->prefix . 'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=' . $this->_pun_user['g_id'] . ')
         WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=' . $topicId);
     $forumId = $this->_db->result($result, 0);
     update_forum($forumId);
     generate_rss();
     return array('message' => $this->_parseMessage($message, $hideSmiles), 'poster' => $this->_pun_user['username'], 'posted' => $_SERVER['REQUEST_TIME']);
 }
Example #10
0
 public function insert_topic($post, $fid)
 {
     $new = array();
     // Create the topic
     $insert_topic = array('poster' => $post['username'], 'subject' => $post['subject'], 'posted' => $post['time'], 'last_post' => $post['time'], 'last_poster' => $post['username'], 'sticky' => $post['stick_topic'], 'forum_id' => $fid);
     DB::for_table('topics')->create()->set($insert_topic)->save();
     $new['tid'] = DB::get_db()->lastInsertId($this->feather->prefix . 'topics');
     if (!$this->user->is_guest) {
         // To subscribe or not to subscribe, that ...
         if ($this->config['o_topic_subscriptions'] == '1' && $post['subscribe']) {
             $insert_subscription = array('user_id' => $this->user->id, 'topic_id' => $new['tid']);
             DB::for_table('topic_subscriptions')->create()->set($insert_subscription)->save();
         }
         // Create the post ("topic post")
         $insert_post = array('poster' => $post['username'], 'poster_id' => $this->user->id, 'poster_ip' => get_remote_address(), 'message' => $post['message'], 'hide_smilies' => $post['hide_smilies'], 'posted' => $post['time'], 'topic_id' => $new['tid']);
         DB::for_table('posts')->create()->set($insert_post)->save();
     } else {
         // It's a guest
         // Create the post ("topic post")
         $insert_post = array('poster' => $post['username'], 'poster_ip' => get_remote_address(), 'message' => $post['message'], 'hide_smilies' => $post['hide_smilies'], 'posted' => $post['time'], 'topic_id' => $new['tid']);
         if ($this->config['p_force_guest_email'] == '1' || $post['email'] != '') {
             $insert_post['poster_email'] = $post['email'];
         }
         DB::for_table('posts')->create()->set($insert_post)->save();
     }
     $new['pid'] = DB::get_db()->lastInsertId($this->feather->prefix . 'topics');
     // Update the topic with last_post_id
     $update_topic = array('last_post_id' => $new['pid'], 'first_post_id' => $new['pid']);
     DB::for_table('topics')->where('id', $new['tid'])->find_one()->set($update_topic)->save();
     update_search_index('post', $new['pid'], $post['message'], $post['subject']);
     update_forum($fid);
     return $new;
 }
Example #11
0
 public function prune_comply($prune_from, $prune_sticky)
 {
     global $lang_admin_maintenance;
     $prune_days = intval($this->request->post('prune_days'));
     $prune_date = $prune_days ? time() - $prune_days * 86400 : -1;
     @set_time_limit(0);
     if ($prune_from == 'all') {
         $result = DB::for_table('forums')->select('id')->find_array();
         if (!empty($result)) {
             foreach ($result as $row) {
                 $this->prune($row['id'], $prune_sticky, $prune_date);
                 update_forum($row['id']);
             }
         }
     } else {
         $prune_from = intval($prune_from);
         $this->prune($prune_from, $prune_sticky, $prune_date);
         update_forum($prune_from);
     }
     // Locate any "orphaned redirect topics" and delete them
     $result = DB::for_table('topics')->table_alias('t1')->select('t1.id')->left_outer_join('topics', array('t1.moved_to', '=', 't2.id'), 't2')->where_null('t2.id')->where_not_null('t1.moved_to')->find_array();
     $orphans = array();
     if (!empty($result)) {
         foreach ($result as $row) {
             $orphans[] = $row['id'];
         }
         DB::for_table('topics')->where_in('id', $orphans)->delete_many();
     }
     redirect(get_link('admin/maintenance/'), $lang_admin_maintenance['Posts pruned redirect']);
 }
Example #12
0
    }
    $now = time();
    $i = 0;
    $_POST['message'] = pun_linebreaks(pun_trim($_POST['message']));
    while ($i < count($_POST['forums'])) {
        $db->query('INSERT INTO ' . $db->prefix . 'topics (poster, subject, posted, last_post, last_poster, forum_id, sticky, closed)
			VALUES(\'' . $db->escape($pun_user['username']) . '\', \'' . $db->escape($_POST['subject']) . '\', ' . $now . ', ' . $now . ',
			       \'' . $db->escape($pun_user['username']) . '\', ' . $_POST['forums'][$i] . ', ' . $_POST['sticky'] . ', ' . $_POST['close'] . ')') or error('Unable to create topic', __FILE__, __LINE__, $db->error());
        $new_tid = $db->insert_id();
        $db->query('INSERT INTO ' . $db->prefix . 'posts (poster, poster_id, poster_ip, message, hide_smilies, posted, topic_id)
			VALUES(\'' . $db->escape($pun_user['username']) . '\', ' . $pun_user['id'] . ', \'' . get_remote_address() . '\',
			       \'' . $db->escape($_POST['message']) . '\', \'0\', ' . $now . ', ' . $new_tid . ')') or error('Unable to create post', __FILE__, __LINE__, $db->error());
        $new_pid = $db->insert_id();
        $db->query('UPDATE ' . $db->prefix . 'topics SET last_post_id=' . $new_pid . ' WHERE id=' . $new_tid) or error('Unable to update topic', __FILE__, __LINE__, $db->error());
        update_search_index('post', $new_pid, $_POST['message'], $_POST['subject']);
        update_forum($_POST['forums'][$i]);
        $i++;
    }
    redirect('admin_loader.php?plugin=AMP_Global_topic.php', 'Topic(s) Added');
} elseif (isset($_POST['update'])) {
    if (empty($_POST['subject']) || empty($_POST['message'])) {
        message('Missing Fields');
    }
    $_POST['message'] = pun_linebreaks(pun_trim($_POST['message']));
    $db->query('UPDATE ' . $db->prefix . 'topics SET subject=\'' . $db->escape($_POST['subject']) . '\'
		WHERE subject=\'' . $db->escape($_POST['old_subject']) . '\' AND posted=' . $db->escape($_POST['old_posted'])) or error('Unable to update topic', __FILE__, __LINE__, $db->error());
    $result = $db->query('SELECT p.id FROM ' . $db->prefix . 'posts as p LEFT JOIN ' . $db->prefix . 'topics as t ON t.id=p.topic_id
		WHERE t.subject=\'' . $db->escape($_POST['subject']) . '\' AND t.posted=' . $db->escape($_POST['old_posted'])) or error('Unable to get post ids', __FILE__, __LINE__, $db->error());
    while ($cur_post = $db->fetch_assoc($result)) {
        $db->query('UPDATE ' . $db->prefix . 'posts SET message=\'' . $db->escape($_POST['message']) . '\' WHERE id=' . $cur_post['id']) or error('Unable to update post', __FILE__, __LINE__, $db->error());
    }
Example #13
0
 public function delete_users()
 {
     global $lang_admin_users;
     if ($this->request->post('users')) {
         $user_ids = is_array($this->request->post('users')) ? array_keys($this->request->post('users')) : explode(',', $this->request->post('users'));
         $user_ids = array_map('intval', $user_ids);
         // Delete invalid IDs
         $user_ids = array_diff($user_ids, array(0, 1));
     } else {
         $user_ids = array();
     }
     if (empty($user_ids)) {
         message($lang_admin_users['No users selected']);
     }
     // Are we trying to delete any admins?
     $is_admin = DB::for_table('users')->where_in('id', $user_ids)->where('group_id', FEATHER_ADMIN)->find_one();
     if ($is_admin) {
         message($lang_admin_users['No delete admins message']);
     }
     if ($this->request->post('delete_users_comply')) {
         // Fetch user groups
         $user_groups = array();
         $select_fetch_user_groups = array('id', 'group_id');
         $result = DB::for_table('users')->select_many($select_fetch_user_groups)->where_in('id', $user_ids)->find_many();
         foreach ($result as $cur_user) {
             if (!isset($user_groups[$cur_user['group_id']])) {
                 $user_groups[$cur_user['group_id']] = array();
             }
             $user_groups[$cur_user['group_id']][] = $cur_user['id'];
         }
         // Are any users moderators?
         $group_ids = array_keys($user_groups);
         $select_fetch_user_mods = array('g_id', 'g_moderator');
         $result = DB::for_table('groups')->select_many($select_fetch_user_mods)->where_in('g_id', $group_ids)->find_many();
         foreach ($result as $cur_group) {
             if ($cur_group['g_moderator'] == '0') {
                 unset($user_groups[$cur_group['g_id']]);
             }
         }
         // Fetch forum list and clean up their moderator list
         $select_mods = array('id', 'moderators');
         $result = DB::for_table('forums')->select_many($select_mods)->find_many();
         foreach ($result as $cur_forum) {
             $cur_moderators = $cur_forum['moderators'] != '' ? unserialize($cur_forum['moderators']) : array();
             foreach ($user_groups as $group_users) {
                 $cur_moderators = array_diff($cur_moderators, $group_users);
             }
             if (!empty($cur_moderators)) {
                 DB::for_table('forums')->where('id', $cur_forum['id'])->find_one()->set('moderators', serialize($cur_moderators))->save();
             } else {
                 DB::for_table('forums')->where('id', $cur_forum['id'])->find_one()->set_expr('moderators', 'NULL')->save();
             }
         }
         // Delete any subscriptions
         DB::for_table('topic_subscriptions')->where_in('user_id', $user_ids)->delete_many();
         DB::for_table('forum_subscriptions')->where_in('user_id', $user_ids)->delete_many();
         // Remove them from the online list (if they happen to be logged in)
         DB::for_table('online')->where_in('user_id', $user_ids)->delete_many();
         // Should we delete all posts made by these users?
         if ($this->request->post('delete_posts')) {
             require FEATHER_ROOT . 'include/search_idx.php';
             @set_time_limit(0);
             // Find all posts made by this user
             $select_user_posts = array('p.id', 'p.topic_id', 't.forum_id');
             $result = DB::for_table('posts')->table_alias('p')->select_many($select_user_posts)->inner_join('topics', array('t.id', '=', 'p.topic_id'), 't')->inner_join('forums', array('f.id', '=', 't.forum_id'), 'f')->where('p.poster_id', $user_ids)->find_many();
             if ($result) {
                 foreach ($result as $cur_post) {
                     // Determine whether this post is the "topic post" or not
                     $result2 = DB::for_table('posts')->where('topic_id', $cur_post['topic_id'])->order_by('posted')->find_one_col('id');
                     if ($this->db->result($result2) == $cur_post['id']) {
                         delete_topic($cur_post['topic_id']);
                     } else {
                         delete_post($cur_post['id'], $cur_post['topic_id']);
                     }
                     update_forum($cur_post['forum_id']);
                 }
             }
         } else {
             // Set all their posts to guest
             DB::for_table('posts')->where_in('poster_id', '1')->update_many('poster_id', $user_ids);
         }
         // Delete the users
         DB::for_table('users')->where_in('id', $user_ids)->delete_many();
         // Delete user avatars
         foreach ($user_ids as $user_id) {
             delete_avatar($user_id);
         }
         // Regenerate the users info cache
         if (!defined('FORUM_CACHE_FUNCTIONS_LOADED')) {
             require FEATHER_ROOT . 'include/cache.php';
         }
         generate_users_info_cache();
         redirect(get_link('admin/users/'), $lang_admin_users['Users delete redirect']);
     }
     return $user_ids;
 }
        // And the search index revision number
        $db->query('UPDATE ' . $db->prefix . 'config SET conf_value = \'' . UPDATE_TO_SI_REVISION . '\' WHERE conf_name = \'o_searchindex_revision\'') or error('Unable to update search index revision number', __FILE__, __LINE__, $db->error());
        // And the parser revision number
        $db->query('UPDATE ' . $db->prefix . 'config SET conf_value = \'' . UPDATE_TO_PARSER_REVISION . '\' WHERE conf_name = \'o_parser_revision\'') or error('Unable to update parser revision number', __FILE__, __LINE__, $db->error());
        // Check the default language still exists!
        if (!file_exists(PUN_ROOT . 'lang/' . $pun_config['o_default_lang'] . '/common.php')) {
            $db->query('UPDATE ' . $db->prefix . 'config SET conf_value = \'English\' WHERE conf_name = \'o_default_lang\'') or error('Unable to update default language', __FILE__, __LINE__, $db->error());
        }
        // Check the default style still exists!
        if (!file_exists(PUN_ROOT . 'style/' . $pun_config['o_default_style'] . '.css')) {
            $db->query('UPDATE ' . $db->prefix . 'config SET conf_value = \'Air\' WHERE conf_name = \'o_default_style\'') or error('Unable to update default style', __FILE__, __LINE__, $db->error());
        }
        // This feels like a good time to synchronize the forums
        $result = $db->query('SELECT id FROM ' . $db->prefix . 'forums') or error('Unable to fetch forum IDs', __FILE__, __LINE__, $db->error());
        while ($row = $db->fetch_row($result)) {
            update_forum($row[0]);
        }
        // Empty the PHP cache
        forum_clear_cache();
        // Delete the update lock file
        @unlink(FORUM_CACHE_DIR . 'db_update.lock');
        ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php 
        echo $lang_common['lang_identifier'];
        ?>
" lang="<?php 
        echo $lang_common['lang_identifier'];
        ?>
" dir="<?php 
Example #15
0
        message('The forum you specified to merge from does not exist.');
    }
    $result = $db->query("SELECT * FROM " . $db->prefix . "forums WHERE id=" . $forum2);
    if ($db->num_rows($result) == '0') {
        message('The forum you specified to merge to does not exist.');
    }
    //Make sure the forums being merged aren't the same
    if ($forum1 == $forum2) {
        message('The forums you specified are the same.');
    }
    //Run the update query.
    $db->query("UPDATE " . $db->prefix . "topics set forum_id=" . $forum2 . " where forum_id=" . $forum1);
    //Delete the old forum
    $db->query("DELETE FROM " . $db->prefix . "forums WHERE id = " . $forum1);
    //Update the forum last post, etc.
    update_forum($forum2);
    // Display the admin navigation menu
    generate_admin_menu($plugin);
    ?>
	<div class="block">
		<h2><span>Forum Merge Plugin</span></h2>
		<div class="box">
			<div class="inbox">
				<p>Forums Merged.</p>
			</div>
		</div>
	</div>
<?php 
} else {
    // Display the admin navigation menu
    generate_admin_menu($plugin);
Example #16
0
         if ($new_forum) {
             update_forum($new_fid);
         }
         // Update the forum FROM which the topic was moved
         require PUN_ROOT . 'include/search_idx.php';
         // Bit silly should be probably improved: in order to remove the subject from the old topic, we need:
         // 1. remove all the words (message and subject) from the search tables
         // 2. add the words from the message only in the search tables !!!
         strip_search_index($post_id);
         update_search_index('post', $post_id, $message);
     } else {
         update_topic($old_topic_id);
         if ($new_forum) {
             update_forum($old_fid);
             // Update the forum FROM which the topic was moved
             update_forum($new_fid);
             // Update the forum TO which the topic was moved
         }
     }
     redirect('viewtopic.php?pid=' . $post_id . '#p' . $post_id, $lang_movepost['Mark move redirect']);
 } else {
     //Count the topics to diplayed
     $result = $db->query('SELECT count(id) FROM ' . $db->prefix . 'topics WHERE forum_id =' . $fid . ' AND moved_to IS NULL') or error('Unable to count topics in forum', __FILE__, __LINE__, $db->error());
     $num_topics = $db->result($result);
     //Not add the original topic
     if ($fid == $old_fid) {
         $num_topics = $num_topics - 1;
     }
     //Sort query (based on $_GET['new_fid'], $_GET['sort'] and $_GET['desc'])
     $var_query_img = $var_query = '';
     if (isset($_GET['new_fid'])) {
Example #17
0
 public function delete_user($id)
 {
     global $lang_profile;
     // Get the username and group of the user we are deleting
     $select_info_delete_user = array('group_id', 'username');
     $result = DB::for_table('users')->where('id', $id)->select_many($select_info_delete_user)->find_one();
     $group_id = $result['group_id'];
     $username = $result['username'];
     if ($group_id == FEATHER_ADMIN) {
         message($lang_profile['No delete admin message']);
     }
     if ($this->request->post('delete_user_comply')) {
         // If the user is a moderator or an administrator, we remove him/her from the moderator list in all forums as well
         $group_mod = DB::for_table('groups')->where('g_id', $group_id)->find_one_col('g_moderator');
         if ($group_id == FEATHER_ADMIN || $group_mod == '1') {
             $select_info_delete_moderators = array('id', 'moderators');
             $result = DB::for_table('forums')->select_many($select_info_delete_moderators)->find_many();
             foreach ($result as $cur_forum) {
                 $cur_moderators = $cur_forum['moderators'] != '' ? unserialize($cur_forum['moderators']) : array();
                 if (in_array($id, $cur_moderators)) {
                     unset($cur_moderators[$username]);
                     if (!empty($cur_moderators)) {
                         DB::for_table('forums')->where('id', $cur_forum['id'])->find_one()->set('moderators', serialize($cur_moderators))->save();
                     } else {
                         DB::for_table('forums')->where('id', $cur_forum['id'])->find_one()->set_expr('moderators', 'NULL')->save();
                     }
                 }
             }
         }
         // Delete any subscriptions
         DB::for_table('topic_subscriptions')->where('user_id', $id)->delete_many();
         DB::for_table('forum_subscriptions')->where('user_id', $id)->delete_many();
         // Remove him/her from the online list (if they happen to be logged in)
         DB::for_table('online')->where('user_id', $id)->delete_many();
         // Should we delete all posts made by this user?
         if ($this->request->post('delete_posts')) {
             require FEATHER_ROOT . 'include/search_idx.php';
             // Hold on, this could take some time!
             @set_time_limit(0);
             // Find all posts made by this user
             $select_user_posts = array('p.id', 'p.topic_id', 't.forum_id');
             $result = DB::for_table('posts')->table_alias('p')->select_many($select_user_posts)->inner_join('topics', array('t.id', '=', 'p.topic_id'), 't')->inner_join('forums', array('f.id', '=', 't.forum_id'), 'f')->where('p.poster_id', $id)->find_many();
             if ($result) {
                 foreach ($result as $cur_post) {
                     // Determine whether this post is the "topic post" or not
                     $result2 = DB::for_table('posts')->where('topic_id', $cur_post['topic_id'])->order_by('posted')->find_one_col('id');
                     if ($this->db->result($result2) == $cur_post['id']) {
                         delete_topic($cur_post['topic_id']);
                     } else {
                         delete_post($cur_post['id'], $cur_post['topic_id']);
                     }
                     update_forum($cur_post['forum_id']);
                 }
             }
         } else {
             // Set all his/her posts to guest
             DB::for_table('posts')->where_in('poster_id', '1')->update_many('poster_id', $id);
         }
         // Delete the user
         DB::for_table('users')->where('id', $id)->delete_many();
         // Delete user avatar
         delete_avatar($id);
         // Regenerate the users info cache
         if (!defined('FORUM_CACHE_FUNCTIONS_LOADED')) {
             require FEATHER_ROOT . 'include/cache.php';
         }
         generate_users_info_cache();
         if ($group_id == FEATHER_ADMIN) {
             generate_admins_cache();
         }
         redirect(get_base_url(), $lang_profile['User delete redirect']);
     }
 }