AdminActions();
$this->FrontendActions();
}
function FrontendActions(){
if(is_admin()) return;
//add_action("init", array($this, 'playMedia'), 0);
add_action("init", array($this, 'triggerDownload'), 1);
add_filter('widget_text', 'do_shortcode');
add_action('query_vars', array( $this, 'dashboardPageVars' ));
add_action('init', array( $this, 'addWriteRules' ), 1, 0 );
add_action('init', array($this, 'login'));
add_action('init', array($this, 'register'));
add_action('wp', array($this, 'wpdmIframe'));
add_action('wp', array($this, 'updateProfile'));
add_action('init', array($this, 'Logout'));
add_action('request', array($this, 'rssFeed'));
add_filter( 'ajax_query_attachments_args', array($this, 'usersMediaQuery') );
//add_action( 'init', array($this, 'sfbAccess'));
add_action( 'wp_head', array($this, 'addGenerator'), 9999);
add_action( 'wp_head', array($this, 'googleFont'), 999999);
add_filter('pre_get_posts', array($this, 'queryTag'));
add_filter('the_excerpt_embed', array($this, 'oEmbed'));
add_filter("template_include", array($this, 'wpdmproTemplates'), 9999);
}
function AdminActions(){
if(!is_admin()) return;
add_action("wp_ajax_nopriv_updatePassword", array($this, 'updatePassword'));
add_action("wp_ajax_nopriv_resetPassword", array($this, 'resetPassword'));
//add_action( 'admin_init', array($this, 'sfbAccess'));
add_action('save_post', array( $this, 'dashboardPages' ));
add_action( 'wp_ajax_wpdm_clear_stats', array($this, 'clearStats'));
add_action( 'wp_ajax_clear_cache', array($this, 'clearCache'));
add_action( 'admin_head', array($this, 'uiColors'), 999999);
}
function SR_CheckPackageAccess($data, $id){
global $current_user;
$skiplocks = maybe_unserialize(get_option('__wpdm_skip_locks', array()));
if( is_user_logged_in() ){
foreach($skiplocks as $lock){
unset($data[$lock."_lock"]); // = 0;
}
}
return $data;
}
function AddWriteRules(){
global $wp_rewrite;
$udb_page_id = get_option('__wpdm_user_dashboard', 0);
if($udb_page_id) {
$page_name = get_post_field("post_name", $udb_page_id);
add_rewrite_rule('^' . $page_name . '/(.+)/?', 'index.php?page_id=' . $udb_page_id . '&udb_page=$matches[1]', 'top');
}
$adb_page_id = get_option('__wpdm_author_dashboard', 0);
if($adb_page_id) {
$page_name = get_post_field("post_name", $adb_page_id);
add_rewrite_rule('^' . $page_name . '/(.+)/?', 'index.php?page_id=' . $adb_page_id . '&adb_page=$matches[1]', 'top');
}
//$wp_rewrite->flush_rules();
//dd($wp_rewrite);
}
function wpdmproTemplates($template){
$_template = basename($template);
$style_global = 'basic';
$style = get_term_meta(get_queried_object_id(), '__wpdm_style', true);
$style = in_array($style, ['basic', 'ltpl']) ? $style : $style_global;
if($style === 'ltpl' && (is_tax('wpdmcategory') || is_post_type_archive('wpdmpro'))){
$template = Template::locate("taxonomy-wpdmcategory.php", WPDM_TPL_FALLBACK, WPDM_TPL_FALLBACK);
}
/*if($_template !== 'single-wpdmpro.php' && is_singular('wpdmpro')){
$template = Template::locate("single-wpdmpro.php", WPDM_TPL_FALLBACK, WPDM_TPL_FALLBACK);
}*/
return $template;
}
function dashboardPages($post_id){
if ( wp_is_post_revision( $post_id ) ) return;
$page_id = get_option('__wpdm_user_dashboard', 0);
$post = get_post($post_id);
$flush = 0;
if((int)$page_id > 0 && has_shortcode($post->post_content, "wpdm_user_dashboard")) {
update_option('__wpdm_user_dashboard', $post_id);
$flush = 1;
}
$page_id = get_option('__wpdm_author_dashboard', 0);
$post = get_post($post_id);
if((int)$page_id > 0 && has_shortcode($post->post_content, "wpdm_frontend")) {
update_option('__wpdm_author_dashboard', $post_id);
$flush = 1;
}
if($flush == 1) {
$this->AddWriteRules();
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
}
function dashboardPageVars( $vars ){
array_push($vars, 'udb_page', 'adb_page');
return $vars;
}
/**
* Login function
*/
function login()
{
global $wp_query, $post, $wpdb;
if (!isset($_POST['wpdm_login'])) return;
$shortcode_params = Crypt::decrypt(wpdm_query_var('__phash'), true);
$login_try = (int)Session::get('login_try');
$login_try++;
Session::set('login_try', $login_try);
if ($login_try > 30) wp_die("Slow Down!");
if(!isset($shortcode_params['captcha']) || $shortcode_params['captcha'] === true) {
$active_captcha = (int)get_option('__wpdm_recaptcha_loginform', 0) === 1 && get_option('_wpdm_recaptcha_secret_key', '') != '';
$active_captcha = apply_filters("signin_form_captcha", $active_captcha);
if ($active_captcha) {
$ret = wpdm_remote_post('https://www.google.com/recaptcha/api/siteverify', array('secret' => get_option('_wpdm_recaptcha_secret_key', ''), 'response' => wpdm_query_var('__recap')));
$ret = json_decode($ret);
if (!$ret->success) {
$login_error = __("Invalid CAPTCHA!", "download-manager");
if (wpdm_is_ajax()) {
wp_send_json(array('success' => false, 'message' => 'Error: ' . $login_error));
die();
}
Session::set('login_error', $login_error);
wp_safe_redirect(wpdm_query_var('permalink', 'url'));
die();
}
}
}
Session::clear('login_error');
$creds = array();
$creds['user_login'] = isset($_POST['wpdm_login']['log']) ? $_POST['wpdm_login']['log'] : '';
$creds['user_password'] = isset($_POST['wpdm_login']['pwd']) ? $_POST['wpdm_login']['pwd'] : '';
$creds['remember'] = isset($_POST['rememberme']) ? $_POST['rememberme'] : false;
$user = wp_signon($creds, false);
if (is_wp_error($user)) {
$login_error = $user->get_error_message();
if (wpdm_is_ajax())
wp_send_json(array('success' => false, 'message' => $login_error));
Session::set('login_error', $login_error);
wp_safe_redirect($_SERVER['HTTP_REFERER']);
die();
} else {
wp_set_auth_cookie($user->ID);
wp_set_current_user($user->ID);
Session::set('login_try', 0);
do_action('wp_login', $creds['user_login'], $user);
if (wpdm_is_ajax())
wp_send_json(array('success' => true, 'message' => __("Success! Redirecting...", "download-manager")));
wp_safe_redirect(wpdm_query_var('redirect_to', 'url'));
die();
}
}
/**
* @usage Logout an user
*/
function logout()
{
if (isset($_REQUEST['logout']) && wp_verify_nonce(wpdm_query_var('logout'), NONCE_KEY)) {
wp_logout();
wp_safe_redirect(wpdm_login_url());
die();
}
}
/**
* @usage Register an user
*/
function register()
{
global $wp_query, $wpdb;
if (!isset($_POST['wpdm_reg'])) return;
$shortcode_params = Crypt::decrypt(wpdm_query_var('__phash'), true);
if (!is_array($shortcode_params)) $shortcode_params = array();
$_verify_email = (int)get_option('__wpdm_signup_email_verify', 0);
if (!isset($_REQUEST['__reg_nonce']) || !wp_verify_nonce($_REQUEST['__reg_nonce'], NONCE_KEY)) {
$reg_error = apply_filters("wpdm_signup_error", __("Something is Wrong! Please refresh the page and try again", "download-manager"), $error_type = 'nonce');
if (wpdm_is_ajax()) {
wp_send_json(array('success' => false, 'message' => 'Error: ' . $reg_error));
die();
}
Session::set('wpdm_signup_error', $reg_error, 300);
wp_safe_redirect(wpdm_query_var('permalink', 'url'));
die();
}
if(!isset($shortcode_params['captcha']) || $shortcode_params['captcha'] === true) {
$active_captcha = (int)get_option('__wpdm_recaptcha_regform', 0) === 1 && get_option('_wpdm_recaptcha_secret_key', '') != '';
$active_captcha = apply_filters("signup_form_captcha", $active_captcha);
if ($active_captcha) {
$ret = wpdm_remote_post('https://www.google.com/recaptcha/api/siteverify', array('secret' => get_option('_wpdm_recaptcha_secret_key', ''), 'response' => wpdm_query_var('__recap')));
$ret = json_decode($ret);
if (!$ret->success) {
$reg_error = apply_filters("wpdm_signup_error", __("Invalid CAPTCHA!", "download-manager"), $error_type = 'captcha');
if (wpdm_is_ajax()) {
wp_send_json(array('success' => false, 'message' => 'Error: ' . $reg_error));
die();
}
Session::set('wpdm_signup_error', $reg_error, 300);
wp_safe_redirect(wpdm_query_var('permalink', 'url'));
die();
}
}
}
if (!get_option('users_can_register') && isset($_POST['wpdm_reg'])) {
$reg_error = apply_filters("wpdm_signup_error", __("Error: User registration is disabled!", "download-manager"), $error_type = 'signup_disabled');
if (wpdm_is_ajax()) {
wp_send_json(array('success' => false, 'message' => $reg_error));
die();
}
Session::set('wpdm_signup_error', $reg_error, 300);
wp_safe_redirect(wpdm_query_var('permalink', 'url'));
die();
}
Session::set('tmp_reg_info', $_POST['wpdm_reg']);
$first_name = wpdm_query_var('wpdm_reg/first_name', 'txt');
$last_name = wpdm_query_var('wpdm_reg/last_name', 'txt');
$user_login = wpdm_query_var('wpdm_reg/user_login', 'txt');
$user_email = wpdm_query_var('wpdm_reg/user_email', 'email');
$user_pass = wpdm_query_var('wpdm_reg/user_pass', 'html');
$full_name = $first_name . " " . $last_name;
$display_name = $full_name;
$user_id = username_exists($user_login);
//Check Username
if ($user_login === '') {
$reg_error = apply_filters("wpdm_signup_error", __("Username is Empty!", "download-manager"), $error_type = 'empty_username');
if (wpdm_is_ajax()) {
wp_send_json(array('success' => false, 'message' => $reg_error));
die();
}
Session::set('wpdm_signup_error', $reg_error, 300);
wp_safe_redirect(wpdm_query_var('permalink', 'url'));
die();
}
//Check Email
if (!is_email($user_email)) {
$reg_error = apply_filters("wpdm_signup_error", __("Invalid email address!", "download-manager"), $error_type = 'invalid_email');
if (wpdm_is_ajax()) {
wp_send_json(array('success' => false, 'message' => $reg_error));
die();
}
Session::set('wpdm_signup_error', $reg_error, 300);
wp_safe_redirect(wpdm_query_var('permalink', 'url'));
}
//If username is available - no other user with the username
if (!$user_id) {
$user_id = email_exists($user_email);
//If email is available - no other user with the email
if (!$user_id) {
$user_pass = $_verify_email || !isset($user_pass) || $user_pass == '' ? wp_generate_password(12, false) : $user_pass;
if(!$_verify_email && isset($user_pass) && wpdm_query_var('comfirm_user_pass')){
if($user_pass !== wpdm_query_var('confirm_user_pass', 'html')){
$reg_error = apply_filters("wpdm_signup_error", __("Passwords not matched!", "download-manager"), $error_type = 'password_match');
if (wpdm_is_ajax()) {
wp_send_json(array('success' => false, 'message' => $reg_error));
die();
}
Session::set('wpdm_signup_error', $reg_error, 300);
wp_safe_redirect(wpdm_query_var('permalink', 'url'));
}
}
$errors = new \WP_Error();
do_action('register_post', $user_login, $user_email, $errors);
$errors = apply_filters('registration_errors', $errors, $user_login, $user_email);
if ($errors->get_error_code()) {
if (wpdm_is_ajax()) {
wp_send_json(array('success' => false, 'message' => 'Error: ' . $errors->get_error_message()));
die();
}
Session::set('wpdm_signup_error', 'Error: ' . $errors->get_error_message(), 300);
wp_safe_redirect(wpdm_query_var('permalink', 'url'));
die();
}
$user_id = wp_create_user($user_login, $user_pass, $user_email);
$user_meta = array('ID' => $user_id, 'display_name' => $display_name, 'first_name' => $first_name, 'last_name' => $last_name);
if(!defined('WPDM_DISABLE_SIGNUP_ROLES') || WPDM_DISABLE_SIGNUP_ROLES === false) {
$valid_roles = get_option('__wpdm_signup_roles', array());
if (isset($shortcode_params['role']) && trim($shortcode_params['role']) !== '' && is_array($valid_roles) && count($valid_roles) > 0 && in_array($shortcode_params['role'], $valid_roles)) {
$role = $shortcode_params['role'];
//Block front-end signup as administrator or any role with edit_files cap
if($role !== 'administrator') {
$role = get_role($role);
$caps = is_object($role) && isset($role->capabilities) ? $role->capabilities : array();
if (!in_array('edit_files', $caps))
$user_meta['role'] = $role;
}
}
}
wp_update_user($user_meta);
//To User
$usparams = array('to_email' => $user_email, 'name' => $display_name, 'first_name' => $first_name, 'last_name' => $last_name, 'user_email' => $user_email, 'username' => $user_login, 'password' => $user_pass);
foreach ($_POST['wpdm_reg'] as $key => $value) {
$usparams["user_" . $key] = $value;
}
//Filter user email params
$usparams = apply_filters("wpdm_signup_user_mail_params", $usparams, $user_id);
\WPDM\Email::send("user-signup", $usparams);
//To Admin
$ip = wpdm_get_client_ip();
$data = array(
array('Name', $display_name),
array('Username', $user_login),
array('Email', $user_email),
array('IP', $ip)
);
$css = array('col' => array('background: #edf0f2 !important'), 'td' => 'border-bottom:1px solid #e6e7e8');
$table = MailUI::table(null, $data, $css);
$params['name'] = $display_name;
$params['username'] = $user_login;
$params['email'] = $user_email;
$params['user_ip'] = $ip;
$params['edit_user_btn'] = " " . __("Edit User", "download-manager") . " ";
//Include all data from signup form
foreach ($_POST['wpdm_reg'] as $key => $value) {
$params["user_" . $key] = $value;
}
//Filter admin email params
$params = apply_filters("wpdm_signup_admin_mail_params", $params, $user_id);
\WPDM\Email::send("user-signup-admin", $params);
Session::clear('guest_order');
Session::clear('login_error');
Session::clear('tmp_reg_info');
$creds['user_login'] = $user_login;
$creds['user_password'] = $user_pass;
$creds['remember'] = true;
if($_verify_email)
$reg_success = apply_filters("wpdm_signup_success", __("Your account has been created successfully and login info sent to your mail address.", "download-manager"));
else
$reg_success = apply_filters("wpdm_signup_success", __("Your account has been created successfully.", "download-manager"));
do_action("wpdm_user_signup", $user_id, wpdm_query_var('wpdm_reg') );
$_auto_login = isset($shortcode_params['autologin']) && ($shortcode_params['autologin'] === 'true' || (int)$shortcode_params['autologin'] === 1) ? true : false;
if ((int)get_option('__wpdm_signup_autologin', 0) === 1|| $_auto_login) {
$reg_success = apply_filters("wpdm_signup_success", __("Your account has been created successfully.", "download-manager"));
wp_signon($creds);
wp_set_current_user($user_id);
wp_set_auth_cookie($user_id);
}
\WPDM\Session::set('__wpdm_signup_success', $reg_success, 300);
if (wpdm_is_ajax()) {
$redirect = wpdm_query_var('reg_redirect', 'url');
if(!$_auto_login)
$redirect = add_query_arg(['signedup' => 1], $redirect);
wp_send_json(array('success' => true, 'redirect_to' => $redirect, 'msg' => Session::get('__wpdm_signup_success')));
die();
}
wp_safe_redirect(wpdm_query_var('reg_redirect', 'url'));
die();
} else {
$reg_error = apply_filters("wpdm_signup_error", __("Email already exist!", "download-manager"), $error_type = 'invalid_email');
if (wpdm_is_ajax()) {
wp_send_json(array('success' => false, 'message' => $reg_error));
die();
}
\WPDM\Session::set('wpdm_signup_error', $reg_error);
wp_safe_redirect(wpdm_query_var('permalink', 'url'));
die();
}
} else {
$reg_error = apply_filters("wpdm_signup_error", __("Username already exists.", "download-manager"), $error_type = 'username_exists');
if (wpdm_is_ajax()) {
wp_send_json(array('success' => false, 'message' => $reg_error));
die();
}
Session::set('wpdm_signup_error', $reg_error, 300);
wp_safe_redirect(wpdm_query_var('permalink', 'url'));
die();
}
}
function resetPassword(){
if(wpdm_query_var('__reset_pass')){
if ( empty( $_POST['user_login'] ) ) {
die('error');
} elseif ( strpos( $_POST['user_login'], '@' ) ) {
$user_data = get_user_by( 'email', trim( wp_unslash( $_POST['user_login'] ) ) );
if ( empty( $user_data ) )
die('error');
} else {
$login = trim($_POST['user_login']);
$user_data = get_user_by('login', $login);
}
if(Session::get( '__reset_time' ) && time() - Session::get( '__reset_time' ) < 60){
echo "toosoon";
exit;
}
if(!is_object($user_data) || !isset($user_data->user_login)) die('error');
$user_login = $user_data->user_login;
$user_email = $user_data->user_email;
$key = get_password_reset_key( $user_data );
$reseturl = add_query_arg(array('action' => 'rp', 'key' => $key, 'login' => rawurlencode($user_login)), wpdm_login_url());
$params = array('reset_password' => $reseturl, 'to_email' => $user_email);
\WPDM\Email::send('password-reset', $params);
Session::set( '__reset_time' , time() );
echo 'ok';
exit;
}
}
function updatePassword(){
if(wpdm_query_var('__update_pass')){
if(wp_verify_nonce(wpdm_query_var('__update_pass'), NONCE_KEY)){
$pass = wpdm_query_var('password');
if($pass == '') die('error');
$user = Session::get('__up_user');
$user = maybe_unserialize($user);
if(is_object($user) && isset($user->ID)) {
wp_set_current_user($user->ID, $user->user_login);
wp_set_auth_cookie($user->ID);
//do_action('wp_login', $user->user_login);
wp_set_password($pass, $user->ID);
//print_r($user);
wp_send_json(array('success' => true, 'message' => ''));
} else wp_send_json(array('success' => false, 'message' => __('Session Expired! Please try again.', 'download-manager')));
}
else
wp_send_json(array('success' => false, 'message' => __('Session Expired! Please try again.', 'download-manager')));
}
}
function updateProfile()
{
global $current_user;
if (isset($_POST['wpdm_profile']) && is_user_logged_in() && wp_verify_nonce(wpdm_query_var('__wpdm_epnonce'), NONCE_KEY)) {
$error = 0;
$pfile_data['display_name'] = $_POST['wpdm_profile']['display_name'];
$pfile_data['description'] = $_POST['wpdm_profile']['description'];
$pfile_data['user_email'] = $_POST['wpdm_profile']['user_email'];
if ($_POST['password'] != $_POST['cpassword']) {
Session::set('member_error', 'Password not matched');
$error = 1;
}
if (!$error) {
$pfile_data['ID'] = $current_user->ID;
if ($_POST['password'] != '')
$pfile_data['user_pass'] = $_POST['password'];
wp_update_user($pfile_data);
update_user_meta($current_user->ID, 'payment_account', $_POST['payment_account']);
Session::set( 'member_success' , 'Profile data updated successfully.' );
}
do_action("wpdm_update_profile");
if(wpdm_is_ajax()){
ob_clean();
if($error == 1){
$msg['type'] = 'danger';
$msg['title'] = 'ERROR!';
$msg['msg'] = Session::get( 'member_error' );
Session::clear('member_error');
wp_send_json($msg);
die();
} else {
$msg['type'] = 'success';
$msg['title'] = 'DONE!';
$msg['msg'] = Session::get( 'member_success' );
Session::clear('member_success');
wp_send_json($msg);
die();
}
}
header("location: " . $_SERVER['HTTP_REFERER']);
die();
}
}
function playMedia(){
if(strstr("!{$_SERVER['REQUEST_URI']}", "/wpdm-media/")){
$media = explode("wpdm-media/", $_SERVER['REQUEST_URI']);
$media = explode("/", $media[1]);
list($ID, $file, $name) = $media;
$key = wpdm_query_var('_wpdmkey');
if ( isset($_SERVER['HTTP_RANGE']) ) {
$partialContent = true;
preg_match('/bytes=(\d+)-(\d+)?/', $_SERVER['HTTP_RANGE'], $matches);
$offset = intval($matches[1]);
$length = intval($matches[2]) - $offset;
} else {
$partialContent = false;
}
$keyValid = is_wpdmkey_valid($ID, $key, true);
if(!$partialContent) {
if ($key == '' || !$keyValid)
\WPDM_Messages::Error(stripslashes(get_option('wpdm_permission_msg')), 1);
}
$files = \WPDM\Package::getFiles($ID);
$file = $files[$file];
$file = \WPDM\libs\FileSystem::fullPath($file, $ID);
$stream = new \WPDM\libs\StreamMedia($file);
$stream->start();
die();
}
}
/**
* @usage Process Download Request
*/
function triggerDownload()
{
global $wpdb, $current_user, $wp_query;
//get_currentuserinfo();
if (!isset($wp_query->query_vars['wpdmdl']) && !isset($_GET['wpdmdl'])) return;
$id = isset($_GET['wpdmdl']) ? (int)$_GET['wpdmdl'] : (int)$wp_query->query_vars['wpdmdl'];
if ($id <= 0) return;
$key = esc_attr(wpdm_query_var('_wpdmkey'));
$key = $key == '' && array_key_exists('_wpdmkey', $wp_query->query_vars) ? $wp_query->query_vars['_wpdmkey'] : $key;
$key = preg_replace("/[^_a-z|A-Z|0-9]/i", "", $key);
$key = "__wpdmkey_".$key;
$package = get_post($id, ARRAY_A);
$package = array_merge($package, wpdm_custom_data($package['ID']));
if (isset($package['files']))
$package['files'] = maybe_unserialize($package['files']);
else
$package['files'] = array();
//$package = wpdm_setup_package_data($package);
$package['access'] = wpdm_allowed_roles($id);
if (is_array($package)) {
$role = @array_shift(@array_keys($current_user->caps));
$cpackage = apply_filters('before_download', $package);
$lock = '';
$package = $cpackage ? $cpackage : $package;
if (isset($package['password_lock']) && $package['password_lock'] == 1) $lock = 'locked';
if (isset($package['captcha_lock']) && $package['captcha_lock'] == 1) $lock = 'locked';
if ($lock !== 'locked')
$lock = apply_filters('wpdm_check_lock', $lock, $id);
if (isset($_GET['masterkey']) && esc_attr($_GET['masterkey']) == $package['masterkey']) {
$lock = 0;
}
//$limit = $key ? (int)trim(get_post_meta($package['ID'], $key, true)) : 0;
$xlimit = $key != '' ? get_post_meta($package['ID'], $key, true) : '';
$xlimit = maybe_unserialize($xlimit);
$limit = !is_array($xlimit)?(int)$xlimit:$xlimit['use'];
if ($limit <= 0 && $key != '') delete_post_meta($package['ID'], $key);
else if ($key != '')
update_post_meta($package['ID'], $key, $limit - 1);
$matched = (is_array(@maybe_unserialize($package['access'])) && is_user_logged_in())?array_intersect($current_user->roles, @maybe_unserialize($package['access'])):array();
if (($id != '' && is_user_logged_in() && count($matched) < 1 && !@in_array('guest', $package['access'])) || (!is_user_logged_in() && !@in_array('guest', $package['access']) && $id != '')) {
do_action("wpdm_download_permission_denied", $id);
wpdm_download_data("permission-denied.txt", __("You don't have permission to download this file",'download-manager'));
die();
} else {
if ($lock === 'locked' && $limit <= 0) {
do_action("wpdm_invalid_download_link", $id, $key);
if ($key != '')
wpdm_download_data("link-expired.txt", __("Download link is expired. Please get new download link.",'download-manager'));
else
wpdm_download_data("invalid-link.txt", __("Download link is expired or not valid. Please get new download link.",'download-manager'));
die();
} else
if ($package['ID'] > 0) {
if((int)$package['quota'] == 0 || $package['quota'] > $package['download_count'])
include(WPDM_BASE_DIR . "wpdm-start-download.php");
else
wpdm_download_data("stock-limit-reached.txt", __("Stock Limit Reached", 'wpdmpro'));
}
}
} else
wpdm_notice(__("Invalid download link.",'download-manager'));
}
/**
* @usage Add with main RSS feed
* @param $query
* @return mixed
*/
function rssFeed($query) {
if ( isset($query['feed']) && !isset($query['post_type']) && get_option('__wpdm_rss_feed_main', 0) == 1 ){
$query['post_type'] = array('post','wpdmpro');
}
return $query;
}
/**
* @usage Schedule custom ping
* @param $post_id
*/
function customPings($post_id){
wp_schedule_single_event(time(), 'do_pings', array($post_id));
}
/**
* @usage Allow access to server file browser for selected user roles
*/
function sfbAccess(){
global $wp_roles;
$roleids = is_array($wp_roles->roles)?array_keys($wp_roles->roles):array();
$roles = get_option('_wpdm_file_browser_access',array('administrator'));
$naroles = array_diff($roleids, $roles);
foreach($roles as $role) {
$role = get_role($role);
if(is_object($role))
$role->add_cap('access_server_browser');
}
if(is_array($naroles)) {
foreach ($naroles as $role) {
$role = get_role($role);
$role->remove_cap('access_server_browser');
}
}
}
/**
* @usage Allow front-end users to access their own files only
* @param $query_params
* @return string
*/
function usersMediaQuery( $query_params ){
global $current_user;
if(current_user_can('edit_posts')) return $query_params;
if( is_user_logged_in() ){
$query_params['author'] = $current_user->ID;
}
return $query_params;
}
/**
* @usage Add packages wth tag query
* @param $query
* @return mixed
*/
function queryTag($query)
{
if ($query->is_tag() && $query->is_main_query()) {
$post_type = get_query_var('post_type');
if (!is_array($post_type))
$post_type = array('post', 'wpdmpro');
else
$post_type = array_merge($post_type, array('post', 'wpdmpro'));
$query->set('post_type', $post_type);
}
return $query;
}
/**
* @usage Add generator tag
*/
function addGenerator(){
echo ''."\r\n";
}
function oEmbed($content){
if(get_post_type(get_the_ID()) !== 'wpdmpro') return $content;
if(function_exists('wpdmpp_effective_price') && wpdmpp_effective_price(get_the_ID()) > 0)
$template = '
| [excerpt_200] |
| [txt=Price] | [currency][effective_price] |
| [txt=Version] | [version] |
| [txt=Total Files] | [file_count] |
| [txt=File Size] | [file_size] |
| [txt=Create Date] | [create_date] |
| [txt=Last Updated] | [update_date] |
| [txt=Buy Now] |
';
else
$template = '| [excerpt_200] |
| [txt=Version] | [version] |
| [txt=Total Files] | [file_count] |
| [txt=File Size] | [file_size] |
| [txt=Create Date] | [create_date] |
| [txt=Last Updated] | [update_date] |
| [txt=Download] |
';
return \WPDM\Package::fetchTemplate($template, get_the_ID());
}
function clearStats(){
if(!current_user_can('manage_options')) die('error');
global $wpdb;
$wpdb->query('truncate table '.$wpdb->prefix.'ahm_download_stats');
$wpdb->query("delete from {$wpdb->prefix}postmeta where meta_key='__wpdmx_user_download_count'");
die('ok');
}
function wpdmIframe(){
if(isset($_REQUEST['__wpdmlo'])){
include wpdm_tpl_path("lock-options-iframe.php");
die();
}
}
/**
* Empty cache dir
*/
function clearCache(){
if(!current_user_can('manage_options')) return;
\WPDM\libs\FileSystem::deleteFiles(WPDM_CACHE_DIR, false);
die('ok');
}
static function googleFont(){
$wpdmss = maybe_unserialize(get_option('__wpdm_disable_scripts', array()));
$uicolors = maybe_unserialize(get_option('__wpdm_ui_colors', array()));
?>
0)
$regurl = get_permalink($regurl);
}
$log_redirect = $_SERVER['REQUEST_URI'];
if(isset($params['redirect'])) $log_redirect = esc_url($params['redirect']);
if(isset($_GET['redirect_to'])) $log_redirect = esc_url($_GET['redirect_to']);
$up = parse_url($log_redirect);
if(isset($up['host']) && $up['host'] != $_SERVER['SERVER_NAME']) $log_redirect = $_SERVER['REQUEST_URI'];
$log_redirect = strip_tags($log_redirect);
if(!isset($params['logo']) || $params['logo'] == '') $params['logo'] = get_site_icon_url();
$__wpdm_social_login = get_option('__wpdm_social_login');
$__wpdm_social_login = is_array($__wpdm_social_login)?$__wpdm_social_login:array();
ob_start();
//get_option('__wpdm_modal_login', 0)
include( wpdm_tpl_path('wpdm-login-modal-form.php') );
$content = ob_get_clean();
$content = apply_filters("wpdm_login_modal_form_html", $content);
return $content;
}
static function uiColors(){
$wpdmss = maybe_unserialize(get_option('__wpdm_disable_scripts', array()));
if (is_array($wpdmss) && in_array('wpdm-front', $wpdmss) && !is_admin()) return;
$uicolors = maybe_unserialize(get_option('__wpdm_ui_colors', array()));
$primary = isset($uicolors['primary'])?$uicolors['primary']:'#4a8eff';
$secondary = isset($uicolors['secondary'])?$uicolors['secondary']:'#4a8eff';
$success = isset($uicolors['success'])?$uicolors['success']:'#18ce0f';
$info = isset($uicolors['info'])?$uicolors['info']:'#2CA8FF';
$warning = isset($uicolors['warning'])?$uicolors['warning']:'#f29e0f';
$danger = isset($uicolors['danger'])?$uicolors['danger']:'#ff5062';
$font = get_option('__wpdm_google_font', 'Rubik');
$font = $font?$font.',':'';
if(is_singular('wpdmpro'))
$ui_button = get_option('__wpdm_ui_download_button');
else
$ui_button = get_option('__wpdm_ui_download_button_sc');
$class = ".btn.".(isset($ui_button['color'])?$ui_button['color']:'btn-primary').(isset($ui_button['size']) && $ui_button['size'] != ''?".".$ui_button['size']:'');
?>