BoonEx Home » Unity » Blog » Delete mail from outbox 6.1
By: mrpowless (Premium, 0 points)
Posted: 25.08.2008
Tags: tutorials, help, fix
 
 

Delete mail from outbox 6.1

replace one function to get this to work

open mail.php and replace function:

function PageCodeOutbox()
{
global $memberID;
global $site;
global $tmpl;
global $date_format;

if( $_REQUEST['do_delete'] or $_REQUEST['do_mark_new'] or $_REQUEST['do_mark_old'] )
{
if( $_REQUEST['do_delete'] )
$sqlDoQuery = "DELETE FROM `Messages` WHERE";


if( $aMsgs = $_POST['m'] and is_array( $aMsgs ) and !empty( $aMsgs ) )
{
foreach( $aMsgs as $msgID => $on )
{
$msgID = (int)$msgID;
if( !$msgID or $on != 'on' )
continue;

db_res( "$sqlDoQuery `ID`=$msgID AND `Sender` = $memberID" );
}
}
}
//echoDbg( $_POST );



$query = "
SELECT
`Messages`.`ID`,
UNIX_TIMESTAMP( `Date` ) AS `timestamp`,
DATE_FORMAT(`Date`, '$date_format') AS `Date`,
`Recipient`,
`Profiles`.`NickName` AS `SenderNickName`,
`Subject`,
`New`
FROM `Messages`
LEFT JOIN `Profiles` ON
`Profiles`.`ID` = `Recipient`
WHERE `Sender` = $memberID
ORDER BY `Date` DESC
";

$rMsgs = db_res( $query );

if( !mysql_num_rows( $rMsgs ) )
return '<div class="no_result"><div>'._t( "_No messages in Outbox" ).'</div></div>';


// --- get template and replace headers ---
$aReplace = array();

$aReplace['mailbox_header_img'] = '<img src="'.getTemplateIcon( 'inbox.gif' ) .'" class="mailbox_header_img" />';
//$aReplace['summary'] = _t(
$aReplace['flag'] = _t( '_Flag' );
$aReplace['from'] = _t( '_From' );
$aReplace['date'] = _t( '_Date' );
$aReplace['subject'] = _t( '_Subject' );
$aReplace['click_to_sort'] = _t( '_Click to sort' );

$aReplace['actions_l'] = _t( "_Selected messages" ) .':';
$aReplace['actions'] = '
<input type="submit" class="mailbox_submit" name="do_delete" value="'._t('_Delete').'" onclick="return confirm(\''._t('_are you sure?').'\');" />
';

$ret = file_get_contents(BX_DIRECTORY_PATH_ROOT . "templates/tmpl_{$tmpl}/mail_box.html");
foreach( $aReplace as $key => $val )
$ret = str_replace( "__{$key}__", $val, $ret );

$aMyTmpl = preg_split( "/\{\/?InsertRows\}/", $ret );
$tmplRow = $aMyTmpl[1];
$ret = "{$aMyTmpl[0]}{InsertRows /}{$aMyTmpl[2]}";

$InsertRows = '';
$tr_class = 'odd';
while( $aMsg = mysql_fetch_assoc( $rMsgs ) )
{
$sSubject = process_line_output( html2txt( $aMsg['Subject'] ));

$aReplace = array();

$aReplace['tr_class'] = $tr_class;
$aReplace['new_add'] = $aMsg['New'] ? 'new' : '';

$aReplace['ID'] = $aMsg['ID'];
$aReplace['CheckBox'] = '<input type="checkbox" class="td_mailbox_checkbox" id="sel_msg_'.$aMsg['ID'].'" name="m['.$aMsg['ID'].']" value="on" />';
$aReplace['Flag'] = '<img class="mailbox_flag_img" src="'.getTemplateIcon( $aMsg['New'] ? 'not_readed.gif' : 'readed.gif' ).'" title="'._t( $aMsg['New'] ? '_New Message' : '_Readed' ).'" />';
$aReplace['From'] = '<center><div style="width:45px;">' . get_member_icon($aMsg['Sender']) . "<div class=\"clear_both\"></div><!--{$aMsg['SenderNickName']}--> <a href=\"".getProfileLink($aMsg['Sender'])."\">{$aMsg['SenderNickName']}</a>" . '</center>';
$aReplace['Date'] = "<!--{$aMsg['timestamp']}--> {$aMsg['Date']}";
$aReplace['Subject'] = "<!--$sSubject--> <a href=\"{$site['url']}messages_outbox.php?message={$aMsg['ID']}\">$sSubject</a>";


$sInsertRow = $tmplRow;
foreach( $aReplace as $key => $val )
$sInsertRow = str_replace( "{{$key}}", $val, $sInsertRow );

$sInsertRows .= $sInsertRow;
$tr_class = ( $tr_class == 'odd' ? 'even' : 'odd' );
}

$ret = str_replace( "{InsertRows /}", $sInsertRows, $ret );

$ret =
'<form name="mailbox_form" action="'.$_SERVER['PHP_SELF'].'?mode=outbox" method="post">'.$ret.'</form>';

return $ret;
}

 
10
 points  
