Vergleich inc/datahandlers/post.php - 1.4.0 - 1.4.12

  Keine Änderungen   Hinzugefügt   Modifiziert   Entfernt
Zeile 6Zeile 6
 * Website: http://www.mybboard.net
* License: http://www.mybboard.net/about/license
*

 * Website: http://www.mybboard.net
* License: http://www.mybboard.net/about/license
*

 * $Id: post.php 4036 2008-07-24 11:35:12Z ZiNgaBuRgA $

 * $Id: post.php 4867 2010-04-11 03:37:10Z RyanGordon $

 */

// Disallow direct access to this file for security reasons

 */

// Disallow direct access to this file for security reasons

Zeile 309Zeile 309
		global $mybb, $db, $session;

$post = &$this->data;

		global $mybb, $db, $session;

$post = &$this->data;

 
		
// Are we starting a new thread?
if(!$post['tid'])
{
return true;
}

		
// Are we even turned on?
if(empty($mybb->settings['postmergemins']))

		
// Are we even turned on?
if(empty($mybb->settings['postmergemins']))

		{

		{

			return true;

			return true;

		}

		}

		
// Assign a default separator if none is specified
if(trim($mybb->settings['postmergesep']) == "")

		
// Assign a default separator if none is specified
if(trim($mybb->settings['postmergesep']) == "")

		{

		{

			$mybb->settings['postmergesep'] = "[hr]";
}


			$mybb->settings['postmergesep'] = "[hr]";
}


Zeile 326Zeile 332
		if(trim($mybb->settings['postmergeuignore']) != "")
{
$gids = explode(',', $mybb->settings['postmergeuignore']);

		if(trim($mybb->settings['postmergeuignore']) != "")
{
$gids = explode(',', $mybb->settings['postmergeuignore']);

			array_walk($gids, 'intval');



			$gids = array_map('intval', $gids);



			$user_usergroups = explode(',', $mybb->user['usergroup'].",".$mybb->user['additionalgroups']);
if(count(array_intersect($user_usergroups, $gids)) > 0)
{
return true;
}

			$user_usergroups = explode(',', $mybb->user['usergroup'].",".$mybb->user['additionalgroups']);
if(count(array_intersect($user_usergroups, $gids)) > 0)
{
return true;
}

		}

		}

		
// Select the lastpost and fid information for this thread
$query = $db->simple_select("threads", "lastpost,fid", "lastposteruid='".$post['uid']."' AND tid='".$post['tid']."'", array('limit' => '1'));

		
// Select the lastpost and fid information for this thread
$query = $db->simple_select("threads", "lastpost,fid", "lastposteruid='".$post['uid']."' AND tid='".$post['tid']."'", array('limit' => '1'));

Zeile 342Zeile 348
		
