Version Description
- The [sdm_search_form] can take the fancy template as a shortcode argument to display the search result using that template.
Download this release
Release Info
| Developer | mra13 |
| Plugin | |
| Version | 3.4.3 |
| Comparing to | |
| See all releases | |
Code changes from version 3.4.0 to 3.4.3
- css/sdm_wp_styles.css +13 -0
- includes/sdm-download-request-handler.php +26 -19
- includes/sdm-search-shortcode-handler.php +76 -0
- includes/sdm-utility-functions.php +33 -3
- includes/templates/fancy0/sdm-fancy-0.php +1 -1
- includes/templates/fancy1/sdm-fancy-1.php +3 -3
- includes/templates/fancy2/sdm-fancy-2.php +3 -3
- main.php +65 -57
- readme.txt +14 -2
- sdm-post-type-content-handler.php +9 -1
- sdm-shortcodes.php +56 -59
css/sdm_wp_styles.css
CHANGED
|
@@ -345,4 +345,17 @@
|
|
| 345 |
.sdm_object_tree .sdm_post_title{
|
| 346 |
margin-right: 5px;
|
| 347 |
display: block;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 348 |
}
|
| 345 |
.sdm_object_tree .sdm_post_title{
|
| 346 |
margin-right: 5px;
|
| 347 |
display: block;
|
| 348 |
+
}
|
| 349 |
+
|
| 350 |
+
/* Search form and results */
|
| 351 |
+
|
| 352 |
+
.sdm_search_result_item {
|
| 353 |
+
margin-top: 20px;
|
| 354 |
+
margin-bottom: 10px;
|
| 355 |
+
padding-bottom: 5px;
|
| 356 |
+
border-bottom: 1px solid silver
|
| 357 |
+
}
|
| 358 |
+
|
| 359 |
+
.sdm_search_result_item:last-child {
|
| 360 |
+
border-bottom: none;
|
| 361 |
}
|
includes/sdm-download-request-handler.php
CHANGED
|
@@ -9,7 +9,7 @@ function handle_sdm_download_via_direct_post() {
|
|
| 9 |
$download_link = get_post_meta($download_id, 'sdm_upload', true);
|
| 10 |
|
| 11 |
//Do some validation checks
|
| 12 |
-
if (
|
| 13 |
wp_die(__('Error! Incorrect download item id.', 'simple-download-monitor'));
|
| 14 |
}
|
| 15 |
if (empty($download_link)) {
|
|
@@ -17,25 +17,25 @@ function handle_sdm_download_via_direct_post() {
|
|
| 17 |
}
|
| 18 |
|
| 19 |
//Check download password (if applicable for this download)
|
| 20 |
-
$post_object = get_post($download_id)
|
| 21 |
-
$post_pass = $post_object->post_password
|
| 22 |
-
if(!empty($post_pass)){//This download item has a password. So validate the password.
|
| 23 |
$pass_val = $_REQUEST['pass_text'];
|
| 24 |
-
if(empty($pass_val)){//No password was submitted with the downoad request.
|
| 25 |
$dl_post_url = get_permalink($download_id);
|
| 26 |
$error_msg = __('Error! This download requires a password.', 'simple-download-monitor');
|
| 27 |
$error_msg .= '<p>';
|
| 28 |
-
$error_msg .= '<a href="'
|
| 29 |
$error_msg .= __(' and enter a valid password for this item', 'simple-download-monitor');
|
| 30 |
$error_msg .= '</p>';
|
| 31 |
wp_die($error_msg);
|
| 32 |
}
|
| 33 |
-
if ($post_pass != $pass_val) {
|
| 34 |
//Incorrect password submitted.
|
| 35 |
wp_die(__('Error! Incorrect password. This download requires a valid password.', 'simple-download-monitor'));
|
| 36 |
} else {
|
| 37 |
//Password is valid. Go ahead with the download
|
| 38 |
-
}
|
| 39 |
}
|
| 40 |
//End of password check
|
| 41 |
|
|
@@ -43,15 +43,21 @@ function handle_sdm_download_via_direct_post() {
|
|
| 43 |
$date_time = current_time('mysql');
|
| 44 |
$visitor_country = $ipaddress ? sdm_ip_info($ipaddress, 'country') : '';
|
| 45 |
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 51 |
}
|
| 52 |
|
|
|
|
|
|
|
| 53 |
// Get option for global disabling of download logging
|
| 54 |
-
$main_option = get_option('sdm_downloads_options');
|
| 55 |
$no_logs = isset($main_option['admin_no_logs']);
|
| 56 |
|
| 57 |
// Get optoin for logging only unique IPs
|
|
@@ -109,7 +115,7 @@ function handle_sdm_download_via_direct_post() {
|
|
| 109 |
$dispatch = apply_filters('sdm_dispatch_downloads', get_post_meta($download_id, 'sdm_item_dispatch', true));
|
| 110 |
|
| 111 |
// Only local file can be dispatched.
|
| 112 |
-
if (
|
| 113 |
// Get file path
|
| 114 |
$file = path_join(WP_CONTENT_DIR, ltrim(substr($download_link, strlen(WP_CONTENT_URL)), '/'));
|
| 115 |
// Try to dispatch file (terminates script execution on success)
|
|
@@ -125,8 +131,9 @@ function handle_sdm_download_via_direct_post() {
|
|
| 125 |
/*
|
| 126 |
* Use this function to redirect to a URL
|
| 127 |
*/
|
|
|
|
| 128 |
function sdm_redirect_to_url($url, $delay = '0', $exit = '1') {
|
| 129 |
-
$url = apply_filters('sdm_before_redirect_to_url'
|
| 130 |
if (empty($url)) {
|
| 131 |
echo '<strong>';
|
| 132 |
_e('Error! The URL value is empty. Please specify a correct URL value to redirect to!', 'simple-download-monitor');
|
|
@@ -151,19 +158,19 @@ function sdm_redirect_to_url($url, $delay = '0', $exit = '1') {
|
|
| 151 |
*/
|
| 152 |
function sdm_dispatch_file($filename) {
|
| 153 |
|
| 154 |
-
if (
|
| 155 |
trigger_error(__FUNCTION__ . ": Cannot dispatch file $filename, headers already sent.");
|
| 156 |
return;
|
| 157 |
}
|
| 158 |
|
| 159 |
-
if (
|
| 160 |
trigger_error(__FUNCTION__ . ": Cannot dispatch file $filename, file is not readable.");
|
| 161 |
return;
|
| 162 |
}
|
| 163 |
|
| 164 |
header('Content-Description: File Transfer');
|
| 165 |
header('Content-Type: application/octet-stream'); // http://stackoverflow.com/a/20509354
|
| 166 |
-
header('Content-Disposition: attachment; filename="'.basename($filename).'"');
|
| 167 |
header('Expires: 0');
|
| 168 |
header('Cache-Control: must-revalidate');
|
| 169 |
header('Pragma: public');
|
| 9 |
$download_link = get_post_meta($download_id, 'sdm_upload', true);
|
| 10 |
|
| 11 |
//Do some validation checks
|
| 12 |
+
if (!$download_id) {
|
| 13 |
wp_die(__('Error! Incorrect download item id.', 'simple-download-monitor'));
|
| 14 |
}
|
| 15 |
if (empty($download_link)) {
|
| 17 |
}
|
| 18 |
|
| 19 |
//Check download password (if applicable for this download)
|
| 20 |
+
$post_object = get_post($download_id); // Get post object
|
| 21 |
+
$post_pass = $post_object->post_password; // Get post password
|
| 22 |
+
if (!empty($post_pass)) {//This download item has a password. So validate the password.
|
| 23 |
$pass_val = $_REQUEST['pass_text'];
|
| 24 |
+
if (empty($pass_val)) {//No password was submitted with the downoad request.
|
| 25 |
$dl_post_url = get_permalink($download_id);
|
| 26 |
$error_msg = __('Error! This download requires a password.', 'simple-download-monitor');
|
| 27 |
$error_msg .= '<p>';
|
| 28 |
+
$error_msg .= '<a href="' . $dl_post_url . '">' . __('Click here', 'simple-download-monitor') . '</a>';
|
| 29 |
$error_msg .= __(' and enter a valid password for this item', 'simple-download-monitor');
|
| 30 |
$error_msg .= '</p>';
|
| 31 |
wp_die($error_msg);
|
| 32 |
}
|
| 33 |
+
if ($post_pass != $pass_val) {
|
| 34 |
//Incorrect password submitted.
|
| 35 |
wp_die(__('Error! Incorrect password. This download requires a valid password.', 'simple-download-monitor'));
|
| 36 |
} else {
|
| 37 |
//Password is valid. Go ahead with the download
|
| 38 |
+
}
|
| 39 |
}
|
| 40 |
//End of password check
|
| 41 |
|
| 43 |
$date_time = current_time('mysql');
|
| 44 |
$visitor_country = $ipaddress ? sdm_ip_info($ipaddress, 'country') : '';
|
| 45 |
|
| 46 |
+
$main_option = get_option('sdm_downloads_options');
|
| 47 |
+
|
| 48 |
+
$visitor_name = sdm_get_logged_in_user();
|
| 49 |
+
|
| 50 |
+
// Check if we only allow the download for logged-in users
|
| 51 |
+
if (isset($main_option['only_logged_in_can_download'])) {
|
| 52 |
+
if ($main_option['only_logged_in_can_download'] && $visitor_name === false) {
|
| 53 |
+
// User not logged in, let's display the message
|
| 54 |
+
wp_die(__('You need to be logged in to download this file.', 'simple-download-monitor'));
|
| 55 |
+
}
|
| 56 |
}
|
| 57 |
|
| 58 |
+
$visitor_name = ($visitor_name === false) ? __('Not Logged In', 'simple-download-monitor') : $visitor_name;
|
| 59 |
+
|
| 60 |
// Get option for global disabling of download logging
|
|
|
|
| 61 |
$no_logs = isset($main_option['admin_no_logs']);
|
| 62 |
|
| 63 |
// Get optoin for logging only unique IPs
|
| 115 |
$dispatch = apply_filters('sdm_dispatch_downloads', get_post_meta($download_id, 'sdm_item_dispatch', true));
|
| 116 |
|
| 117 |
// Only local file can be dispatched.
|
| 118 |
+
if ($dispatch && (stripos($download_link, WP_CONTENT_URL) === 0)) {
|
| 119 |
// Get file path
|
| 120 |
$file = path_join(WP_CONTENT_DIR, ltrim(substr($download_link, strlen(WP_CONTENT_URL)), '/'));
|
| 121 |
// Try to dispatch file (terminates script execution on success)
|
| 131 |
/*
|
| 132 |
* Use this function to redirect to a URL
|
| 133 |
*/
|
| 134 |
+
|
| 135 |
function sdm_redirect_to_url($url, $delay = '0', $exit = '1') {
|
| 136 |
+
$url = apply_filters('sdm_before_redirect_to_url', $url);
|
| 137 |
if (empty($url)) {
|
| 138 |
echo '<strong>';
|
| 139 |
_e('Error! The URL value is empty. Please specify a correct URL value to redirect to!', 'simple-download-monitor');
|
| 158 |
*/
|
| 159 |
function sdm_dispatch_file($filename) {
|
| 160 |
|
| 161 |
+
if (headers_sent()) {
|
| 162 |
trigger_error(__FUNCTION__ . ": Cannot dispatch file $filename, headers already sent.");
|
| 163 |
return;
|
| 164 |
}
|
| 165 |
|
| 166 |
+
if (!is_readable($filename)) {
|
| 167 |
trigger_error(__FUNCTION__ . ": Cannot dispatch file $filename, file is not readable.");
|
| 168 |
return;
|
| 169 |
}
|
| 170 |
|
| 171 |
header('Content-Description: File Transfer');
|
| 172 |
header('Content-Type: application/octet-stream'); // http://stackoverflow.com/a/20509354
|
| 173 |
+
header('Content-Disposition: attachment; filename="' . basename($filename) . '"');
|
| 174 |
header('Expires: 0');
|
| 175 |
header('Cache-Control: must-revalidate');
|
| 176 |
header('Pragma: public');
|
includes/sdm-search-shortcode-handler.php
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
function sdm_search_form_shortcode($args) {
|
| 4 |
+
$atts = shortcode_atts(
|
| 5 |
+
array(
|
| 6 |
+
'fancy' => '',
|
| 7 |
+
'class' => '', // wrapper class
|
| 8 |
+
'placeholder' => 'Search...', // placeholder for search input
|
| 9 |
+
'description_max_length' => 50, // short description symbols count
|
| 10 |
+
), $args
|
| 11 |
+
);
|
| 12 |
+
|
| 13 |
+
// Check if we have a search value posted
|
| 14 |
+
$s_term = isset($_POST['sdm_search_term']) ? stripslashes(sanitize_text_field(esc_html($_POST['sdm_search_term']))) : '';
|
| 15 |
+
|
| 16 |
+
if (!empty($s_term)) {
|
| 17 |
+
// we got search term posted
|
| 18 |
+
global $wpdb;
|
| 19 |
+
$querystr = "
|
| 20 |
+
SELECT $wpdb->posts.*, $wpdb->postmeta.meta_value as description
|
| 21 |
+
FROM $wpdb->posts, $wpdb->postmeta
|
| 22 |
+
WHERE $wpdb->posts.ID = $wpdb->postmeta.post_id
|
| 23 |
+
AND $wpdb->posts.post_status = 'publish'
|
| 24 |
+
AND $wpdb->posts.post_type = 'sdm_downloads'
|
| 25 |
+
AND ($wpdb->posts.post_title LIKE '%$s_term%'
|
| 26 |
+
OR ($wpdb->postmeta.meta_key='sdm_description' AND $wpdb->postmeta.meta_value LIKE '%$s_term%') )
|
| 27 |
+
GROUP BY $wpdb->posts.ID
|
| 28 |
+
";
|
| 29 |
+
$posts_collection = $wpdb->get_results($querystr, OBJECT);
|
| 30 |
+
$s_results = sdm_generate_search_result_using_template($posts_collection, $atts);
|
| 31 |
+
|
| 32 |
+
if (!empty($s_results)) {
|
| 33 |
+
$s_results = '<h2>Search results for "' . $s_term . '":</h2>' . $s_results;
|
| 34 |
+
} else {
|
| 35 |
+
$s_results = '<h2>Nothing found for "' . $s_term . '".</h2>';
|
| 36 |
+
}
|
| 37 |
+
}
|
| 38 |
+
|
| 39 |
+
$out = '';
|
| 40 |
+
$out .= '<form id="sdm_search_form" class="' . (empty($atts['class']) ? '' : ' ' . $atts['class']) . '" method="POST">';
|
| 41 |
+
$out .= '<input type="search" class="search-field" name="sdm_search_term" value="' . $s_term . '" placeholder="' . $atts['placeholder'] . '">';
|
| 42 |
+
$out .= '<input type="submit" class="sdm_search_submit" name="sdm_search_submit" value="Search">';
|
| 43 |
+
$out .= '</form>';
|
| 44 |
+
$out .= isset($s_results) ? $s_results : '';
|
| 45 |
+
|
| 46 |
+
return $out;
|
| 47 |
+
}
|
| 48 |
+
|
| 49 |
+
function sdm_generate_search_result_using_template($posts_collection, $args = array()) {
|
| 50 |
+
$s_results = '';
|
| 51 |
+
|
| 52 |
+
if (isset($args['fancy']) && !empty($args['fancy'])) {
|
| 53 |
+
if ($args['fancy'] == '1') {
|
| 54 |
+
include_once(WP_SIMPLE_DL_MONITOR_PATH . 'includes/templates/fancy1/sdm-fancy-1.php');
|
| 55 |
+
$s_results .= sdm_generate_fancy1_category_display_output($posts_collection, $args);
|
| 56 |
+
} else if ($args['fancy'] == '2') {
|
| 57 |
+
include_once(WP_SIMPLE_DL_MONITOR_PATH . 'includes/templates/fancy2/sdm-fancy-2.php');
|
| 58 |
+
$s_results .= sdm_generate_fancy2_category_display_output($posts_collection, $args);
|
| 59 |
+
}
|
| 60 |
+
} else {
|
| 61 |
+
//No fancy template is used. Show the search result using the standard search display
|
| 62 |
+
foreach ($posts_collection as $post) {
|
| 63 |
+
$meta = get_post_meta($post->ID);
|
| 64 |
+
$s_results .= '<div class="sdm_search_result_item">';
|
| 65 |
+
$s_results .= '<h4><a href="' . get_permalink($post->ID) . '">' . $post->post_title . '</a></h4>';
|
| 66 |
+
$descr = strip_shortcodes($meta['sdm_description'][0]);
|
| 67 |
+
if (strlen($descr) > $args['description_max_length']) {
|
| 68 |
+
$descr = substr($descr, 0, $args['description_max_length']) . '[...]';
|
| 69 |
+
}
|
| 70 |
+
$s_results .= '<span>' . $descr . '</span>';
|
| 71 |
+
$s_results .= '</div>';
|
| 72 |
+
}
|
| 73 |
+
}
|
| 74 |
+
|
| 75 |
+
return $s_results;
|
| 76 |
+
}
|
includes/sdm-utility-functions.php
CHANGED
|
@@ -55,12 +55,21 @@ function sdm_get_item_description_output($id){
|
|
| 55 |
return $isset_item_description;
|
| 56 |
}
|
| 57 |
|
| 58 |
-
function sdm_get_password_entry_form($id) {
|
| 59 |
-
$action_url = WP_SIMPLE_DL_MONITOR_SITE_HOME_URL . '/?smd_process_download=1&download_id=' . $id;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 60 |
$data = __('Enter Password to Download:', 'simple-download-monitor');
|
| 61 |
$data .= '<form action="'.$action_url.'" method="post" >';
|
| 62 |
$data .= '<input type="password" name="pass_text" class="sdm_pass_text" value="" /> ';
|
| 63 |
-
$data .= '<input type="submit" name="sdm_dl_pass_submit" class="pass_sumbit" value="' .
|
| 64 |
$data .= '<input type="hidden" name="download_id" value="' . $id . '" />';
|
| 65 |
$data .= '</form>';
|
| 66 |
return $data;
|
|
@@ -157,3 +166,24 @@ function sdm_sanitize_value_by_array($to_check, $valid_values)
|
|
| 157 |
}
|
| 158 |
return reset($keys);//Return the first element from the valid values
|
| 159 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 55 |
return $isset_item_description;
|
| 56 |
}
|
| 57 |
|
| 58 |
+
function sdm_get_password_entry_form($id, $args=array()) {
|
| 59 |
+
$action_url = WP_SIMPLE_DL_MONITOR_SITE_HOME_URL . '/?smd_process_download=1&download_id=' . $id;
|
| 60 |
+
|
| 61 |
+
//Get the download button text
|
| 62 |
+
$button_text = isset($args['button_text']) ? $args['button_text'] : '';
|
| 63 |
+
if (empty($button_text)) {//Use the default text for the button
|
| 64 |
+
$button_text_string = __('Download Now!', 'simple-download-monitor');
|
| 65 |
+
} else {//Use the custom text
|
| 66 |
+
$button_text_string = $button_text;
|
| 67 |
+
}
|
| 68 |
+
|
| 69 |
$data = __('Enter Password to Download:', 'simple-download-monitor');
|
| 70 |
$data .= '<form action="'.$action_url.'" method="post" >';
|
| 71 |
$data .= '<input type="password" name="pass_text" class="sdm_pass_text" value="" /> ';
|
| 72 |
+
$data .= '<input type="submit" name="sdm_dl_pass_submit" class="pass_sumbit sdm_pass_protected_download" value="' . $button_text_string . '" />';
|
| 73 |
$data .= '<input type="hidden" name="download_id" value="' . $id . '" />';
|
| 74 |
$data .= '</form>';
|
| 75 |
return $data;
|
| 166 |
}
|
| 167 |
return reset($keys);//Return the first element from the valid values
|
| 168 |
}
|
| 169 |
+
|
| 170 |
+
function sdm_get_logged_in_user() {
|
| 171 |
+
$visitor_name = false;
|
| 172 |
+
|
| 173 |
+
if (is_user_logged_in()) { // Get WP user name (if logged in)
|
| 174 |
+
$current_user = wp_get_current_user();
|
| 175 |
+
$visitor_name = $current_user->user_login;
|
| 176 |
+
}
|
| 177 |
+
|
| 178 |
+
//WP eMember plugin integration
|
| 179 |
+
if (class_exists('Emember_Auth')) {
|
| 180 |
+
//WP eMember plugin is installed.
|
| 181 |
+
$emember_auth = Emember_Auth::getInstance();
|
| 182 |
+
$username = $emember_auth->getUserInfo('user_name');
|
| 183 |
+
if (!empty($username)) {//Member is logged in.
|
| 184 |
+
$visitor_name = $username; //Override the visitor name to emember username.
|
| 185 |
+
}
|
| 186 |
+
}
|
| 187 |
+
|
| 188 |
+
return $visitor_name;
|
| 189 |
+
}
|
includes/templates/fancy0/sdm-fancy-0.php
CHANGED
|
@@ -89,7 +89,7 @@ function sdm_generate_fancy0_display_output($args) {
|
|
| 89 |
$get_cpt_object = get_post($id);
|
| 90 |
$cpt_is_password = !empty($get_cpt_object->post_password) ? 'yes' : 'no'; // yes = download is password protected;
|
| 91 |
if ($cpt_is_password !== 'no') {//This is a password protected download so replace the download now button with password requirement
|
| 92 |
-
$download_button_code = sdm_get_password_entry_form($id);
|
| 93 |
}
|
| 94 |
|
| 95 |
$output = "";
|
| 89 |
$get_cpt_object = get_post($id);
|
| 90 |
$cpt_is_password = !empty($get_cpt_object->post_password) ? 'yes' : 'no'; // yes = download is password protected;
|
| 91 |
if ($cpt_is_password !== 'no') {//This is a password protected download so replace the download now button with password requirement
|
| 92 |
+
$download_button_code = sdm_get_password_entry_form($id, $args);
|
| 93 |
}
|
| 94 |
|
| 95 |
$output = "";
|
includes/templates/fancy1/sdm-fancy-1.php
CHANGED
|
@@ -35,7 +35,7 @@ function sdm_generate_fancy1_category_display_output($get_posts, $args) {
|
|
| 35 |
* id, fancy, button_text, new_window
|
| 36 |
*/
|
| 37 |
|
| 38 |
-
function sdm_generate_fancy1_display_output($
|
| 39 |
|
| 40 |
$shortcode_atts = sanitize_sdm_create_download_shortcode_atts(
|
| 41 |
shortcode_atts(array(
|
|
@@ -46,7 +46,7 @@ function sdm_generate_fancy1_display_output($atts) {
|
|
| 46 |
'css_class' => '',
|
| 47 |
'show_size' => '',
|
| 48 |
'show_version' => '',
|
| 49 |
-
), $
|
| 50 |
);
|
| 51 |
|
| 52 |
// Make shortcode attributes available in function local scope.
|
|
@@ -90,7 +90,7 @@ function sdm_generate_fancy1_display_output($atts) {
|
|
| 90 |
$get_cpt_object = get_post($id);
|
| 91 |
$cpt_is_password = !empty($get_cpt_object->post_password) ? 'yes' : 'no'; // yes = download is password protected;
|
| 92 |
if ($cpt_is_password !== 'no') {//This is a password protected download so replace the download now button with password requirement
|
| 93 |
-
$download_button_code = sdm_get_password_entry_form($id);
|
| 94 |
}
|
| 95 |
|
| 96 |
$db_count = sdm_get_download_count_for_post($id);
|
| 35 |
* id, fancy, button_text, new_window
|
| 36 |
*/
|
| 37 |
|
| 38 |
+
function sdm_generate_fancy1_display_output($args) {
|
| 39 |
|
| 40 |
$shortcode_atts = sanitize_sdm_create_download_shortcode_atts(
|
| 41 |
shortcode_atts(array(
|
| 46 |
'css_class' => '',
|
| 47 |
'show_size' => '',
|
| 48 |
'show_version' => '',
|
| 49 |
+
), $args)
|
| 50 |
);
|
| 51 |
|
| 52 |
// Make shortcode attributes available in function local scope.
|
| 90 |
$get_cpt_object = get_post($id);
|
| 91 |
$cpt_is_password = !empty($get_cpt_object->post_password) ? 'yes' : 'no'; // yes = download is password protected;
|
| 92 |
if ($cpt_is_password !== 'no') {//This is a password protected download so replace the download now button with password requirement
|
| 93 |
+
$download_button_code = sdm_get_password_entry_form($id, $args);
|
| 94 |
}
|
| 95 |
|
| 96 |
$db_count = sdm_get_download_count_for_post($id);
|
includes/templates/fancy2/sdm-fancy-2.php
CHANGED
|
@@ -52,7 +52,7 @@ function sdm_generate_fancy2_category_display_output($get_posts, $args) {
|
|
| 52 |
* id, fancy, button_text, new_window
|
| 53 |
*/
|
| 54 |
|
| 55 |
-
function sdm_generate_fancy2_display_output($
|
| 56 |
|
| 57 |
$shortcode_atts = sanitize_sdm_create_download_shortcode_atts(
|
| 58 |
shortcode_atts(array(
|
|
@@ -63,7 +63,7 @@ function sdm_generate_fancy2_display_output($atts) {
|
|
| 63 |
'css_class' => 'sdm_fancy2_grid',
|
| 64 |
'show_size' => '',
|
| 65 |
'show_version' => '',
|
| 66 |
-
), $
|
| 67 |
);
|
| 68 |
|
| 69 |
// Make shortcode attributes available in function local scope.
|
|
@@ -85,7 +85,7 @@ function sdm_generate_fancy2_display_output($atts) {
|
|
| 85 |
$get_cpt_object = get_post($id);
|
| 86 |
$cpt_is_password = !empty($get_cpt_object->post_password) ? 'yes' : 'no'; // yes = download is password protected;
|
| 87 |
if ($cpt_is_password !== 'no') {//This is a password protected download so replace the download now button with password requirement
|
| 88 |
-
$download_button_code = sdm_get_password_entry_form($id);
|
| 89 |
}
|
| 90 |
|
| 91 |
// Get item thumbnail
|
| 52 |
* id, fancy, button_text, new_window
|
| 53 |
*/
|
| 54 |
|
| 55 |
+
function sdm_generate_fancy2_display_output($args) {
|
| 56 |
|
| 57 |
$shortcode_atts = sanitize_sdm_create_download_shortcode_atts(
|
| 58 |
shortcode_atts(array(
|
| 63 |
'css_class' => 'sdm_fancy2_grid',
|
| 64 |
'show_size' => '',
|
| 65 |
'show_version' => '',
|
| 66 |
+
), $args)
|
| 67 |
);
|
| 68 |
|
| 69 |
// Make shortcode attributes available in function local scope.
|
| 85 |
$get_cpt_object = get_post($id);
|
| 86 |
$cpt_is_password = !empty($get_cpt_object->post_password) ? 'yes' : 'no'; // yes = download is password protected;
|
| 87 |
if ($cpt_is_password !== 'no') {//This is a password protected download so replace the download now button with password requirement
|
| 88 |
+
$download_button_code = sdm_get_password_entry_form($id, $args);
|
| 89 |
}
|
| 90 |
|
| 91 |
// Get item thumbnail
|
main.php
CHANGED
|
@@ -1,19 +1,19 @@
|
|
| 1 |
<?php
|
| 2 |
/**
|
| 3 |
-
* Plugin Name: Simple Download Monitor
|
| 4 |
-
* Plugin URI: https://www.tipsandtricks-hq.com/simple-wordpress-download-monitor-plugin
|
| 5 |
-
* Description: Easily manage downloadable files and monitor downloads of your digital files from your WordPress site.
|
| 6 |
-
* Version: 3.4.
|
| 7 |
-
* Author: Tips and Tricks HQ, Ruhul Amin, Josh Lobe
|
| 8 |
-
* Author URI: https://www.tipsandtricks-hq.com/development-center
|
| 9 |
-
* License: GPL2
|
| 10 |
-
*/
|
| 11 |
|
| 12 |
if (!defined('ABSPATH')) {
|
| 13 |
exit;
|
| 14 |
}
|
| 15 |
|
| 16 |
-
define('WP_SIMPLE_DL_MONITOR_VERSION', '3.4.
|
| 17 |
define('WP_SIMPLE_DL_MONITOR_DIR_NAME', dirname(plugin_basename(__FILE__)));
|
| 18 |
define('WP_SIMPLE_DL_MONITOR_URL', plugins_url('', __FILE__));
|
| 19 |
define('WP_SIMPLE_DL_MONITOR_PATH', plugin_dir_path(__FILE__));
|
|
@@ -28,6 +28,7 @@ include_once('includes/sdm-utility-functions-admin-side.php');
|
|
| 28 |
include_once('includes/sdm-download-request-handler.php');
|
| 29 |
include_once('includes/sdm-logs-list-table.php');
|
| 30 |
include_once('includes/sdm-latest-downloads.php');
|
|
|
|
| 31 |
include_once('sdm-post-type-and-taxonomy.php');
|
| 32 |
include_once('sdm-shortcodes.php');
|
| 33 |
include_once('sdm-post-type-content-handler.php');
|
|
@@ -82,6 +83,7 @@ function sdm_plugins_loaded_tasks() {
|
|
| 82 |
* * Handle Generic Init tasks
|
| 83 |
*/
|
| 84 |
add_action('init', 'sdm_init_time_tasks');
|
|
|
|
| 85 |
function sdm_init_time_tasks() {
|
| 86 |
//Handle download request if any
|
| 87 |
handle_sdm_download_via_direct_post();
|
|
@@ -90,6 +92,7 @@ function sdm_init_time_tasks() {
|
|
| 90 |
/*
|
| 91 |
* DB upgrade check
|
| 92 |
*/
|
|
|
|
| 93 |
function sdm_db_update_check() {
|
| 94 |
if (is_admin()) {//Check if DB needs to be upgraded
|
| 95 |
global $sdm_db_version;
|
|
@@ -211,7 +214,7 @@ class simpleDownloadManager {
|
|
| 211 |
}
|
| 212 |
|
| 213 |
public function sdm_create_upload_metabox() {
|
| 214 |
-
|
| 215 |
//***** Create metaboxes for the custom post type
|
| 216 |
add_meta_box('sdm_description_meta_box', __('Description', 'simple-download-monitor'), array($this, 'display_sdm_description_meta_box'), 'sdm_downloads', 'normal', 'default');
|
| 217 |
add_meta_box('sdm_upload_meta_box', __('Upload File', 'simple-download-monitor'), array($this, 'display_sdm_upload_meta_box'), 'sdm_downloads', 'normal', 'default');
|
|
@@ -220,7 +223,6 @@ class simpleDownloadManager {
|
|
| 220 |
add_meta_box('sdm_stats_meta_box', __('Statistics', 'simple-download-monitor'), array($this, 'display_sdm_stats_meta_box'), 'sdm_downloads', 'normal', 'default');
|
| 221 |
add_meta_box('sdm_other_details_meta_box', __('Other Details (Optional)', 'simple-download-monitor'), array($this, 'display_sdm_other_details_meta_box'), 'sdm_downloads', 'normal', 'default');
|
| 222 |
add_meta_box('sdm_shortcode_meta_box', __('Shortcodes', 'simple-download-monitor'), array($this, 'display_sdm_shortcode_meta_box'), 'sdm_downloads', 'normal', 'default');
|
| 223 |
-
|
| 224 |
}
|
| 225 |
|
| 226 |
public function display_sdm_description_meta_box($post) { // Description metabox
|
|
@@ -237,17 +239,17 @@ class simpleDownloadManager {
|
|
| 237 |
public function display_sdm_upload_meta_box($post) { // File Upload metabox
|
| 238 |
$old_upload = get_post_meta($post->ID, 'sdm_upload', true);
|
| 239 |
$old_value = isset($old_upload) ? $old_upload : '';
|
| 240 |
-
|
| 241 |
_e('Manually enter a valid URL of the file in the text box below, or click "Select File" button to upload (or choose) the downloadable file.', 'simple-download-monitor');
|
| 242 |
echo '<br /><br />';
|
| 243 |
-
|
| 244 |
-
echo '<div class="sdm-download-edit-file-url-section">';
|
| 245 |
-
echo '<input id="sdm_upload" type="text" size="100" name="sdm_upload" value="'
|
| 246 |
echo '</div>';
|
| 247 |
-
|
| 248 |
echo '<br />';
|
| 249 |
-
echo '<input id="upload_image_button" type="button" class="button-primary" value="'.__('Select File', 'simple-download-monitor').'" />';
|
| 250 |
-
|
| 251 |
echo '<br /><br />';
|
| 252 |
_e('Steps to upload a file or choose one from your media library:', 'simple-download-monitor');
|
| 253 |
echo '<ol>';
|
|
@@ -262,11 +264,11 @@ class simpleDownloadManager {
|
|
| 262 |
public function display_sdm_dispatch_meta_box($post) {
|
| 263 |
$dispatch = get_post_meta($post->ID, 'sdm_item_dispatch', true);
|
| 264 |
|
| 265 |
-
if (
|
| 266 |
// No value yet (either new item or saved with older version of plugin)
|
| 267 |
$screen = get_current_screen();
|
| 268 |
|
| 269 |
-
if (
|
| 270 |
// New item: set default value as per plugin settings.
|
| 271 |
$main_opts = get_option('sdm_downloads_options');
|
| 272 |
$dispatch = isset($main_opts['general_default_dispatch_value']) && $main_opts['general_default_dispatch_value'];
|
|
@@ -283,7 +285,6 @@ class simpleDownloadManager {
|
|
| 283 |
$old_thumbnail = get_post_meta($post->ID, 'sdm_upload_thumbnail', true);
|
| 284 |
$old_value = isset($old_thumbnail) ? $old_thumbnail : '';
|
| 285 |
_e('Manually enter a valid URL, or click "Select Image" to upload (or choose) the file thumbnail image.', 'simple-download-monitor');
|
| 286 |
-
|
| 287 |
?>
|
| 288 |
<br /><br />
|
| 289 |
<input id="sdm_upload_thumbnail" type="text" size="100" name="sdm_upload_thumbnail" value="<?php echo $old_value; ?>" placeholder="http://..." />
|
|
@@ -300,12 +301,12 @@ class simpleDownloadManager {
|
|
| 300 |
}
|
| 301 |
?>
|
| 302 |
</span>
|
| 303 |
-
|
| 304 |
<?php
|
| 305 |
echo '<p class="description">';
|
| 306 |
_e('This thumbnail image will be used to create a fancy file download box if you want to use it.', 'simple-download-monitor');
|
| 307 |
echo '</p>';
|
| 308 |
-
|
| 309 |
wp_nonce_field('sdm_thumbnail_box_nonce', 'sdm_thumbnail_box_nonce_check');
|
| 310 |
}
|
| 311 |
|
|
@@ -322,19 +323,19 @@ class simpleDownloadManager {
|
|
| 322 |
|
| 323 |
global $wpdb;
|
| 324 |
$wpdb->get_results($wpdb->prepare('SELECT * FROM ' . $wpdb->prefix . 'sdm_downloads WHERE post_id=%s', $post->ID));
|
| 325 |
-
|
| 326 |
echo '<div class="sdm-download-edit-dl-count">';
|
| 327 |
_e('Number of Downloads:', 'simple-download-monitor');
|
| 328 |
echo ' <strong>' . $wpdb->num_rows . '</strong>';
|
| 329 |
echo '</div>';
|
| 330 |
-
|
| 331 |
echo '<div class="sdm-download-edit-offset-count">';
|
| 332 |
_e('Offset Count: ', 'simple-download-monitor');
|
| 333 |
echo '<br />';
|
| 334 |
echo ' <input type="text" size="10" name="sdm_count_offset" value="' . $value . '" />';
|
| 335 |
-
echo '<p class="description">'.__('Enter any positive or negative numerical value; to offset the download count shown to the visitors (when using the download counter shortcode).', 'simple-download-monitor').'</p>';
|
| 336 |
echo '</div>';
|
| 337 |
-
|
| 338 |
echo '<br />';
|
| 339 |
echo '<div class="sdm-download-edit-disable-logging">';
|
| 340 |
echo '<input type="checkbox" name="sdm_item_no_log" ' . $checked . ' />';
|
|
@@ -344,32 +345,31 @@ class simpleDownloadManager {
|
|
| 344 |
|
| 345 |
wp_nonce_field('sdm_count_offset_nonce', 'sdm_count_offset_nonce_check');
|
| 346 |
}
|
| 347 |
-
|
| 348 |
-
public function display_sdm_other_details_meta_box($post){ //Other details metabox
|
| 349 |
$file_size = get_post_meta($post->ID, 'sdm_item_file_size', true);
|
| 350 |
$file_size = isset($file_size) ? $file_size : '';
|
| 351 |
-
|
| 352 |
$version = get_post_meta($post->ID, 'sdm_item_version', true);
|
| 353 |
$version = isset($version) ? $version : '';
|
| 354 |
-
|
| 355 |
echo '<div class="sdm-download-edit-filesize">';
|
| 356 |
_e('File Size: ', 'simple-download-monitor');
|
| 357 |
echo '<br />';
|
| 358 |
echo ' <input type="text" name="sdm_item_file_size" value="' . $file_size . '" size="20" />';
|
| 359 |
-
echo '<p class="description">'.__('Enter the size of this file (example value: 2.15 MB). You can show this value in the fancy display by using a shortcode parameter.', 'simple-download-monitor').'</p>';
|
| 360 |
echo '</div>';
|
| 361 |
-
|
| 362 |
echo '<div class="sdm-download-edit-version">';
|
| 363 |
_e('Version: ', 'simple-download-monitor');
|
| 364 |
echo '<br />';
|
| 365 |
echo ' <input type="text" name="sdm_item_version" value="' . $version . '" size="20" />';
|
| 366 |
-
echo '<p class="description">'.__('Enter the version number for this item if any (example value: v2.5.10). You can show this value in the fancy display by using a shortcode parameter.', 'simple-download-monitor').'</p>';
|
| 367 |
echo '</div>';
|
| 368 |
-
|
| 369 |
wp_nonce_field('sdm_other_details_nonce', 'sdm_other_details_nonce_check');
|
| 370 |
-
|
| 371 |
}
|
| 372 |
-
|
| 373 |
public function display_sdm_shortcode_meta_box($post) { //Shortcode metabox
|
| 374 |
_e('The following shortcode can be used on posts or pages to embed a download now button for this file. You can also use the shortcode inserter (in the post editor) to add this shortcode to a post or page.', 'simple-download-monitor');
|
| 375 |
echo '<br />';
|
|
@@ -379,10 +379,10 @@ class simpleDownloadManager {
|
|
| 379 |
_e('The following shortcode can be used to show a download counter for this item.', 'simple-download-monitor');
|
| 380 |
echo '<br />';
|
| 381 |
echo '[sdm_download_counter id="' . $post->ID . '"]';
|
| 382 |
-
|
| 383 |
echo '<br /><br />';
|
| 384 |
echo 'Read the full shortcode usage documentation <a href="https://www.tipsandtricks-hq.com/simple-wordpress-download-monitor-plugin" target="_blank">here</a>.';
|
| 385 |
-
}
|
| 386 |
|
| 387 |
public function sdm_save_description_meta_data($post_id) { // Save Description metabox
|
| 388 |
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
|
|
@@ -410,7 +410,7 @@ class simpleDownloadManager {
|
|
| 410 |
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
|
| 411 |
return;
|
| 412 |
}
|
| 413 |
-
if (
|
| 414 |
return;
|
| 415 |
}
|
| 416 |
// Get POST-ed data as boolean value
|
|
@@ -447,24 +447,23 @@ class simpleDownloadManager {
|
|
| 447 |
delete_post_meta($post_id, 'sdm_item_no_log');
|
| 448 |
}
|
| 449 |
}
|
| 450 |
-
|
| 451 |
public function sdm_save_other_details_meta_data($post_id) { // Save Statistics Upload metabox
|
| 452 |
-
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE){
|
| 453 |
return;
|
| 454 |
}
|
| 455 |
-
if (!isset($_POST['sdm_other_details_nonce_check']) || !wp_verify_nonce($_POST['sdm_other_details_nonce_check'], 'sdm_other_details_nonce')){
|
| 456 |
return;
|
| 457 |
}
|
| 458 |
|
| 459 |
if (isset($_POST['sdm_item_file_size'])) {
|
| 460 |
update_post_meta($post_id, 'sdm_item_file_size', $_POST['sdm_item_file_size']);
|
| 461 |
}
|
| 462 |
-
|
| 463 |
-
if (isset($_POST['sdm_item_version'])){
|
| 464 |
update_post_meta($post_id, 'sdm_item_version', $_POST['sdm_item_version']);
|
| 465 |
}
|
| 466 |
-
|
| 467 |
-
}
|
| 468 |
|
| 469 |
public function sdm_remove_view_link_cpt($action, $post) {
|
| 470 |
|
|
@@ -480,7 +479,7 @@ class simpleDownloadManager {
|
|
| 480 |
|
| 481 |
//Register the main setting
|
| 482 |
register_setting('sdm_downloads_options', 'sdm_downloads_options');
|
| 483 |
-
|
| 484 |
//Add all the settings section that will go under the main settings
|
| 485 |
add_settings_section('general_options', __('General Options', 'simple-download-monitor'), array($this, 'general_options_cb'), 'general_options_section');
|
| 486 |
add_settings_section('admin_options', __('Admin Options', 'simple-download-monitor'), array($this, 'admin_options_cb'), 'admin_options_section');
|
|
@@ -489,19 +488,20 @@ class simpleDownloadManager {
|
|
| 489 |
//Add all the individual settings fields that goes under the sections
|
| 490 |
add_settings_field('general_hide_donwload_count', __('Hide Download Count', 'simple-download-monitor'), array($this, 'hide_download_count_cb'), 'general_options_section', 'general_options');
|
| 491 |
add_settings_field('general_default_dispatch_value', __('PHP Dispatching', 'simple-download-monitor'), array($this, 'general_default_dispatch_value_cb'), 'general_options_section', 'general_options');
|
| 492 |
-
|
|
|
|
| 493 |
add_settings_field('admin_tinymce_button', __('Remove Tinymce Button', 'simple-download-monitor'), array($this, 'admin_tinymce_button_cb'), 'admin_options_section', 'admin_options');
|
| 494 |
add_settings_field('admin_log_unique', __('Log Unique IP', 'simple-download-monitor'), array($this, 'admin_log_unique'), 'admin_options_section', 'admin_options');
|
| 495 |
add_settings_field('admin_no_logs', __('Disable Download Logs', 'simple-download-monitor'), array($this, 'admin_no_logs_cb'), 'admin_options_section', 'admin_options');
|
| 496 |
-
|
| 497 |
add_settings_field('download_button_color', __('Download Button Color', 'simple-download-monitor'), array($this, 'download_button_color_cb'), 'sdm_colors_section', 'sdm_colors');
|
| 498 |
}
|
| 499 |
|
| 500 |
public function general_options_cb() {
|
| 501 |
//Set the message that will be shown below the general options settings heading
|
| 502 |
-
_e('General options settings', 'simple-download-monitor');
|
| 503 |
}
|
| 504 |
-
|
| 505 |
public function admin_options_cb() {
|
| 506 |
//Set the message that will be shown below the admin options settings heading
|
| 507 |
_e('Admin options settings', 'simple-download-monitor');
|
|
@@ -524,7 +524,14 @@ class simpleDownloadManager {
|
|
| 524 |
echo '<input name="sdm_downloads_options[general_default_dispatch_value]" id="general_default_dispatch_value" type="checkbox" value="1"' . checked(true, $value, false) . ' />';
|
| 525 |
echo '<label for="general_default_dispatch_value">' . __('When you create a new download item, The PHP Dispatching option should be enabled by default. PHP Dispatching keeps the URL of the downloadable files hidden.', 'simple-download-monitor') . '</label>';
|
| 526 |
}
|
| 527 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 528 |
public function admin_tinymce_button_cb() {
|
| 529 |
$main_opts = get_option('sdm_downloads_options');
|
| 530 |
echo '<input name="sdm_downloads_options[admin_tinymce_button]" id="admin_tinymce_button" type="checkbox" class="sdm_opts_ajax_checkboxes" ' . checked(1, isset($main_opts['admin_tinymce_button']), false) . ' /> ';
|
|
@@ -557,8 +564,9 @@ class simpleDownloadManager {
|
|
| 557 |
esc_html_e('Adjusts the color of the "Download Now" button.', 'simple-download-monitor');
|
| 558 |
}
|
| 559 |
|
| 560 |
-
}
|
| 561 |
|
|
|
|
| 562 |
//Initialize the simpleDownloadManager class
|
| 563 |
$simpleDownloadManager = new simpleDownloadManager();
|
| 564 |
|
|
@@ -586,14 +594,14 @@ function sdm_tiny_get_post_ids_ajax_call() {
|
|
| 586 |
|
| 587 |
//Remove Thumbnail Image
|
| 588 |
//add_action('wp_ajax_nopriv_sdm_remove_thumbnail_image', '');//This is only available to logged-in users
|
| 589 |
-
add_action('wp_ajax_sdm_remove_thumbnail_image', 'sdm_remove_thumbnail_image_ajax_call')
|
| 590 |
|
| 591 |
function sdm_remove_thumbnail_image_ajax_call() {
|
| 592 |
-
if(!current_user_can('edit_posts')){
|
| 593 |
//Permission denied
|
| 594 |
wp_die(__('Permission denied!', 'simple-download-monitor'));
|
| 595 |
exit;
|
| 596 |
-
}
|
| 597 |
|
| 598 |
//Go ahead with the thumbnail removal
|
| 599 |
$post_id = $_POST['post_id_del'];
|
| 1 |
<?php
|
| 2 |
/**
|
| 3 |
+
* Plugin Name: Simple Download Monitor
|
| 4 |
+
* Plugin URI: https://www.tipsandtricks-hq.com/simple-wordpress-download-monitor-plugin
|
| 5 |
+
* Description: Easily manage downloadable files and monitor downloads of your digital files from your WordPress site.
|
| 6 |
+
* Version: 3.4.3
|
| 7 |
+
* Author: Tips and Tricks HQ, Ruhul Amin, Josh Lobe
|
| 8 |
+
* Author URI: https://www.tipsandtricks-hq.com/development-center
|
| 9 |
+
* License: GPL2
|
| 10 |
+
*/
|
| 11 |
|
| 12 |
if (!defined('ABSPATH')) {
|
| 13 |
exit;
|
| 14 |
}
|
| 15 |
|
| 16 |
+
define('WP_SIMPLE_DL_MONITOR_VERSION', '3.4.3');
|
| 17 |
define('WP_SIMPLE_DL_MONITOR_DIR_NAME', dirname(plugin_basename(__FILE__)));
|
| 18 |
define('WP_SIMPLE_DL_MONITOR_URL', plugins_url('', __FILE__));
|
| 19 |
define('WP_SIMPLE_DL_MONITOR_PATH', plugin_dir_path(__FILE__));
|
| 28 |
include_once('includes/sdm-download-request-handler.php');
|
| 29 |
include_once('includes/sdm-logs-list-table.php');
|
| 30 |
include_once('includes/sdm-latest-downloads.php');
|
| 31 |
+
include_once('includes/sdm-search-shortcode-handler.php');
|
| 32 |
include_once('sdm-post-type-and-taxonomy.php');
|
| 33 |
include_once('sdm-shortcodes.php');
|
| 34 |
include_once('sdm-post-type-content-handler.php');
|
| 83 |
* * Handle Generic Init tasks
|
| 84 |
*/
|
| 85 |
add_action('init', 'sdm_init_time_tasks');
|
| 86 |
+
|
| 87 |
function sdm_init_time_tasks() {
|
| 88 |
//Handle download request if any
|
| 89 |
handle_sdm_download_via_direct_post();
|
| 92 |
/*
|
| 93 |
* DB upgrade check
|
| 94 |
*/
|
| 95 |
+
|
| 96 |
function sdm_db_update_check() {
|
| 97 |
if (is_admin()) {//Check if DB needs to be upgraded
|
| 98 |
global $sdm_db_version;
|
| 214 |
}
|
| 215 |
|
| 216 |
public function sdm_create_upload_metabox() {
|
| 217 |
+
|
| 218 |
//***** Create metaboxes for the custom post type
|
| 219 |
add_meta_box('sdm_description_meta_box', __('Description', 'simple-download-monitor'), array($this, 'display_sdm_description_meta_box'), 'sdm_downloads', 'normal', 'default');
|
| 220 |
add_meta_box('sdm_upload_meta_box', __('Upload File', 'simple-download-monitor'), array($this, 'display_sdm_upload_meta_box'), 'sdm_downloads', 'normal', 'default');
|
| 223 |
add_meta_box('sdm_stats_meta_box', __('Statistics', 'simple-download-monitor'), array($this, 'display_sdm_stats_meta_box'), 'sdm_downloads', 'normal', 'default');
|
| 224 |
add_meta_box('sdm_other_details_meta_box', __('Other Details (Optional)', 'simple-download-monitor'), array($this, 'display_sdm_other_details_meta_box'), 'sdm_downloads', 'normal', 'default');
|
| 225 |
add_meta_box('sdm_shortcode_meta_box', __('Shortcodes', 'simple-download-monitor'), array($this, 'display_sdm_shortcode_meta_box'), 'sdm_downloads', 'normal', 'default');
|
|
|
|
| 226 |
}
|
| 227 |
|
| 228 |
public function display_sdm_description_meta_box($post) { // Description metabox
|
| 239 |
public function display_sdm_upload_meta_box($post) { // File Upload metabox
|
| 240 |
$old_upload = get_post_meta($post->ID, 'sdm_upload', true);
|
| 241 |
$old_value = isset($old_upload) ? $old_upload : '';
|
| 242 |
+
|
| 243 |
_e('Manually enter a valid URL of the file in the text box below, or click "Select File" button to upload (or choose) the downloadable file.', 'simple-download-monitor');
|
| 244 |
echo '<br /><br />';
|
| 245 |
+
|
| 246 |
+
echo '<div class="sdm-download-edit-file-url-section">';
|
| 247 |
+
echo '<input id="sdm_upload" type="text" size="100" name="sdm_upload" value="' . $old_value . '" placeholder="http://..." />';
|
| 248 |
echo '</div>';
|
| 249 |
+
|
| 250 |
echo '<br />';
|
| 251 |
+
echo '<input id="upload_image_button" type="button" class="button-primary" value="' . __('Select File', 'simple-download-monitor') . '" />';
|
| 252 |
+
|
| 253 |
echo '<br /><br />';
|
| 254 |
_e('Steps to upload a file or choose one from your media library:', 'simple-download-monitor');
|
| 255 |
echo '<ol>';
|
| 264 |
public function display_sdm_dispatch_meta_box($post) {
|
| 265 |
$dispatch = get_post_meta($post->ID, 'sdm_item_dispatch', true);
|
| 266 |
|
| 267 |
+
if ($dispatch === '') {
|
| 268 |
// No value yet (either new item or saved with older version of plugin)
|
| 269 |
$screen = get_current_screen();
|
| 270 |
|
| 271 |
+
if ($screen->action === 'add') {
|
| 272 |
// New item: set default value as per plugin settings.
|
| 273 |
$main_opts = get_option('sdm_downloads_options');
|
| 274 |
$dispatch = isset($main_opts['general_default_dispatch_value']) && $main_opts['general_default_dispatch_value'];
|
| 285 |
$old_thumbnail = get_post_meta($post->ID, 'sdm_upload_thumbnail', true);
|
| 286 |
$old_value = isset($old_thumbnail) ? $old_thumbnail : '';
|
| 287 |
_e('Manually enter a valid URL, or click "Select Image" to upload (or choose) the file thumbnail image.', 'simple-download-monitor');
|
|
|
|
| 288 |
?>
|
| 289 |
<br /><br />
|
| 290 |
<input id="sdm_upload_thumbnail" type="text" size="100" name="sdm_upload_thumbnail" value="<?php echo $old_value; ?>" placeholder="http://..." />
|
| 301 |
}
|
| 302 |
?>
|
| 303 |
</span>
|
| 304 |
+
|
| 305 |
<?php
|
| 306 |
echo '<p class="description">';
|
| 307 |
_e('This thumbnail image will be used to create a fancy file download box if you want to use it.', 'simple-download-monitor');
|
| 308 |
echo '</p>';
|
| 309 |
+
|
| 310 |
wp_nonce_field('sdm_thumbnail_box_nonce', 'sdm_thumbnail_box_nonce_check');
|
| 311 |
}
|
| 312 |
|
| 323 |
|
| 324 |
global $wpdb;
|
| 325 |
$wpdb->get_results($wpdb->prepare('SELECT * FROM ' . $wpdb->prefix . 'sdm_downloads WHERE post_id=%s', $post->ID));
|
| 326 |
+
|
| 327 |
echo '<div class="sdm-download-edit-dl-count">';
|
| 328 |
_e('Number of Downloads:', 'simple-download-monitor');
|
| 329 |
echo ' <strong>' . $wpdb->num_rows . '</strong>';
|
| 330 |
echo '</div>';
|
| 331 |
+
|
| 332 |
echo '<div class="sdm-download-edit-offset-count">';
|
| 333 |
_e('Offset Count: ', 'simple-download-monitor');
|
| 334 |
echo '<br />';
|
| 335 |
echo ' <input type="text" size="10" name="sdm_count_offset" value="' . $value . '" />';
|
| 336 |
+
echo '<p class="description">' . __('Enter any positive or negative numerical value; to offset the download count shown to the visitors (when using the download counter shortcode).', 'simple-download-monitor') . '</p>';
|
| 337 |
echo '</div>';
|
| 338 |
+
|
| 339 |
echo '<br />';
|
| 340 |
echo '<div class="sdm-download-edit-disable-logging">';
|
| 341 |
echo '<input type="checkbox" name="sdm_item_no_log" ' . $checked . ' />';
|
| 345 |
|
| 346 |
wp_nonce_field('sdm_count_offset_nonce', 'sdm_count_offset_nonce_check');
|
| 347 |
}
|
| 348 |
+
|
| 349 |
+
public function display_sdm_other_details_meta_box($post) { //Other details metabox
|
| 350 |
$file_size = get_post_meta($post->ID, 'sdm_item_file_size', true);
|
| 351 |
$file_size = isset($file_size) ? $file_size : '';
|
| 352 |
+
|
| 353 |
$version = get_post_meta($post->ID, 'sdm_item_version', true);
|
| 354 |
$version = isset($version) ? $version : '';
|
| 355 |
+
|
| 356 |
echo '<div class="sdm-download-edit-filesize">';
|
| 357 |
_e('File Size: ', 'simple-download-monitor');
|
| 358 |
echo '<br />';
|
| 359 |
echo ' <input type="text" name="sdm_item_file_size" value="' . $file_size . '" size="20" />';
|
| 360 |
+
echo '<p class="description">' . __('Enter the size of this file (example value: 2.15 MB). You can show this value in the fancy display by using a shortcode parameter.', 'simple-download-monitor') . '</p>';
|
| 361 |
echo '</div>';
|
| 362 |
+
|
| 363 |
echo '<div class="sdm-download-edit-version">';
|
| 364 |
_e('Version: ', 'simple-download-monitor');
|
| 365 |
echo '<br />';
|
| 366 |
echo ' <input type="text" name="sdm_item_version" value="' . $version . '" size="20" />';
|
| 367 |
+
echo '<p class="description">' . __('Enter the version number for this item if any (example value: v2.5.10). You can show this value in the fancy display by using a shortcode parameter.', 'simple-download-monitor') . '</p>';
|
| 368 |
echo '</div>';
|
| 369 |
+
|
| 370 |
wp_nonce_field('sdm_other_details_nonce', 'sdm_other_details_nonce_check');
|
|
|
|
| 371 |
}
|
| 372 |
+
|
| 373 |
public function display_sdm_shortcode_meta_box($post) { //Shortcode metabox
|
| 374 |
_e('The following shortcode can be used on posts or pages to embed a download now button for this file. You can also use the shortcode inserter (in the post editor) to add this shortcode to a post or page.', 'simple-download-monitor');
|
| 375 |
echo '<br />';
|
| 379 |
_e('The following shortcode can be used to show a download counter for this item.', 'simple-download-monitor');
|
| 380 |
echo '<br />';
|
| 381 |
echo '[sdm_download_counter id="' . $post->ID . '"]';
|
| 382 |
+
|
| 383 |
echo '<br /><br />';
|
| 384 |
echo 'Read the full shortcode usage documentation <a href="https://www.tipsandtricks-hq.com/simple-wordpress-download-monitor-plugin" target="_blank">here</a>.';
|
| 385 |
+
}
|
| 386 |
|
| 387 |
public function sdm_save_description_meta_data($post_id) { // Save Description metabox
|
| 388 |
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
|
| 410 |
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
|
| 411 |
return;
|
| 412 |
}
|
| 413 |
+
if (!isset($_POST['sdm_dispatch_box_nonce_check']) || !wp_verify_nonce($_POST['sdm_dispatch_box_nonce_check'], 'sdm_dispatch_box_nonce')) {
|
| 414 |
return;
|
| 415 |
}
|
| 416 |
// Get POST-ed data as boolean value
|
| 447 |
delete_post_meta($post_id, 'sdm_item_no_log');
|
| 448 |
}
|
| 449 |
}
|
| 450 |
+
|
| 451 |
public function sdm_save_other_details_meta_data($post_id) { // Save Statistics Upload metabox
|
| 452 |
+
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
|
| 453 |
return;
|
| 454 |
}
|
| 455 |
+
if (!isset($_POST['sdm_other_details_nonce_check']) || !wp_verify_nonce($_POST['sdm_other_details_nonce_check'], 'sdm_other_details_nonce')) {
|
| 456 |
return;
|
| 457 |
}
|
| 458 |
|
| 459 |
if (isset($_POST['sdm_item_file_size'])) {
|
| 460 |
update_post_meta($post_id, 'sdm_item_file_size', $_POST['sdm_item_file_size']);
|
| 461 |
}
|
| 462 |
+
|
| 463 |
+
if (isset($_POST['sdm_item_version'])) {
|
| 464 |
update_post_meta($post_id, 'sdm_item_version', $_POST['sdm_item_version']);
|
| 465 |
}
|
| 466 |
+
}
|
|
|
|
| 467 |
|
| 468 |
public function sdm_remove_view_link_cpt($action, $post) {
|
| 469 |
|
| 479 |
|
| 480 |
//Register the main setting
|
| 481 |
register_setting('sdm_downloads_options', 'sdm_downloads_options');
|
| 482 |
+
|
| 483 |
//Add all the settings section that will go under the main settings
|
| 484 |
add_settings_section('general_options', __('General Options', 'simple-download-monitor'), array($this, 'general_options_cb'), 'general_options_section');
|
| 485 |
add_settings_section('admin_options', __('Admin Options', 'simple-download-monitor'), array($this, 'admin_options_cb'), 'admin_options_section');
|
| 488 |
//Add all the individual settings fields that goes under the sections
|
| 489 |
add_settings_field('general_hide_donwload_count', __('Hide Download Count', 'simple-download-monitor'), array($this, 'hide_download_count_cb'), 'general_options_section', 'general_options');
|
| 490 |
add_settings_field('general_default_dispatch_value', __('PHP Dispatching', 'simple-download-monitor'), array($this, 'general_default_dispatch_value_cb'), 'general_options_section', 'general_options');
|
| 491 |
+
add_settings_field('only_logged_in_can_download', __('Only Allow Logged-in Users to Download', 'simple-download-monitor'), array($this, 'general_only_logged_in_can_download_cb'), 'general_options_section', 'general_options');
|
| 492 |
+
|
| 493 |
add_settings_field('admin_tinymce_button', __('Remove Tinymce Button', 'simple-download-monitor'), array($this, 'admin_tinymce_button_cb'), 'admin_options_section', 'admin_options');
|
| 494 |
add_settings_field('admin_log_unique', __('Log Unique IP', 'simple-download-monitor'), array($this, 'admin_log_unique'), 'admin_options_section', 'admin_options');
|
| 495 |
add_settings_field('admin_no_logs', __('Disable Download Logs', 'simple-download-monitor'), array($this, 'admin_no_logs_cb'), 'admin_options_section', 'admin_options');
|
| 496 |
+
|
| 497 |
add_settings_field('download_button_color', __('Download Button Color', 'simple-download-monitor'), array($this, 'download_button_color_cb'), 'sdm_colors_section', 'sdm_colors');
|
| 498 |
}
|
| 499 |
|
| 500 |
public function general_options_cb() {
|
| 501 |
//Set the message that will be shown below the general options settings heading
|
| 502 |
+
_e('General options settings', 'simple-download-monitor');
|
| 503 |
}
|
| 504 |
+
|
| 505 |
public function admin_options_cb() {
|
| 506 |
//Set the message that will be shown below the admin options settings heading
|
| 507 |
_e('Admin options settings', 'simple-download-monitor');
|
| 524 |
echo '<input name="sdm_downloads_options[general_default_dispatch_value]" id="general_default_dispatch_value" type="checkbox" value="1"' . checked(true, $value, false) . ' />';
|
| 525 |
echo '<label for="general_default_dispatch_value">' . __('When you create a new download item, The PHP Dispatching option should be enabled by default. PHP Dispatching keeps the URL of the downloadable files hidden.', 'simple-download-monitor') . '</label>';
|
| 526 |
}
|
| 527 |
+
|
| 528 |
+
public function general_only_logged_in_can_download_cb() {
|
| 529 |
+
$main_opts = get_option('sdm_downloads_options');
|
| 530 |
+
$value = isset($main_opts['only_logged_in_can_download']) && $main_opts['only_logged_in_can_download'];
|
| 531 |
+
echo '<input name="sdm_downloads_options[only_logged_in_can_download]" id="only_logged_in_can_download" type="checkbox" value="1"' . checked(true, $value, false) . ' />';
|
| 532 |
+
echo '<label for="only_logged_in_can_download">' . __('Enable this option if you want to allow downloads only for logged-in users. When enabled, anonymous users clicking on the download button will receive an error message.', 'simple-download-monitor') . '</label>';
|
| 533 |
+
}
|
| 534 |
+
|
| 535 |
public function admin_tinymce_button_cb() {
|
| 536 |
$main_opts = get_option('sdm_downloads_options');
|
| 537 |
echo '<input name="sdm_downloads_options[admin_tinymce_button]" id="admin_tinymce_button" type="checkbox" class="sdm_opts_ajax_checkboxes" ' . checked(1, isset($main_opts['admin_tinymce_button']), false) . ' /> ';
|
| 564 |
esc_html_e('Adjusts the color of the "Download Now" button.', 'simple-download-monitor');
|
| 565 |
}
|
| 566 |
|
| 567 |
+
}
|
| 568 |
|
| 569 |
+
//End of simpleDownloadManager class
|
| 570 |
//Initialize the simpleDownloadManager class
|
| 571 |
$simpleDownloadManager = new simpleDownloadManager();
|
| 572 |
|
| 594 |
|
| 595 |
//Remove Thumbnail Image
|
| 596 |
//add_action('wp_ajax_nopriv_sdm_remove_thumbnail_image', '');//This is only available to logged-in users
|
| 597 |
+
add_action('wp_ajax_sdm_remove_thumbnail_image', 'sdm_remove_thumbnail_image_ajax_call'); //Execute this for authenticated users only
|
| 598 |
|
| 599 |
function sdm_remove_thumbnail_image_ajax_call() {
|
| 600 |
+
if (!current_user_can('edit_posts')) {
|
| 601 |
//Permission denied
|
| 602 |
wp_die(__('Permission denied!', 'simple-download-monitor'));
|
| 603 |
exit;
|
| 604 |
+
}
|
| 605 |
|
| 606 |
//Go ahead with the thumbnail removal
|
| 607 |
$post_id = $_POST['post_id_del'];
|
readme.txt
CHANGED
|
@@ -3,8 +3,8 @@ Contributors: Tips and Tricks HQ, Ruhul Amin, josh401, mbrsolution, chesio
|
|
| 3 |
Donate link: https://www.tipsandtricks-hq.com
|
| 4 |
Tags: download, downloads, count, counter, tracker, tracking, hits, logging, monitor, manager, files, media, digital, download monitor, download manager, downloadmanager, file manager, protect downloads, password, download category, file tree, ajax, download template, grid, documents, ip address
|
| 5 |
Requires at least: 4.1.0
|
| 6 |
-
Tested up to: 4.
|
| 7 |
-
Stable tag: 3.4.
|
| 8 |
License: GPLv2 or later
|
| 9 |
|
| 10 |
Easily manage downloadable files and monitor downloads of your digital files from your WordPress site.
|
|
@@ -64,6 +64,7 @@ https://www.youtube.com/watch?v=L-mXbs7kp0s
|
|
| 64 |
* You can also choose to only monitor downloads from unique IP address only.
|
| 65 |
* Option to specify file size info so it can be shown to your visitors.
|
| 66 |
* Option to specify version number info for the download item so it can be shown to your visitors.
|
|
|
|
| 67 |
|
| 68 |
View more details on the [download monitor plugin](https://www.tipsandtricks-hq.com/simple-wordpress-download-monitor-plugin) page.
|
| 69 |
|
|
@@ -170,6 +171,17 @@ For screenshots please visit the [download monitor plugin page](https://www.tips
|
|
| 170 |
|
| 171 |
== Changelog ==
|
| 172 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 173 |
= 3.4.0 =
|
| 174 |
- Added a new hook to allow plugin extensions to hook into download request handling.
|
| 175 |
- Added empty index file to the plugin folder.
|
| 3 |
Donate link: https://www.tipsandtricks-hq.com
|
| 4 |
Tags: download, downloads, count, counter, tracker, tracking, hits, logging, monitor, manager, files, media, digital, download monitor, download manager, downloadmanager, file manager, protect downloads, password, download category, file tree, ajax, download template, grid, documents, ip address
|
| 5 |
Requires at least: 4.1.0
|
| 6 |
+
Tested up to: 4.8
|
| 7 |
+
Stable tag: 3.4.2
|
| 8 |
License: GPLv2 or later
|
| 9 |
|
| 10 |
Easily manage downloadable files and monitor downloads of your digital files from your WordPress site.
|
| 64 |
* You can also choose to only monitor downloads from unique IP address only.
|
| 65 |
* Option to specify file size info so it can be shown to your visitors.
|
| 66 |
* Option to specify version number info for the download item so it can be shown to your visitors.
|
| 67 |
+
* Option to restrict downloads to logged-in users only.
|
| 68 |
|
| 69 |
View more details on the [download monitor plugin](https://www.tipsandtricks-hq.com/simple-wordpress-download-monitor-plugin) page.
|
| 70 |
|
| 171 |
|
| 172 |
== Changelog ==
|
| 173 |
|
| 174 |
+
= 3.4.3 =
|
| 175 |
+
- The [sdm_search_form] can take the fancy template as a shortcode argument to display the search result using that template.
|
| 176 |
+
|
| 177 |
+
= 3.4.2 =
|
| 178 |
+
- Added a new option "Only Allow Logged-in Users to Download".
|
| 179 |
+
- Added [sdm_search_form] shortcode to display a search form for searching SDM downloads only.
|
| 180 |
+
|
| 181 |
+
= 3.4.1 =
|
| 182 |
+
- The password protected download button will use the "button_text" specified in the shortcode (if any).
|
| 183 |
+
- The download now log will track WP eMember plugin username if the user is logged in as a member.
|
| 184 |
+
|
| 185 |
= 3.4.0 =
|
| 186 |
- Added a new hook to allow plugin extensions to hook into download request handling.
|
| 187 |
- Added empty index file to the plugin folder.
|
sdm-post-type-content-handler.php
CHANGED
|
@@ -51,6 +51,14 @@ function filter_sdm_post_type_content($content) {
|
|
| 51 |
$download_button_code = sdm_get_password_entry_form($id);
|
| 52 |
}
|
| 53 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 54 |
$db_count = sdm_get_download_count_for_post($id);
|
| 55 |
$string = ($db_count == '1') ? __('Download', 'simple-download-monitor') : __('Downloads', 'simple-download-monitor');
|
| 56 |
$download_count_string = '<span class="sdm_post_count_number">' . $db_count . '</span><span class="sdm_post_count_string"> ' . $string . '</span>';
|
|
@@ -101,4 +109,4 @@ function filter_sdm_post_type_content($content) {
|
|
| 101 |
}
|
| 102 |
|
| 103 |
return $content;
|
| 104 |
-
}
|
| 51 |
$download_button_code = sdm_get_password_entry_form($id);
|
| 52 |
}
|
| 53 |
|
| 54 |
+
// Check if we only allow the download for logged-in users
|
| 55 |
+
// if (isset($main_opts['only_logged_in_can_download'])) {
|
| 56 |
+
// if ($main_opts['only_logged_in_can_download'] && sdm_get_logged_in_user()===false) {
|
| 57 |
+
// // User not logged in, let's display the message
|
| 58 |
+
// $download_button_code = __('You need to be logged in to download this file.','simple-download-monitor');
|
| 59 |
+
// }
|
| 60 |
+
// }
|
| 61 |
+
|
| 62 |
$db_count = sdm_get_download_count_for_post($id);
|
| 63 |
$string = ($db_count == '1') ? __('Download', 'simple-download-monitor') : __('Downloads', 'simple-download-monitor');
|
| 64 |
$download_count_string = '<span class="sdm_post_count_number">' . $db_count . '</span><span class="sdm_post_count_string"> ' . $string . '</span>';
|
| 109 |
}
|
| 110 |
|
| 111 |
return $content;
|
| 112 |
+
}
|
sdm-shortcodes.php
CHANGED
|
@@ -13,16 +13,16 @@ function sdm_register_shortcodes() {
|
|
| 13 |
add_shortcode('sdm-download-counter', 'sdm_create_counter_shortcode'); // For counter shortcode (for backwards compatibility)
|
| 14 |
add_shortcode('sdm_latest_downloads', 'sdm_show_latest_downloads'); // For showing X number of latest downloads
|
| 15 |
add_shortcode('sdm-latest-downloads', 'sdm_show_latest_downloads'); // For showing X number of latest downloads(for backwards compatibility)
|
| 16 |
-
|
| 17 |
add_shortcode('sdm_download_link', 'sdm_create_simple_download_link');
|
| 18 |
-
|
| 19 |
add_shortcode('sdm_show_dl_from_category', 'sdm_handle_category_shortcode'); //For category shortcode
|
| 20 |
add_shortcode('sdm_download_categories', 'sdm_download_categories_shortcode'); // Ajax file tree browser
|
| 21 |
-
|
| 22 |
add_shortcode('sdm_download_categories_list', 'sdm_download_categories_list_shortcode');
|
|
|
|
| 23 |
}
|
| 24 |
|
| 25 |
-
|
| 26 |
/**
|
| 27 |
* Process (sanitize) download button shortcode attributes:
|
| 28 |
* - convert "id" to absolute integer
|
|
@@ -38,12 +38,10 @@ function sanitize_sdm_create_download_shortcode_atts($atts) {
|
|
| 38 |
// See if user color option is selected
|
| 39 |
$main_opts = get_option('sdm_downloads_options');
|
| 40 |
|
| 41 |
-
if (
|
| 42 |
// No color provided by shortcode, read color from plugin settings.
|
| 43 |
-
$atts['color']
|
| 44 |
-
|
| 45 |
-
? strtolower($main_opts['download_button_color']) // default values needs to be lowercased
|
| 46 |
-
: 'green'
|
| 47 |
;
|
| 48 |
}
|
| 49 |
|
|
@@ -53,18 +51,17 @@ function sanitize_sdm_create_download_shortcode_atts($atts) {
|
|
| 53 |
return $atts;
|
| 54 |
}
|
| 55 |
|
| 56 |
-
|
| 57 |
// Create Download Shortcode
|
| 58 |
function sdm_create_download_shortcode($atts) {
|
| 59 |
|
| 60 |
$shortcode_atts = sanitize_sdm_create_download_shortcode_atts(
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
);
|
| 69 |
|
| 70 |
// Make shortcode attributes available in function local scope.
|
|
@@ -88,12 +85,12 @@ function sdm_create_download_shortcode($atts) {
|
|
| 88 |
$download_button_code = '<a href="' . $download_url . '" class="sdm_download ' . $color . '" title="' . $item_title . '" target="' . $window_target . '">' . $button_text . '</a>';
|
| 89 |
|
| 90 |
if ($cpt_is_password !== 'no') {//This is a password protected download so replace the download now button with password requirement
|
| 91 |
-
$download_button_code = sdm_get_password_entry_form($id);
|
| 92 |
}
|
| 93 |
//End of download now button code generation
|
| 94 |
|
| 95 |
$output = '';
|
| 96 |
-
switch (
|
| 97 |
case '1':
|
| 98 |
include_once('includes/templates/fancy1/sdm-fancy-1.php');
|
| 99 |
$output .= sdm_generate_fancy1_display_output($shortcode_atts);
|
|
@@ -112,15 +109,15 @@ function sdm_create_download_shortcode($atts) {
|
|
| 112 |
return apply_filters('sdm_download_shortcode_output', $output, $atts);
|
| 113 |
}
|
| 114 |
|
| 115 |
-
function sdm_create_simple_download_link($atts){
|
| 116 |
extract(shortcode_atts(array(
|
| 117 |
'id' => '',
|
| 118 |
-
|
| 119 |
|
| 120 |
if (empty($id)) {
|
| 121 |
return '<p style="color: red;">' . __('Error! Please enter an ID value with this shortcode.', 'simple-download-monitor') . '</p>';
|
| 122 |
}
|
| 123 |
-
|
| 124 |
return WP_SIMPLE_DL_MONITOR_SITE_HOME_URL . '/?smd_process_download=1&download_id=' . $id;
|
| 125 |
}
|
| 126 |
|
|
@@ -155,9 +152,9 @@ function sdm_handle_category_shortcode($args) {
|
|
| 155 |
'button_text' => __('Download Now!', 'simple-download-monitor'),
|
| 156 |
'new_window' => '',
|
| 157 |
'orderby' => 'post_date',
|
| 158 |
-
|
| 159 |
'pagination' => '',
|
| 160 |
-
|
| 161 |
|
| 162 |
// Define vars
|
| 163 |
$field = '';
|
|
@@ -187,17 +184,17 @@ function sdm_handle_category_shortcode($args) {
|
|
| 187 |
}
|
| 188 |
|
| 189 |
// For pagination
|
| 190 |
-
$paged = ( get_query_var(
|
| 191 |
-
if(isset($args['pagination'])){
|
| 192 |
-
if(!is_numeric($args['pagination'])){
|
| 193 |
return '<p style="color: red;">' . __('Error! You must enter a numeric number for the "pagination" parameter of the shortcode. Refer to the usage documentation.', 'simple-download-monitor') . '</p>';
|
| 194 |
}
|
| 195 |
$posts_per_page = $args['pagination'];
|
| 196 |
} else {
|
| 197 |
$posts_per_page = 9999;
|
| 198 |
}
|
| 199 |
-
|
| 200 |
-
|
| 201 |
// Query cpt's based on arguments above
|
| 202 |
$get_posts = get_posts(array(
|
| 203 |
'post_type' => 'sdm_downloads',
|
|
@@ -211,7 +208,7 @@ function sdm_handle_category_shortcode($args) {
|
|
| 211 |
)
|
| 212 |
),
|
| 213 |
'orderby' => $orderby,
|
| 214 |
-
|
| 215 |
'paged' => $paged,
|
| 216 |
));
|
| 217 |
|
|
@@ -263,25 +260,25 @@ function sdm_handle_category_shortcode($args) {
|
|
| 263 |
}
|
| 264 |
|
| 265 |
// Pagination related
|
| 266 |
-
if(isset($args['pagination'])){
|
| 267 |
$posts_per_page = $args['pagination'];
|
| 268 |
$count_sdm_posts = wp_count_posts('sdm_downloads');
|
| 269 |
-
$published_sdm_posts = $count_sdm_posts->publish;
|
| 270 |
$total_pages = ceil($published_sdm_posts / $posts_per_page);
|
| 271 |
-
|
| 272 |
$big = 999999999; // Need an unlikely integer
|
| 273 |
-
$pagination = paginate_links(
|
| 274 |
-
|
| 275 |
-
|
| 276 |
-
|
| 277 |
-
|
| 278 |
-
|
| 279 |
-
|
| 280 |
-
|
| 281 |
-
|
| 282 |
-
$output .= '<div class="sdm_pagination">'
|
| 283 |
}
|
| 284 |
-
|
| 285 |
// Return results
|
| 286 |
return apply_filters('sdm_category_download_items_shortcode_output', $output, $args, $get_posts);
|
| 287 |
} // End else iterate cpt's
|
|
@@ -315,7 +312,6 @@ function sdm_download_categories_shortcode() {
|
|
| 315 |
return '<div class="sdm_object_tree">' . custom_taxonomy_walker('sdm_categories') . '</div>';
|
| 316 |
}
|
| 317 |
|
| 318 |
-
|
| 319 |
/**
|
| 320 |
* Return HTML list with SDM categories rendered according to $atts.
|
| 321 |
* @param array $atts
|
|
@@ -337,17 +333,19 @@ function sdm_download_categories_list_walker($atts, $parent = 0) {
|
|
| 337 |
));
|
| 338 |
|
| 339 |
// Return empty string, if no terms found.
|
| 340 |
-
if (
|
|
|
|
|
|
|
| 341 |
|
| 342 |
// Produce list of download categories under $parent.
|
| 343 |
$out = '<' . $list_tag . '>';
|
| 344 |
|
| 345 |
-
foreach (
|
| 346 |
$out .= '<li>'
|
| 347 |
. '<a href="' . get_term_link($term) . '">' . $term->name . '</a>' // link
|
| 348 |
. ( $count ? (' <span>(' . $term->count . ')</span>') : '') // count
|
| 349 |
. ( $hierarchical ? sdm_download_categories_list_walker($atts, $term->term_id) : '' ) // subcategories
|
| 350 |
-
|
| 351 |
;
|
| 352 |
}
|
| 353 |
|
|
@@ -356,7 +354,6 @@ function sdm_download_categories_list_walker($atts, $parent = 0) {
|
|
| 356 |
return $out;
|
| 357 |
}
|
| 358 |
|
| 359 |
-
|
| 360 |
/**
|
| 361 |
* Return output of `sdm_download_categories_list` shortcode.
|
| 362 |
* @param array $attributes
|
|
@@ -365,18 +362,18 @@ function sdm_download_categories_list_walker($atts, $parent = 0) {
|
|
| 365 |
function sdm_download_categories_list_shortcode($attributes) {
|
| 366 |
|
| 367 |
$atts = shortcode_atts(
|
| 368 |
-
|
| 369 |
-
|
| 370 |
-
|
| 371 |
-
|
| 372 |
-
|
| 373 |
-
|
| 374 |
-
|
| 375 |
);
|
| 376 |
|
| 377 |
return
|
| 378 |
-
|
| 379 |
-
|
| 380 |
-
|
| 381 |
;
|
| 382 |
}
|
| 13 |
add_shortcode('sdm-download-counter', 'sdm_create_counter_shortcode'); // For counter shortcode (for backwards compatibility)
|
| 14 |
add_shortcode('sdm_latest_downloads', 'sdm_show_latest_downloads'); // For showing X number of latest downloads
|
| 15 |
add_shortcode('sdm-latest-downloads', 'sdm_show_latest_downloads'); // For showing X number of latest downloads(for backwards compatibility)
|
| 16 |
+
|
| 17 |
add_shortcode('sdm_download_link', 'sdm_create_simple_download_link');
|
| 18 |
+
|
| 19 |
add_shortcode('sdm_show_dl_from_category', 'sdm_handle_category_shortcode'); //For category shortcode
|
| 20 |
add_shortcode('sdm_download_categories', 'sdm_download_categories_shortcode'); // Ajax file tree browser
|
| 21 |
+
|
| 22 |
add_shortcode('sdm_download_categories_list', 'sdm_download_categories_list_shortcode');
|
| 23 |
+
add_shortcode('sdm_search_form', 'sdm_search_form_shortcode');
|
| 24 |
}
|
| 25 |
|
|
|
|
| 26 |
/**
|
| 27 |
* Process (sanitize) download button shortcode attributes:
|
| 28 |
* - convert "id" to absolute integer
|
| 38 |
// See if user color option is selected
|
| 39 |
$main_opts = get_option('sdm_downloads_options');
|
| 40 |
|
| 41 |
+
if (empty($atts['color'])) {
|
| 42 |
// No color provided by shortcode, read color from plugin settings.
|
| 43 |
+
$atts['color'] = isset($main_opts['download_button_color']) ? strtolower($main_opts['download_button_color']) // default values needs to be lowercased
|
| 44 |
+
: 'green'
|
|
|
|
|
|
|
| 45 |
;
|
| 46 |
}
|
| 47 |
|
| 51 |
return $atts;
|
| 52 |
}
|
| 53 |
|
|
|
|
| 54 |
// Create Download Shortcode
|
| 55 |
function sdm_create_download_shortcode($atts) {
|
| 56 |
|
| 57 |
$shortcode_atts = sanitize_sdm_create_download_shortcode_atts(
|
| 58 |
+
shortcode_atts(array(
|
| 59 |
+
'id' => '',
|
| 60 |
+
'fancy' => '0',
|
| 61 |
+
'button_text' => __('Download Now!', 'simple-download-monitor'),
|
| 62 |
+
'new_window' => '',
|
| 63 |
+
'color' => '',
|
| 64 |
+
), $atts)
|
| 65 |
);
|
| 66 |
|
| 67 |
// Make shortcode attributes available in function local scope.
|
| 85 |
$download_button_code = '<a href="' . $download_url . '" class="sdm_download ' . $color . '" title="' . $item_title . '" target="' . $window_target . '">' . $button_text . '</a>';
|
| 86 |
|
| 87 |
if ($cpt_is_password !== 'no') {//This is a password protected download so replace the download now button with password requirement
|
| 88 |
+
$download_button_code = sdm_get_password_entry_form($id, $atts);
|
| 89 |
}
|
| 90 |
//End of download now button code generation
|
| 91 |
|
| 92 |
$output = '';
|
| 93 |
+
switch ($fancy) {
|
| 94 |
case '1':
|
| 95 |
include_once('includes/templates/fancy1/sdm-fancy-1.php');
|
| 96 |
$output .= sdm_generate_fancy1_display_output($shortcode_atts);
|
| 109 |
return apply_filters('sdm_download_shortcode_output', $output, $atts);
|
| 110 |
}
|
| 111 |
|
| 112 |
+
function sdm_create_simple_download_link($atts) {
|
| 113 |
extract(shortcode_atts(array(
|
| 114 |
'id' => '',
|
| 115 |
+
), $atts));
|
| 116 |
|
| 117 |
if (empty($id)) {
|
| 118 |
return '<p style="color: red;">' . __('Error! Please enter an ID value with this shortcode.', 'simple-download-monitor') . '</p>';
|
| 119 |
}
|
| 120 |
+
|
| 121 |
return WP_SIMPLE_DL_MONITOR_SITE_HOME_URL . '/?smd_process_download=1&download_id=' . $id;
|
| 122 |
}
|
| 123 |
|
| 152 |
'button_text' => __('Download Now!', 'simple-download-monitor'),
|
| 153 |
'new_window' => '',
|
| 154 |
'orderby' => 'post_date',
|
| 155 |
+
'order' => 'DESC',
|
| 156 |
'pagination' => '',
|
| 157 |
+
), $args));
|
| 158 |
|
| 159 |
// Define vars
|
| 160 |
$field = '';
|
| 184 |
}
|
| 185 |
|
| 186 |
// For pagination
|
| 187 |
+
$paged = ( get_query_var('paged') ) ? absint(get_query_var('paged')) : 1;
|
| 188 |
+
if (isset($args['pagination'])) {
|
| 189 |
+
if (!is_numeric($args['pagination'])) {
|
| 190 |
return '<p style="color: red;">' . __('Error! You must enter a numeric number for the "pagination" parameter of the shortcode. Refer to the usage documentation.', 'simple-download-monitor') . '</p>';
|
| 191 |
}
|
| 192 |
$posts_per_page = $args['pagination'];
|
| 193 |
} else {
|
| 194 |
$posts_per_page = 9999;
|
| 195 |
}
|
| 196 |
+
|
| 197 |
+
|
| 198 |
// Query cpt's based on arguments above
|
| 199 |
$get_posts = get_posts(array(
|
| 200 |
'post_type' => 'sdm_downloads',
|
| 208 |
)
|
| 209 |
),
|
| 210 |
'orderby' => $orderby,
|
| 211 |
+
'order' => $order,
|
| 212 |
'paged' => $paged,
|
| 213 |
));
|
| 214 |
|
| 260 |
}
|
| 261 |
|
| 262 |
// Pagination related
|
| 263 |
+
if (isset($args['pagination'])) {
|
| 264 |
$posts_per_page = $args['pagination'];
|
| 265 |
$count_sdm_posts = wp_count_posts('sdm_downloads');
|
| 266 |
+
$published_sdm_posts = $count_sdm_posts->publish;
|
| 267 |
$total_pages = ceil($published_sdm_posts / $posts_per_page);
|
| 268 |
+
|
| 269 |
$big = 999999999; // Need an unlikely integer
|
| 270 |
+
$pagination = paginate_links(array(
|
| 271 |
+
'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))),
|
| 272 |
+
'format' => '',
|
| 273 |
+
'add_args' => '',
|
| 274 |
+
'current' => max(1, get_query_var('paged')),
|
| 275 |
+
'total' => $total_pages,
|
| 276 |
+
'prev_text' => '←',
|
| 277 |
+
'next_text' => '→',
|
| 278 |
+
));
|
| 279 |
+
$output .= '<div class="sdm_pagination">' . $pagination . '</div>';
|
| 280 |
}
|
| 281 |
+
|
| 282 |
// Return results
|
| 283 |
return apply_filters('sdm_category_download_items_shortcode_output', $output, $args, $get_posts);
|
| 284 |
} // End else iterate cpt's
|
| 312 |
return '<div class="sdm_object_tree">' . custom_taxonomy_walker('sdm_categories') . '</div>';
|
| 313 |
}
|
| 314 |
|
|
|
|
| 315 |
/**
|
| 316 |
* Return HTML list with SDM categories rendered according to $atts.
|
| 317 |
* @param array $atts
|
| 333 |
));
|
| 334 |
|
| 335 |
// Return empty string, if no terms found.
|
| 336 |
+
if (empty($terms)) {
|
| 337 |
+
return '';
|
| 338 |
+
}
|
| 339 |
|
| 340 |
// Produce list of download categories under $parent.
|
| 341 |
$out = '<' . $list_tag . '>';
|
| 342 |
|
| 343 |
+
foreach ($terms as $term) {
|
| 344 |
$out .= '<li>'
|
| 345 |
. '<a href="' . get_term_link($term) . '">' . $term->name . '</a>' // link
|
| 346 |
. ( $count ? (' <span>(' . $term->count . ')</span>') : '') // count
|
| 347 |
. ( $hierarchical ? sdm_download_categories_list_walker($atts, $term->term_id) : '' ) // subcategories
|
| 348 |
+
. '</li>'
|
| 349 |
;
|
| 350 |
}
|
| 351 |
|
| 354 |
return $out;
|
| 355 |
}
|
| 356 |
|
|
|
|
| 357 |
/**
|
| 358 |
* Return output of `sdm_download_categories_list` shortcode.
|
| 359 |
* @param array $attributes
|
| 362 |
function sdm_download_categories_list_shortcode($attributes) {
|
| 363 |
|
| 364 |
$atts = shortcode_atts(
|
| 365 |
+
array(
|
| 366 |
+
'class' => 'sdm-download-categories', // wrapper class
|
| 367 |
+
'empty' => '0', // show empty categories
|
| 368 |
+
'numbered' => '0', // use <ol> instead of <ul> to wrap the list
|
| 369 |
+
'count' => '0', // display count of items in every category
|
| 370 |
+
'hierarchical' => '1', // display subcategories as well
|
| 371 |
+
), $attributes
|
| 372 |
);
|
| 373 |
|
| 374 |
return
|
| 375 |
+
'<div class="' . esc_attr($atts['class']) . '">'
|
| 376 |
+
. sdm_download_categories_list_walker($atts)
|
| 377 |
+
. '</div>'
|
| 378 |
;
|
| 379 |
}
|
