Rev 831 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php
////////////////////////////////////////////////////////////////////////////////
// //
// Copyright (C) 2006 Phorum Development Team //
// http://www.phorum.org //
// //
// This program is free software. You can redistribute it and/or modify //
// it under the terms of either the current Phorum License (viewable at //
// phorum.org) or the Phorum License that was distributed with this file //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY, without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. //
// //
// You should have received a copy of the Phorum License //
// along with this program. //
////////////////////////////////////////////////////////////////////////////////
if(!defined("PHORUM")) return;
// For phorum_update_thread_info().
include_once("./include/thread_info.php");
// Create a message which can be used by the database library.
$dbmessage = array(
"message_id" => $message["message_id"],
"thread" => $message["thread"],
"parent_id" => $message["parent_id"],
"forum_id" => $message["forum_id"],
"author" => $message["author"],
"subject" => $message["subject"],
"email" => $message["email"],
"status" => $message["status"],
"closed" => ! $message["allow_reply"],
"body" => $message["body"],
"meta" => $message["meta"],
);
// Update sort setting, if allowed. This can only be done
// when editing the thread starter message.
if ( $message["parent_id"]==0 ) {
if ($PHORUM["DATA"]["OPTION_ALLOWED"]["sticky"] && $message["special"]=="sticky") {
$dbmessage["sort"] = PHORUM_SORT_STICKY;
} elseif ($PHORUM["DATA"]["OPTION_ALLOWED"]["announcement"] && $message["special"] == "announcement") {
$dbmessage["forum_id"] = $PHORUM["vroot"] ? $PHORUM["vroot"] : 0;
$dbmessage["sort"] = PHORUM_SORT_ANNOUNCEMENT;
} else {
// Not allowed to edit. Keep existing sort value.
switch ($message["special"]) {
case "sticky": $sort = PHORUM_SORT_STICKY; break;
case "announcement": $sort = PHORUM_SORT_ANNOUNCEMENT; break;
default: $sort = PHORUM_SORT_DEFAULT; break;
}
$dbmessage["sort"] = $sort;
}
} else {
// set some key fields to the same values as the first message in the thread
$dbmessage["forum_id"] = $top_parent["forum_id"];
$dbmessage["sort"] = $top_parent["sort"];
}
// Update the editing info in the meta data.
$dbmessage["meta"]["show_signature"] = $message["show_signature"];
$dbmessage["meta"]["edit_count"] =
isset($message["meta"]["edit_count"])
? $message["meta"]["edit_count"]+1 : 1;
$dbmessage["meta"]["edit_date"] = time();
$dbmessage["meta"]["edit_username"] = $PHORUM["user"]["username"];
// Update attachments in the meta data, link active attachments
// to the message and delete stale attachments.
$dbmessage["meta"]["attachments"] = array();
foreach ($message["attachments"] as $info)
{
if ($info["keep"])
{
$dbmessage["meta"]["attachments"][] = array(
"file_id" => $info["file_id"],
"name" => $info["name"],
"size" => $info["size"],
);
phorum_db_file_link(
$info["file_id"],
$message["message_id"],
PHORUM_LINK_MESSAGE
);
} else {
phorum_db_file_delete($info["file_id"]);
}
}
if (!count($dbmessage["meta"]["attachments"])) {
unset($dbmessage["meta"]["attachments"]);
}
// Update the data in the database and run pre and post editing hooks.
$dbmessage = phorum_hook("pre_edit", $dbmessage);
phorum_db_update_message($message["message_id"], $dbmessage);
phorum_hook("post_edit", $dbmessage);
// Update children to the same sort setting and forum_id.
// The forum_id update is needed for switching between
// announcements and other types of messages.
if (! $message["parent_id"] &&
$origmessage["sort"] != $dbmessage["sort"])
{
$messages = phorum_db_get_messages($message["thread"], 0);
unset($messages["users"]);
foreach($messages as $message_id => $msg){
if($msg["sort"]!=$dbmessage["sort"] ||
$msg["forum_id"] != $dbmessage["forum_id"]) {
$msg["sort"]=$dbmessage["sort"];
$msg["forum_id"]=$dbmessage["forum_id"];
phorum_db_update_message($message_id, $msg);
}
}
// The forum stats have to be updated. Announcements aren't
// counted in the thread_count, so if switching to or
// from announcement, the thread_count will change.
phorum_db_update_forum_stats(true);
}
// Update all thread messages to the same closed setting.
if (! $message["parent_id"] &&
$origmessage["closed"] != $dbmessage["closed"]) {
if ($dbmessage["closed"]) {
phorum_db_close_thread($message["thread"]);
} else {
phorum_db_reopen_thread($message["thread"]);
}
}
// Update thread info.
phorum_update_thread_info($message['thread']);
// Update thread subscription or unsubscription.
if ($message["user_id"])
{
if ($message["email_notify"])
{
phorum_user_subscribe(
$message["user_id"], $PHORUM["forum_id"],
$message["thread"], PHORUM_SUBSCRIPTION_MESSAGE
);
} else {
phorum_user_unsubscribe(
$message["user_id"],
$message["thread"],
$message["forum_id"]
);
}
}
$PHORUM["DATA"]["MESSAGE"] = $PHORUM["DATA"]["LANG"]["MsgModEdited"];
$PHORUM['DATA']["BACKMSG"] = $PHORUM['DATA']["LANG"]["BackToThread"];
$PHORUM["DATA"]["URL"]["REDIRECT"] = phorum_get_url(
PHORUM_READ_URL,
$message["thread"],
$message["message_id"]
);
?>