2006-12-02 04:36:16 +00:00
< ? php
/*
+ ----------------------------------------------------------------------------+
| e107 website system
|
| <EFBFBD> Steve Dunstan 2001 - 2002
| http :// e107 . org
| jalist @ e107 . org
|
| Released under the terms and conditions of the
| GNU General Public License ( http :// gnu . org ) .
|
| $Source : / cvs_backup / e107_0 . 8 / e107_plugins / pm / pm . php , v $
2008-11-08 17:11:44 +00:00
| $Revision : 1.8 $
| $Date : 2008 - 11 - 08 17 : 11 : 44 $
| $Author : e107steved $
2006-12-02 04:36:16 +00:00
+----------------------------------------------------------------------------+
*/
$retrieve_prefs [] = 'pm_prefs' ;
require_once ( " ../../class2.php " );
require_once ( e_PLUGIN . " pm/pm_class.php " );
require_once ( e_PLUGIN . " pm/pm_func.php " );
$lan_file = e_PLUGIN . " pm/languages/ " . e_LANGUAGE . " .php " ;
include_once ( is_readable ( $lan_file ) ? $lan_file : e_PLUGIN . " pm/languages/English.php " );
define ( " ATTACHMENT_ICON " , " <img src=' " . e_PLUGIN . " pm/images/attach.png' alt='' /> " );
$qs = explode ( " . " , e_QUERY );
2007-05-28 11:18:19 +00:00
$action = varset ( $qs [ 0 ], 'inbox' );
if ( ! $action ) $action = 'inbox' ;
$pm_proc_id = intval ( varset ( $qs [ 1 ], 0 ));
2006-12-02 04:36:16 +00:00
$pm_prefs = $sysprefs -> getArray ( " pm_prefs " );
2006-12-30 12:41:46 +00:00
if ( ! isset ( $pm_prefs [ 'pm_class' ]) || ! check_class ( $pm_prefs [ 'pm_class' ]))
2006-12-02 04:36:16 +00:00
{
require_once ( HEADERF );
$ns -> tablerender ( LAN_PM , LAN_PM_12 );
require_once ( FOOTERF );
exit ;
}
$pm =& new private_message ;
$message = " " ;
$pm_prefs [ 'perpage' ] = intval ( $pm_prefs [ 'perpage' ]);
if ( $pm_prefs [ 'perpage' ] == 0 )
{
$pm_prefs [ 'perpage' ] = 10 ;
}
//Auto-delete message, if timeout set in admin
$del_qry = array ();
$read_timeout = intval ( $pm_prefs [ 'read_timeout' ]);
$unread_timeout = intval ( $pm_prefs [ 'unread_timeout' ]);
if ( $read_timeout > 0 )
{
2008-02-02 22:41:55 +00:00
$timeout = time () - ( $read_timeout * 86400 );
2006-12-02 04:36:16 +00:00
$del_qry [] = " (pm_sent < { $timeout } AND pm_read > 0) " ;
}
if ( $unread_timeout > 0 )
{
2008-02-02 22:41:55 +00:00
$timeout = time () - ( $unread_timeout * 86400 );
2006-12-02 04:36:16 +00:00
$del_qry [] = " (pm_sent < { $timeout } AND pm_read = 0) " ;
}
if ( count ( $del_qry ) > 0 )
{
$qry = implode ( " OR " , $del_qry );
if ( $sql -> db_Select ( " private_msg " , " pm_id " , $qry ))
{
$delList = $sql -> db_getList ();
foreach ( $delList as $p )
{
$pm -> del ( $p [ 'pm_id' ]);
}
}
}
if ( " del " == $action || isset ( $_POST [ 'pm_delete_selected' ]))
{
if ( isset ( $_POST [ 'pm_delete_selected' ]))
{
foreach ( array_keys ( $_POST [ 'selected_pm' ]) as $id )
{
$message .= LAN_PM_24 . " : $id <br /> " ;
$message .= $pm -> del ( $id );
}
}
if ( 'del' == $action )
{
2007-05-28 11:18:19 +00:00
$message = $pm -> del ( $pm_proc_id );
2006-12-02 04:36:16 +00:00
}
if ( $qs [ 2 ] != " " )
{
$action = $qs [ 2 ];
}
else
{
if ( substr ( $_SERVER [ 'HTTP_REFERER' ], - 5 ) == " inbox " )
{
$action = " inbox " ;
}
if ( substr ( $_SERVER [ 'HTTP_REFERER' ], - 6 ) == " outbox " )
{
$action = " outbox " ;
}
}
2007-07-14 20:38:11 +00:00
$pm_proc_id = 0 ;
2006-12-02 04:36:16 +00:00
unset ( $qs );
}
if ( 'block' == $action )
{
2007-05-28 11:18:19 +00:00
$message = $pm -> block_add ( $pm_proc_id );
2006-12-02 04:36:16 +00:00
$action = 'inbox' ;
2008-11-08 17:11:44 +00:00
$pm_proc_id = 0 ;
2006-12-02 04:36:16 +00:00
}
if ( 'unblock' == $action )
{
2007-05-28 11:18:19 +00:00
$message = $pm -> block_del ( $pm_proc_id );
2006-12-02 04:36:16 +00:00
$action = 'inbox' ;
2008-11-08 17:11:44 +00:00
$pm_proc_id = 0 ;
2006-12-02 04:36:16 +00:00
}
if ( " get " == $action )
{
2007-05-28 11:18:19 +00:00
$pm -> send_file ( $pm_proc_id , intval ( $qs [ 2 ]));
2006-12-02 04:36:16 +00:00
exit ;
}
require_once ( HEADERF );
if ( isset ( $_POST [ 'postpm' ]))
{
$message = post_pm ();
$action = 'outbox' ;
}
if ( $message != " " )
{
$ns -> tablerender ( " " , $message );
}
if ( " send " == $action )
{
2007-05-28 11:18:19 +00:00
$ns -> tablerender ( LAN_PM , show_send ( $pm_proc_id ));
2006-12-02 04:36:16 +00:00
}
if ( " reply " == $action )
{
2007-05-28 11:18:19 +00:00
$pmid = $pm_proc_id ;
2006-12-02 04:36:16 +00:00
if ( $pm_info = $pm -> pm_get ( $pmid ))
{
if ( $pm_info [ 'pm_to' ] != USERID )
{
$ns -> tablerender ( LAN_PM , LAN_PM_56 );
}
else
{
$ns -> tablerender ( LAN_PM , show_send ());
}
}
else
{
$ns -> tablerender ( LAN_PM , LAN_PM_57 );
}
}
if ( " inbox " == $action )
{
2007-05-28 11:18:19 +00:00
$ns -> tablerender ( LAN_PM . " - " . LAN_PM_25 , show_inbox ( $pm_proc_id ), " PM " );
2006-12-02 04:36:16 +00:00
}
if ( " outbox " == $action )
{
2007-05-28 11:18:19 +00:00
$ns -> tablerender ( LAN_PM . " - " . LAN_PM_26 , show_outbox ( $pm_proc_id ), " PM " );
2006-12-02 04:36:16 +00:00
}
if ( " show " == $action )
{
2007-05-28 11:18:19 +00:00
show_pm ( $pm_proc_id );
2006-12-02 04:36:16 +00:00
}
require_once ( FOOTERF );
exit ;
function show_send ( $to_uid )
{
2007-06-28 19:28:23 +00:00
global $tp , $pm_info , $pm_prefs ;
2006-12-02 04:36:16 +00:00
$pm_outbox = pm_getInfo ( 'outbox' );
if ( $to_uid )
{
$sql2 =& new db ;
if ( $sql2 -> db_Select ( 'user' , 'user_name' , " user_id = ' " . intval ( $to_uid ) . " ' " ))
{
$row = $sql2 -> db_Fetch ();
$pm_info [ 'from_name' ] = $row [ 'user_name' ];
}
}
if ( $pm_outbox [ 'outbox' ][ 'filled' ] >= 100 )
{
return str_replace ( '{PERCENT}' , $pm_outbox [ 'outbox' ][ 'filled' ], LAN_PM_13 );
}
require_once ( e_PLUGIN . " pm/pm_shortcodes.php " );
$tpl_file = THEME . " pm_template.php " ;
include_once ( is_readable ( $tpl_file ) ? $tpl_file : e_PLUGIN . " pm/pm_template.php " );
$enc = ( check_class ( $pm_prefs [ 'attach_class' ]) ? " enctype='multipart/form-data' " : " " );
$text = " <form { $enc } method='post' action=' " . e_SELF . " ' id='dataform'>
< div >< input type = 'hidden' name = 'numsent' value = '{$pm_outbox[' outbox '][' total ']}' /> " .
$tp -> parseTemplate ( $PM_SEND_PM , TRUE , $pm_shortcodes ) .
" </div></form> " ;
return $text ;
}
function show_inbox ( $start = 0 )
{
global $pm , $tp , $pm_shortcodes , $pm_info , $pm_blocks , $pmlist , $pm_start , $pm_prefs ;
$pm_start = $start ;
require_once ( e_PLUGIN . " pm/pm_shortcodes.php " );
$tpl_file = THEME . " pm_template.php " ;
include ( is_readable ( $tpl_file ) ? $tpl_file : e_PLUGIN . " pm/pm_template.php " );
$pm_blocks = $pm -> block_get ();
$pmlist = $pm -> pm_get_inbox ( USERID , $pm_start , $pm_prefs [ 'perpage' ]);
$txt = " <form method='post' action=' " . e_SELF . " ? " . e_QUERY . " '> " ;
$txt .= $tp -> parseTemplate ( $PM_INBOX_HEADER , true , $pm_shortcodes );
if ( $pmlist [ 'total_messages' ])
{
foreach ( $pmlist [ 'messages' ] as $rec )
{
if ( trim ( $rec [ 'pm_subject' ]) == '' ) { $rec [ 'pm_subject' ] = " [ " . LAN_PM_61 . " ] " ; }
$pm_info = $rec ;
$txt .= $tp -> parseTemplate ( $PM_INBOX_TABLE , true , $pm_shortcodes );
}
}
else
{
$txt .= $tp -> parseTemplate ( $PM_INBOX_EMPTY , true , $pm_shortcodes );
}
$txt .= $tp -> parseTemplate ( $PM_INBOX_FOOTER , true , $pm_shortcodes );
$txt .= " </form> " ;
return $txt ;
}
function show_outbox ( $start = 0 )
{
global $pm , $tp , $pm_shortcodes , $pm_info , $pm_start , $pm_prefs , $pmlist ;
$pm_start = $start ;
require_once ( e_PLUGIN . " pm/pm_shortcodes.php " );
$tpl_file = THEME . " pm_template.php " ;
include ( is_readable ( $tpl_file ) ? $tpl_file : e_PLUGIN . " pm/pm_template.php " );
$pmlist = $pm -> pm_get_outbox ( USERID , $pm_start , $pm_prefs [ 'perpage' ]);
$txt = " <form method='post' action=' " . e_SELF . " ? " . e_QUERY . " '> " ;
$txt .= $tp -> parseTemplate ( $PM_OUTBOX_HEADER , true , $pm_shortcodes );
if ( $pmlist [ 'total_messages' ])
{
foreach ( $pmlist [ 'messages' ] as $rec )
{
if ( trim ( $rec [ 'pm_subject' ]) == '' ) { $rec [ 'pm_subject' ] = " [ " . LAN_PM_61 . " ] " ; }
$pm_info = $rec ;
$txt .= $tp -> parseTemplate ( $PM_OUTBOX_TABLE , true , $pm_shortcodes );
}
}
else
{
$txt .= $tp -> parseTemplate ( $PM_OUTBOX_EMPTY , true , $pm_shortcodes );
}
$txt .= $tp -> parseTemplate ( $PM_OUTBOX_FOOTER , true , $pm_shortcodes );
$txt .= " </form> " ;
return $txt ;
}
function show_pm ( $pmid )
{
global $pm , $tp , $pm_shortcodes , $pm_info , $ns ;
require_once ( e_PLUGIN . " pm/pm_shortcodes.php " );
$tpl_file = THEME . " pm_template.php " ;
include_once ( is_readable ( $tpl_file ) ? $tpl_file : e_PLUGIN . " pm/pm_template.php " );
$pm_info = $pm -> pm_get ( $pmid );
if ( $pm_info [ 'pm_to' ] != USERID && $pm_info [ 'pm_from' ] != USERID )
{
$ns -> tablerender ( LAN_PM , LAN_PM_60 );
require_once ( FOOTERF );
exit ;
}
if ( $pm_info [ 'pm_read' ] == 0 && $pm_info [ 'pm_to' ] == USERID )
2007-09-22 17:41:29 +00:00
{ // Inbox
2006-12-02 04:36:16 +00:00
$now = time ();
$pm_info [ 'pm_read' ] = $now ;
$pm -> pm_mark_read ( $pmid , $pm_info );
}
$txt .= $tp -> parseTemplate ( $PM_SHOW , true , $pm_shortcodes );
$ns -> tablerender ( LAN_PM , $txt );
2007-09-22 17:41:29 +00:00
if ( $pm_info [ 'pm_from' ] == USERID )
{ // Show Outbox
2007-05-28 11:18:19 +00:00
$ns -> tablerender ( LAN_PM . " - " . LAN_PM_26 , show_outbox ( $pm_proc_id ), " PM " );
2006-12-02 04:36:16 +00:00
}
else
2007-09-22 17:41:29 +00:00
{ // Show Inbox
2007-05-28 11:18:19 +00:00
$ns -> tablerender ( LAN_PM . " - " . LAN_PM_25 , show_inbox ( $pm_proc_id ), " PM " );
2006-12-02 04:36:16 +00:00
}
}
function post_pm ()
{
global $pm_prefs , $pm , $pref , $sql , $tp ;
if ( ! check_class ( $pm_prefs [ 'pm_class' ]))
{
return LAN_PM_12 ;
}
$pm_info = pm_getInfo ( 'outbox' );
if ( $pm_info [ 'outbox' ][ 'total' ] != $_POST [ 'numsent' ])
{
return LAN_PM_14 ;
}
if ( isset ( $_POST [ 'user' ]))
{
$_POST [ 'pm_to' ] = $_POST [ 'user' ];
}
if ( isset ( $_POST [ 'pm_to' ]))
{
$msg = " " ;
if ( isset ( $_POST [ 'to_userclass' ]) && $_POST [ 'to_userclass' ])
{
if ( ! $pm_prefs [ 'allow_userclass' ])
{
return LAN_PM_15 ;
}
elseif ( ! check_class ( $_POST [ 'pm_userclass' ]) && ! ADMIN )
{
return LAN_PM_16 ;
}
}
else
{
$to_array = explode ( " \n " , trim ( $_POST [ 'pm_to' ]));
foreach ( $to_array as $k => $v )
{
$to_array [ $k ] = trim ( $v );
}
$to_array = array_unique ( $to_array );
if ( count ( $to_array ) == 1 )
{
$_POST [ 'pm_to' ] = $to_array [ 0 ];
}
if ( check_class ( $pm_prefs [ 'multi_class' ]) && count ( $to_array ) > 1 )
{
foreach ( $to_array as $to )
{
if ( $to_info = $pm -> pm_getuid ( $to ))
{
if ( ! $sql -> db_Update ( " private_msg_block " , " pm_block_count=pm_block_count+1 WHERE pm_block_from = ' " . USERID . " ' AND pm_block_to = ' " . $tp -> toDB ( $to ) . " ' " ))
{
$_POST [ 'to_array' ][] = $to_info ;
}
}
}
}
else
{
if ( $to_info = $pm -> pm_getuid ( $_POST [ 'pm_to' ]))
{
$_POST [ 'to_info' ] = $to_info ;
}
else
{
return LAN_PM_17 ;
}
if ( $sql -> db_Update ( " private_msg_block " , " pm_block_count=pm_block_count+1 WHERE pm_block_from = ' " . USERID . " ' AND pm_block_to = ' { $to_info [ 'user_id' ] } ' " ))
{
return LAN_PM_18 . $to_info [ 'user_name' ];
}
}
}
if ( isset ( $_POST [ 'receipt' ]))
{
if ( ! check_class ( $pm_prefs [ 'receipt_class' ]))
{
unset ( $_POST [ 'receipt' ]);
}
}
$totalsize = strlen ( $_POST [ 'pm_message' ]);
$maxsize = intval ( $pm_prefs [ 'attach_size' ]) * 1024 ;
foreach ( array_keys ( $_FILES [ 'file_userfile' ][ 'size' ]) as $fid )
{
if ( $maxsize > 0 && $_FILES [ 'file_userfile' ][ 'size' ][ $fid ] > $maxsize )
{
$msg .= str_replace ( " { FILENAME} " , $_FILES [ 'file_userfile' ][ 'name' ][ $fid ], LAN_PM_62 ) . " <br /> " ;
$_FILES [ 'file_userfile' ][ 'size' ][ $fid ] = 0 ;
}
$totalsize += $_FILES [ 'file_userfile' ][ 'size' ][ $fid ];
}
if ( intval ( $pref [ 'pm_limit' ]) > 0 )
{
if ( $pref [ 'pm_limit' ] == '1' )
{
if ( $pm_info [ 'outbox' ][ 'total' ] == $pm_info [ 'outbox' ][ 'limit' ])
{
return LAN_PM_19 ;
}
}
else
{
if ( $pm_info [ 'outbox' ][ 'size' ] + $totalsize > $pm_info [ 'outbox' ][ 'limit' ])
{
return LAN_PM_21 ;
}
}
}
if ( $_FILES [ 'file_userfile' ][ 'name' ][ 0 ])
{
if ( check_class ( $pm_prefs [ 'attach_class' ]))
{
require_once ( e_HANDLER . " upload_handler.php " );
$randnum = rand ( 1000 , 9999 );
$_POST [ 'uploaded' ] = file_upload ( e_PLUGIN . " pm/attachments " , " attachment " , $randnum . " _ " );
if ( $_POST [ 'uploaded' ] == FALSE )
{
unset ( $_POST [ 'uploaded' ]);
$msg .= LAN_PM_22 . " <br /> " ;
}
}
else
{
$msg .= LAN_PM_23 . " <br /> " ;
unset ( $_POST [ 'uploaded' ]);
}
}
$_POST [ 'from_id' ] = USERID ;
return $msg . $pm -> add ( $_POST );
}
}
?>