Mr Blunt
04-04-2004, 10:00 PM
// **********************************************
// **********************************************
// Hack to track Who Downloaded attachments
// Old vb2 hack modified to vbulletin 3.0 Gold
// Credit to TWTCommish for the original vb2 hack
// https://vborg.vbsupport.ru/showthread.php?t=36900
// **********************************************
// **********************************************
4 new templates
2 modified templates
1 modified php file
1 new php file
This hack allows admins, supermods, and mods to see who downloads each file. If you want to allow other groups, just add/subtract them from whodownloaded.php on the top line as desired.
Although I rewrote and tested this myself, and it works like a charm now, I'm not offering support for this. I'm just a Joe Average. This is an old old hack. I just had to change some words like "gettemplate" to "fetch_template" and "dooutput" to "print_output" and one instance of "post" changed to "attachment". Also had to modify table structures and of course figure out where to put everything. I'm fairly certain that this is up-to-snuff but don't take my word for it.
It doesn't track IP's or how many times a user may have downloaded. It just brings up a popup window with the usernames that have downloaded this atachment. Who knows, maybe someone else will build upon this.
Forgive me if I posted this in the wrong place or if it shouldn't be here at all.
Mods, feel free to do what you wish with this.
Just trying to give a little back to those who have taught me.
// **********************************************
// create a new template - whodownloads
// **********************************************
<html>
<head>
<title>Who Downloaded This?</title>
$headinclude
<script language="JavaScript">self.focus();</script>
</head>
<body>
<table cellpadding="10" cellspacing="0" border="0" width="100%"><tr><td>
<table cellpadding="4" cellspacing="$stylevar[cellspacing]" border="0" width="100%">
<tr>
<td class="tcat" width="100%"><b>Total Downloads: $total</b></td>
</tr>
<tr>
<td class="alt1" width="100%"><b>User</b></td>
</tr>
$whodownloadsbit
<tr id="cat">
<td class="thead" width="100%" align="center"><a href="javascript:window.close();">Close Window</a></td>
</tr>
</table>
</td></tr></table>
</body>
</html>
// **********************************************
// **********************************************
// create a new template - whodownloadsbit
// **********************************************
<tr>
<td class="thead"><a href="member.php?s=$session[sessionhash]&action=getinfo&userid=$download[userid]" target="_blank">$download[username]</a></td>
</tr>
// **********************************************
// **********************************************
// create a new template - whodownloads_error
// **********************************************
<tr>
<td class="thead">No downloads found.</td>
</tr>
// **********************************************
// **********************************************
// create a new template - whodownloads_error_nop
// **********************************************
<tr>
<td class="thead">Sorry, no Permisson.</td>
</tr>
// **********************************************
// **********************************************
// Find this in template - headinclude
// **********************************************
<script type="text/javascript" src="clientscript/vbulletin_global.js"></script>
<if condition="$show['popups']"><script type="text/javascript" src="clientscript/vbulletin_menu.js"></script></if>
// **********************************************
// Change it to this
// **********************************************
<script type="text/javascript" src="clientscript/vbulletin_global.js"></script>
<if condition="$show['popups']"><script type="text/javascript" src="clientscript/vbulletin_menu.js"></script></if>
<script language="JavaScript">
<!-- START HIDE
function whodownloaded(attachmentid)
{
window.open
("whodownloaded.php?s=$session[sessionhash]&attachmentid=" + attachmentid, "whodownloaded", "toolbar=no, scrollbars=yes, resizable=no, width=240, height=300, top=50, left=50");
}
-->
</script>
// **********************************************
// **********************************************
// Find this in template - postbit_attachment
// **********************************************
<tr>
<td><img class="inlineimg" src="$stylevar[imgdir_attach]/$attachment[attachmentextension].gif" alt="<phrase 1="$attachment[attachmentextension]">$vbphrase[file_type_x]</phrase>" width="16" height="16" border="0" style="vertical-align:baseline" /></td>
<td><a href="attachment.php?$session[sessionurl]attachmentid=$attachment[attachmentid]" target="_blank">$attachment[filename]</a> ($attachment[filesize], <phrase 1="$attachment[counter]">$vbphrase[x_views]</phrase></td>
</tr>
// **********************************************
// Change it to this
// **********************************************
<tr>
<td><img class="inlineimg" src="$stylevar[imgdir_attach]/$attachment[attachmentextension].gif" alt="<phrase 1="$attachment[attachmentextension]">$vbphrase[file_type_x]</phrase>" width="16" height="16" border="0" style="vertical-align:baseline" /></td>
<td><a href="attachment.php?$session[sessionurl]attachmentid=$attachment[attachmentid]" target="_blank">$attachment[filename]</a> ($attachment[filesize], <phrase 1="$attachment[counter]">$vbphrase[x_views], </phrase></td>
<td><a href="javascript:whodownloaded($attachment[attachmentid])">Who Downloaded This?</a>)</td>
</tr>
// **********************************************
// **********************************************
// create a new php file - whodownloaded.php
// place it in the main forum (upload) directory
// (same directory that has attachment.php)
// **********************************************
<?php
require("./global.php");
if (($bbuserinfo[usergroupid] == 6 OR $bbuserinfo[usergroupid] == 5 OR $bbuserinfo[usergroupid] == 7) AND $attachmentid)
{
$downloads = $DB_site->query("SELECT u.userid, u.username FROM user u WHERE u.downloads LIKE \"$attachmentid%\" OR u.downloads LIKE \"%$attachmentid%\" OR u.downloads LIKE \"%$attachmentid\" ORDER BY u.username ASC");
$total = $DB_site->query_first("SELECT counter FROM attachment WHERE attachmentid = $attachmentid");
$total = $total[counter];
if (!$DB_site->num_rows($downloads))
{
eval("\$whodownloadsbit .= \"".fetch_template("whodownloads_error",1,0)."\";");
}
else
{
while ($download = $DB_site->fetch_array($downloads))
{
eval("\$whodownloadsbit .= \"".fetch_template("whodownloadsbit",1,0)."\";");
}
}
}
else
{
eval("\$whodownloadsbit .= \"".fetch_template("whodownloads_error_nop",1,0)."\";");
}
eval('print_output("' . fetch_template('whodownloads') . '");');
?>
// **********************************************
// **********************************************
// Find this in attachment.php
// **********************************************
// or doing it once an hour
$DB_site->shutdown_query("
INSERT INTO " . TABLE_PREFIX . "attachmentviews (attachmentid)
VALUES ($attachmentid)
");
}
}
// **********************************************
// Change it to this
// **********************************************
// or doing it once an hour
$DB_site->shutdown_query("
INSERT INTO " . TABLE_PREFIX . "attachmentviews (attachmentid)
VALUES ($attachmentid)
");
}
}
// here's the who downloaded hack
$dl = $DB_site->query_first("SELECT downloads FROM user WHERE userid = $bbuserinfo[userid]");
$comma = ($dl[downloads]) ? ',' : '';
$DB_site->query("
UPDATE user
SET downloads = '$dl[downloads]$comma$attachmentid'
WHERE userid = $bbuserinfo[userid]
");
// **********************************************
// **********************************************
// Run this SQL Query from Admincp
// **********************************************
ALTER TABLE user ADD COLUMN downloads TEXT NOT NULL;
If you had this installed previously, like for vb2, then don't rerun the query.
The query didn't change so I'D SUSPECT the old and new data is compatible.
And make sure you have completely removed the old vb2 hack beforehand or I suspect this would create a conflict.
// **********************************************
// Hack to track Who Downloaded attachments
// Old vb2 hack modified to vbulletin 3.0 Gold
// Credit to TWTCommish for the original vb2 hack
// https://vborg.vbsupport.ru/showthread.php?t=36900
// **********************************************
// **********************************************
4 new templates
2 modified templates
1 modified php file
1 new php file
This hack allows admins, supermods, and mods to see who downloads each file. If you want to allow other groups, just add/subtract them from whodownloaded.php on the top line as desired.
Although I rewrote and tested this myself, and it works like a charm now, I'm not offering support for this. I'm just a Joe Average. This is an old old hack. I just had to change some words like "gettemplate" to "fetch_template" and "dooutput" to "print_output" and one instance of "post" changed to "attachment". Also had to modify table structures and of course figure out where to put everything. I'm fairly certain that this is up-to-snuff but don't take my word for it.
It doesn't track IP's or how many times a user may have downloaded. It just brings up a popup window with the usernames that have downloaded this atachment. Who knows, maybe someone else will build upon this.
Forgive me if I posted this in the wrong place or if it shouldn't be here at all.
Mods, feel free to do what you wish with this.
Just trying to give a little back to those who have taught me.
// **********************************************
// create a new template - whodownloads
// **********************************************
<html>
<head>
<title>Who Downloaded This?</title>
$headinclude
<script language="JavaScript">self.focus();</script>
</head>
<body>
<table cellpadding="10" cellspacing="0" border="0" width="100%"><tr><td>
<table cellpadding="4" cellspacing="$stylevar[cellspacing]" border="0" width="100%">
<tr>
<td class="tcat" width="100%"><b>Total Downloads: $total</b></td>
</tr>
<tr>
<td class="alt1" width="100%"><b>User</b></td>
</tr>
$whodownloadsbit
<tr id="cat">
<td class="thead" width="100%" align="center"><a href="javascript:window.close();">Close Window</a></td>
</tr>
</table>
</td></tr></table>
</body>
</html>
// **********************************************
// **********************************************
// create a new template - whodownloadsbit
// **********************************************
<tr>
<td class="thead"><a href="member.php?s=$session[sessionhash]&action=getinfo&userid=$download[userid]" target="_blank">$download[username]</a></td>
</tr>
// **********************************************
// **********************************************
// create a new template - whodownloads_error
// **********************************************
<tr>
<td class="thead">No downloads found.</td>
</tr>
// **********************************************
// **********************************************
// create a new template - whodownloads_error_nop
// **********************************************
<tr>
<td class="thead">Sorry, no Permisson.</td>
</tr>
// **********************************************
// **********************************************
// Find this in template - headinclude
// **********************************************
<script type="text/javascript" src="clientscript/vbulletin_global.js"></script>
<if condition="$show['popups']"><script type="text/javascript" src="clientscript/vbulletin_menu.js"></script></if>
// **********************************************
// Change it to this
// **********************************************
<script type="text/javascript" src="clientscript/vbulletin_global.js"></script>
<if condition="$show['popups']"><script type="text/javascript" src="clientscript/vbulletin_menu.js"></script></if>
<script language="JavaScript">
<!-- START HIDE
function whodownloaded(attachmentid)
{
window.open
("whodownloaded.php?s=$session[sessionhash]&attachmentid=" + attachmentid, "whodownloaded", "toolbar=no, scrollbars=yes, resizable=no, width=240, height=300, top=50, left=50");
}
-->
</script>
// **********************************************
// **********************************************
// Find this in template - postbit_attachment
// **********************************************
<tr>
<td><img class="inlineimg" src="$stylevar[imgdir_attach]/$attachment[attachmentextension].gif" alt="<phrase 1="$attachment[attachmentextension]">$vbphrase[file_type_x]</phrase>" width="16" height="16" border="0" style="vertical-align:baseline" /></td>
<td><a href="attachment.php?$session[sessionurl]attachmentid=$attachment[attachmentid]" target="_blank">$attachment[filename]</a> ($attachment[filesize], <phrase 1="$attachment[counter]">$vbphrase[x_views]</phrase></td>
</tr>
// **********************************************
// Change it to this
// **********************************************
<tr>
<td><img class="inlineimg" src="$stylevar[imgdir_attach]/$attachment[attachmentextension].gif" alt="<phrase 1="$attachment[attachmentextension]">$vbphrase[file_type_x]</phrase>" width="16" height="16" border="0" style="vertical-align:baseline" /></td>
<td><a href="attachment.php?$session[sessionurl]attachmentid=$attachment[attachmentid]" target="_blank">$attachment[filename]</a> ($attachment[filesize], <phrase 1="$attachment[counter]">$vbphrase[x_views], </phrase></td>
<td><a href="javascript:whodownloaded($attachment[attachmentid])">Who Downloaded This?</a>)</td>
</tr>
// **********************************************
// **********************************************
// create a new php file - whodownloaded.php
// place it in the main forum (upload) directory
// (same directory that has attachment.php)
// **********************************************
<?php
require("./global.php");
if (($bbuserinfo[usergroupid] == 6 OR $bbuserinfo[usergroupid] == 5 OR $bbuserinfo[usergroupid] == 7) AND $attachmentid)
{
$downloads = $DB_site->query("SELECT u.userid, u.username FROM user u WHERE u.downloads LIKE \"$attachmentid%\" OR u.downloads LIKE \"%$attachmentid%\" OR u.downloads LIKE \"%$attachmentid\" ORDER BY u.username ASC");
$total = $DB_site->query_first("SELECT counter FROM attachment WHERE attachmentid = $attachmentid");
$total = $total[counter];
if (!$DB_site->num_rows($downloads))
{
eval("\$whodownloadsbit .= \"".fetch_template("whodownloads_error",1,0)."\";");
}
else
{
while ($download = $DB_site->fetch_array($downloads))
{
eval("\$whodownloadsbit .= \"".fetch_template("whodownloadsbit",1,0)."\";");
}
}
}
else
{
eval("\$whodownloadsbit .= \"".fetch_template("whodownloads_error_nop",1,0)."\";");
}
eval('print_output("' . fetch_template('whodownloads') . '");');
?>
// **********************************************
// **********************************************
// Find this in attachment.php
// **********************************************
// or doing it once an hour
$DB_site->shutdown_query("
INSERT INTO " . TABLE_PREFIX . "attachmentviews (attachmentid)
VALUES ($attachmentid)
");
}
}
// **********************************************
// Change it to this
// **********************************************
// or doing it once an hour
$DB_site->shutdown_query("
INSERT INTO " . TABLE_PREFIX . "attachmentviews (attachmentid)
VALUES ($attachmentid)
");
}
}
// here's the who downloaded hack
$dl = $DB_site->query_first("SELECT downloads FROM user WHERE userid = $bbuserinfo[userid]");
$comma = ($dl[downloads]) ? ',' : '';
$DB_site->query("
UPDATE user
SET downloads = '$dl[downloads]$comma$attachmentid'
WHERE userid = $bbuserinfo[userid]
");
// **********************************************
// **********************************************
// Run this SQL Query from Admincp
// **********************************************
ALTER TABLE user ADD COLUMN downloads TEXT NOT NULL;
If you had this installed previously, like for vb2, then don't rerun the query.
The query didn't change so I'D SUSPECT the old and new data is compatible.
And make sure you have completely removed the old vb2 hack beforehand or I suspect this would create a conflict.