ppost.php.t

来自「eGroupWare is a multi-user, web-based gr」· T 代码 · 共 425 行

T
425
字号
<?php/**************************************************************************** copyright            : (C) 2001-2003 Advanced Internet Designs Inc.* email                : forum@prohost.org* $Id: ppost.php.t,v 1.3 2003/12/18 18:20:49 iliaa Exp $** This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or * (at your option) any later version.***************************************************************************//*{PRE_HTML_PHP}*/function export_msg_data($m, &$msg_subject, &$msg_body, &$msg_icon, &$msg_smiley_disabled, &$msg_show_sig, &$msg_track, &$msg_to_list, $repl=0){	$msg_subject = $m->subject;	$msg_body = read_pmsg_body($m->foff, $m->length);	$msg_icon = $m->icon;	$msg_smiley_disabled = $m->pmsg_opt & 2 ? '2' : '';	$msg_show_sig = $m->pmsg_opt & 1 ? '1' : '';	$msg_track = $m->pmsg_opt & 4 ? '4' : '';	$msg_to_list = $m->to_list;	reverse_fmt($msg_subject);	/* we do not revert replacment for forward/quote */	if ($repl) {		$msg_subject = apply_reverse_replace($msg_subject);		$msg_body = apply_reverse_replace($msg_body);	}	if (!$msg_smiley_disabled) {		$msg_body = post_to_smiley($msg_body);	}	if ($GLOBALS['FUD_OPT_1'] & 4096) {		$msg_body = html_to_tags($msg_body);	} else if ($GLOBALS['FUD_OPT_1'] & 2048) {		reverse_fmt($msg_body);		reverse_nl2br($msg_body);	}}	if (!_uid) {		std_error('perms');	}	if (!($FUD_OPT_1 & 1024)) {		error_dialog('{TEMPLATE: pm_err_nopm_title}', '{TEMPLATE: pm_err_nopm_msg}');	}	if (!($usr->users_opt & 32)) {		error_dialog('{TEMPLATE: pm_err_disabled_title}', '{TEMPLATE: pm_err_disabled_msg}');	}	if (($fldr_size = q_singleval('SELECT SUM(length) FROM {SQL_TABLE_PREFIX}pmsg WHERE duser_id='._uid)) > $MAX_PMSG_FLDR_SIZE) {		error_dialog('{TEMPLATE: pm_no_space_title}', '{TEMPLATE: pm_no_space_msg}');	}	is_allowed_user($usr);	$attach_control_error = null;	$pm_find_user = $FUD_OPT_1 & (8388608|4194304) ? '{TEMPLATE: pm_find_user}' : '';	$attach_count = 0; $file_array = '';	/* this is a hack, it essentially disables file attachment code when file_uploads are off */	if (ini_get("file_uploads") != 1 || $PRIVATE_ATTACHMENTS < 1) {		$ppost_enctype = '';		$PRIVATE_ATTACHMENTS = 0;	} else {		$ppost_enctype = '{TEMPLATE: ppost_enctype}';	}	if (!isset($_POST['prev_loaded'])) {		/* setup some default values */		$msg_subject = $msg_body = $msg_icon = $old_subject = $msg_ref_msg_id = '';		$msg_track = '';		$msg_show_sig = $usr->users_opt & 2048 ? '1' : '';		$msg_smiley_disabled = $FUD_OPT_1 & 8192 ? '' : '2';		$reply = $forward = $msg_id = 0;		/* deal with users passed via GET */		if (isset($_GET['toi']) && ($toi = (int)$_GET['toi'])) {			$msg_to_list = q_singleval('SELECT alias FROM {SQL_TABLE_PREFIX}users WHERE id='.$toi.' AND id>1');		} else {			$msg_to_list = '';		}		if (isset($_GET['msg_id']) && ($msg_id = (int)$_GET['msg_id'])) { /* editing a message */			if (($msg_r = db_sab('SELECT id, subject, length, foff, to_list, icon, attach_cnt, pmsg_opt, ref_msg_id FROM {SQL_TABLE_PREFIX}pmsg WHERE id='.$msg_id.' AND duser_id='._uid))) {				export_msg_data($msg_r, $msg_subject, $msg_body, $msg_icon, $msg_smiley_disabled, $msg_show_sig, $msg_track, $msg_to_list, 1);			}		} else if (isset($_GET['quote']) || isset($_GET['forward'])) { /* quote or forward message */			if (($msg_r = db_sab('SELECT id, post_stamp, ouser_id, subject, length, foff, to_list, icon, attach_cnt, pmsg_opt, ref_msg_id '.(isset($_GET['quote']) ? ', to_list' : '').' FROM {SQL_TABLE_PREFIX}pmsg WHERE id='.(int)(isset($_GET['quote']) ? $_GET['quote'] : $_GET['forward']).' AND duser_id='._uid))) {				$reply = $quote = isset($_GET['quote']) ? (int)$_GET['quote'] : 0;				$forward = isset($_GET['forward']) ? (int)$_GET['forward'] : 0;				export_msg_data($msg_r, $msg_subject, $msg_body, $msg_icon, $msg_smiley_disabled, $msg_show_sig, $msg_track, $msg_to_list);				$msg_id = $msg_to_list = '';				if ($quote) {					$msg_to_list = q_singleval('SELECT alias FROM {SQL_TABLE_PREFIX}users WHERE id='.$msg_r->ouser_id);				}				if ($quote) {					if ($FUD_OPT_1 & 4096) {						$msg_body = '{TEMPLATE: fud_quote}';					} else if ($FUD_OPT_1 & 2048) {						$msg_body = str_replace('<br>', "\n", '{TEMPLATE: plain_quote}');					} else {						$msg_body = '{TEMPLATE: html_quote}';					}					if (strncmp($msg_subject, 'Re: ', 4)) {						$old_subject = $msg_subject = 'Re: ' . $msg_subject;					}					$msg_ref_msg_id = 'R'.$reply;					unset($msg_r);				} else if ($forward && strncmp($msg_subject, 'Fwd: ', 5)) {					$old_subject = $msg_subject = 'Fwd: ' . $msg_subject;					$msg_ref_msg_id = 'F'.$forward;				}			}		} else if (isset($_GET['reply']) && ($reply = (int)$_GET['reply'])) {			if (($msg_r = db_saq('SELECT p.subject, u.alias FROM {SQL_TABLE_PREFIX}pmsg p INNER JOIN {SQL_TABLE_PREFIX}users u ON p.ouser_id=u.id WHERE p.id='.$reply.' AND p.duser_id='._uid))) {				$msg_subject = $msg_r[0];				$msg_to_list = $msg_r[1];				if (strncmp($msg_subject, 'Re: ', 4)) {					$old_subject = $msg_subject = 'Re: ' . $msg_subject;				}				reverse_fmt($msg_subject);				unset($msg_r);				$msg_ref_msg_id = 'R'.$reply;			}		}		/* restore file attachments */		if (!empty($msg_r->attach_cnt) && $PRIVATE_ATTACHMENTS > 0) {			$c = uq('SELECT id FROM {SQL_TABLE_PREFIX}attach WHERE message_id='.$msg_r->id.' AND attach_opt=1');	 		while ($r = db_rowarr($c)) {	 			$attach_list[$r[0]] = $r[0];	 		}		}	} else {		if (isset($_POST['btn_action'])) {			if ($_POST['btn_action'] == 'draft') {				$_POST['btn_draft'] = 1;			} else if ($_POST['btn_action'] == 'send') {				$_POST['btn_submit'] = 1;			}		}		$msg_to_list = htmlspecialchars($_POST['msg_to_list']);		$msg_subject = $_POST['msg_subject'];		$old_subject = $_POST['old_subject'];		$msg_body = $_POST['msg_body'];		$msg_icon = (isset($_POST['msg_icon']) && basename($_POST['msg_icon']) == $_POST['msg_icon'] && @file_exists($WWW_ROOT_DISK.'images/message_icons/'.$_POST['msg_icon'])) ? $_POST['msg_icon'] : '';		$msg_track = isset($_POST['msg_track']) ? '4' : '';		$msg_smiley_disabled = isset($_POST['msg_smiley_disabled']) ? '2' : '';		$msg_show_sig = isset($_POST['msg_show_sig']) ? '1' : '';		$reply = isset($_POST['quote']) ? (int)$_POST['quote'] : 0;		$forward = isset($_POST['forward']) ? (int)$_POST['forward'] : 0;		$msg_id = isset($_POST['msg_id']) ? (int)$_POST['msg_id'] : 0;		$msg_ref_msg_id = isset($_POST['msg_ref_msg_id']) ? (int)$_POST['msg_ref_msg_id'] : '';		/* restore file attachments */		if (!empty($_POST['file_array']) && $PRIVATE_ATTACHMENTS > 0) {			$attach_list = @unserialize(base64_decode($_POST['file_array']));		}	}	if (isset($attach_list)) {		$attach_count = count($attach_list);		$enc = base64_encode(@serialize($attach_list));		foreach ($attach_list as $v) {			if (!$v) {				$attach_count--;			}		}		/* remove file attachment */		if (isset($_POST['file_del_opt']) && isset($attach_list[$_POST['file_del_opt']])) {			if ($attach_list[$_POST['file_del_opt']]) {				$attach_list[$_POST['file_del_opt']] = 0;				/* Remove any reference to the image from the body to prevent broken images */				if (strpos($msg_body, '[img]{ROOT}?t=getfile&id='.$_POST['file_del_opt'].'[/img]') !== false) {					$msg_body = str_replace('[img]{ROOT}?t=getfile&id='.$_POST['file_del_opt'].'[/img]', '', $msg_body);				}				$attach_count--;			}		}	} else {		$attach_count = 0;		$file_array = '';	}	/* deal with newly uploaded files */	if ($PRIVATE_ATTACHMENTS > 0 && isset($_FILES['attach_control']) && $_FILES['attach_control']['size'] > 0) {		if ($_FILES['attach_control']['size'] > $PRIVATE_ATTACH_SIZE) {			$MAX_F_SIZE = $PRIVATE_ATTACH_SIZE;			$attach_control_error = '{TEMPLATE: post_err_attach_size}';		} else {			if (filter_ext($_FILES['attach_control']['name'])) {				$attach_control_error = '{TEMPLATE: post_err_attach_ext}';			} else {				if (($attach_count+1) <= $PRIVATE_ATTACHMENTS) {					$val = attach_add($_FILES['attach_control'], _uid, 1);					$attach_list[$val] = $val;					$attach_count++;				} else {					$attach_control_error = '{TEMPLATE: post_err_attach_filelimit}';				}			}		}	}	if ((isset($_POST['btn_submit']) && !check_ppost_form($_POST['msg_subject'])) || isset($_POST['btn_draft'])) {		$msg_p = new fud_pmsg;		$msg_p->pmsg_opt = (int) $msg_smiley_disabled | (int) $msg_show_sig | (int) $msg_track;		$msg_p->attach_cnt = $attach_count;		$msg_p->icon = $msg_icon;		$msg_p->body = $msg_body;		$msg_p->subject = $msg_subject;		$msg_p->fldr = isset($_POST['btn_submit']) ? 3 : 4;		$msg_p->to_list = $_POST['msg_to_list'];		$msg_p->body = apply_custom_replace($msg_p->body);		if ($FUD_OPT_1 & 4096) {			$msg_p->body = tags_to_html($msg_p->body, $FUD_OPT_1 & 16384);		} else if ($FUD_OPT_1 & 2048) {			$msg_p->body = nl2br(htmlspecialchars($msg_p->body));		}		if ($FUD_OPT_1 & 6144) {			char_fix($msg_p->body);		}		if (!($msg_p->pmsg_opt & 2)) {			$msg_p->body = smiley_to_post($msg_p->body);		}		fud_wordwrap($msg_p->body);		$msg_p->ouser_id = _uid;		$msg_p->subject = apply_custom_replace($msg_p->subject);		$msg_p->subject = htmlspecialchars($msg_p->subject);		char_fix($msg_p->subject);		if (empty($_POST['msg_id'])) {			$msg_p->pmsg_opt = $msg_p->pmsg_opt &~ 96;			if ($_POST['reply']) {				$msg_p->ref_msg_id = 'R'.$_POST['reply'];				$msg_p->pmsg_opt |= 64;			} else if ($_POST['forward']) {				$msg_p->ref_msg_id = 'F'.$_POST['forward'];			} else {				$msg_p->ref_msg_id = null;				$msg_p->pmsg_opt |= 32;			}			$msg_p->add();		} else {			$msg_p->id = (int) $_POST['msg_id'];			$msg_p->sync();		}		if (isset($attach_list)) {			attach_finalize($attach_list, $msg_p->id, 1);			/* we need to add attachments to all copies of the message */			if (!isset($_POST['btn_draft'])) {				$c = uq('SELECT id, original_name, mime_type, fsize FROM {SQL_TABLE_PREFIX}attach WHERE message_id='.$msg_p->id.' AND attach_opt=1');				while ($r = db_rowarr($c)) {					$atl[$r[0]] = "'".addslashes($r[1])."', ".$r[2].", ".$r[3];				}				if (isset($atl)) {					foreach ($GLOBALS['send_to_array'] as $mid) {						foreach ($atl as $k => $v) {							$aid = db_qid('INSERT INTO {SQL_TABLE_PREFIX}attach (owner, attach_opt, message_id, original_name, mime_type, fsize, location) VALUES(' . $mid[0] . ', 1, ' . $mid[1] . ', ' . $v .', \'\')');							$aidl[] = $aid;							copy($FILE_STORE . $k . '.atch', $FILE_STORE . $aid . '.atch');							@chmod($FILE_STORE . $aid . '.atch', ($FUD_OPT_2 & 8388608 ? 0600 : 0666));						}					}					$cc = __FUD_SQL_CONCAT__.'('.__FUD_SQL_CONCAT__."('".$FILE_STORE."', id), '.atch')";					q('UPDATE {SQL_TABLE_PREFIX}attach SET location='.$cc.' WHERE id IN('.implode(',', $aidl).')');				}			}		}		header('Location: {ROOT}?t=pmsg&'._rsidl.'&fldr=1');		exit;	}	$no_spell_subject = ($reply && $old_subject == $msg_subject) ? 1 : 0;	if (isset($_POST['btn_spell'])) {		$text = apply_custom_replace($_POST['msg_body']);		$text_s = apply_custom_replace($_POST['msg_subject']);		if ($FUD_OPT_1 & 4096) {			$text = tags_to_html($text, $FUD_OPT_1 & 16384);		} else if ($FUD_OPT_1 & 2048) {			$text = htmlspecialchars($text);		}		if ($FUD_OPT_1 & 6144) {			char_fix($text);		}		if ($FUD_OPT_1 & 8192 && !$msg_smiley_disabled) {			$text = smiley_to_post($text);		}	 	if ($text) {			$text = spell_replace(tokenize_string($text), 'body');			if ($FUD_OPT_1 & 8192 && !$msg_smiley_disabled) {				$msg_body = post_to_smiley($text);			}			if ($FUD_OPT_1 & 4096) {				$msg_body = html_to_tags($msg_body);			} else if ($FUD_OPT_1 & 2048) {				reverse_fmt($msg_body);			}			$msg_body = apply_reverse_replace($msg_body);		}		if ($text_s && !$no_spell_subject) {			$text_s = htmlspecialchars($text_s);			char_fix($text_s);			$text_s = spell_replace(tokenize_string($text_s), 'subject');			reverse_fmt($text_s);			$msg_subject = apply_reverse_replace($text_s);		}	}	ses_update_status($usr->sid, '{TEMPLATE: pm_update}');/*{POST_HTML_PHP}*/	$cur_ppage = tmpl_cur_ppage('', $folders);	$spell_check_button = ($FUD_OPT_1 & 2097152 && extension_loaded('pspell') && $usr->pspell_lang) ? '{TEMPLATE: spell_check_button}' : '';	if (isset($_POST['preview']) || isset($_POST['spell'])) {		$text = apply_custom_replace($_POST['msg_body']);		$text_s = apply_custom_replace($_POST['msg_subject']);		if ($FUD_OPT_1 & 4096) {			$text = tags_to_html($text, $FUD_OPT_1 & 16384);		} else if ($FUD_OPT_1 & 2048) {			$text = nl2br(htmlspecialchars($text));		}		if ($FUD_OPT_1 & 6144) {			char_fix($text);		}		if ($FUD_OPT_1 & 8192 && !$msg_smiley_disabled) {			$text = smiley_to_post($text);		}		$text_s = htmlspecialchars($text_s);		char_fix($text_s);		$spell = $spell_check_button && isset($_POST['spell']);		if ($spell && strlen($text)) {			$text = check_data_spell($text, 'body', $usr->pspell_lang);		}		fud_wordwrap($text);		$subj = ($spell && !$no_spell_subject && $text_s) ? check_data_spell($text_s, 'subject', $usr->pspell_lang) : $text_s;		$signature = ($FUD_OPT_1 & 32768 && $usr->sig && $msg_show_sig) ? '{TEMPLATE: signature}' : '';		$apply_spell_changes = $spell ? '{TEMPLATE: apply_spell_changes}' : '';		$preview_message = '{TEMPLATE: preview_message}';	} else {		$preview_message = '';	}	$post_error = is_post_error() ? '{TEMPLATE: post_error}' : '';	$to_err = get_err('msg_to_list');	$msg_subect_err = get_err('msg_subject');	$message_err = get_err('msg_body',1);	$post_smilies = $FUD_OPT_1 & 8192 ? draw_post_smiley_cntrl() : '';	$post_icons = draw_post_icons($msg_icon);	$fud_code_icons = $FUD_OPT_1 & 4096? '{TEMPLATE: fud_code_icons}' : '';	$post_options = tmpl_post_options('private');	if ($FUD_OPT_2 & 32768) {		$private = '1';	} else {		$private = '&amp;private=1';	}	if ($PRIVATE_ATTACHMENTS > 0) {		$file_attachments = draw_post_attachments((isset($attach_list) ? $attach_list : ''), round($PRIVATE_ATTACH_SIZE / 1024), $PRIVATE_ATTACHMENTS, $attach_control_error, $private, $msg_id);	} else {		$file_attachments = '';	}	$msg_track_check = $msg_track ? ' checked' : '';	$msg_show_sig_check = $msg_show_sig ? ' checked' : '';	if ($FUD_OPT_1 & 8192) {		$msg_smiley_disabled_check = $msg_smiley_disabled ? ' checked' : '';		$disable_smileys = '{TEMPLATE: disable_smileys}';	} else {		$disable_smileys = '';	}	if ($reply && ($mm = db_sab('SELECT p.*, u.sig, u.alias, u.users_opt, u.posted_msg_count, u.join_date, u.last_visit FROM {SQL_TABLE_PREFIX}pmsg p INNER JOIN {SQL_TABLE_PREFIX}users u ON p.ouser_id=u.id WHERE p.duser_id='._uid.' AND p.id='.$reply))) {		fud_use('drawpmsg.inc');		$dpmsg_prev_message = $dpmsg_next_message = '';		$reference_msg = tmpl_drawpmsg($mm, $usr, true);		$reference_msg = '{TEMPLATE: reference_msg}';	} else {		$reference_msg = '';	}/*{POST_PAGE_PHP_CODE}*/?>{TEMPLATE: PPOST_PAGE}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?