good
bad
 
Comment  Report  0 reports  
 
8  comments
 
 
saigo
saigo (Advanced)   744 days ago
1
 points  
good
bad
 
Permalink  
 
nice!! thanks
mrpowless
mrpowless (Premium)   744 days ago
1
 points  
good
bad
 
 
glad you liked it
MichelSwiss
MichelSwiss (Premium)   744 days ago
1
 points  
good
bad
 
Permalink  
 
Thank you mrpowless :-)

I had to change a line for the function to work properly:

function PageCodeOutbox()
{
global $memberID;
global $dir;
global $site;
global $tmpl;
global $date_format;

if( $_REQUEST['do_delete'] or $_REQUEST['do_mark_new'] or $_REQUEST['do_mark_old'] )
{
if( $_REQUEST['do_delete'] )
$sqlDoQuery = "DELETE FROM `Messages` WHERE";

if( $aMsgs = $_POST['m'] and is_array( $aMsgs ) and !empty( $aMsgs ) )
{
foreach( $aMsgs as $msgID => $on )
{
$msgID = (int)$msgID;
if( !$msgID or $on != 'on' )
continue;

db_res( "$sqlDoQuery `ID`=$msgID AND `Sender` = $memberID" );
}
}
}

$query = "
SELECT
`Messages`.`ID`,
UNIX_TIMESTAMP( `Date` ) AS `timestamp`,
DATE_FORMAT(`Date`, '$date_format') AS `Date`,
`Recipient`,
`Profiles`.`NickName` AS `SenderNickName`,
`Subject`,
`New`
FROM `Messages`
LEFT JOIN `Profiles` ON
`Profiles`.`ID` = `Recipient`
WHERE `Sender` = $memberID
ORDER BY `Date` DESC
";

$rMsgs = db_res( $query );

if( !mysql_num_rows( $rMsgs ) )
return '<div class="no_result"><div>'._t( "_No messages in Outbox" ).'</div></div>';


// --- get template and replace headers ---
$aReplace = array();

$aReplace['mailbox_header_img'] = '<img src="'.getTemplateIcon( 'outbox.gif' ) .'" class="mailbox_header_img" />';
//$aReplace['summary'] = _t(
$aReplace['flag'] = _t( '_Flag' );
$aReplace['from'] = _t( '_From' );
$aReplace['date'] = _t( '_Date' );
$aReplace['subject'] = _t( '_Subject' );
$aReplace['click_to_sort'] = _t( '_Click to sort' );

$aReplace['actions_l'] = _t( "_Selected messages" ) .':';
$aReplace['actions'] = '
<input type="submit" class="mailbox_submit" name="do_delete" value="'._t('_Delete').'" onclick="return confirm(\''._t('_are you sure?').'\');" />
';

$ret = file_get_contents(BX_DIRECTORY_PATH_ROOT . "templates/tmpl_{$tmpl}/mail_box.html");
foreach( $aReplace as $key => $val )
$ret = str_replace( "__{$key}__", $val, $ret );

$aMyTmpl = preg_split( "/\{\/?InsertRows\}/", $ret );
$tmplRow = $aMyTmpl[1];
$ret = "{$aMyTmpl[0]}{InsertRows /}{$aMyTmpl[2]}";

$InsertRows = '';
$tr_class = 'odd';
while( $aMsg = mysql_fetch_assoc( $rMsgs ) )
{
$sSubject = process_line_output( html2txt( $aMsg['Subject'] ));

$aReplace = array();

$aReplace['tr_class'] = $tr_class;
$aReplace['new_add'] = $aMsg['New'] ? 'new' : '';

$aReplace['ID'] = $aMsg['ID'];
$aReplace['CheckBox'] = '<input type="checkbox" class="td_mailbox_checkbox" id="sel_msg_'.$aMsg['ID'].'" name="m['.$aMsg['ID'].']" value="on" />';
$aReplace['Flag'] = '<img class="mailbox_flag_img" src="'.getTemplateIcon( $aMsg['New'] ? 'not_readed.gif' : 'readed.gif' ).'" title="'._t( $aMsg['New'] ? '_New Message' : '_Readed' ).'" />';


--- here some change -------------

$aReplace['From'] = '<center><div style="width:45px;">' . get_member_icon($aMsg['Recipient']) . "<div class=\"clear_both\"></div><!--{$aMsg['RecipientNickName']}--> <a href=\"".getProfileLink($aMsg['Recipient'])."\">{$aMsg['RecipientNickName']}</a>" . '</center>';

--- end of change ----------------


$aReplace['Date'] = "<!--{$aMsg['timestamp']}--> {$aMsg['Date']}";
$aReplace['Subject'] = "<!--$sSubject--> <a href=\"{$site['url']}messages_outbox.php?message={$aMsg['ID']}\">$sSubject</a>";


$sInsertRow = $tmplRow;
foreach( $aReplace as $key => $val )
$sInsertRow = str_replace( "{{$key}}", $val, $sInsertRow );

$sInsertRows .= $sInsertRow;
$tr_class = ( $tr_class == 'odd' ? 'even' : 'odd' );
}

$ret = str_replace( "{InsertRows /}", $sInsertRows, $ret );

$ret =
'<form name="mailbox_form" action="'.$_SERVER['PHP_SELF'].'?mode=outbox" method="post">'.$ret.'</form>';

return $ret;
}
mrpowless
mrpowless (Premium)   744 days ago
1
 points  
