Go Back   vb.org Archive > vBulletin Modifications > Archive > vB.org Archives > vBulletin 3.0 > vBulletin 3.0 Full Releases

Reply
 
Thread Tools
Who Downloaded This Attachment - for Gold Details »»
Who Downloaded This Attachment - for Gold
Version: 1.00, by Mr Blunt Mr Blunt is offline
Developer Last Online: Sep 2006 Show Printable Version Email this Page

Version: 3.0.0 Rating:
Released: 04-04-2004 Last Update: Never Installs: 12
 
No support by the author.

// **********************************************
// **********************************************
// 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
// **********************************************
Code:
<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
// **********************************************
Code:
<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
// **********************************************
Code:
<tr>
		<td class="thead">No downloads found.</td>
</tr>

// **********************************************
// **********************************************
// create a new template - whodownloads_error_nop
// **********************************************
Code:
<tr>
		<td class="thead">Sorry, no Permisson.</td>
</tr>

// **********************************************
// **********************************************
// Find this in template - headinclude
// **********************************************
Code:
<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
// **********************************************
Code:
<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
// **********************************************
Code:
<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
// **********************************************
Code:
<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)
// **********************************************
Code:
<?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
// **********************************************
Code:
			// or doing it once an hour
			$DB_site->shutdown_query("
				INSERT INTO " . TABLE_PREFIX . "attachmentviews (attachmentid)
				VALUES ($attachmentid)
			");
		}
	}
// **********************************************
// Change it to this
// **********************************************
Code:
			// 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
// **********************************************
Code:
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.

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #2  
Old 04-05-2004, 09:35 AM
lasto lasto is offline
 
Join Date: Jan 2002
Posts: 1,514
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

done it all m8

but when i click on who downloaded this - it goes to a blank page on a fresh screen instead of a popup

Went back over the hack still same thing

only thing i could`nt do was run the sql query cause of this error

An error occurred while attempting to execute your query. The following information was returned.
error number: 1060
error desc: Duplicate column name 'downloads'

but i have updated board from v2 to v3 so maybe thats why
Reply With Quote
  #3  
Old 04-05-2004, 09:41 AM
Boofo's Avatar
Boofo Boofo is offline
 
Join Date: Mar 2002
Location: Des Moines, IA (USA)
Posts: 15,776
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Can we get a screenshot and also, would you please put this in the TXT file for download instead of posting the code?
Reply With Quote
  #4  
Old 04-05-2004, 02:00 PM
Mr Blunt Mr Blunt is offline
 
Join Date: Jan 2004
Posts: 133
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

lasto,

I don't know how much "advise" I should give since I'm a newbie.
So take this with a grain of salt.

Are you sure you removed all of the old vb2 hack before installing mine?
This would be mandatory as there's several differences.
I'd revert all of these templates and files to vb3 gold form and then install it.
Also I have no idea if this is compatible or incompatible with any other vb hacks.

Boofo,
I don't know what I can/can't post so I made a zip with whodownloaded.php, whodownloaded.xml for the templates, and then text code. If you have to remove the XML, then go for it but I don't see the harm.

Also, here's 4 screenshots from 3 different styles I run.
1st and 2nd are vb3 default and vb2 default.
3rd & 4th reflect my board's customized style.
Reply With Quote
  #5  
Old 04-05-2004, 02:08 PM
Boofo's Avatar
Boofo Boofo is offline
 
Join Date: Mar 2002
Location: Des Moines, IA (USA)
Posts: 15,776
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

It's better to have the code in the file so as not to make the first post so long and to help those who don't want to have to copy all of the code in the message. It just makes it easier for everyone that way.
Reply With Quote
  #6  
Old 04-05-2004, 02:09 PM
Boofo's Avatar
Boofo Boofo is offline
 
Join Date: Mar 2002
Location: Des Moines, IA (USA)
Posts: 15,776
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Mr Blunt
lasto,

I don't know how much "advise" I should give since I'm a newbie.
So take this with a grain of salt.

Are you sure you removed all of the old vb2 hack before installing mine?
This would be mandatory as there's several differences.
I'd revert all of these templates and files to vb3 gold form and then install it.
Also I have no idea if this is compatible or incompatible with any other vb hacks.

Boofo,
I don't know what I can/can't post so I made a zip with whodownloaded.php, whodownloaded.xml for the templates, and then text code. If you have to remove the XML, then go for it but I don't see the harm.

Also, here's 4 screenshots from 3 different styles I run.
1st and 2nd are vb3 default and vb2 default.
3rd & 4th reflect my board's customized style.
Any way to have it show how many downloads each user made?
Reply With Quote
  #7  
Old 04-05-2004, 02:12 PM
Mr Blunt Mr Blunt is offline
 
Join Date: Jan 2004
Posts: 133
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Oh ya,

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.

Maybe you, lasto, should delete that second query under USER called DOWNLOADS(2) or whatever that second one is now named, but then again, maybe you should wait for a more qualified person to help you.

I'll edit the top post to reflect this.
Reply With Quote
  #8  
Old 04-05-2004, 02:21 PM
Dean C's Avatar
Dean C Dean C is offline
 
Join Date: Jan 2002
Location: England
Posts: 9,071
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Did you get permission of TWTCommish to port this modification ?
Reply With Quote
  #9  
Old 04-05-2004, 02:26 PM
Mr Blunt Mr Blunt is offline
 
Join Date: Jan 2004
Posts: 133
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Boofo,

It's my first real hack, so I didn't want to get in trouble.
That's why I was cautious.

As for advancing the hack, I leave that up to you folks.
Personally, I'd like to see it log IP's of downloaders along with dates & times.
I think someone did this for the vb2 hack but I never saw it posted.

If I had a copy of that one, then I could probably port it over to vb3 if no one else wants to.

All I did to make this was follow the logic of the old hack and where TWT put everything and then found the appropriate new locations. I'm not "advanced" enough to "create from scratch" yet.
Sorry.
Reply With Quote
  #10  
Old 04-05-2004, 02:29 PM
Mr Blunt Mr Blunt is offline
 
Join Date: Jan 2004
Posts: 133
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Dean C
Did you get permission of TWTCommish to port this modification ?
No sir.

TWTCommish mentioned in the old thread that it's free for all and that people could build on it if they wanted, so I didn't see the need.

If you feel it's best to delete this then go for it.
I'm just a new kid on the block.
I don't want to rock any boats.

Like I said, just trying to give a little back to those who helped me learn.
I did give TWTCommish all the credit, I do believe.
Reply With Quote
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 03:25 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.04778 seconds
  • Memory Usage 2,314KB
  • Queries Executed 23 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (12)bbcode_code
  • (2)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (6)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (2)pagenav_pagelink
  • (10)post_thanks_box
  • (10)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (10)post_thanks_postbit_info
  • (9)postbit
  • (10)postbit_onlinestatus
  • (10)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete