private.inc.t
来自「eGroupWare is a multi-user, web-based gr」· T 代码 · 共 248 行
T
248 行
<?php/**************************************************************************** copyright : (C) 2001-2003 Advanced Internet Designs Inc.* email : forum@prohost.org* $Id: private.inc.t,v 1.2 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.***************************************************************************/class fud_pmsg{ var $id, $to_list, $ouser_id, $duser_id, $pdest, $ip_addr, $host_name, $post_stamp, $icon, $fldr, $subject, $attach_cnt, $pmsg_opt, $length, $foff, $login, $ref_msg_id, $body; function add($track='') { $this->post_stamp = __request_timestamp__; $this->ip_addr = get_ip(); $this->host_name = $GLOBALS['FUD_OPT_1'] & 268435456 ? "'".addslashes(get_host($this->ip_addr))."'" : 'NULL'; if ($this->fldr != 1) { $this->read_stamp = $this->post_stamp; } list($this->foff, $this->length) = write_pmsg_body($this->body); $this->id = db_qid("INSERT INTO {SQL_TABLE_PREFIX}pmsg ( ouser_id, duser_id, pdest, to_list, ip_addr, host_name, post_stamp, icon, fldr, subject, attach_cnt, read_stamp, ref_msg_id, foff, length, pmsg_opt ) VALUES( ".$this->ouser_id.", ".$this->ouser_id.", ".(isset($GLOBALS['recv_user_id']) ? intzero($GLOBALS['recv_user_id'][0]) : '0').", ".strnull(addslashes($this->to_list)).", '".$this->ip_addr."', ".$this->host_name.", ".$this->post_stamp.", ".strnull($this->icon).", ".$this->fldr.", '".addslashes($this->subject)."', ".(int)$this->attach_cnt.", ".$this->read_stamp.", ".strnull($this->ref_msg_id).", ".(int)$this->foff.", ".(int)$this->length.", ".$this->pmsg_opt." )"); if ($this->fldr == 3 && !$track) { $this->send_pmsg(); } } function send_pmsg() { $this->pmsg_opt |= 16|32; $this->pmsg_opt &= 16|32|1|2|4; foreach($GLOBALS['recv_user_id'] as $v) { $id = db_qid("INSERT INTO {SQL_TABLE_PREFIX}pmsg ( to_list, ouser_id, ip_addr, host_name, post_stamp, icon, fldr, subject, attach_cnt, foff, length, duser_id, ref_msg_id, pmsg_opt ) VALUES ( ".strnull(addslashes($this->to_list)).", ".$this->ouser_id.", '".$this->ip_addr."', ".$this->host_name.", ".$this->post_stamp.", ".strnull($this->icon).", 1, '".addslashes($this->subject)."', ".intzero($this->attach_cnt).", ".$this->foff.", ".$this->length.", ".$v.", ".strnull($this->ref_msg_id).", ".$this->pmsg_opt.")"); $GLOBALS['send_to_array'][] = array($v, $id); $um[$v] = $id; } $c = uq('SELECT id, email, users_opt, icq FROM {SQL_TABLE_PREFIX}users WHERE id IN('.implode(',', $GLOBALS['recv_user_id']).') AND users_opt>=64 AND (users_opt & 64) > 0'); $from = $GLOBALS['usr']->alias; reverse_fmt($from); $subject = $this->subject; reverse_fmt($subject); while ($r = db_rowarr($c)) { /* do not send notifications about messages sent to self */ if ($r[0] == $this->ouser_id) { continue; } if (!($r[2] & 4)) { $r[1] = $r[3] . '@pager.icq.com'; } send_pm_notification($r[1], $um[$r[0]], $subject, $from, $r[2]); } } function sync() { $this->post_stamp = __request_timestamp__; $this->ip_addr = get_ip(); $this->host_name = $GLOBALS['FUD_OPT_1'] & 268435456 ? "'".addslashes(get_host($this->ip_addr))."'" : 'NULL'; list($this->foff, $this->length) = write_pmsg_body($this->body); q("UPDATE {SQL_TABLE_PREFIX}pmsg SET to_list=".strnull(addslashes($this->to_list)).", icon=".strnull($this->icon).", ouser_id=".$this->ouser_id.", duser_id=".$this->ouser_id.", post_stamp=".$this->post_stamp.", subject='".addslashes($this->subject)."', ip_addr='".$this->ip_addr."', host_name=".$this->host_name.", attach_cnt=".(int)$this->attach_cnt.", fldr=".$this->fldr.", foff=".(int)$this->foff.", length=".(int)$this->length.", pmsg_opt=".$this->pmsg_opt." WHERE id=".$this->id); if ($this->fldr == 3) { $this->send_pmsg(); } }}function set_nrf($nrf, $id){ q("UPDATE {SQL_TABLE_PREFIX}pmsg SET pmsg_opt=(pmsg_opt & ~ 96) | ".$nrf." WHERE id=".$id);}function write_pmsg_body($text){ if (!db_locked()) { $ll = 1; db_lock('{SQL_TABLE_PREFIX}pmsg WRITE'); } $fp = fopen($GLOBALS['MSG_STORE_DIR'].'private', 'ab'); fseek($fp, 0, SEEK_END); if (!($s = ftell($fp))) { $s = __ffilesize($fp); } if (($len = fwrite($fp, $text)) !== strlen($text)) { exit("FATAL ERROR: system has ran out of disk space<br>\n"); } fclose($fp); if (isset($ll)) { db_unlock(); } if (!$s) { chmod($GLOBALS['MSG_STORE_DIR'].'private', ($GLOBALS['FUD_OPT_2'] & 8388608 ? 0600 : 0666)); } return array($s, $len);}function read_pmsg_body($offset, $length){ if (!$length) { return; } $fp = fopen($GLOBALS['MSG_STORE_DIR'].'private', 'rb'); fseek($fp, $offset, SEEK_SET); $str = fread($fp, $length); fclose($fp); return $str;}function pmsg_move($mid, $fid, $validate){ if (!$validate && !q_singleval('SELECT id FROM {SQL_TABLE_PREFIX}pmsg WHERE duser_id='._uid.' AND id='.$mid)) { return; } q('UPDATE {SQL_TABLE_PREFIX}pmsg SET fldr='.$fid.' WHERE duser_id='._uid.' AND id='.$mid);}function pmsg_del($mid, $fldr=null){ if (is_null($fldr) && is_null(($fldr = q_singleval('SELECT fldr FROM {SQL_TABLE_PREFIX}pmsg WHERE duser_id='._uid.' AND id='.$mid)))) { return; } if ($fldr != 5) { pmsg_move($mid, 5, false); } else { q('DELETE FROM {SQL_TABLE_PREFIX}pmsg WHERE id='.$mid); $c = uq('SELECT id FROM {SQL_TABLE_PREFIX}attach WHERE message_id='.$mid.' AND attach_opt=1'); while ($r = db_rowarr($c)) { @unlink($GLOBALS[''] . $r[0] . '.atch'); } q('DELETE FROM {SQL_TABLE_PREFIX}attach WHERE message_id='.$mid.' AND attach_opt=1'); }}function send_pm_notification($email, $pid, $subject, $from, $not_mthd){ $sub = '{TEMPLATE: pm_notify_subject}'; if ($not_mthd == 'EMAIL') { $pfx = ''; $body = '{TEMPLATE: pm_notify_body_email}'; } else { $body = '{TEMPLATE: pm_notify_body_icq}'; } send_email($GLOBALS['NOTIFY_FROM'], $email, $sub, $body);}?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?