Mod Name / Version Filter PM's 1.0<br />Description Allows your users to filter their private messages by sender/receiver and or date<br />Working under UBB.threads 6.1<br />Any pre-requisites None<br />Author(s) dimopoulos<br />Credits threadsdev.com who taught me how to do things in php and ubb threads<br />Demo None.<br />Files Altered viewmessages.php, templates/default/viewmessages.tmpl<br />Database Altered No<br />New Files None<br />Any other info Please report any problems you might have and I'll try to fix them as soon as possible.<br /><br />Step 1<br />Open viewmessages.php<br /><br />Step 1.1<br />Find this:<br /><pre><font class="small">code:</font><hr><br />// Grab the proper private messages<br /> $field1 = $ubbt_lang['TEXT_FROM'];<br /> $field2 = $ubbt_lang['TEXT_REC'];<br /> if ($box == "received") {<br /> $extra = "<>";<br /> }<br /> else {<br /> $extra = "=";<br /> $field1 = $ubbt_lang['SENT_TO'];<br /> $field2 = $ubbt_lang['SENT'];<br /> }<br /></pre><hr><br />BELOW IT ADD<br /><pre><font class="small">code:</font><hr><br /> <br /> $strWhere = "";<br /> <br /> if (!empty($fltdate))<br /> {<br /> $strWhere .= " AND FROM_UNIXTIME( M_Sent, '%d/%b/%Y' ) = '$fltdate' ";<br /> }<br /> <br /> if (!empty($fltfrom))<br /> {<br /> $strWhere .= " AND M_Sender = '$fltfrom' ";<br /> }<br /></pre><hr><br /><br />Step 1.2<br />Find this:<br /><pre><font class="small">code:</font><hr><br /> $query = "<br /> SELECT M_Status, M_Subject, M_Sender, M_Sent, M_Number<br /> FROM {$config['tbprefix']}Messages<br /> WHERE M_Username = '$username_q'<br /> AND M_Status $extra 'X'<br /> ORDER BY M_Sent DESC<br /> ";<br /></pre><hr><br />CHANGE it to this<br /><pre><font class="small">code:</font><hr><br /> $query = "<br /> SELECT M_Status, M_Subject, M_Sender, M_Sent, M_Number<br /> FROM {$config['tbprefix']}Messages<br /> WHERE M_Username = '$username_q'<br /> AND M_Status $extra 'X'<br /> $strWhere<br /> ORDER BY M_Sent DESC<br /> ";<br /></pre><hr><br /><br />Step 1.3<br />Find this:<br /><pre><font class="small">code:</font><hr><br /> $messagesize = sizeof($message);<br /></pre><hr><br />BELOW IT ADD<br /><pre><font class="small">code:</font><hr><br /> $strQuery = "SELECT M_Sender <br /> FROM {$config['tbprefix']}Messages<br /> WHERE M_Username = '$username_q'<br /> AND M_Status $extra 'X'<br /> GROUP BY M_Sender<br /> ORDER BY M_Sender<br /> ";<br /> $strUserFilter = populate_combo( $dbh, $strQuery, "fltfrom", $fltfrom );<br /> $strQuery = "SELECT FROM_UNIXTIME( M_Sent, '%d/%b/%Y' ) AS MDate<br /> FROM {$config['tbprefix']}Messages<br /> WHERE M_Username = '$username_q'<br /> AND M_Status $extra 'X'<br /> GROUP BY MDate <br /> ORDER BY M_Sent DESC <br /> ";<br /> $strDateFilter = populate_combo( $dbh, $strQuery, "fltdate", $fltdate );<br /></pre><hr><br /><br />Step 1.4<br />Find this:<br /><pre><font class="small">code:</font><hr><br />// ----------------<br />// send the footer<br /> $html -> send_footer();<br /></pre><hr><br />BELOW IT ADD<br /><pre><font class="small">code:</font><hr><br /> function populate_combo( &$dbh, $strSQL, $strControlName, $strChoice="" )<br /> {<br /> <br /> // This will create the option box<br /> $strOutput = "";<br /> $strSelected = "";<br /> $arrReturned = array();<br /> $strCr = chr(13);<br /> <br /> $strOutput .= "<select name=\"$strControlName\" class=\"buttons\">$strCr";<br /> if ( empty($strChoice) )<br /> {<br /> $strOutput .= "<option value=\"\" selected=\"selected\">No Filter$strCr";<br /> }<br /> else<br /> {<br /> $strOutput .= "<option value=\"\">No Filter$strCr";<br /> }<br /> <br /> // Database call<br /> $sth = $dbh -> do_query($strSQL);<br /> while ( $arrReturned = $dbh -> fetch_array($sth) ) <br /> {<br /> // Check for the selected option<br /> if ( $strChoice == $arrReturned[0] )<br /> {<br /> $strSelected = "selected=\"selected\"";<br /> }<br /> else<br /> {<br /> $strSelected = "";<br /> }<br /> $strOutput .= "<option value=\"{$arrReturned[0]}\" $strSelected>{$arrReturned[0]}$strCr";<br /> }<br /> $strOutput .= "</select>$strCr";<br /> <br /> $dbh -> finish_sth($sth);<br /> <br /> return $strOutput;<br /> }<br /></pre><hr><br /><br /><br />Step 2 OPTIONAL:<br />For those who have applied the PM Limit modification (to show the private messages in pages) you need to also do the following:<br /><br />Step 2.3<br />Find this:<br /><pre><font class="small">code:</font><hr><br /> $prevstart = "<a href=\"{$config['phpurl']}/viewmessages.php?Cat=$Cat&page=$prev&box=$box\">";<br /></pre><hr><br />CHANGE it to this<br /><pre><font class="small">code:</font><hr><br /> $prevstart = "<a href=\"{$config['phpurl']}/viewmessages.php?Cat=$Cat&page=$prev&box=$box&fltfrom=$fltfrom&fltdate=$fltdate\">";<br /></pre><hr><br /><br />Step 1.3<br />Find this:<br /><pre><font class="small">code:</font><hr><br /> $nextstart = "<a href=\"{$config['phpurl']}/viewmessages.php?Cat=$Cat&page=$next&box=$box\">";<br /></pre><hr><br />CHANGE it to this<br /><pre><font class="small">code:</font><hr><br /> $nextstart = "<a href=\"{$config['phpurl']}/viewmessages.php?Cat=$Cat&page=$next&box=$box&fltfrom=$fltfrom&fltdate=$fltdate\">";<br /></pre><hr><br /><br /><br />Step 3<br />Open viewmessages.tmpl<br /><br />Step 3.1<br />Find this:<br /><pre><font class="small">code:</font><hr><br /><form name="checkboxform1" method="post" action="{$config['phpurl']}/delete.php"><br /><input type="hidden" name="Cat" value="$Cat" /><br /><input type="hidden" name="box" value="$box" /><br /><table width="{$theme['tablewidth']}" align="center" cellpadding="1" cellspacing="1" class="tablesurround"><br /><tr><br /><td><br /><table cellpadding="{$theme['cellpadding']}" cellspacing="{$theme['cellspacing']}" width="100%" class="tableborders"><br /></pre><hr><br />ABOVE IT ADD<br /><pre><font class="small">code:</font><hr><br /><form name="filterform1" method="post" action="{$config['phpurl']}/viewmessages.php"><br /><input type="hidden" name="Cat" value="$Cat" /><br /><input type="hidden" name="box" value="$box" /><br /><table width="{$theme['tablewidth']}" align="center" cellpadding="1" cellspacing="1" class="tablesurround"><br /><tr><br /><td><br /><table cellpadding="{$theme['cellpadding']}" cellspacing="{$theme['cellspacing']}" width="100%" class="tableborders"><br /><td class="tdheader" align="right"><br />Filter messages: <br />From: {$strUserFilter} <br />Date: {$strDateFilter} <br /><input type="submit" name="refreshpm" value="Refresh" class="buttons" /><br /></td><br /></tr><br /></table><br /></td><br /></tr><br /></table><br /></form><br /></pre><hr><br /><br />This modification is particularly handy to my users who don't delete their PM's - neither do I (no space problems here <img src="/forum/images/graemlins/wink.gif" alt="" />)<br />Enjoy!
Attachments
62437-FilterPM 1.0.zip (10 downloads)
_________________________
Nikos