Take two:
[www-register-wizard.git] / helpers / download_helper.php
1 <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');\r
2 /**\r
3  * CodeIgniter\r
4  *\r
5  * An open source application development framework for PHP 4.3.2 or newer\r
6  *\r
7  * @package             CodeIgniter\r
8  * @author              ExpressionEngine Dev Team\r
9  * @copyright   Copyright (c) 2008, EllisLab, Inc.\r
10  * @license             http://codeigniter.com/user_guide/license.html\r
11  * @link                http://codeigniter.com\r
12  * @since               Version 1.0\r
13  * @filesource\r
14  */\r
15 \r
16 // ------------------------------------------------------------------------\r
17 \r
18 /**\r
19  * CodeIgniter Download Helpers\r
20  *\r
21  * @package             CodeIgniter\r
22  * @subpackage  Helpers\r
23  * @category    Helpers\r
24  * @author              ExpressionEngine Dev Team\r
25  * @link                http://codeigniter.com/user_guide/helpers/download_helper.html\r
26  */\r
27 \r
28 // ------------------------------------------------------------------------\r
29 \r
30 /**\r
31  * Force Download\r
32  *\r
33  * Generates headers that force a download to happen\r
34  *\r
35  * @access      public\r
36  * @param       string  filename\r
37  * @param       mixed   the data to be downloaded\r
38  * @return      void\r
39  */     \r
40 if ( ! function_exists('force_download'))\r
41 {\r
42         function force_download($filename = '', $data = '')\r
43         {\r
44                 if ($filename == '' OR $data == '')\r
45                 {\r
46                         return FALSE;\r
47                 }\r
48 \r
49                 // Try to determine if the filename includes a file extension.\r
50                 // We need it in order to set the MIME type\r
51                 if (FALSE === strpos($filename, '.'))\r
52                 {\r
53                         return FALSE;\r
54                 }\r
55         \r
56                 // Grab the file extension\r
57                 $x = explode('.', $filename);\r
58                 $extension = end($x);\r
59 \r
60                 // Load the mime types\r
61                 @include(APPPATH.'config/mimes'.EXT);\r
62         \r
63                 // Set a default mime if we can't find it\r
64                 if ( ! isset($mimes[$extension]))\r
65                 {\r
66                         $mime = 'application/octet-stream';\r
67                 }\r
68                 else\r
69                 {\r
70                         $mime = (is_array($mimes[$extension])) ? $mimes[$extension][0] : $mimes[$extension];\r
71                 }\r
72         \r
73                 // Generate the server headers\r
74                 if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE"))\r
75                 {\r
76                         header('Content-Type: "'.$mime.'"');\r
77                         header('Content-Disposition: attachment; filename="'.$filename.'"');\r
78                         header('Expires: 0');\r
79                         header('Cache-Control: must-revalidate, post-check=0, pre-check=0');\r
80                         header("Content-Transfer-Encoding: binary");\r
81                         header('Pragma: public');\r
82                         header("Content-Length: ".strlen($data));\r
83                 }\r
84                 else\r
85                 {\r
86                         header('Content-Type: "'.$mime.'"');\r
87                         header('Content-Disposition: attachment; filename="'.$filename.'"');\r
88                         header("Content-Transfer-Encoding: binary");\r
89                         header('Expires: 0');\r
90                         header('Pragma: no-cache');\r
91                         header("Content-Length: ".strlen($data));\r
92                 }\r
93         \r
94                 exit($data);\r
95         }\r
96 }\r
97 \r
98 \r
99 /* End of file download_helper.php */\r
100 /* Location: ./system/helpers/download_helper.php */