The Arcive of vBulletin Modifications Site. |
|
New PM Alert (Replacement For PM Popup) Details »»
|
|||||||||||||||||||||||||
This is a port of this:
https://vborg.vbsupport.ru/showthread.php?t=59890 Not much was changed from the original, other than a few minor code changes. Don't know if it was done in the best way but it works. I don't know of a way this could be done without file edits. If anyone has any ideas, they're more than welcome. And I also plan on making this optional for users, so they can decide if they want this or the normal popup.------------------- Open root/global.php ------------------- ------------ Find: ------------ Code:
// new private message script 'pm_popup_script', Replace with: ------------- Code:
// new private message script 'pm_new_globals', Find: ------------ Code:
// #############################################################################
// get new private message popup
$shownewpm = false;
if ($vbulletin->userinfo['pmpopup'] == 2 AND $vbulletin->options['checknewpm'] AND $vbulletin->userinfo['userid'] AND !defined('NOPMPOPUP'))
{
$userdm =& datamanager_init('User', $vbulletin, ERRTYPE_SILENT);
$userdm->set_existing($vbulletin->userinfo);
$userdm->set('pmpopup', 1);
$userdm->save(true, 'pmpopup'); // 'pmpopup' tells db_update to issue a shutdownquery of the same name
unset($userdm);
if (THIS_SCRIPT != 'private' AND THIS_SCRIPT != 'login')
{
$newpm = $db->query_first("
SELECT pm.pmid, title, fromusername
FROM " . TABLE_PREFIX . "pmtext AS pmtext
LEFT JOIN " . TABLE_PREFIX . "pm AS pm USING(pmtextid)
WHERE pm.userid = " . $vbulletin->userinfo['userid'] . "
ORDER BY dateline DESC
LIMIT 1
");
$newpm['username'] = addslashes_js(unhtmlspecialchars($newpm['fromusername'], true), '"');
$newpm['title'] = addslashes_js(unhtmlspecialchars($newpm['title'], true), '"');
$shownewpm = true;
}
}
Replace with: ------------- Code:
// get new private message alert - hack
$newpmmsg = 0;
$shownewpm = false;
if ($vbulletin->userinfo['pmpopup'] == 2 AND $vbulletin->options['checknewpm'] AND $vbulletin->userinfo['userid'] AND $vbulletin->userinfo['pmpopup'] == 2)
{
$userdm =& datamanager_init('User', $vbulletin, ERRTYPE_SILENT);
$userdm->set_existing($vbulletin->userinfo);
$userdm->set('pmpopup', 1);
$userdm->save(true, 'pmpopup'); // 'pmpopup' tells db_update to issue a shutdownquery of the same name
unset($userdm);
if (THIS_SCRIPT != 'private')
{
$newpmmsg = 1;
$newpm = $db->query_first("
SELECT pm.pmid, title, fromusername, fromuserid
FROM " . TABLE_PREFIX . "pmtext AS pmtext
LEFT JOIN " . TABLE_PREFIX . "pm AS pm USING(pmtextid)
WHERE pm.userid = ". $vbulletin->userinfo['userid'] ."
ORDER BY dateline DESC
LIMIT 1
");
require_once('./includes/functions_user.php');
$pm_avaurl = fetch_avatar_url($newpm['fromuserid']);
if (empty($pm_avaurl))
{
$showpm_ava = false;
}
else
{
$showpm_ava = true;
}
// end hack - new pm notifacation
$newpm['username'] = unhtmlspecialchars($newpm['fromusername'], true);
$newpm['userid'] = unhtmlspecialchars($newpm['fromuserid'], true);
$newpm['title'] = unhtmlspecialchars($newpm['title'], true);
$shownewpm = true;
}
}
Find: ----------- Code:
if ($shownewpm)
{
if ($vbulletin->userinfo['pmunread'] == 1)
{
$pmpopupurl = 'private.php?' . $vbulletin->session->vars['sessionurl_js'] . "do=showpm&pmid=$newpm[pmid]";
}
else
{
if (!empty($vbulletin->session->vars['sessionurl_js']))
{
$pmpopupurl = 'private.php?' . $vbulletin->session->vars['sessionurl_js'];
}
else
{
$pmpopupurl = 'private.php';
}
}
eval('$footer .= "' . fetch_template('pm_popup_script') . '";');
}
------------- Replace with: ------------- Code:
if ($shownewpm)
{
eval('$newpm = "' . fetch_template('pm_new_globals') . '";');
}
else
{
$newpm = '';
}
/* - end file edits, now for the templates!: --------------------- Open template: navbar --------------------- At the very end of the template add: Code:
<br /> $newpm Add new template: pm_new_globals -------------------------------- Populate it with: Code:
<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center"> <tr><if condition="$newpm"> <td class="alt1" width="100%"> <div class="smallfont"><img src="./image.php?u=$newpm[userid]" alt="$newpm[username]'s avatar" border="0" /></div> </td> </if> <td class="alt2" valign="top" nowrap="nowrap"> <div class="smallfont">$bbuserinfo[username] you have a new private message from $newpm[username], subject: '$newpm[title]'<br /><a href="private.php?$session[sessionurl]" TARGET="_blank">Click here to enter your private message area</a></div> </td> </tr> </table> Show Your Support
|
|||||||||||||||||||||||||
| Comments |
|
#2
|
||||
|
||||
|
If you have vbadvanced installed, it still shows the normal popup on your homepage. But works correctly in the forum. Why it does this I don't know but I'm looking into it.
|
|
#3
|
||||
|
||||
|
Any screenshots of what it will look like?
|
|
#4
|
||||
|
||||
|
There's a screenshot in the original post I linked to:
https://vborg.vbsupport.ru/attachmen...chmentid=15599 |
|
#5
|
||||
|
||||
|
Nice...
|
|
#6
|
||||
|
||||
|
Quote:
|
|
#7
|
||||
|
||||
|
Quote:
|
|
#8
|
|||
|
|||
|
THX for this modification...
Is there a chance to hold the pm alert on top until the pm is viewed? Like here: https://vborg.vbsupport.ru/showpost....2&postcount=27 C. |
|
#9
|
||||
|
||||
|
I'll look into it.
|
|
#10
|
||||
|
||||
|
/me saves for later
|
![]() |
|
|
| X vBulletin 3.8.12 by vBS Debug Information | |
|---|---|
|
|
More Information |
|
|
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|