· 9 years ago · Feb 03, 2017, 06:32 PM
1<?php
2/*
3Plugin Name: Download Manager
4Plugin URI: http://www.wpdownloadmanager.com/purchases/
5Description: Manage, Protect and Track File Downloads from your WordPress site
6Author: Shaon
7Version: 2.9.2
8Author URI: http://www.wpdownloadmanager.com/
9Text Domain: wpdmpro
10Domain Path: /languages
11*/
12
13
14namespace WPDM;
15
16
17if(!isset($_SESSION))
18@session_start();
19
20define('WPDM_Version','2.9.2');
21
22$content_dir = str_replace('\\','/',WP_CONTENT_DIR);
23
24define('WPDM_ADMIN_CAP','manage_options');
25
26define('WPDM_MENU_ACCESS_CAP','manage_options');
27
28define('WPDM_BASE_DIR',dirname(__FILE__).'/');
29
30define('WPDM_BASE_URL',plugins_url('/download-manager/'));
31
32define('UPLOAD_DIR',$content_dir.'/uploads/download-manager-files/');
33
34define('WPDM_CACHE_DIR',dirname(__FILE__).'/cache/');
35
36define('_DEL_DIR',$content_dir.'/uploads/download-manager-files');
37
38define('UPLOAD_BASE',$content_dir.'/uploads/');
39
40include_once(dirname(__FILE__) . "/wpdm-functions.php");
41
42include(dirname(__FILE__)."/wpdm-core.php");
43
44
45ini_set('upload_tmp_dir',UPLOAD_DIR.'/cache/');
46
47if(!isset($_POST)) $_SESSION['download'] = 0;
48
49
50class WordPressDownloadManager{
51
52 function __construct(){
53
54 register_activation_hook(__FILE__, array($this, 'Install'));
55
56 add_action( 'init', array($this, 'registerPostTypeTaxonomy'), 1 );
57
58 add_action( 'plugins_loaded', array($this, 'LoadTextdomain') );
59 add_action( 'wp_enqueue_scripts', array($this, 'EnqueueScripts') );
60
61 add_action( 'wp_head', array($this, 'wpHead') );
62 add_action( 'wp_footer', array($this, 'wpFooter') );
63
64 spl_autoload_register( array( $this, 'AutoLoad' ) );
65
66 new \WPDM\libs\UserDashboard();
67 new \WPDM\libs\Apply();
68 new \WPDM\admin\WordPressDownloadManagerAdmin();
69 new \WPDM\libs\ShortCodes();
70
71 }
72
73 /**
74 * @usage Install Plugin
75 */
76 function Install(){
77 global $wpdb;
78
79 delete_option('wpdm_latest');
80
81 $sqls[] = "CREATE TABLE IF NOT EXISTS `{$wpdb->prefix}ahm_download_stats` (
82 `id` int(11) NOT NULL AUTO_INCREMENT,
83 `pid` int(11) NOT NULL,
84 `uid` int(11) NOT NULL,
85 `oid` varchar(100) NOT NULL,
86 `year` int(4) NOT NULL,
87 `month` int(2) NOT NULL,
88 `day` int(2) NOT NULL,
89 `timestamp` int(11) NOT NULL,
90 `ip` varchar(20) NOT NULL,
91 PRIMARY KEY (`id`)
92 )";
93
94 $sqls[] = "CREATE TABLE IF NOT EXISTS `{$wpdb->prefix}ahm_emails` (
95 `id` int(11) NOT NULL AUTO_INCREMENT,
96 `email` varchar(255) NOT NULL,
97 `pid` int(11) NOT NULL,
98 `date` int(11) NOT NULL,
99 `custom_data` text NOT NULL,
100 `request_status` INT( 1 ) NOT NULL,
101 PRIMARY KEY (`id`)
102 )";
103
104
105 require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
106 foreach($sqls as $sql){
107 //$wpdb->query($sql);
108 dbDelta($sql);
109 }
110
111
112 $this->RegisterPostTypeTaxonomy();
113 flush_rewrite_rules();
114 self::CreateDir();
115
116 }
117
118 /**
119 * @usage Load Plugin Text Domain
120 */
121 function loadTextdomain(){
122 load_plugin_textdomain('wpdmpro', WP_PLUGIN_URL . "/download-manager/languages/", 'download-manager/languages/');
123 }
124
125 /**
126 * @usage Register WPDM Post Type and Taxonomy
127 */
128 public function registerPostTypeTaxonomy()
129 {
130 $labels = array(
131 'name' => __('Downloads', 'wpdmpro'),
132 'singular_name' => __('File', 'wpdmpro'),
133 'add_new' => __('Add New', 'wpdmpro'),
134 'add_new_item' => __('Add New File', 'wpdmpro'),
135 'edit_item' => __('Edit File', 'wpdmpro'),
136 'new_item' => __('New File', 'wpdmpro'),
137 'all_items' => __('All Files', 'wpdmpro'),
138 'view_item' => __('View File', 'wpdmpro'),
139 'search_items' => __('Search Files', 'wpdmpro'),
140 'not_found' => __('No File Found', 'wpdmpro'),
141 'not_found_in_trash' => __('No Files found in Trash', 'wpdmpro'),
142 'parent_item_colon' => '',
143 'menu_name' => __('Downloads', 'wpdmpro')
144
145 );
146
147
148 $args = array(
149 'labels' => $labels,
150 'public' => true,
151 'publicly_queryable' => get_option('__wpdm_publicly_queryable', 1),
152 'show_ui' => true,
153 'show_in_menu' => true,
154 'show_in_nav_menus' => true,
155 'query_var' => true,
156 'rewrite' => array('slug' => 'download', 'with_front' => (bool)get_option('__wpdm_purl_with_front', false)), //get_option('__wpdm_purl_base','download')
157 'capability_type' => 'post',
158 'has_archive' => (get_option('__wpdm_has_archive', false)==false?false:sanitize_title(get_option('__wpdm_archive_page_slug', 'all-downloads'))),
159 'hierarchical' => false,
160 'taxonomies' => array('post_tag'),
161 'menu_icon' => 'dashicons-download',
162 'exclude_from_search' => (bool)get_option('__wpdm_exclude_from_search', false),
163 'supports' => array('title', 'editor', 'publicize', 'excerpt', 'custom-fields', 'thumbnail', 'tags', 'comments','author')
164
165 );
166
167
168 register_post_type('wpdmpro', $args);
169
170
171 $labels = array(
172 'name' => __('Categories', 'wpdmpro'),
173 'singular_name' => __('Category', 'wpdmpro'),
174 'search_items' => __('Search Categories', 'wpdmpro'),
175 'all_items' => __('All Categories', 'wpdmpro'),
176 'parent_item' => __('Parent Category', 'wpdmpro'),
177 'parent_item_colon' => __('Parent Category:', 'wpdmpro'),
178 'edit_item' => __('Edit Category', 'wpdmpro'),
179 'update_item' => __('Update Category', 'wpdmpro'),
180 'add_new_item' => __('Add New Category', 'wpdmpro'),
181 'new_item_name' => __('New Category Name', 'wpdmpro'),
182 'menu_name' => __('Categories', 'wpdmpro'),
183 );
184
185 $args = array(
186 'hierarchical' => true,
187 'labels' => $labels,
188 'show_ui' => true,
189 'show_admin_column' => true,
190 'query_var' => true,
191 'rewrite' => array('slug' => 'download-category'),
192 );
193
194 register_taxonomy('wpdmcategory', array('wpdmpro'), $args);
195
196
197 }
198
199 /**
200 * @usage Create upload dir
201 */
202 public static function createDir()
203 {
204 if (!file_exists(UPLOAD_BASE)) {
205 @mkdir(UPLOAD_BASE, 0755);
206 }
207 @chmod(UPLOAD_BASE, 0755);
208 @mkdir(UPLOAD_DIR, 0755);
209 @chmod(UPLOAD_DIR, 0755);
210 self::setHtaccess();
211 if (isset($_GET['re']) && $_GET['re'] == 1) {
212 if (file_exists(UPLOAD_DIR)) $s = 1;
213 else $s = 0;
214 echo "<script>
215 location.href='{$_SERVER['HTTP_REFERER']}&success={$s}';
216 </script>";
217 die();
218 }
219 }
220
221
222 /**
223 * @usage Protect Download Dir using .htaccess rules
224 */
225 public static function setHtaccess()
226 {
227 \WPDM\FileSystem::blockHTTPAccess(UPLOAD_DIR);
228 }
229
230 /**
231 * @usage Enqueue all styles and scripts
232 */
233 function enqueueScripts()
234 {
235 global $post;
236
237 wp_enqueue_script('jquery');
238 wp_enqueue_script('jquery-form');
239
240 $wpdmss = maybe_unserialize(get_option('__wpdm_disable_scripts', array()));
241
242 //if((is_object($post) && has_shortcode($post->post_content,'wpdm_frontend')) || get_post_type()=='wpdmpro' )
243
244 if (!in_array('wpdm-font-awesome', $wpdmss))
245 wp_enqueue_style('font-awesome', WPDM_BASE_URL.'assets/font-awesome/css/font-awesome.min.css');
246
247
248 if(is_object($post) && ( has_shortcode($post->post_content,'wpdm_frontend') || has_shortcode($post->post_content,'wpdm-package-form') || has_shortcode($post->post_content,'wpdm_user_dashboard') || has_shortcode($post->post_content,'wpdm-file-browser') ) ){
249 wp_enqueue_script('jquery-ui');
250 wp_enqueue_script('jquery-ui-datepicker');
251 wp_enqueue_script('thickbox');
252 wp_enqueue_style('thickbox');
253 wp_enqueue_script('media-upload');
254 wp_enqueue_media();
255 }
256
257 if(get_post_type()=='wpdmpro' && is_single()){
258 wp_enqueue_script('wpdm-datatable', plugins_url('/download-manager/assets/js/jquery.dataTables.min.js'), array('jquery'));
259 }
260
261
262 if (!in_array('wpdm-bootstrap-css', $wpdmss))
263 wp_enqueue_style('wpdm-bootstrap', plugins_url('/download-manager/assets/bootstrap/css/bootstrap.css'));
264
265
266 wp_enqueue_style('wpdm-front', plugins_url() . '/download-manager/assets/css/front.css');
267
268
269 if (!in_array('wpdm-bootstrap-js', $wpdmss))
270 wp_enqueue_script('wpdm-bootstrap', plugins_url('/download-manager/assets/bootstrap/js/bootstrap.min.js'), array('jquery'));
271
272 wp_enqueue_script('frontjs', plugins_url('/download-manager/assets/js/front.js'), array('jquery'));
273
274 wp_enqueue_script('jquery-choosen', plugins_url('/download-manager/assets/js/chosen.jquery.min.js'), array('jquery'));
275 //wp_enqueue_style('choosen-css', plugins_url('/download-manager/assets/css/chosen.css'), 999999);
276
277
278 }
279
280 /**
281 * @usage insert code in wp head
282 */
283 function wpHead(){
284 ?>
285
286 <script>
287 var wpdm_site_url = '<?php echo site_url('/'); ?>';
288 var wpdm_home_url = '<?php echo home_url('/'); ?>';
289 var ajax_url = '<?php echo admin_url('admin-ajax.php'); ?>';
290 </script>
291
292
293 <?php
294 }
295
296 /**
297 * @usage insert code in wp footer
298 */
299 function wpFooter(){
300 if(is_single()&&get_post_type()=='wpdmpro'){
301 ?>
302 <script>
303 jQuery(function($){
304 $.get('<?php echo 'index.php?_nonce='.wp_create_nonce('__wpdm_view_count').'&id='.get_the_ID(); ?>');
305 });
306 </script>
307 <?php
308 }
309 }
310
311
312
313 /**
314 * @param $name
315 * @usage Class autoloader
316 */
317 function AutoLoad($name) {
318 $name = str_replace("WPDM_","", $name);
319 $name = str_replace("WPDM\\","", $name);
320 $relative_path = str_replace("\\", "/", $name);
321 $parts = explode("\\", $name);
322 $class_file = end($parts);
323 if(file_exists(WPDM_BASE_DIR."libs/class.{$name}.php")){
324 require_once WPDM_BASE_DIR."libs/class.{$name}.php";
325 } else if(file_exists(WPDM_BASE_DIR.str_replace($class_file, 'class.'.$class_file.'.php', $relative_path))){
326 require_once WPDM_BASE_DIR.str_replace($class_file, 'class.'.$class_file.'.php', $relative_path);
327 }
328 }
329
330}
331
332new \WPDM\WordPressDownloadManager();