if ($error) { $l_link = 'Click_return_folders'; $u_link = append_sid("{$main_pgm}&pmmode=rlist&folder={$folder_id}"); _message_return($error_msg, $l_link, $u_link); } // update $fields = array(); $fields['rules_user_id'] = $view_user_id; $fields['rules_folder_id'] = $rules_folder_id; $fields['rules_name'] = "'" . htmlspecialchars($rules_name) . "'"; $fields['rules_group_id'] = $rules_group_id; $fields['rules_word'] = "'" . htmlspecialchars($rules_word) . "'"; $sql_fields = ''; $sql_values = ''; $sql_update = ''; _sql_statements($fields, $sql_fields, $sql_values, $sql_update); if (empty($rules_id) || $pmmode == 'rcreate') { $sql = "INSERT INTO " . PRIVMSGA_RULES_TABLE . "\n ({$sql_fields})\n VALUES({$sql_values})"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could create a new rule', '', __LINE__, __FILE__, $sql); } // return message $return_msg = 'Rules_created'; $l_link = 'Click_return_folders'; $u_link = append_sid("{$main_pgm}&pmmode=rlist&folder={$rules_folder_id}"); _message_return($return_msg, $l_link, $u_link); } else { $sql = "UPDATE " . PRIVMSGA_RULES_TABLE . "\n SET {$sql_update}\n WHERE rules_id = {$rules_id}\n AND rules_user_id = {$view_user_id}"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could update the rule', '', __LINE__, __FILE__, $sql); }
function send_pm($privmsg_id, $from_userdata, &$to_user_ids, $subject, $message, $icon, $html_on = '?', $bbcode_on = '?', $smiley_on = '?', $attach_sig = '?') { global $userdata, $user_ip; global $lang, $board_config, $db, $phpbb_root_path, $phpEx, $bbcode_parse; global $folders; global $s_unread; // get some constants $time = time(); $sql_priority = SQL_LAYER == 'mysql' ? 'LOW_PRIORITY' : ''; $q = "'"; // lists of impacted users $recips = array(); // fix some parameters $privmsg_id = intval(trim($privmsg_id)); $subject = trim($subject); $message = trim($message); $icon = intval($icon); $privmsg_ip = $user_ip; // recipient is not an array, so make one if (!is_array($to_user_ids) && !empty($to_user_ids)) { $to_user_ids = array(intval($to_user_ids)); } // check if recipients if (empty($to_user_ids)) { return 'No_to_user'; } $s_to_user_ids = implode(', ', $to_user_ids); // deleted recip $s_new_delete = ''; $s_unread_delete = ''; $s_new_add = ''; $s_unread_add = ''; $s_read_add = ''; // check we have a message and a subject if (empty($subject)) { return 'Empty_subject'; } if (empty($message)) { return 'Empty_message'; } // from_user_id can be 0 for sys message (sent by the board) if (empty($from_userdata)) { $from_userdata['user_id'] = 0; $from_userdata['username'] = $board_config['sitename']; $from_userdata['user_allowhtml'] = $board_config['allow_html']; $from_userdata['user_allowbbcode'] = $board_config['allow_bbcode']; $from_userdata['user_allowsmile'] = $board_config['allow_smilies']; $from_userdata['user_attachsig'] = $board_config['allow_sig']; } $from_user_id = intval($from_userdata['user_id']); // init message row $bbcode_uid = ''; $html_on = !$board_config['allow_html'] ? false : $html_on == '?' ? intval($from_userdata['user_allowhtml']) : intval($html_on); $bbcode_on = !$board_config['allow_bbcode'] ? false : $bbcode_on == '?' ? intval($from_userdata['user_allowbbcode']) : intval($bbcode_on); $smiley_on = !$board_config['allow_smilies'] ? false : $smiley_on == '?' ? intval($from_userdata['user_allowsmile']) : intval($smiley_on); $attach_sig = !$board_config['allow_sig'] ? false : $attach_sig == '?' ? intval($from_userdata['user_attachsig']) : intval($attach_sig); $create = true; if (!empty($privmsg_id)) { $create = false; } //------------------------------ // edit a message : read the pm and take care of recipients that are no more recipients //------------------------------ if (!$create) { //------------------------------- // read the pm and check if ok to edit by the user (it has to belong to him) //------------------------------- $sql = "SELECT p.*, pr.*\n FROM " . PRIVMSGA_TABLE . " p, " . PRIVMSGA_RECIPS_TABLE . " pr\n WHERE p.privmsg_id = {$privmsg_id}\n AND pr.privmsg_id = p.privmsg_id\n AND pr.privmsg_user_id = {$from_user_id}\n AND pr.privmsg_direct = 0\n AND pr.privmsg_status = " . STS_TRANSIT; if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not read message to duplicate', '', __LINE__, __FILE__, $sql); } if (!($privmsg = $db->sql_fetchrow($result))) { return 'No_such_post'; } // get some values from the original message $privmsg_ip = $privmsg['privmsg_ip']; //------------------------------- // manage recipients that are no more //------------------------------- // get users that are no more recipients and haven't read their pms $sql = "SELECT privmsg_user_id\n FROM " . PRIVMSGA_RECIPS_TABLE . "\n WHERE privmsg_user_id NOT IN ({$s_to_user_ids})\n AND privmsg_direct = 1\n AND privmsg_id = {$privmsg_id}\n AND privmsg_status = " . STS_TRANSIT . "\n AND privmsg_read IN ({$s_unread})"; if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not read users no more recipients having not yet readen the message', '', __LINE__, __FILE__, $sql); } while ($row = $db->sql_fetchrow($result)) { if ($row['privmsg_read'] == NEW_MAIL) { $s_new_delete .= (empty($s_new_delete) ? '' : ', ') . $row['privmsg_user_ids']; } else { $s_unread_delete .= (empty($s_unread_delete) ? '' : ', ') . $row['privmsg_user_ids']; } } // delete recipients for users who have deleted the message or not yet read and are no more recipients $sql = "DELETE {$sql_priority}\n FROM " . PRIVMSGA_RECIPS_TABLE . "\n WHERE privmsg_user_id NOT IN ({$s_to_user_ids})\n AND privmsg_direct = 1\n AND privmsg_id = {$privmsg_id}\n AND ( privmsg_read IN ({$s_unread}) OR privmsg_status = " . STS_DELETED . " )"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not delete users no more recipients having deleted or not yet readen the message', '', __LINE__, __FILE__, $sql); } // verify recipients that are no more but have read the pm $sql = "SELECT *\n FROM " . PRIVMSGA_RECIPS_TABLE . "\n WHERE privmsg_user_id NOT IN ({$s_to_user_ids})\n AND privmsg_direct = 1\n AND privmsg_id = {$privmsg_id}\n AND privmsg_read = " . READ_MAIL . "\n AND privmsg_status <> " . STS_DELETED . "\n LIMIT 0, 1"; if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not check if copy required', '', __LINE__, __FILE__, $sql); } // if some, duplicate the message and attach them to it if ($db->sql_numrows($result) > 0) { // message $fields = array(); $fields['privmsg_subject'] = $q . str_replace("\\'", "''", str_replace('\\"', '"', addslashes(stripslashes($privmsg['privmsg_subject'])))) . $q; $fields['privmsg_text'] = $q . str_replace("\\'", "''", str_replace('\\"', '"', addslashes(stripslashes($privmsg['privmsg_text'])))) . $q; $fields['privmsg_bbcode_uid'] = $q . $privmsg['privmsg_bbcode_uid'] . $q; $fields['privmsg_time'] = intval($privmsg['privmsg_time']); $fields['privmsg_enable_bbcode'] = intval($privmsg['privmsg_enable_bbcode']); $fields['privmsg_enable_html'] = intval($privmsg['privmsg_enable_html']); $fields['privmsg_enable_smilies'] = intval($privmsg['privmsg_enable_smilies']); $fields['privmsg_attach_sig'] = intval($privmsg['privmsg_attach_sig']); $fields['privmsg_icon'] = intval($privmsg['privmsg_icon']); // generate a copy of the pm for recipients that are no more but have readen the pm, and mark it as deleted for the author _sql_statements($fields, $sql_fields, $sql_values, $sql_update); $sql = "INSERT {$sql_priority}\n INTO " . PRIVMSGA_TABLE . "\n ({$sql_fields})\n VALUES({$sql_values})"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not generate a copy of original pm', '', __LINE__, __FILE__, $sql); } // get the copy id $privmsg_copy_id = $db->sql_nextid(); // author $fields_recip = array(); $fields_recip['privmsg_id'] = $privmsg_copy_id; $fields_recip['privmsg_direct'] = 0; $fields_recip['privmsg_user_id'] = intval($privmsg['privmsg_user_id']); $fields_recip['privmsg_ip'] = $q . $privmsg['privmsg_ip'] . $q; $fields_recip['privmsg_folder_id'] = intval($privmsg['privmsg_folder_id']); $fields_recip['privmsg_status'] = STS_DELETED; $fields_recip['privmsg_read'] = READ_PM; $fields_recip['privmsg_distrib'] = 1; // generate the author info _sql_statements($fields_recip, $sql_fields, $sql_values, $sql_update); $sql = "INSERT {$sql_priority}\n INTO " . PRIVMSGA_RECIPS_TABLE . "\n ({$sql_fields})\n VALUES({$sql_values})"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not generate a copy of original pm author', '', __LINE__, __FILE__, $sql); } // attach to the copy recipients that are no more but have readed the pm $sql = "UPDATE {$sql_priority} " . PRIVMSGA_RECIPS_TABLE . "\n SET privmsg_id = {$privmsg_copy_id}, privmsg_distrib = 1\n WHERE privmsg_user_id NOT IN ({$s_to_user_ids})\n AND privmsg_direct = 1\n AND privmsg_id = {$privmsg_id}\n AND privmsg_read = " . READ_MAIL; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not attach recips to the copied pm', '', __LINE__, __FILE__, $sql); } } //------------------------------- // get the existing recips list //------------------------------- $sql = "SELECT pr.privmsg_user_id, pr.privmsg_read\n FROM " . PRIVMSGA_RECIPS_TABLE . " pr\n WHERE pr.privmsg_id = {$privmsg_id}\n AND pr.privmsg_direct = 1"; if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not read recipients', '', __LINE__, __FILE__, $sql); } while ($row = $db->sql_fetchrow($result)) { $recips[$row['privmsg_user_id']] = $row['privmsg_read']; } } //---------------------------- // create or update the message //---------------------------- // get a bbcode uid $bbcode_uid = $bbcode_on ? $bbcode_parse->make_bbcode_uid() : ''; // prepare the message and add bbcode uid to the bbcodes $message = prepare_message($message, $html_on, $bbcode_on, $smiley_on, $bbcode_uid); // message $fields = array(); $fields['privmsg_subject'] = $q . str_replace("\\'", "''", str_replace('\\"', '"', addslashes(stripslashes($subject)))) . $q; $fields['privmsg_text'] = $q . str_replace("\\'", "''", str_replace('\\"', '"', addslashes(stripslashes($message)))) . $q; $fields['privmsg_bbcode_uid'] = $q . $bbcode_uid . $q; $fields['privmsg_time'] = $time; $fields['privmsg_enable_bbcode'] = $bbcode_on; $fields['privmsg_enable_html'] = $html_on; $fields['privmsg_enable_smilies'] = $smiley_on; $fields['privmsg_attach_sig'] = $attach_sig; $fields['privmsg_icon'] = $icon; // process if ($create) { // message _sql_statements($fields, $sql_fields, $sql_values, $sql_update); $sql = "INSERT {$sql_priority}\n INTO " . PRIVMSGA_TABLE . "\n ({$sql_fields})\n VALUES({$sql_values})"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not create pm', '', __LINE__, __FILE__, $sql); } // store the new privmsg_id $privmsg_id = $db->sql_nextid(); // author $fields_recip = array(); $fields_recip['privmsg_id'] = $privmsg_id; $fields_recip['privmsg_ip'] = $q . $privmsg_ip . $q; $fields_recip['privmsg_status'] = STS_TRANSIT; $fields_recip['privmsg_read'] = NEW_MAIL; $fields_recip['privmsg_distrib'] = 0; $fields_recip['privmsg_folder_id'] = OUTBOX; $fields_recip['privmsg_direct'] = 0; $fields_recip['privmsg_user_id'] = $from_user_id; _sql_statements($fields_recip, $sql_fields, $sql_values, $sql_update); $sql = "INSERT {$sql_priority}\n INTO " . PRIVMSGA_RECIPS_TABLE . "\n ({$sql_fields})\n VALUES({$sql_values})"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not create pm author', '', __LINE__, __FILE__, $sql); } // recipients $fields_recip['privmsg_direct'] = 1; $fields_recip['privmsg_folder_id'] = INBOX; _sql_statements($fields_recip, $sql_fields, $sql_values, $sql_update, 'privmsg_user_id'); for ($i = 0; $i < count($to_user_ids); $i++) { $privmsg_to_user_id = intval($to_user_ids[$i]); if (!empty($privmsg_to_user_id)) { $sql = "INSERT {$sql_priority}\n INTO " . PRIVMSGA_RECIPS_TABLE . "\n ({$sql_fields}, privmsg_user_id)\n VALUES({$sql_values}, {$privmsg_to_user_id})"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not create pm recipient', '', __LINE__, __FILE__, $sql); } $s_new_add .= (empty($s_new_add) ? '' : ', ') . $privmsg_to_user_id; } } } else { // message _sql_statements($fields, $sql_fields, $sql_values, $sql_update); $sql = "UPDATE {$sql_priority} " . PRIVMSGA_TABLE . "\n SET {$sql_update}\n WHERE privmsg_id = {$privmsg_id}"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not update pm', '', __LINE__, __FILE__, $sql); } // author $fields_recip = array(); $fields_recip['privmsg_id'] = $privmsg_id; $fields_recip['privmsg_ip'] = $q . $privmsg_ip . $q; $fields_recip['privmsg_status'] = STS_TRANSIT; $fields_recip['privmsg_read'] = NEW_MAIL; $fields_recip['privmsg_distrib'] = 0; $fields_recip['privmsg_folder_id'] = OUTBOX; $fields_recip['privmsg_direct'] = 0; $fields_recip['privmsg_user_id'] = $from_user_id; _sql_statements($fields_recip, $sql_fields, $sql_values, $sql_update); $sql = "UPDATE {$sql_priority} " . PRIVMSGA_RECIPS_TABLE . "\n SET {$sql_update}\n WHERE privmsg_id = {$privmsg_id}\n AND privmsg_direct = 0"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not update pm', '', __LINE__, __FILE__, $sql); } // recipients $fields_recip['privmsg_direct'] = 1; $fields_recip['privmsg_folder_id'] = INBOX; _sql_statements($fields_recip, $sql_fields, $sql_values, $sql_update, 'privmsg_user_id'); for ($i = 0; $i < count($to_user_ids); $i++) { $privmsg_to_user_id = intval($to_user_ids[$i]); if (!empty($privmsg_to_user_id)) { if (!isset($recips[$privmsg_to_user_id])) { // create a new recip $sql = "INSERT {$sql_priority}\n INTO " . PRIVMSGA_RECIPS_TABLE . "\n ({$sql_fields}, privmsg_user_id)\n VALUES({$sql_values}, {$privmsg_to_user_id})"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not create pm recipient', '', __LINE__, __FILE__, $sql); } $s_new_add .= (empty($s_new_add) ? '' : ', ') . $privmsg_to_user_id; } else { // update an existing recip $sql = "UPDATE {$sql_priority} " . PRIVMSGA_RECIPS_TABLE . "\n SET {$sql_update}\n WHERE privmsg_id = {$privmsg_id}\n AND privmsg_user_id = {$privmsg_to_user_id}\n AND privmsg_direct = 1"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not update pm recipient', '', __LINE__, __FILE__, $sql); } switch ($recips[$privmsg_to_user_id]) { case READ_MAIL: $s_read_add .= (empty($s_read_add) ? '' : ', ') . $privmsg_to_user_id; break; case UNREAD_MAIL: $s_unread_add .= (empty($s_unread_add) ? '' : ', ') . $privmsg_to_user_id; break; case NEW_MAIL: $s_new_add .= (empty($s_new_add) ? '' : ', ') . $privmsg_to_user_id; break; } } } } } //---------------------------- // adjust the impacted users box //---------------------------- if (!empty($s_new_delete)) { $sql = "UPDATE " . USERS_TABLE . "\n SET user_new_privmsg = user_new_privmsg-1\n WHERE user_id IN ({$s_new_delete})"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not update users counter - deleted new private messages', '', __LINE__, __FILE__, $sql); } } if (!empty($s_unread_delete) || !empty($s_unread_add)) { $semicol = empty($s_unread_delete) || empty($s_unread_add) ? '' : ','; $sql = "UPDATE " . USERS_TABLE . "\n SET user_unread_privmsg = user_unread_privmsg-1\n WHERE user_id IN ({$s_unread_delete} {$semicol} {$s_unread_add})"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not update users counter - deleted unread private messages', '', __LINE__, __FILE__, $sql); } } if (!empty($s_read_add) || !empty($s_new_add)) { $semicol = empty($s_read_add) || empty($s_new_add) ? '' : ','; $sql = "UPDATE " . USERS_TABLE . "\n SET user_new_privmsg = user_new_privmsg+1,\n user_last_privmsg = {$time}\n WHERE user_id IN ({$s_read_add} {$semicol} {$s_new_add})"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not update users counter - deleted new private messages', '', __LINE__, __FILE__, $sql); } } // notifications $date = $privmsg['privmsg_time']; $copy = false; // server values $server_name = trim($board_config['server_name']); $server_protocol = $board_config['cookie_secure'] ? 'https://' : 'http://'; $server_port = $board_config['server_port'] != 80 ? ':' . trim($board_config['server_port']) . '/' : '/'; // sender script $script_name = preg_replace('/^\\/?(.*?)\\/?$/', '\\1', trim($board_config['script_path'])); $script_name = !empty($script_name) ? $script_name . '/privmsga.' . $phpEx : 'privmsga.' . $phpEx; // specific data $parsed_values = array('U_INBOX' => $server_protocol . $server_name . $server_port . $script_name . '?folder=' . INBOX); $recips = array(); send_mail('privmsg_notify', $from_userdata, $to_user_ids, $recips, $subject, $message, $time, $copy, $parsed_values); if (defined('IN_CASHMOD')) { $pmer = new cash_user($userdata['user_id'], $userdata); $pmer->give_pm_amount(); } return ''; }
function move_pm($privmsg_recip_ids, $view_user_id, $from_folder, $to_folder) { global $db; global $folders; // no data if (empty($privmsg_recip_ids)) { return 'No_post_id'; } // not an array : do one if (!is_array($privmsg_recip_ids)) { $privmsg_recip_ids = array(intval($privmsg_recip_ids)); } $s_privmsg_recip_ids = implode(', ', $privmsg_recip_ids); // no change : exit if ($from_folder == $to_folder && !empty($from_folder) && !empty($to_folder)) { return 'No_such_folder'; } // get the main folders $from_main = $from_folder; if (!empty($folders['main'][$from_folder])) { $from_main = $folders['main'][$from_folder]; } $to_main = $to_folder; if (!empty($folders['main'][$to_folder])) { $to_main = $folders['main'][$to_folder]; } //------------------------ // no duplication required : proceed //------------------------ if ($from_main == $to_main) { $sql = "UPDATE " . PRIVMSGA_RECIPS_TABLE . "\n SET privmsg_folder_id = {$to_folder}\n WHERE privmsg_recip_id IN ({$s_privmsg_recip_ids})"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not update recipients', '', __LINE__, __FILE__, $sql); } return ''; } //------------------------ // from living one to save //------------------------ if ($to_main != SAVEBOX) { return 'No_such_folder'; } // get the messages $sql = "SELECT p.*, pa.*, pr.privmsg_recip_id AS selected_pm_id\n FROM " . PRIVMSGA_RECIPS_TABLE . " pr, " . PRIVMSGA_TABLE . " p, " . PRIVMSGA_RECIPS_TABLE . " pa\n WHERE p.privmsg_id = pr.privmsg_id\n AND pa.privmsg_id = pr.privmsg_id AND pa.privmsg_direct = 0\n AND pr.privmsg_recip_id IN ({$s_privmsg_recip_ids})\n AND pr.privmsg_status <> " . STS_DELETED; if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not read messages', '', __LINE__, __FILE__, $sql); } $privmsgs = array(); while ($row = $db->sql_fetchrow($result)) { $privmsgs[] = $row; } // copy them $q = "'"; for ($i = 0; $i < count($privmsgs); $i++) { $privmsg =& $privmsgs[$i]; $privmsg_id = $privmsg['privmsg_id']; $fields = array(); $fields['privmsg_subject'] = $q . str_replace("\\'", "''", str_replace('\\"', '"', addslashes(stripslashes($privmsg['privmsg_subject'])))) . $q; $fields['privmsg_text'] = $q . str_replace("\\'", "''", str_replace('\\"', '"', addslashes(stripslashes($privmsg['privmsg_text'])))) . $q; $fields['privmsg_bbcode_uid'] = $q . $privmsg['privmsg_bbcode_uid'] . $q; $fields['privmsg_time'] = intval($privmsg['privmsg_time']); $fields['privmsg_enable_bbcode'] = intval($privmsg['privmsg_enable_bbcode']); $fields['privmsg_enable_html'] = intval($privmsg['privmsg_enable_html']); $fields['privmsg_enable_smilies'] = intval($privmsg['privmsg_enable_smilies']); $fields['privmsg_attach_sig'] = intval($privmsg['privmsg_attach_sig']); $fields['privmsg_icon'] = intval($privmsg['privmsg_icon']); _sql_statements($fields, $sql_fields, $sql_values, $sql_update); $sql = "INSERT {$sql_priority}\n INTO " . PRIVMSGA_TABLE . "\n ({$sql_fields})\n VALUES({$sql_values})"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not generate a copy of original pm', '', __LINE__, __FILE__, $sql); } // get the copy id $privmsg_copy_id = $db->sql_nextid(); // author $fields_recip = array(); $fields_recip['privmsg_id'] = $privmsg_copy_id; $fields_recip['privmsg_direct'] = 0; $fields_recip['privmsg_user_id'] = intval($privmsg['privmsg_user_id']); $fields_recip['privmsg_ip'] = $q . $privmsg['privmsg_ip'] . $q; $fields_recip['privmsg_read'] = READ_MAIL; $fields_recip['privmsg_folder_id'] = SAVEBOX; $fields_recip['privmsg_distrib'] = 1; // generate the author info $fields_recip['privmsg_status'] = STS_DELETED; if ($privmsg['privmsg_recip_id'] == $privmsg['selected_pm_id']) { $fields_recip['privmsg_status'] = STS_SAVED; } _sql_statements($fields_recip, $sql_fields, $sql_values, $sql_update); $sql = "INSERT {$sql_priority}\n INTO " . PRIVMSGA_RECIPS_TABLE . "\n ({$sql_fields})\n VALUES({$sql_values})"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not generate a copy of original pm author', '', __LINE__, __FILE__, $sql); } // recipients $sql = "SELECT pr.*\n FROM " . PRIVMSGA_RECIPS_TABLE . " pr\n WHERE pr.privmsg_id = {$privmsg_id}\n AND pr.privmsg_direct = 1\n AND pr.privmsg_status <> " . STS_DELETED; if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not read original recipients', '', __LINE__, __FILE__, $sql); } $recips = array(); while ($row = $db->sql_fetchrow($result)) { $recips[] = $row; } // recipients $fields_recip = array(); $fields_recip['privmsg_id'] = $privmsg_copy_id; $fields_recip['privmsg_direct'] = 1; $fields_recip['privmsg_user_id'] = 0; $fields_recip['privmsg_ip'] = ''; $fields_recip['privmsg_read'] = READ_MAIL; $fields_recip['privmsg_folder_id'] = SAVEBOX; $fields_recip['privmsg_distrib'] = 1; for ($j = 0; $j < count($recips); $j++) { // generate the recipient info $fields_recip['privmsg_status'] = STS_DELETED; if ($recips[$j]['privmsg_recip_id'] == $privmsg['selected_pm_id']) { $fields_recip['privmsg_status'] = STS_SAVED; } $fields_recip['privmsg_user_id'] = intval($recips[$j]['privmsg_user_id']); $fields_recip['privmsg_ip'] = $q . $recips[$j]['privmsg_ip'] . $q; _sql_statements($fields_recip, $sql_fields, $sql_values, $sql_update); $sql = "INSERT {$sql_priority}\n INTO " . PRIVMSGA_RECIPS_TABLE . "\n ({$sql_fields})\n VALUES({$sql_values})"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not generate a copy of original pm recipients', '', __LINE__, __FILE__, $sql); } } } // update the original record as deleted $sql = "UPDATE " . PRIVMSGA_RECIPS_TABLE . "\n SET privmsg_status = " . STS_DELETED . "\n WHERE privmsg_recip_id IN ({$s_privmsg_recip_ids})\n AND privmsg_status <> " . STS_DELETED; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not mark as deleted original messages', '', __LINE__, __FILE__, $sql); } // resync user's counts resync_pm($view_user_id); }