Vergleich inc/class_moderation.php - 1.8.4 - 1.8.23

  Keine Änderungen   Hinzugefügt   Modifiziert   Entfernt
Zeile 13Zeile 13
	/**
* Close one or more threads
*

	/**
* Close one or more threads
*

	 * @param array Thread IDs

	 * @param array|int $tids Thread ID(s)

	 * @return boolean true
*/
function close_threads($tids)

	 * @return boolean true
*/
function close_threads($tids)

Zeile 43Zeile 43
	/**
* Open one or more threads
*

	/**
* Open one or more threads
*

	 * @param int Thread IDs
* @return boolean true

	 * @param array|int $tids Thread ID(s)
* @return boolean

	 */

function open_threads($tids)

	 */

function open_threads($tids)

Zeile 79Zeile 79
	/**
* Stick one or more threads
*

	/**
* Stick one or more threads
*

	 * @param int Thread IDs
* @return boolean true

	 * @param array|int $tids Thread ID(s)
* @return boolean

	 */
function stick_threads($tids)
{

	 */
function stick_threads($tids)
{

Zeile 114Zeile 114
	/**
* Unstick one or more thread
*

	/**
* Unstick one or more thread
*

	 * @param int Thread IDs
* @return boolean true

	 * @param array|int $tids Thread ID(s)
* @return boolean

	 */
function unstick_threads($tids)

	 */
function unstick_threads($tids)

	{
global $db, $plugins;


	{
global $db, $plugins;


		if(!is_array($tids))
{
$tids = array($tids);

		if(!is_array($tids))
{
$tids = array($tids);

		}

if(empty($tids))

		}

if(empty($tids))

		{
return false;
}

		{
return false;
}

Zeile 137Zeile 137
		$plugins->run_hooks("class_moderation_unstick_threads", $tids);

$tid_list = implode(',', $tids);

		$plugins->run_hooks("class_moderation_unstick_threads", $tids);

$tid_list = implode(',', $tids);





		$unstickthread = array(
"sticky" => 0,
);

		$unstickthread = array(
"sticky" => 0,
);

Zeile 149Zeile 149
	/**
* Remove redirects that redirect to the specified thread
*

	/**
* Remove redirects that redirect to the specified thread
*

	 * @param int Thread ID of the thread
* @return boolean true

	 * @param int $tid Thread ID of the thread
* @return boolean

	 */
function remove_redirects($tid)
{
global $db, $plugins;

	 */
function remove_redirects($tid)
{
global $db, $plugins;





		$plugins->run_hooks("class_moderation_remove_redirects", $tid);

// Delete the redirects
$tid = (int)$tid;
if(empty($tid))

		$plugins->run_hooks("class_moderation_remove_redirects", $tid);

// Delete the redirects
$tid = (int)$tid;
if(empty($tid))

		{
return false;
}

		{
return false;
}


$query = $db->simple_select('threads', 'tid', "closed='moved|$tid'");
while($redirect_tid = $db->fetch_field($query, 'tid'))
{
$this->delete_thread($redirect_tid);


$query = $db->simple_select('threads', 'tid', "closed='moved|$tid'");
while($redirect_tid = $db->fetch_field($query, 'tid'))
{
$this->delete_thread($redirect_tid);

		}


		}


		return true;
}

/**
* Delete a thread
*

		return true;
}

/**
* Delete a thread
*

	 * @param int Thread ID of the thread
* @return boolean true

	 * @param int $tid Thread ID of the thread
* @return boolean

	 */
function delete_thread($tid)
{

	 */
function delete_thread($tid)
{

Zeile 221Zeile 221
			elseif($post['visible'] == -1 || $thread['visible'] == -1)
{
$num_deleted_posts++;

			elseif($post['visible'] == -1 || $thread['visible'] == -1)
{
$num_deleted_posts++;

			}

			}

			else
{
$num_approved_posts++;

			else
{
$num_approved_posts++;

Zeile 234Zeile 234
						$userposts[$post['uid']]['num_posts'] = 0;
}
++$userposts[$post['uid']]['num_posts'];

						$userposts[$post['uid']]['num_posts'] = 0;
}
++$userposts[$post['uid']]['num_posts'];

				}

				}

			}
}

if($forum['usethreadcounts'] != 0 && substr($thread['closed'], 0, 6) != 'moved|')
{
if(!isset($userposts[$thread['uid']]['num_threads']))

			}
}

if($forum['usethreadcounts'] != 0 && substr($thread['closed'], 0, 6) != 'moved|')
{
if(!isset($userposts[$thread['uid']]['num_threads']))

			{

			{

				$userposts[$thread['uid']]['num_threads'] = 0;
}
++$userposts[$thread['uid']]['num_threads'];

				$userposts[$thread['uid']]['num_threads'] = 0;
}
++$userposts[$thread['uid']]['num_threads'];

Zeile 269Zeile 269
			$db->delete_query("posts", "pid IN ($pids)");
$db->delete_query("attachments", "pid IN ($pids)");
$db->delete_query("reportedcontent", "id IN ($pids) AND (type = 'post' OR type = '')");

			$db->delete_query("posts", "pid IN ($pids)");
$db->delete_query("attachments", "pid IN ($pids)");
$db->delete_query("reportedcontent", "id IN ($pids) AND (type = 'post' OR type = '')");

		}

		}


// Delete threads, redirects, subscriptions, polls, and poll votes
$db->delete_query("threads", "tid='$tid'");


// Delete threads, redirects, subscriptions, polls, and poll votes
$db->delete_query("threads", "tid='$tid'");

Zeile 277Zeile 277
		while($redirect_tid = $db->fetch_field($query, 'tid'))
{
$this->delete_thread($redirect_tid);

		while($redirect_tid = $db->fetch_field($query, 'tid'))
{
$this->delete_thread($redirect_tid);

		}

		}

		$db->delete_query("threadsubscriptions", "tid='$tid'");
$db->delete_query("polls", "tid='$tid'");
$db->delete_query("pollvotes", "pid='".$thread['poll']."'");

		$db->delete_query("threadsubscriptions", "tid='$tid'");
$db->delete_query("polls", "tid='$tid'");
$db->delete_query("pollvotes", "pid='".$thread['poll']."'");

Zeile 299Zeile 299
			$updated_counters['deletedthreads'] = -1;
}
else

			$updated_counters['deletedthreads'] = -1;
}
else

		{

		{

			$updated_counters['unapprovedthreads'] = -1;
}


			$updated_counters['unapprovedthreads'] = -1;
}


Zeile 313Zeile 313
			elseif($thread['visible'] == -1)
{
$updated_counters['deletedposts'] = -1;

			elseif($thread['visible'] == -1)
{
$updated_counters['deletedposts'] = -1;

			}

			}

			else
{
$updated_counters['unapprovedposts'] = -1;

			else
{
$updated_counters['unapprovedposts'] = -1;

Zeile 323Zeile 323
		// Update forum count
update_forum_counters($thread['fid'], $updated_counters);
update_forum_lastpost($thread['fid']);

		// Update forum count
update_forum_counters($thread['fid'], $updated_counters);
update_forum_lastpost($thread['fid']);

 
		mark_reports($tid, 'thread');


$plugins->run_hooks("class_moderation_delete_thread", $tid);



$plugins->run_hooks("class_moderation_delete_thread", $tid);


Zeile 332Zeile 333
	/**
* Delete a poll
*

	/**
* Delete a poll
*

	 * @param int Poll id
* @return boolean true

	 * @param int $pid Poll id
* @return boolean

	 */
function delete_poll($pid)

	 */
function delete_poll($pid)

	{

	{

		global $db, $plugins;

$pid = (int)$pid;

		global $db, $plugins;

$pid = (int)$pid;

Zeile 345Zeile 346
		{
return false;
}

		{
return false;
}





		$plugins->run_hooks("class_moderation_delete_poll", $pid);

$db->delete_query("polls", "pid='$pid'");

		$plugins->run_hooks("class_moderation_delete_poll", $pid);

$db->delete_query("polls", "pid='$pid'");

Zeile 354Zeile 355
			'poll' => '0',
);
$db->update_query("threads", $pollarray, "poll='$pid'");

			'poll' => '0',
);
$db->update_query("threads", $pollarray, "poll='$pid'");





		return true;
}

/**
* Approve one or more threads
*

		return true;
}

/**
* Approve one or more threads
*

	 * @param array Thread IDs
* @return boolean true

	 * @param array|int $tids Thread ID(s)
* @return boolean

	 */
function approve_threads($tids)
{

	 */
function approve_threads($tids)
{

Zeile 502Zeile 503
	/**
* Unapprove one or more threads
*

	/**
* Unapprove one or more threads
*

	 * @param array Thread IDs
* @return boolean true

	 * @param array|int $tids Thread ID(s)
* @return boolean

	 */
function unapprove_threads($tids)

	 */
function unapprove_threads($tids)

	{
global $db, $cache, $plugins;


	{
global $db, $cache, $plugins;


		if(!is_array($tids))
{
$tids = array($tids);
}

if(empty($tids))

		if(!is_array($tids))
{
$tids = array($tids);
}

if(empty($tids))

		{

		{

			return false;
}

			return false;
}





		// Make sure we only have valid values
$tids = array_map('intval', $tids);

		// Make sure we only have valid values
$tids = array_map('intval', $tids);





		$tid_list = implode(',', $tids);
$tid_moved_list = "";
$comma = "";

		$tid_list = implode(',', $tids);
$tid_moved_list = "";
$comma = "";

Zeile 541Zeile 542
			if($thread['visible'] == 1 || $thread['visible'] == -1)
{
if(!isset($forum_counters[$forum['fid']]))

			if($thread['visible'] == 1 || $thread['visible'] == -1)
{
if(!isset($forum_counters[$forum['fid']]))

				{

				{

					$forum_counters[$forum['fid']] = array(
'num_threads' => 0,
'num_posts' => 0,

					$forum_counters[$forum['fid']] = array(
'num_threads' => 0,
'num_posts' => 0,

Zeile 561Zeile 562
				}

++$forum_counters[$forum['fid']]['num_unapprovedthreads'];

				}

++$forum_counters[$forum['fid']]['num_unapprovedthreads'];

				$forum_counters[$forum['fid']]['num_unapprovedposts'] += $thread['replies']+$thread['deletedposts']+1;

				$forum_counters[$forum['fid']]['num_unapprovedposts'] += $thread['replies']+$thread['deletedposts']+1;


if($thread['visible'] == 1)
{


if($thread['visible'] == 1)
{

Zeile 593Zeile 594

}
$posts_to_unapprove[] = $thread['firstpost'];


}
$posts_to_unapprove[] = $thread['firstpost'];

		}

		}


$approve = array(
"visible" => 0


$approve = array(
"visible" => 0

Zeile 613Zeile 614
		if(!empty($posts_to_unapprove))
{
$db->update_query("posts", $approve, "pid IN (".implode(',', $posts_to_unapprove).")");

		if(!empty($posts_to_unapprove))
{
$db->update_query("posts", $approve, "pid IN (".implode(',', $posts_to_unapprove).")");

		}

$plugins->run_hooks("class_moderation_unapprove_threads", $tids);


		}

$plugins->run_hooks("class_moderation_unapprove_threads", $tids);


		if(!empty($forum_counters))
{
foreach($forum_counters as $fid => $counters)

		if(!empty($forum_counters))
{
foreach($forum_counters as $fid => $counters)

Zeile 653Zeile 654
	/**
* Delete a specific post
*

	/**
* Delete a specific post
*

	 * @param int Post ID
* @return boolean true

	 * @param int $pid Post ID
* @return boolean

	 */
function delete_post($pid)
{

	 */
function delete_post($pid)
{

Zeile 671Zeile 672
		");
$post = $db->fetch_array($query);
if(!$post)

		");
$post = $db->fetch_array($query);
if(!$post)

		{
return false;

		{
return false;

		}

$forum = get_forum($post['fid']);

		}

$forum = get_forum($post['fid']);

Zeile 685Zeile 686
		if(!function_exists("remove_attachments"))
{
require MYBB_ROOT."inc/functions_upload.php";

		if(!function_exists("remove_attachments"))
{
require MYBB_ROOT."inc/functions_upload.php";

		}


		}


		// Remove attachments
remove_attachments($pid);


		// Remove attachments
remove_attachments($pid);


Zeile 698Zeile 699

// Update unapproved post count
if($post['visible'] == 0)


// Update unapproved post count
if($post['visible'] == 0)

		{
$update_array = array(
"unapprovedposts" => "-1"

		{
$update_array = array(
"unapprovedposts" => "-1"

			);
}
elseif($post['visible'] == -1)
{
$update_array = array(
"deletedposts" => "-1"

			);
}
elseif($post['visible'] == -1)
{
$update_array = array(
"deletedposts" => "-1"

			);

			);

		}
else
{

		}
else
{

Zeile 726Zeile 727
		{
$update_array = array(
"unapprovedposts" => "-1"

		{
$update_array = array(
"unapprovedposts" => "-1"

			);
}

			);
}

		elseif($post['visible'] == -1 || $post['threadvisible'] == -1)
{
$update_array = array(

		elseif($post['visible'] == -1 || $post['threadvisible'] == -1)
{
$update_array = array(

Zeile 750Zeile 751
	/**
* Merge posts within thread
*

	/**
* Merge posts within thread
*

	 * @param array Post IDs to be merged
* @param int Thread ID (Set to 0 if posts from multiple threads are
* selected)

	 * @param array $pids Post IDs to be merged
* @param int $tid Thread ID (Set to 0 if posts from multiple threads are selected)


	 * @return int ID of the post into which all other posts are merged
*/

	 * @return int ID of the post into which all other posts are merged
*/

	function merge_posts($pids, $tid=0, $sep="new_line")

	function merge_posts($pids=array(), $tid=0, $sep="new_line")

	{
global $db, $plugins;


	{
global $db, $plugins;


Zeile 802Zeile 802
				$fid = $post['fid'];
$mastertid = $post['tid'];
$first = 0;

				$fid = $post['fid'];
$mastertid = $post['tid'];
$first = 0;

 
				$visible = $post['visible'];

			}
else
{

			}
else
{

Zeile 845Zeile 846
					{
--$user_counters[$post['uid']]['num_threads'];
}

					{
--$user_counters[$post['uid']]['num_threads'];
}

 
					$thread_counters[$post['tid']]['attachmentcount'] -= $post['attachmentcount'];

				}
elseif($post['visible'] == 0)
{

				}
elseif($post['visible'] == 0)
{

Zeile 856Zeile 858
					// Subtract 1 deleted post from post's thread
--$thread_counters[$post['tid']]['deletedposts'];
}

					// Subtract 1 deleted post from post's thread
--$thread_counters[$post['tid']]['deletedposts'];
}

				$thread_counters[$post['tid']]['attachmentcount'] -= $post['attachmentcount'];

 

// Subtract 1 post from post's forum
if($post['threadvisible'] == 1 && $post['visible'] == 1)


// Subtract 1 post from post's forum
if($post['threadvisible'] == 1 && $post['visible'] == 1)

Zeile 870Zeile 871
				else
{
--$forum_counters[$post['fid']]['deletedposts'];

				else
{
--$forum_counters[$post['fid']]['deletedposts'];

 
				}

// Add attachment count to thread
if($visible == 1)
{
$thread_counters[$mastertid]['attachmentcount'] += $post['attachmentcount'];

				}
}
}

				}
}
}

Zeile 953Zeile 960
					'unapprovedposts' => signed($counters['unapprovedposts']),
'deletedposts' => signed($counters['deletedposts']),
'attachmentcount' => signed($counters['attachmentcount'])

					'unapprovedposts' => signed($counters['unapprovedposts']),
'deletedposts' => signed($counters['deletedposts']),
'attachmentcount' => signed($counters['attachmentcount'])

				);
update_thread_counters($tid, $counters);
update_last_post($tid);
}
}

if(!empty($forum_counters))
{
foreach($forum_counters as $fid => $counters)

				);
update_thread_counters($tid, $counters);
update_last_post($tid);
}
}

if(!empty($forum_counters))
{
foreach($forum_counters as $fid => $counters)

			{
$updated_forum_stats = array(
'posts' => signed($counters['num_posts']),

			{
$updated_forum_stats = array(
'posts' => signed($counters['num_posts']),

Zeile 991Zeile 998
	/**
* Move/copy thread
*

	/**
* Move/copy thread
*

	 * @param int Thread to be moved
* @param int Destination forum
* @param string Method of movement (redirect, copy, move)
* @param int Expiry timestamp for redirect

	 * @param int $tid Thread to be moved
* @param int $new_fid Destination forum
* @param string $method Method of movement (redirect, copy, move)
* @param int $redirect_expire Expiry timestamp for redirect

	 * @return int Thread ID
*/
function move_thread($tid, $new_fid, $method="redirect", $redirect_expire=0)

	 * @return int Thread ID
*/
function move_thread($tid, $new_fid, $method="redirect", $redirect_expire=0)

Zeile 1078Zeile 1085

$threadarray = array(
"fid" => $thread['fid'],


$threadarray = array(
"fid" => $thread['fid'],

					"subject" => $db->escape_string($thread['subject']),

					"subject" => $db->escape_string($thread['subject']),

					"icon" => $thread['icon'],
"uid" => $thread['uid'],
"username" => $db->escape_string($thread['username']),

					"icon" => $thread['icon'],
"uid" => $thread['uid'],
"username" => $db->escape_string($thread['username']),

Zeile 1224Zeile 1231
							'pid' => $pid,
'uid' => $attachment['uid'],
'filename' => $db->escape_string($attachment['filename']),

							'pid' => $pid,
'uid' => $attachment['uid'],
'filename' => $db->escape_string($attachment['filename']),

							'filetype' => $attachment['filetype'],

							'filetype' => $db->escape_string($attachment['filetype']),

							'filesize' => $attachment['filesize'],

							'filesize' => $attachment['filesize'],

							'attachname' => $attachment['attachname'],

							'attachname' => $db->escape_string($attachment['attachname']),

							'downloads' => $attachment['downloads'],
'visible' => $attachment['visible'],

							'downloads' => $attachment['downloads'],
'visible' => $attachment['visible'],

							'thumbnail' => $attachment['thumbnail']

							'thumbnail' => $db->escape_string($attachment['thumbnail'])

						);
$new_aid = $db->insert_query("attachments", $attachment_array);


						);
$new_aid = $db->insert_query("attachments", $attachment_array);


Zeile 1250Zeile 1257
			case "move": // plain move thread
$arguments = array("tid" => $tid, "new_fid" => $new_fid);
$plugins->run_hooks("class_moderation_move_simple", $arguments);

			case "move": // plain move thread
$arguments = array("tid" => $tid, "new_fid" => $new_fid);
$plugins->run_hooks("class_moderation_move_simple", $arguments);





				$sqlarray = array(
"fid" => $new_fid,
);
$db->update_query("threads", $sqlarray, "tid='$tid'");
$db->update_query("posts", $sqlarray, "tid='$tid'");

				$sqlarray = array(
"fid" => $new_fid,
);
$db->update_query("threads", $sqlarray, "tid='$tid'");
$db->update_query("posts", $sqlarray, "tid='$tid'");





				// If the thread has a prefix and the destination forum doesn't accept that prefix, remove the prefix
if($thread['prefix'] != 0)
{

				// If the thread has a prefix and the destination forum doesn't accept that prefix, remove the prefix
if($thread['prefix'] != 0)
{

Zeile 1276Zeile 1283
						);
$db->update_query("threads", $sqlarray, "tid='$tid'");
}

						);
$db->update_query("threads", $sqlarray, "tid='$tid'");
}

				}


				}


				// If we're moving back to a forum where we left a redirect, delete the rediect
$query = $db->simple_select("threads", "tid", "closed LIKE 'moved|".(int)$tid."' AND fid='".(int)$new_fid."'");
while($redirect_tid = $db->fetch_field($query, 'tid'))

				// If we're moving back to a forum where we left a redirect, delete the rediect
$query = $db->simple_select("threads", "tid", "closed LIKE 'moved|".(int)$tid."' AND fid='".(int)$new_fid."'");
while($redirect_tid = $db->fetch_field($query, 'tid'))

Zeile 1306Zeile 1313
			if(($forum['usepostcounts'] == 0 || $method == 'copy') && $newforum['usepostcounts'] == 1 && $thread['visible'] == 1)
{
$pcount += $posters['posts'];

			if(($forum['usepostcounts'] == 0 || $method == 'copy') && $newforum['usepostcounts'] == 1 && $thread['visible'] == 1)
{
$pcount += $posters['posts'];

			}

			}


if($pcount > 0)
{


if($pcount > 0)
{

Zeile 1388Zeile 1395
	/**
* Merge one thread into another
*

	/**
* Merge one thread into another
*

	 * @param int Thread that will be merged into destination
* @param int Destination thread
* @param string New thread subject
* @return boolean true

	 * @param int $mergetid Thread that will be merged into destination
* @param int $tid Destination thread
* @param string $subject New thread subject
* @return boolean

	 */
function merge_threads($mergetid, $tid, $subject)
{

	 */
function merge_threads($mergetid, $tid, $subject)
{

Zeile 1410Zeile 1417
		}

if(!$mergethread || !$thread)

		}

if(!$mergethread || !$thread)

		{

		{

			return false;
}


			return false;
}


Zeile 1422Zeile 1429
			$threadarray['poll'] = $mergethread['poll'];
$sqlarray = array(
"tid" => $tid,

			$threadarray['poll'] = $mergethread['poll'];
$sqlarray = array(
"tid" => $tid,

			);

			);

			$db->update_query("polls", $sqlarray, "tid='".(int)$mergethread['tid']."'");
}
// Both the old and the new thread have polls? Remove one

			$db->update_query("polls", $sqlarray, "tid='".(int)$mergethread['tid']."'");
}
// Both the old and the new thread have polls? Remove one

Zeile 1454Zeile 1461
				elseif($thread['visible'] == 1 && $forum_cache[$thread['fid']]['usepostcounts'] == 1)
{
$user_posts[$post['uid']]['postnum'] += $post['postnum'];

				elseif($thread['visible'] == 1 && $forum_cache[$thread['fid']]['usepostcounts'] == 1)
{
$user_posts[$post['uid']]['postnum'] += $post['postnum'];

				}
}
}


				}
}
}


		$sqlarray = array(
"tid" => $tid,
"fid" => $thread['fid'],

		$sqlarray = array(
"tid" => $tid,
"fid" => $thread['fid'],

Zeile 1508Zeile 1515
			}

if(!empty($update_users))

			}

if(!empty($update_users))

			{

			{

				$update_array = array(
"tid" => $tid
);

				$update_array = array(
"tid" => $tid
);





				$update_users = implode(",", $update_users);
$db->update_query("threadsubscriptions", $update_array, "tid = '{$mergetid}' AND uid IN ({$update_users})");
}

				$update_users = implode(",", $update_users);
$db->update_query("threadsubscriptions", $update_array, "tid = '{$mergetid}' AND uid IN ({$update_users})");
}

Zeile 1520Zeile 1527

// Remove source thread subscriptions
$db->delete_query("threadsubscriptions", "tid = '{$mergetid}'");


// Remove source thread subscriptions
$db->delete_query("threadsubscriptions", "tid = '{$mergetid}'");





		$arguments = array("mergetid" => $mergetid, "tid" => $tid, "subject" => $subject);
$plugins->run_hooks("class_moderation_merge_threads", $arguments);

$this->delete_thread($mergetid);

		$arguments = array("mergetid" => $mergetid, "tid" => $tid, "subject" => $subject);
$plugins->run_hooks("class_moderation_merge_threads", $arguments);

$this->delete_thread($mergetid);





		// Add the former first post
if($mergethread['visible'] == 1)
{

		// Add the former first post
if($mergethread['visible'] == 1)
{

Zeile 1560Zeile 1567
		if($new_firstpost['pid'] != $thread['firstpost'])
{
update_first_post($thread['tid']);

		if($new_firstpost['pid'] != $thread['firstpost'])
{
update_first_post($thread['tid']);

		}

// Subtract merged thread from user counter
if($mergethread['visible'] == 1 && $forum_cache[$mergethread['fid']]['usethreadcounts'] == 1)
{
if(!isset($user_posts[$mergethread['uid']]['threadnum']))
{
$user_posts[$mergethread['uid']]['threadnum'] = 0;
}
--$user_posts[$mergethread['uid']]['threadnum'];

 
		}

// Update thread count if thread has a new firstpost and is visible

		}

// Update thread count if thread has a new firstpost and is visible

Zeile 1752Zeile 1749
			"replies" => "+{$mergethread['replies']}",
"attachmentcount" => "+{$mergethread['attachmentcount']}",
"unapprovedposts" => "+{$mergethread['unapprovedposts']}",

			"replies" => "+{$mergethread['replies']}",
"attachmentcount" => "+{$mergethread['attachmentcount']}",
"unapprovedposts" => "+{$mergethread['unapprovedposts']}",

			"deletedposts" => "+{$mergethread['unapprovedposts']}",

 
			"deletedposts" => "+{$mergethread['deletedposts']}"
);
update_thread_counters($tid, $updated_stats);

			"deletedposts" => "+{$mergethread['deletedposts']}"
);
update_thread_counters($tid, $updated_stats);

Zeile 1766Zeile 1762
	/**
* Split posts into a new/existing thread
*

	/**
* Split posts into a new/existing thread
*

	 * @param array PIDs of posts to split
* @param int Original thread ID (this is only used as a base for the new

	 * @param array $pids PIDs of posts to split
* @param int $tid Original thread ID (this is only used as a base for the new

	 * thread; it can be set to 0 when the posts specified are coming from more
* than 1 thread)

	 * thread; it can be set to 0 when the posts specified are coming from more
* than 1 thread)

	 * @param int Destination forum
* @param string New thread subject
* @param int TID if moving into existing thread
* @return int New thread ID

	 * @param int $moveto Destination forum
* @param string $newsubject New thread subject
* @param int $destination_tid TID if moving into existing thread
* @return int|bool New thread ID or false on failure

	 */
function split_posts($pids, $tid, $moveto, $newsubject, $destination_tid=0)
{

	 */
function split_posts($pids, $tid, $moveto, $newsubject, $destination_tid=0)
{

Zeile 1842Zeile 1838
						'threadnum' => 0
);
}

						'threadnum' => 0
);
}

				// Subtract thread from old thread opener
--$user_counters[$newthread['uid']]['threadnum'];

				++$user_counters[$newthread['uid']]['threadnum'];


			}
elseif($visible == -1)
{

			}
elseif($visible == -1)
{

Zeile 2213Zeile 2208
	/**
* Move multiple threads to new forum
*

	/**
* Move multiple threads to new forum
*

	 * @param array Thread IDs
* @param int Destination forum
* @return boolean true



	 * @param array $tids Thread IDs
* @param int $moveto Destination forum
* @return boolean
*
* @deprecated Iterate over move_thread instead

	 */
function move_threads($tids, $moveto)
{
global $db, $plugins;

	 */
function move_threads($tids, $moveto)
{
global $db, $plugins;





		// Make sure we only have valid values
$tids = array_map('intval', $tids);

		// Make sure we only have valid values
$tids = array_map('intval', $tids);





		$tid_list = implode(',', $tids);

		$tid_list = implode(',', $tids);





		$moveto = (int)$moveto;

		$moveto = (int)$moveto;





		$newforum = get_forum($moveto);

		$newforum = get_forum($moveto);





		if(empty($tids) || !$newforum)
{
return false;

		if(empty($tids) || !$newforum)
{
return false;

Zeile 2254Zeile 2251
				);
}


				);
}


			if(!isset($user_counters[$thread['uid']]['num_threads']))

			if(!isset($user_counters[$thread['uid']]))

			{

			{

				$user_counters[$thread['uid']]['num_threads'] = 0;




				$user_counters[$thread['uid']] = array(
'num_posts' => 0,
'num_threads' => 0
);

			}

if($thread['visible'] == 1)

			}

if($thread['visible'] == 1)

Zeile 2290Zeile 2290
				");
while($posters = $db->fetch_array($query1))
{

				");
while($posters = $db->fetch_array($query1))
{

					if(!isset($user_counters[$posters['uid']]['num_posts']))
{
$user_counters[$posters['uid']]['num_posts'] = 0;




					if(!isset($user_counters[$posters['uid']]))
{
$user_counters[$posters['uid']] = array(
'num_posts' => 0,
'num_threads' => 0
);

					}

if($newforum['usepostcounts'] != 0 && $forum['usepostcounts'] == 0)

					}

if($newforum['usepostcounts'] != 0 && $forum['usepostcounts'] == 0)

Zeile 2322Zeile 2325

$forum_counters[$thread['fid']]['unapprovedthreads']++;
++$total_unapproved_threads;


$forum_counters[$thread['fid']]['unapprovedthreads']++;
++$total_unapproved_threads;

			}

			}


// Remove old redirects
$redirects_query = $db->simple_select('threads', 'tid', "closed='moved|{$thread['tid']}' AND fid='$moveto'");


// Remove old redirects
$redirects_query = $db->simple_select('threads', 'tid', "closed='moved|{$thread['tid']}' AND fid='$moveto'");

Zeile 2331Zeile 2334
				$this->delete_thread($redirect_tid);
}
}

				$this->delete_thread($redirect_tid);
}
}





		$sqlarray = array(
"fid" => $moveto,
);
$db->update_query("threads", $sqlarray, "tid IN ($tid_list)");
$db->update_query("posts", $sqlarray, "tid IN ($tid_list)");

		$sqlarray = array(
"fid" => $moveto,
);
$db->update_query("threads", $sqlarray, "tid IN ($tid_list)");
$db->update_query("posts", $sqlarray, "tid IN ($tid_list)");





		// If any of the thread has a prefix and the destination forum doesn't accept that prefix, remove the prefix
$query = $db->simple_select("threads", "tid, prefix", "tid IN ($tid_list) AND prefix != 0");
while($thread = $db->fetch_array($query))

		// If any of the thread has a prefix and the destination forum doesn't accept that prefix, remove the prefix
$query = $db->simple_select("threads", "tid, prefix", "tid IN ($tid_list) AND prefix != 0");
while($thread = $db->fetch_array($query))

Zeile 2414Zeile 2417
	/**
* Approve multiple posts
*

	/**
* Approve multiple posts
*

	 * @param array PIDs
* @return boolean true

	 * @param array $pids PIDs
* @return boolean

	 */
function approve_posts($pids)
{

	 */
function approve_posts($pids)
{

Zeile 2450Zeile 2453
			FROM ".TABLE_PREFIX."posts p
LEFT JOIN ".TABLE_PREFIX."threads t ON (t.tid=p.tid)
WHERE p.pid IN ($pid_list) AND p.visible = '0' AND t.firstpost = p.pid AND t.visible = 0

			FROM ".TABLE_PREFIX."posts p
LEFT JOIN ".TABLE_PREFIX."threads t ON (t.tid=p.tid)
WHERE p.pid IN ($pid_list) AND p.visible = '0' AND t.firstpost = p.pid AND t.visible = 0

		");
while($post = $db->fetch_array($query))
{

		");
while($post = $db->fetch_array($query))
{

			// This is the first post in the thread so we're approving the whole thread.
$threads_to_update[] = $post['tid'];

			// This is the first post in the thread so we're approving the whole thread.
$threads_to_update[] = $post['tid'];

		}


		}


		if(!empty($threads_to_update))
{
$this->approve_threads($threads_to_update);

		if(!empty($threads_to_update))
{
$this->approve_threads($threads_to_update);

		}

$thread_counters = $forum_counters = $user_counters = array();


		}

$thread_counters = $forum_counters = $user_counters = array();


		$query = $db->query("
SELECT p.pid, p.tid, p.fid, p.uid, t.visible AS threadvisible
FROM ".TABLE_PREFIX."posts p

		$query = $db->query("
SELECT p.pid, p.tid, p.fid, p.uid, t.visible AS threadvisible
FROM ".TABLE_PREFIX."posts p

Zeile 2506Zeile 2509
					$user_counters[$post['uid']] = 0;
}
++$user_counters[$post['uid']];

					$user_counters[$post['uid']] = 0;
}
++$user_counters[$post['uid']];

			}
}


			}
}


		if(empty($pids) && empty($threads_to_update))
{
return false;
}

