We use cookies to improve your experience. No personal information is gathered and we don't serve ads. Cookies Policy.

ExpressionEngine Logo ExpressionEngine
Features Pricing Support Find A Developer
Partners Upgrades
Blog Add-Ons Learn
Docs Forums University
Log In or Sign Up
Log In Sign Up
ExpressionEngine Logo
Features Pro new Support Find A Developer
Partners Upgrades
Blog Add-Ons Learn
Docs Forums University Blog
  • Home
  • Forums

LinkLocker Pro - Commercial Release

Development and Programming

Brad Street's avatar
Brad Street
239 posts
16 years ago
Brad Street's avatar Brad Street

I’m excited to announce the commercial release of a new module, LinkLocker v2.0, and the accompanying LinkLocker Stats plugin. At its simplest, you can pass this module a URL to a file you wish to allow a user to download and it will generate a URL that hides the file’s true location. Of course, the free version (LinkLocker 1.4) has this functionality built in. This module has miles more functionality as described below:

LinkLocker v2.0 Module Features:

Allow users to download files without giving away the download location. Present a web page to a user while obfuscating the website address in the web browser’s address bar. Debug parameters that are passed in to the {exp:linklocker} tag. Track how many times a link has been created for a file. Track the download count of a file. Group or identify files by passing in an optional “group” paraemeter. Group or identify files by passing in an optional “label” parameter. Ability to restrict files to members only, and send them to a different URL if they aren’t logged in. Ability to restrict downloads to certain member groups, and send the user to a different url/template if they are not logged in or a member of the appropriate group. Track member and guest downloads of a file. Update links generated for members. Lock generated links to a user’s IP address. Set expire time for generated links, or set them to never expire. Send the user to a custom error page if the link has expired, reached max downloads, or otherwise unavailable to them. Restrict maximum number of download attempts for a file. Administrative backend that shows documentation, download stats for each link, and download stats for members. Backend allows “reset” function, which will create a new download link for a member if the link they have is expired, reached max downloads, etc. Prevent hotlinking to your generated links from other sites. Automatic database cleanup - prunes expired links.

Linklocker_stats v1.0 Plugin Features:

Download Count - Displays the download count for a url/group/label combination, or a group (counts downloads of all files in this group), or a label (counts downloads of all files with this label), or a file (counts all downloads of this file (regardless of label).

Member Downloads - If a member is logged in, this tag will return the number of times the user has downloaded the file. File may be specified by url, label, group, or any combination thereof. If the user isn’t logged in, this will either return the text specified in the alt_text parametert, or nothing if alt_text parameter isn’t used.

Top Downloads - Displays and unordered list of download stats for a url or label, sorted in ascending or descending order, with an optional maximum number of results. Allows a CSS class to be specified for the list as well as for the list items.

The support site is not yet up for this module, so until then this thread will serve as its support forum.

Please PM if you’d like to purchase. License is just $30 per site and includes the LinkLocker 2 module and LinkLocker Stats plugin. Note - if you don’t require click tracking or member download tracking, save some money and use the “free” version.

       
Ryan M.'s avatar
Ryan M.
1,511 posts
16 years ago
Ryan M.'s avatar Ryan M.

Everyone - I helped beta test this, and it is really amazing what Brad put together. I”ll be using this at devot-ee.com to help manage downloads there. Great stuff, and congratulations, Brad.

       
Mark Bowen's avatar
Mark Bowen
12,637 posts
16 years ago
Mark Bowen's avatar Mark Bowen

I can also definitely vouch for the fact that this is a fantastic module. If you need something to handle your downloads then this is definitely it. A lot of work has gone into this one and it shows!

Well done Brad and thanks for taking up my original post and creating this in the first place 😉

Best wishes,

Mark

       
Brad Street's avatar
Brad Street
239 posts
16 years ago
Brad Street's avatar Brad Street

Thanks so much for the supportive words fellas. Thanks for your help in developing and testing the 1.4 and 2.0 versions of this module, and for helping others with questions and issues - you help make the EE community such a fun and friendly one.

       
Leevi Graham's avatar
Leevi Graham
1,143 posts
16 years ago
Leevi Graham's avatar Leevi Graham

I haven’t tried it yet, but I will be… Looks great!

Quick question is there any docs we can check out before purchase?

       
Brad Street's avatar
Brad Street
239 posts
16 years ago
Brad Street's avatar Brad Street

Good call, Leevi - attached docs for the module & plugin to the first post in this thread.

       
Mark Bowen's avatar
Mark Bowen
12,637 posts
16 years ago
Mark Bowen's avatar Mark Bowen
Thanks so much for the supportive words fellas. Thanks for your help in developing and testing the 1.4 and 2.0 versions of this module, and for helping others with questions and issues - you help make the EE community such a fun and friendly one.

I may help out whenever I can but a module like this is worth so much more. This really is a fantastic piece of work and can help out soooooo many people with secured downloads.

Well done again Brad! 😊

Best wishes,

Mark

       
fanderson's avatar
fanderson
883 posts
16 years ago
fanderson's avatar fanderson

This comes at just the right time for me. I am working on a project that will use just about every feature this offers. Thanks.

       
stefanschuur's avatar
stefanschuur
21 posts
16 years ago
stefanschuur's avatar stefanschuur

Playing with the 2.0 script right now.

When hardcoding the following (example) within one of my templates:

{exp:linklocker url="http://www.mysite.nl/download/chris.wmv" expires="10" iplock="off" err_page="template_group/template" }

refreshing the page the very first time generates the following MySQL Error:

MySQL ERROR:

Error Number: 1093

Description: You can't specify target table 'exp_linklocker_gen' for update in FROM clause

Query: DELETE FROM exp_linklocker_gen WHERE expires < SUBDATE(NOW(), 14) AND gen_id NOT IN (SELECT g.gen_id FROM exp_linklocker_gen g INNER JOIN exp_linklocker_user2gen u2g ON u2g.gen_id = g.gen_id WHERE g.expires < SUBDATE(NOW(), 14) )

Refreshing the page the second time, then it’s loaded correctly, displaying the link and it all works.

As soon as I hardcode another link into the tag, the proces is repeated with a MySQL error and after the second refresh a normal loaded page.

Any clues? Using EE 1.64 Build: 20080829

       
Brad Street's avatar
Brad Street
239 posts
16 years ago
Brad Street's avatar Brad Street

Looks like a caught by a small gotcha in my sql syntax - will PM you with fixed file.

       
stefanschuur's avatar
stefanschuur
21 posts
16 years ago
stefanschuur's avatar stefanschuur

Thanks Brad!

       
fanderson's avatar
fanderson
883 posts
16 years ago
fanderson's avatar fanderson

Brad,

Just wanted to let you know that 2.0 is working as it should, including tracking downloads! Awesome tool.

Thank you.

Forrest

       
Brad Street's avatar
Brad Street
239 posts
16 years ago
Brad Street's avatar Brad Street

Thanks so much for purchasing the module and the great feedback! Glad to hear it is working as advertised! 😊

       
stefanschuur's avatar
stefanschuur
21 posts
16 years ago
stefanschuur's avatar stefanschuur

Hi Brad,

Uploaded the file you send me through PM. Changing the tag, and refreshing the page results in the following SQL error:

MySQL ERROR:

Error Number: 1064

Description: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE expires < SUBDATE(NOW(), 14) AND g1.gen_id NOT IN ' at line 2

Query: DELETE FROM exp_linklocker_gen g1 WHERE expires < SUBDATE(NOW(), 14) AND g1.gen_id NOT IN (SELECT g.gen_id FROM exp_linklocker_gen g INNER JOIN exp_linklocker_user2gen u2g ON u2g.gen_id = g.gen_id WHERE g.expires < SUBDATE(NOW(), 14) )

Sorry…

       
Brad Street's avatar
Brad Street
239 posts
16 years ago
Brad Street's avatar Brad Street

Hey Stefan,

Sorry to hear this issue wasn’t resolved. PM’d you an updated file that I’m confident will fix the issue. Please let me know how it goes.

Thanks, Brad

       
1 2 3 Last

Reply

Sign In To Reply

ExpressionEngine Home Features Pro Contact Version Support
Learn Docs University Forums
Resources Support Add-Ons Partners Blog
Privacy Terms Trademark Use License

Packet Tide owns and develops ExpressionEngine. © Packet Tide, All Rights Reserved.