Add file time/speed; make URLs configurable in Wordpress
[ambdownload.git] / ambdownload.php
1 <?php\r
2 /*\r
3 Plugin Name: ambdownload\r
4 Plugin URI: http://blog.alex.org.uk/\r
5 Description: Redirect a given page to a download URL\r
6 Version: 2.2\r
7 Author: Alex Bligh\r
8 Author URI: http://blog.alex.org.uk\r
9 */\r
10 \r
11 class ambdownload\r
12 {\r
13         function getDownloadLink($user, $link, $error, $file="default")\r
14         {\r
15                 if (empty($user) && !empty($error))\r
16                 {\r
17                         return ($error);\r
18                 }\r
19                 $time = time();\r
20                 $secret = rtrim(file_get_contents("/etc/apache2/download.secret"));\r
21                 $id = $user;\r
22                 $hash = hash("sha256",$time.":".$id.":".$file.":".$secret);\r
23                 return $link.sprintf("?id=%s&file=%s&time=%s&hash=%s",urlencode($id),urlencode($file),$time,$hash);\r
24         }\r
25 \r
26         function downloadRedirect()\r
27         {       \r
28                 global $post;\r
29                 if ((is_single() || is_singular() || is_page()))\r
30                 {\r
31                         /* Tag of file to download, e.g. 'default' */\r
32                         $download_file = get_post_meta($post->ID, 'download_file', true);  \r
33                         /* EG 'http://server.example.com/download' */\r
34                         $download_url = get_post_meta($post->ID, 'download_url', true);  \r
35                         /* EG URL where redirected if no username exists */\r
36                         $download_error = get_post_meta($post->ID, 'download_error', true);  \r
37                         if ($download_file && $download_url) {  \r
38                                 global $current_user;\r
39                                 get_currentuserinfo();\r
40                                 wp_redirect(ambdownload::getDownloadLink($current_user->user_email, $download_url, $download_error, $download_file));\r
41                                 exit;\r
42                         }\r
43                 }\r
44         }\r
45 }\r
46 \r
47 \r
48 add_action( 'template_redirect', array('ambdownload', 'downloadRedirect'), 1, 2);\r
49 \r
50 \r
51 \r