good
bad
 
 
cool version updates already you dah man swiss
Synergy
Synergy (Premium)   744 days ago
0
 points  
good
bad
 
Permalink  
 
Thanks!
atermaner
atermaner (Advanced)   744 days ago
0
 points  
good
bad
 
Permalink  
 
mrpowless is next brilliant mod... thanks....
TheGateKeeper
TheGateKeeper (Advanced)   662 days ago
0
 points  
good
bad
 
Permalink  
 
I have read all the posts related to this topic!! It leaves me confused could someone please simplify the procedure for me :>} Thank you all!!
cpljv
cpljv (Advanced)   655 days ago
0
 points  
good
bad
 
Permalink  
 
Wow... i am so thankful Thanks to the Pros.. here

God bless you all
micliz
micliz (Premium)   163 days ago
0
 points  
good
bad
 
Permalink  
 
Haven't you guys realized that when you delete a sent message it also deletes the message from the recipient's inbox?

This is probably why you're not allowed to delete sent messages in the first place.

And on the flipside, when you delete messages in your inbox it deletes them from the senders "sent mail".

The messages are linked, and need to be separate. What am I missing here?

6.1.6
micliz
micliz (Premium)   138 days ago
0
 points  
good
bad
 
Permalink  
 
Mrpowless, what do you think about my previous comment? Am I wrong or is there a better solution?
Post a Comment
 
 
Please login to post a comment.

PET:0.085592031478882