// Check to see if the same author has posted within the merge post time limit
if((intval($mybb->settings['postmergemins']) != 0 && trim($mybb->settings['postmergemins']) != "") && (TIME_NOW-$thread['lastpost']) > (intval($mybb->settings['postmergemins'])*60))

		
// Check to see if the same author has posted within the merge post time limit
if((intval($mybb->settings['postmergemins']) != 0 && trim($mybb->settings['postmergemins']) != "") && (TIME_NOW-$thread['lastpost']) > (intval($mybb->settings['postmergemins'])*60))

		{
return true;
}


		{
return true;
}


		if(strstr($mybb->settings['postmergefignore'], ','))
{
$fids = explode(',', $mybb->settings['postmergefignore']);

		if(strstr($mybb->settings['postmergefignore'], ','))
{
$fids = explode(',', $mybb->settings['postmergefignore']);

Zeile 398Zeile 404
		$permissions = user_permissions($post['uid']);

// Fetch the forum this post is being made in

		$permissions = user_permissions($post['uid']);

// Fetch the forum this post is being made in

 
		if(!$post['fid'])
{
$query = $db->simple_select('posts', 'fid', "pid = '{$post['pid']}'");
$post['fid'] = $db->fetch_field($query, 'fid');
}

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

// Check if this post contains more images than the forum allows

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

// Check if this post contains more images than the forum allows

Zeile 448Zeile 459

// Check if the post being replied to actually exists in this thread.
if($post['replyto'])


// Check if the post being replied to actually exists in this thread.
if($post['replyto'])

		{
$query = $db->simple_select("posts", "pid", "pid='{$post['replyto']}'");

		{
$query = $db->simple_select("posts", "pid", "pid='".intval($post['replyto'])."'");

			$valid_post = $db->fetch_array($query);
if(!$valid_post['pid'])
{

			$valid_post = $db->fetch_array($query);
if(!$valid_post['pid'])
{

Zeile 484Zeile 495
	* @return boolean True when valid, false when not valid.
*/
function verify_post_icon()

	* @return boolean True when valid, false when not valid.
*/
function verify_post_icon()

	{

	{

		global $cache;

$post = &$this->data;

		global $cache;

$post = &$this->data;

Zeile 553Zeile 564
		if($this->method == "insert" || array_key_exists('dateline', $post))
{
$this->verify_dateline();

		if($this->method == "insert" || array_key_exists('dateline', $post))
{
$this->verify_dateline();

		}


		}


		if($this->method == "insert" || array_key_exists('replyto', $post))

		if($this->method == "insert" || array_key_exists('replyto', $post))

		{

		{

			$this->verify_reply_to();

			$this->verify_reply_to();

		}

		}


if($this->method == "insert" || array_key_exists('icon', $post))
{
$this->verify_post_icon();


if($this->method == "insert" || array_key_exists('icon', $post))
{
$this->verify_post_icon();

		}


		}


		if($this->method == "insert" || array_key_exists('options', $post))
{
$this->verify_options();

		if($this->method == "insert" || array_key_exists('options', $post))
{
$this->verify_options();

		}

$plugins->run_hooks_by_ref("datahandler_post_validate_post", $this);

		}

$plugins->run_hooks_by_ref("datahandler_post_validate_post", $this);


// We are done validating, return.
$this->set_validated(true);
if(count($this->get_errors()) > 0)


// We are done validating, return.
$this->set_validated(true);
if(count($this->get_errors()) > 0)

		{

		{

			return false;

			return false;

		}

		}

		else
{
return true;
}
}


		else
{
return true;
}
}






	/**
* Insert a post into the database.

	/**
* Insert a post into the database.

	 *

	 *

	 * @return array Array of new post details, pid and visibility.
*/
function insert_post()

	 * @return array Array of new post details, pid and visibility.
*/
function insert_post()

Zeile 648Zeile 659
				{
$newclosed = "closed=1";
log_moderator_action($modlogdata, $lang->thread_closed);

				{
$newclosed = "closed=1";
log_moderator_action($modlogdata, $lang->thread_closed);

				}


				}


				// Open the thread.
if($modoptions['closethread'] != 1 && $thread['closed'] == 1)
{

				// Open the thread.
if($modoptions['closethread'] != 1 && $thread['closed'] == 1)
{

Zeile 710Zeile 721
		{
$double_post = $this->verify_post_merge();


		{
$double_post = $this->verify_post_merge();


 
			// Only combine if they are both invisible (mod queue'd forum) or both visible

			if($double_post !== true && $double_post['visible'] == $visible)
{

			if($double_post !== true && $double_post['visible'] == $visible)
{

				// Only combine if they are both invisible (mod queue'd forum) or both visible
$double_post['message'] .= $mybb->settings['postmergesep']."\n".$post['message'];


				$this->pid = $double_post['pid'];

$post['message'] = $double_post['message'] .= $mybb->settings['postmergesep']."\n".$post['message'];

				$update_query = array(
"message" => $db->escape_string($double_post['message'])
);

				$update_query = array(
"message" => $db->escape_string($double_post['message'])
);

Zeile 741Zeile 754
						"posthash" => $double_post['posthash'],
);
$db->update_query("attachments", $attachmentassign, "posthash='{$post['posthash']}'");

						"posthash" => $double_post['posthash'],
);
$db->update_query("attachments", $attachmentassign, "posthash='{$post['posthash']}'");

 
				
$post['posthash'] = $double_post['posthash'];

				}

// Return the post's pid and whether or not it is visible.

				}

// Return the post's pid and whether or not it is visible.

Zeile 854Zeile 869
			// Fetch any users subscribed to this thread receiving instant notification and queue up their subscription notices
$query = $db->query("
SELECT u.username, u.email, u.uid, u.language, s.subscriptionkey

			// Fetch any users subscribed to this thread receiving instant notification and queue up their subscription notices
$query = $db->query("
SELECT u.username, u.email, u.uid, u.language, s.subscriptionkey

				FROM ".TABLE_PREFIX."threadsubscriptions s, ".TABLE_PREFIX."users u


				FROM ".TABLE_PREFIX."threadsubscriptions s
LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=s.uid)

				WHERE s.notification='1' AND s.tid='{$post['tid']}'

				WHERE s.notification='1' AND s.tid='{$post['tid']}'

				AND u.uid=s.uid

 
				AND s.uid != '{$post['uid']}'
AND u.lastactive>'{$thread['lastpost']}'
");

				AND s.uid != '{$post['uid']}'
AND u.lastactive>'{$thread['lastpost']}'
");

Zeile 867Zeile 882
					continue;
}
$done_users[$subscribedmember['uid']] = 1;

					continue;
}
$done_users[$subscribedmember['uid']] = 1;

 
				
$forumpermissions = forum_permissions($thread['fid'], $subscribedmember['uid']);
if($forumpermissions['canview'] == 0 || $forumpermissions['canviewthreads'] == 0)
{
continue;
}


				if($subscribedmember['language'] != '' && $lang->language_exists($subscribedmember['language']))
{
$uselang = $subscribedmember['language'];
}

				if($subscribedmember['language'] != '' && $lang->language_exists($subscribedmember['language']))
{
$uselang = $subscribedmember['language'];
}

				elseif($mybb->settings['bblanguage'])

				elseif($mybb->settings['orig_bblanguage'])

				{

				{

					$uselang = $mybb->settings['bblanguage'];

					$uselang = $mybb->settings['orig_bblanguage'];

				}
else
{

				}
else
{

Zeile 901Zeile 923
					$emailmessage = $langcache[$uselang]['email_subscription'];
}
$emailsubject = $lang->sprintf($emailsubject, $subject);

					$emailmessage = $langcache[$uselang]['email_subscription'];
}
$emailsubject = $lang->sprintf($emailsubject, $subject);

				$emailmessage = $lang->sprintf($emailmessage, $subscribedmember['username'], $post['username'], $mybb->settings['bbname'], $subject, $excerpt, $mybb->settings['bburl'], get_thread_link($thread['tid'], 0, "newpost"), $thread['tid'], $subscribedmember['subscriptionkey']);

				$emailmessage = $lang->sprintf($emailmessage, $subscribedmember['username'], $post['username'], $mybb->settings['bbname'], $subject, $excerpt, $mybb->settings['bburl'], str_replace("&", "&", get_thread_link($thread['tid'], 0, "newpost")), $thread['tid'], $subscribedmember['subscriptionkey'], $mybb->post_code);

				$new_email = array(
"mailto" => $db->escape_string($subscribedmember['email']),
"mailfrom" => '',

				$new_email = array(
"mailto" => $db->escape_string($subscribedmember['email']),
"mailfrom" => '',

Zeile 1145Zeile 1167
				"posthash" => $db->escape_string($thread['posthash'])
);
$plugins->run_hooks_by_ref("datahandler_post_insert_thread_post", $this);

				"posthash" => $db->escape_string($thread['posthash'])
);
$plugins->run_hooks_by_ref("datahandler_post_insert_thread_post", $this);





			$this->pid = $db->insert_query("posts", $this->post_insert_data);

// Now that we have the post id for this first post, update the threads table.

			$this->pid = $db->insert_query("posts", $this->post_insert_data);

// Now that we have the post id for this first post, update the threads table.

Zeile 1175Zeile 1197
			if(is_moderator($thread['fid'], "", $thread['uid']) && is_array($thread['modoptions']))
{
$lang->load($this->language_file, true);

			if(is_moderator($thread['fid'], "", $thread['uid']) && is_array($thread['modoptions']))
{
$lang->load($this->language_file, true);

				

				

				$modoptions = $thread['modoptions'];
$modlogdata['fid'] = $this->tid;
$modlogdata['tid'] = $thread['tid'];

				$modoptions = $thread['modoptions'];
$modlogdata['fid'] = $this->tid;
$modlogdata['tid'] = $thread['tid'];

Zeile 1219Zeile 1241
					if($thread['dateline'] > $user['lastpost'])
{
$update_query[] = "lastpost='".$thread['dateline']."'";

					if($thread['dateline'] > $user['lastpost'])
{
$update_query[] = "lastpost='".$thread['dateline']."'";

					}

					}

					// Update the post count if this forum allows post counts to be tracked
if($forum['usepostcounts'] != 0)
{

					// Update the post count if this forum allows post counts to be tracked
if($forum['usepostcounts'] != 0)
{

Zeile 1238Zeile 1260
				{
$forum['lastpost'] = 0;
}

				{
$forum['lastpost'] = 0;
}





				
$done_users = array();


				// Queue up any forum subscription notices to users who are subscribed to this forum.
$excerpt = my_substr($thread['message'], 0, $mybb->settings['subscribeexcerpt']).$lang->emailbit_viewthread;


				// Queue up any forum subscription notices to users who are subscribed to this forum.
$excerpt = my_substr($thread['message'], 0, $mybb->settings['subscribeexcerpt']).$lang->emailbit_viewthread;


Zeile 1264Zeile 1288
						continue;
}
$done_users[$subscribedmember['uid']] = 1;

						continue;
}
$done_users[$subscribedmember['uid']] = 1;

 
					
$forumpermissions = forum_permissions($thread['fid'], $subscribedmember['uid']);
if($forumpermissions['canview'] == 0 || $forumpermissions['canviewthreads'] == 0)
{
continue;
}


					// Determine the language pack we'll be using to send this email in and load it if it isn't already.
if($subscribedmember['language'] != '' && $lang->language_exists($subscribedmember['language']))
{

					// Determine the language pack we'll be using to send this email in and load it if it isn't already.
if($subscribedmember['language'] != '' && $lang->language_exists($subscribedmember['language']))
{

Zeile 1299Zeile 1330
						$emailmessage = $langcache[$uselang]['email_forumsubscription'];
}
$emailsubject = $lang->sprintf($emailsubject, $forum['name']);

						$emailmessage = $langcache[$uselang]['email_forumsubscription'];
}
$emailsubject = $lang->sprintf($emailsubject, $forum['name']);

					$emailmessage = $lang->sprintf($emailmessage, $subscribedmember['username'], $thread['username'], $forum['name'], $mybb->settings['bbname'], $thread['subject'], $excerpt, $mybb->settings['bburl'], get_thread_link($this->tid), $thread['fid']);

					$emailmessage = $lang->sprintf($emailmessage, $subscribedmember['username'], $thread['username'], $forum['name'], $mybb->settings['bbname'], $thread['subject'], $excerpt, $mybb->settings['bburl'], get_thread_link($this->tid), $thread['fid'], $mybb->post_code);

					$new_email = array(
"mailto" => $db->escape_string($subscribedmember['email']),
"mailfrom" => '',

					$new_email = array(
"mailto" => $db->escape_string($subscribedmember['email']),
"mailfrom" => '',

Zeile 1331Zeile 1362
		
if($visible == 1)
{

		
if($visible == 1)
{

			$query = $db->simple_select("attachments", "COUNT(aid) AS attachmentcount", "pid='{$this->pid}' AND visible='1'");
$attachmentcount = $db->fetch_field($query, "attachmentcount");
if($attachmentcount > 0)
{
update_thread_counters($this->tid, array("attachmentcount" => "+{$attachmentcount}"));
}

update_thread_data($this->tid);

			update_thread_data($this->tid);








			update_forum_counters($thread['fid'], array("threads" => "+1", "posts" => "+1"));
}
else if($visible == 0)

			update_forum_counters($thread['fid'], array("threads" => "+1", "posts" => "+1"));
}
else if($visible == 0)

		{

		{

			update_thread_data($this->tid);

			update_thread_data($this->tid);

			update_thread_counters($thread['tid'], array("replies" => 0, "unapprovedposts" => 1));

			update_thread_counters($this->tid, array("replies" => 0, "unapprovedposts" => 1));

			update_forum_counters($thread['fid'], array("unapprovedthreads" => "+1", "unapprovedposts" => "+1"));

			update_forum_counters($thread['fid'], array("unapprovedthreads" => "+1", "unapprovedposts" => "+1"));

 
		}

$query = $db->simple_select("attachments", "COUNT(aid) AS attachmentcount", "pid='{$this->pid}' AND visible='1'");
$attachmentcount = $db->fetch_field($query, "attachmentcount");
if($attachmentcount > 0)
{
update_thread_counters($this->tid, array("attachmentcount" => "+{$attachmentcount}"));

		}

// Return the post's pid and whether or not it is visible.

		}

// Return the post's pid and whether or not it is visible.

Zeile 1355Zeile 1386
			"visible" => $visible
);
}

			"visible" => $visible
);
}





	/**
* Updates a post that is already in the database.
*

	/**
* Updates a post that is already in the database.
*

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

// Decide on the visibility of this post.

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

// Decide on the visibility of this post.

		if($forum['mod_edit_posts'] == 1 && !is_moderator($post['fid'], "", $post['uid']))
{
if($existing_post['visible'] == 1)
{
update_thread_data($existing_post['tid']);
update_thread_counters($existing_post['tid'], array('replies' => '-1', 'unapprovedposts' => '+1'));
update_forum_counters($existing_post['fid'], array('unapprovedthreads' => '+1', 'unapprovedposts' => '+1'));

// Subtract from the users post count
// Update the post count if this forum allows post counts to be tracked
if($forum['usepostcounts'] != 0)
{
$db->write_query("UPDATE ".TABLE_PREFIX."users SET postnum=postnum-1 WHERE uid='{$existing_post['uid']}'");
}
}
























		if(isset($post['visible']) && $post['visible'] != $existing_post['visible'])
{
if($forum['mod_edit_posts'] == 1 && !is_moderator($post['fid'], "", $post['uid']))
{
if($existing_post['visible'] == 1)
{
update_thread_data($existing_post['tid']);
update_thread_counters($existing_post['tid'], array('replies' => '-1', 'unapprovedposts' => '+1'));
update_forum_counters($existing_post['fid'], array('unapprovedthreads' => '+1', 'unapprovedposts' => '+1'));

// Subtract from the users post count
// Update the post count if this forum allows post counts to be tracked
if($forum['usepostcounts'] != 0)
{
$db->write_query("UPDATE ".TABLE_PREFIX."users SET postnum=postnum-1 WHERE uid='{$existing_post['uid']}'");
}
}
$visible = 0;
}
else
{
if($existing_post['visible'] == 0)
{
update_thread_data($existing_post['tid']);
update_thread_counters($existing_post['tid'], array('replies' => '+1', 'unapprovedposts' => '-1'));
update_forum_counters($existing_post['fid'], array('unapprovedthreads' => '-1', 'unapprovedposts' => '-1'));

// Update the post count if this forum allows post counts to be tracked
if($forum['usepostcounts'] != 0)
{
$db->write_query("UPDATE ".TABLE_PREFIX."users SET postnum=postnum+1 WHERE uid='{$existing_post['uid']}'");
}
}
$visible = 1;
}
}
else
{

			$visible = 0;

			$visible = 0;

		}
else
{
if($existing_post['visible'] == 0)

			if($forum['mod_edit_posts'] != 1 || is_moderator($post['fid'], "", $post['uid']))




			{

			{

				update_thread_data($existing_post['tid']);
update_thread_counters($existing_post['tid'], array('replies' => '+1', 'unapprovedposts' => '-1'));
update_forum_counters($existing_post['fid'], array('unapprovedthreads' => '-1', 'unapprovedposts' => '-1'));

// Update the post count if this forum allows post counts to be tracked
if($forum['usepostcounts'] != 0)
{
$db->write_query("UPDATE ".TABLE_PREFIX."users SET postnum=postnum+1 WHERE uid='{$existing_post['uid']}'");
}

				$visible = 1;









			}

			}

			$visible = 1;
}

        }



// Check if this is the first post in a thread.
$options = array(


// Check if this is the first post in a thread.
$options = array(

Zeile 1433Zeile 1475
			$first_post = true;
}
else

			$first_post = true;
}
else

		{

		{

			$first_post = false;

			$first_post = false;

 
		}

if($existing_post['visible'] == 0)
{
$visible = 0;

		}

// Update the thread details that might have been changed first.
if($first_post)

		}

// Update the thread details that might have been changed first.
if($first_post)

		{
if($existing_post['visible'] == 0)
{
$visible = 0;
}


		{			






			$this->tid = $post['tid'];

$this->thread_update_data['visible'] = $visible;

			$this->tid = $post['tid'];

$this->thread_update_data['visible'] = $visible;

Zeile 1526Zeile 1568
		}
else
{

		}
else
{

			$db->delete_query("threadsubscriptions", "uid='{$post['uid']}' AND tid='{$post['tid']}'");

			$db->delete_query("threadsubscriptions", "uid='".intval($post['uid'])."' AND tid='".intval($post['tid'])."'");

		}

update_forum_lastpost($post['fid']);

		}

update_forum_lastpost($post['fid']);