if(!empty($pids))

		if(empty($pids) && empty($threads_to_update))
{
return false;
}

if(!empty($pids))

		{

		{

			$where = "pid IN (".implode(',', $pids).")";
$db->update_query("posts", $approve, $where);
}

			$where = "pid IN (".implode(',', $pids).")";
$db->update_query("posts", $approve, $where);
}

Zeile 2529Zeile 2532
				$counters_update = array(
"unapprovedposts" => "-".$counters['replies'],
"replies" => "+".$counters['replies']

				$counters_update = array(
"unapprovedposts" => "-".$counters['replies'],
"replies" => "+".$counters['replies']

				);

				);

				update_thread_counters($tid, $counters_update);
update_last_post($tid);
}
}

if(!empty($forum_counters))

				update_thread_counters($tid, $counters_update);
update_last_post($tid);
}
}

if(!empty($forum_counters))

		{

		{

			foreach($forum_counters as $fid => $counters)
{
$updated_forum_stats = array(

			foreach($forum_counters as $fid => $counters)
{
$updated_forum_stats = array(

Zeile 2562Zeile 2565
	/**
* Unapprove multiple posts
*

	/**
* Unapprove multiple posts
*

	 * @param array PIDs
* @return boolean true

	 * @param array $pids PIDs
* @return boolean

	 */
function unapprove_posts($pids)

	 */
function unapprove_posts($pids)

	{

	{

		global $db, $cache, $plugins;

if(empty($pids))

		global $db, $cache, $plugins;

if(empty($pids))

Zeile 2678Zeile 2681
		}

if(empty($pids) && empty($threads_to_update))

		}

if(empty($pids) && empty($threads_to_update))

		{
return false;

		{
return false;

		}

if(!empty($pids))
{
$where = "pid IN (".implode(',', $pids).")";
$db->update_query("posts", $approve, $where);

		}

if(!empty($pids))
{
$where = "pid IN (".implode(',', $pids).")";
$db->update_query("posts", $approve, $where);

		}


		}


		$plugins->run_hooks("class_moderation_unapprove_posts", $pids);

if(!empty($thread_counters))
{
foreach($thread_counters as $tid => $counters)

		$plugins->run_hooks("class_moderation_unapprove_posts", $pids);

if(!empty($thread_counters))
{
foreach($thread_counters as $tid => $counters)

			{

			{

				$counters_update = array(
"unapprovedposts" => "+".$counters['unapprovedposts'],
"replies" => "-".$counters['replies'],

				$counters_update = array(
"unapprovedposts" => "+".$counters['unapprovedposts'],
"replies" => "-".$counters['replies'],

Zeile 2733Zeile 2736
	/**
* Change thread subject
*

	/**
* Change thread subject
*

	 * @param mixed Thread ID(s)
* @param string Format of new subject (with {subject})
* @return boolean true

	 * @param int|array $tids Thread ID(s)
* @param string $format Format of new subject (with {subject})
* @return boolean

	 */
function change_thread_subject($tids, $format)

	 */
function change_thread_subject($tids, $format)

	{

	{

		global $db, $mybb, $plugins;

// Get tids into list
if(!is_array($tids))
{
$tids = array($tids);

		global $db, $mybb, $plugins;

// Get tids into list
if(!is_array($tids))
{
$tids = array($tids);

		}


		}


		// Make sure we only have valid values
$tids = array_map('intval', $tids);

if(empty($tids))

		// Make sure we only have valid values
$tids = array_map('intval', $tids);

if(empty($tids))

		{
return false;

		{
return false;

		}

$tid_list = implode(',', $tids);

		}

$tid_list = implode(',', $tids);

Zeile 2773Zeile 2776

$arguments = array("tids" => $tids, "format" => $format);
$plugins->run_hooks("class_moderation_change_thread_subject", $arguments);


$arguments = array("tids" => $tids, "format" => $format);
$plugins->run_hooks("class_moderation_change_thread_subject", $arguments);





		return true;
}

/**
* Add thread expiry
*

		return true;
}

/**
* Add thread expiry
*

	 * @param int Thread ID
* @param int Timestamp when the thread is deleted
* @return boolean true

	 * @param int $tid Thread ID
* @param int $deletetime Timestamp when the thread is deleted
* @return boolean

	 */
function expire_thread($tid, $deletetime)
{

	 */
function expire_thread($tid, $deletetime)
{

Zeile 2797Zeile 2800

$update_thread = array(
"deletetime" => (int)$deletetime


$update_thread = array(
"deletetime" => (int)$deletetime

		);

		);

		$db->update_query("threads", $update_thread, "tid='{$tid}'");

		$db->update_query("threads", $update_thread, "tid='{$tid}'");





		$arguments = array("tid" => $tid, "deletetime" => $deletetime);
$plugins->run_hooks("class_moderation_expire_thread", $arguments);

		$arguments = array("tid" => $tid, "deletetime" => $deletetime);
$plugins->run_hooks("class_moderation_expire_thread", $arguments);


return true;


return true;

	}

/**
* Toggle post visibility (approved/unapproved)

	}

/**
* Toggle post visibility (approved/unapproved)

	 *
* @param array Post IDs
* @return boolean true

	 *
* @param array $pids Post IDs
* @return boolean true

	 */
function toggle_post_visibility($pids)

	 */
function toggle_post_visibility($pids)

	{
global $db;

// Make sure we only have valid values
$pids = array_map('intval', $pids);

	{
global $db;

// Make sure we only have valid values
$pids = array_map('intval', $pids);


$pid_list = implode(',', $pids);
$query = $db->simple_select("posts", 'pid, visible', "pid IN ($pid_list)");


$pid_list = implode(',', $pids);
$query = $db->simple_select("posts", 'pid, visible', "pid IN ($pid_list)");

Zeile 2842Zeile 2845
		}
return true;
}

		}
return true;
}





	/**
* Toggle post visibility (deleted/restored)
*

	/**
* Toggle post visibility (deleted/restored)
*

	 * @param array Post IDs

	 * @param array $pids Post IDs

	 * @return boolean true
*/
function toggle_post_softdelete($pids)

	 * @return boolean true
*/
function toggle_post_softdelete($pids)

	{
global $db;

// Make sure we only have valid values
$pids = array_map('intval', $pids);

$pid_list = implode(',', $pids);

	{
global $db;

// Make sure we only have valid values
$pids = array_map('intval', $pids);

$pid_list = implode(',', $pids);

		$query = $db->simple_select("posts", 'pid, visible', "pid IN ($pid_list)");
while($post = $db->fetch_array($query))
{

		$query = $db->simple_select("posts", 'pid, visible', "pid IN ($pid_list)");
while($post = $db->fetch_array($query))
{

Zeile 2883Zeile 2886
	/**
* Toggle thread visibility (approved/unapproved)
*

	/**
* Toggle thread visibility (approved/unapproved)
*

	 * @param array Thread IDs
* @param int Forum ID

	 * @param array $tids Thread IDs
* @param int $fid Forum ID

	 * @return boolean true
*/
function toggle_thread_visibility($tids, $fid)

	 * @return boolean true
*/
function toggle_thread_visibility($tids, $fid)

Zeile 2922Zeile 2925
	/**
* Toggle thread visibility (deleted/restored)
*

	/**
* Toggle thread visibility (deleted/restored)
*

	 * @param array Thread IDs
* @param int Forum ID

	 * @param array $tids Thread IDs


	 * @return boolean true
*/

	 * @return boolean true
*/

	function toggle_thread_softdelete($tids, $fid)

	function toggle_thread_softdelete($tids)

	{
global $db;

// Make sure we only have valid values
$tids = array_map('intval', $tids);

	{
global $db;

// Make sure we only have valid values
$tids = array_map('intval', $tids);

		$fid = (int)$fid;

 

$tid_list = implode(',', $tids);
$query = $db->simple_select("threads", 'tid, visible', "tid IN ($tid_list)");


$tid_list = implode(',', $tids);
$query = $db->simple_select("threads", 'tid, visible', "tid IN ($tid_list)");

Zeile 2949Zeile 2950
		}
if(is_array($delete))
{

		}
if(is_array($delete))
{

			$this->soft_delete_threads($delete, $fid);

			$this->soft_delete_threads($delete);

		}
if(is_array($restore))
{

		}
if(is_array($restore))
{

			$this->restore_threads($restore, $fid);

			$this->restore_threads($restore);

		}
return true;
}

		}
return true;
}

Zeile 2961Zeile 2962
	/**
* Toggle threads open/closed
*

	/**
* Toggle threads open/closed
*

	 * @param array Thread IDs

	 * @param array $tids Thread IDs

	 * @return boolean true
*/
function toggle_thread_status($tids)

	 * @return boolean true
*/
function toggle_thread_status($tids)

Zeile 2998Zeile 2999
	/**
* Toggle threads stick/unstick
*

	/**
* Toggle threads stick/unstick
*

	 * @param array Thread IDs

	 * @param array $tids Thread IDs

	 * @return boolean true
*/
function toggle_thread_importance($tids)

	 * @return boolean true
*/
function toggle_thread_importance($tids)

Zeile 3031Zeile 3032
		if(!empty($unstick))
{
$this->unstick_threads($unstick);

		if(!empty($unstick))
{
$this->unstick_threads($unstick);

		}
return true;
}


		}
return true;
}


	/**
* Remove thread subscriptions (from one or multiple threads in the same forum)
*

	/**
* Remove thread subscriptions (from one or multiple threads in the same forum)
*

	 * @param int $tids Thread ID, or an array of thread IDs from the same forum.

	 * @param int|array $tids Thread ID, or an array of thread IDs from the same forum.

	 * @param boolean $all True (default) to delete all subscriptions, false to only delete subscriptions from users with no permission to read the thread
* @param int $fid (Only applies if $all is false) The forum ID of the thread

	 * @param boolean $all True (default) to delete all subscriptions, false to only delete subscriptions from users with no permission to read the thread
* @param int $fid (Only applies if $all is false) The forum ID of the thread

	 * @return boolean true

	 * @return boolean

	 */
function remove_thread_subscriptions($tids, $all = true, $fid = 0)
{

	 */
function remove_thread_subscriptions($tids, $all = true, $fid = 0)
{

Zeile 3071Zeile 3072
			$forum_parentlist = get_parent_list($fid);
$query = $db->simple_select("forumpermissions", "gid", "fid IN ({$forum_parentlist}) AND (canview=0 OR canviewthreads=0)");
$groups = array();

			$forum_parentlist = get_parent_list($fid);
$query = $db->simple_select("forumpermissions", "gid", "fid IN ({$forum_parentlist}) AND (canview=0 OR canviewthreads=0)");
$groups = array();

 
			$additional_groups = '';

			while($group = $db->fetch_array($query))
{
$groups[] = $group['gid'];

			while($group = $db->fetch_array($query))
{
$groups[] = $group['gid'];

Zeile 3116Zeile 3118
	/**
* Apply a thread prefix (to one or multiple threads in the same forum)
*

	/**
* Apply a thread prefix (to one or multiple threads in the same forum)
*

	 * @param int $tids Thread ID, or an array of thread IDs from the same forum.

	 * @param int|array $tids Thread ID, or an array of thread IDs from the same forum.

	 * @param int $prefix Prefix ID to apply to the threads

	 * @param int $prefix Prefix ID to apply to the threads

 
	 * @return bool

	 */
function apply_thread_prefix($tids, $prefix = 0)
{

	 */
function apply_thread_prefix($tids, $prefix = 0)
{

Zeile 3151Zeile 3154
	/**
* Soft delete multiple posts
*

	/**
* Soft delete multiple posts
*

	 * @param array PIDs
* @return boolean true

	 * @param array $pids PIDs
* @return boolean

	 */
function soft_delete_posts($pids)
{

	 */
function soft_delete_posts($pids)
{

Zeile 3262Zeile 3265
					$user_counters[$post['uid']] = 0;
}
--$user_counters[$post['uid']];

					$user_counters[$post['uid']] = 0;
}
--$user_counters[$post['uid']];

			}
}


			}
}


		if(empty($pids) && empty($threads_to_update))
{
return false;
}

if(!empty($pids))

		if(empty($pids) && empty($threads_to_update))
{
return false;
}

if(!empty($pids))

		{

		{

			$where = "pid IN (".implode(',', $pids).")";
$db->update_query("posts", $update, $where);

			$where = "pid IN (".implode(',', $pids).")";
$db->update_query("posts", $update, $where);

 
			mark_reports($pids, "posts");

		}

$plugins->run_hooks("class_moderation_soft_delete_posts", $pids);

		}

$plugins->run_hooks("class_moderation_soft_delete_posts", $pids);

Zeile 3290Zeile 3294

update_thread_counters($tid, $counters_update);
update_last_post($tid);


update_thread_counters($tid, $counters_update);
update_last_post($tid);

			}
}


			}
}


		if(is_array($forum_counters))
{
foreach($forum_counters as $fid => $counters)

		if(is_array($forum_counters))
{
foreach($forum_counters as $fid => $counters)

Zeile 3304Zeile 3308
				);
update_forum_counters($fid, $updated_forum_stats);
update_forum_lastpost($fid);

				);
update_forum_counters($fid, $updated_forum_stats);
update_forum_lastpost($fid);

			}
}


			}
}


		if(!empty($user_counters))
{
foreach($user_counters as $uid => $counter)

		if(!empty($user_counters))
{
foreach($user_counters as $uid => $counter)

Zeile 3320Zeile 3324

/**
* Restore multiple posts


/**
* Restore multiple posts

	 *
* @param array PIDs
* @return boolean true

	 *
* @param array $pids PIDs
* @return boolean

	 */
function restore_posts($pids)
{

	 */
function restore_posts($pids)
{

Zeile 3469Zeile 3473
	/**
* Restore one or more threads
*

	/**
* Restore one or more threads
*

	 * @param array Thread IDs

	 * @param array|int $tids Thread ID(s)

	 * @return boolean true
*/
function restore_threads($tids)

	 * @return boolean true
*/
function restore_threads($tids)

	{
global $db, $cache, $plugins;

if(!is_array($tids))
{
$tids = array($tids);
}

if(empty($tids))
{
return false;
}

// Make sure we only have valid values
$tids = array_map('intval', $tids);

$tid_list = $forum_counters = $user_counters = $posts_to_restore = array();

foreach($tids as $tid)

	{
global $db, $cache, $plugins;

if(!is_array($tids))
{
$tids = array($tids);
}

if(empty($tids))
{
return false;
}

// Make sure we only have valid values
$tids = array_map('intval', $tids);

$tid_list = $forum_counters = $user_counters = $posts_to_restore = array();

foreach($tids as $tid)

		{
$thread = get_thread($tid);
if(!$thread || $thread['visible'] != -1)

		{
$thread = get_thread($tid);
if(!$thread || $thread['visible'] != -1)

Zeile 3603Zeile 3607
					$update_array = array(
"postnum" => "+{$counters['num_posts']}",
"threadnum" => "+{$counters['num_threads']}",

					$update_array = array(
"postnum" => "+{$counters['num_posts']}",
"threadnum" => "+{$counters['num_threads']}",

					);

					);

					update_user_counters($uid, $update_array);
}
}
}
return true;
}

					update_user_counters($uid, $update_array);
}
}
}
return true;
}





	/**
* Soft delete one or more threads
*

	/**
* Soft delete one or more threads
*

	 * @param array Thread IDs
* @return boolean true

	 * @param array|int Thread ID(s)
* @return boolean

	 */
function soft_delete_threads($tids)
{

	 */
function soft_delete_threads($tids)
{

Zeile 3633Zeile 3637

// Make sure we only have valid values
$tids = array_map('intval', $tids);


// Make sure we only have valid values
$tids = array_map('intval', $tids);





		$tid_list = implode(',', $tids);
$tid_moved_list = "";
$comma = "";

		$tid_list = implode(',', $tids);
$tid_moved_list = "";
$comma = "";

Zeile 3661Zeile 3665
						'num_deleted_posts' => 0,
'unapproved_threads' => 0,
'unapproved_posts' => 0

						'num_deleted_posts' => 0,
'unapproved_threads' => 0,
'unapproved_posts' => 0

					);

					);

				}

if(!isset($user_counters[$thread['uid']]))

				}

if(!isset($user_counters[$thread['uid']]))

Zeile 3674Zeile 3678

++$forum_counters[$forum['fid']]['num_deleted_threads'];
$forum_counters[$forum['fid']]['num_deleted_posts'] += $thread['replies']+$thread['unapprovedposts']+1;


++$forum_counters[$forum['fid']]['num_deleted_threads'];
$forum_counters[$forum['fid']]['num_deleted_posts'] += $thread['replies']+$thread['unapprovedposts']+1;





				if($thread['visible'] == 1)
{
++$forum_counters[$forum['fid']]['num_threads'];

				if($thread['visible'] == 1)
{
++$forum_counters[$forum['fid']]['num_threads'];

Zeile 3709Zeile 3713
			}
$posts_to_delete[] = $thread['firstpost'];
}

			}
$posts_to_delete[] = $thread['firstpost'];
}





		$update = array(
"visible" => -1
);

		$update = array(
"visible" => -1
);

Zeile 3717Zeile 3721
		// Soft delete redirects, too
$redirect_tids = array();
$query = $db->simple_select('threads', 'tid', "closed IN ({$tid_moved_list})");

		// Soft delete redirects, too
$redirect_tids = array();
$query = $db->simple_select('threads', 'tid', "closed IN ({$tid_moved_list})");

 

mark_reports($tids, "threads");


		while($redirect_tid = $db->fetch_field($query, 'tid'))
{
$redirect_tids[] = $redirect_tid;

		while($redirect_tid = $db->fetch_field($query, 'tid'))
{
$redirect_tids[] = $redirect_tid;