views
2 days ago
FileList.php
4 years ago
Hooks.php
3 years ago
Package.php
1 year ago
PackageController.php
6 months ago
PackageLocks.php
5 months ago
PackageTemplate.php
4 years ago
RestAPI.php
3 years ago
Shortcodes.php
2 days ago
PackageLocks.php
108 lines
| 1 | <?php |
| 2 | |
| 3 | namespace WPDM\Package; |
| 4 | |
| 5 | global $gp1c, $tbc; |
| 6 | |
| 7 | |
| 8 | use WPDM\__\__; |
| 9 | use WPDM\__\Crypt; |
| 10 | use WPDM\__\Session; |
| 11 | use WPDM\__\Template; |
| 12 | |
| 13 | |
| 14 | class PackageLocks |
| 15 | { |
| 16 | |
| 17 | public function __construct(){ |
| 18 | |
| 19 | } |
| 20 | |
| 21 | public static function askPassword($package){ |
| 22 | ob_start(); |
| 23 | $unqid = uniqid(); |
| 24 | $field_id = $unqid.'_'.$package['ID']; |
| 25 | include Template::locate("lock-options/password-lock.php", __DIR__.'/views'); |
| 26 | $data = ob_get_clean(); |
| 27 | return $data; |
| 28 | } |
| 29 | |
| 30 | public static function reCaptchaLock($package, $buttononly = false){ |
| 31 | ob_start(); |
| 32 | $force = str_replace("=", "", base64_encode("unlocked|" . date("Ymdh"))); |
| 33 | include Template::locate("lock-options/recaptcha-lock.php", __DIR__.'/views'); |
| 34 | return ob_get_clean(); |
| 35 | } |
| 36 | |
| 37 | function validateCaptcha() |
| 38 | { |
| 39 | $limit = get_option('__wpdm_private_link_usage_limit', 3); |
| 40 | $xpire_period = ((int)get_option('__wpdm_private_link_expiration_period', 3)) * ((int)get_option('__wpdm_private_link_expiration_period_unit', 60)); |
| 41 | $xpire_period = $xpire_period > 0 ? $xpire_period : 3600; |
| 42 | $ret = wpdm_recaptcha_enterprise_verify(wpdm_query_var('reCaptchaVerify'), 'DOWNLOAD'); |
| 43 | if ($ret['success']) { |
| 44 | $download_url = WPDM()->package->expirableDownloadLink(wpdm_query_var('__wpdm_ID', 'int'), $limit, $xpire_period); |
| 45 | $data['downloadurl'] = $download_url; |
| 46 | } else { |
| 47 | $data['error'] = __("Captcha Verification Failed!", "wpmdpro"); |
| 48 | } |
| 49 | |
| 50 | wp_send_json($data); |
| 51 | die(); |
| 52 | } |
| 53 | |
| 54 | function validatePassword() |
| 55 | { |
| 56 | $password = isset($_REQUEST['password']) ? sanitize_text_field($_REQUEST['password']) : null; |
| 57 | $packageID = wpdm_query_var('__wpdm_ID', ['validate' => 'int']); |
| 58 | $passwords = WPDM()->package->isPasswordProtected($packageID); |
| 59 | $passwordUsage = maybe_unserialize(get_post_meta($packageID, '__wpdm_password_usage', true)); |
| 60 | $passwordUsageLimit = (int)get_post_meta($packageID, 'password_usage_limit', true); |
| 61 | |
| 62 | if(!$password || !$packageID) wp_send_json(['msg' => __("Invalid request!", "download-manager"), 'success' => false]); |
| 63 | |
| 64 | $limit = (int)get_option('__wpdm_private_link_usage_limit', 3); |
| 65 | if($limit < 1) $limit = 3; |
| 66 | $expirePeriod = ((int)get_option('__wpdm_private_link_expiration_period', 60)) * ((int)get_option('__wpdm_private_link_expiration_period_unit', 60)); |
| 67 | $expirePeriod = $expirePeriod > 0 ? $expirePeriod : 3600; |
| 68 | |
| 69 | $data = [ 'success' => false ]; |
| 70 | $error = false; |
| 71 | |
| 72 | //Check if given password lock is not active |
| 73 | if (!$passwords) { |
| 74 | $data['message'] = __("Invalid request!", "download-manager"); |
| 75 | $file = array(); |
| 76 | $error = true; |
| 77 | wp_send_json($data); |
| 78 | } |
| 79 | |
| 80 | //Check if the given password is matched |
| 81 | if ($passwords && $password != $passwords && substr_count($passwords, "[$password]") < 1) { |
| 82 | $data['message'] = __("Wrong Password!", "download-manager") . " <span><i class='fas fa-redo'></i> " . __("Try Again", "download-manager") . " </span>"; |
| 83 | $error = true; |
| 84 | } |
| 85 | |
| 86 | //Check if given password is empty |
| 87 | if ($passwords && $password == '') { |
| 88 | $data['message'] = __("Wrong Password!", "download-manager") . " <span class='color-blue'><i class='fas fa-redo'></i> " . __("Try Again", "download-manager") . " </span>"; |
| 89 | $file = array(); |
| 90 | $error = true; |
| 91 | } |
| 92 | |
| 93 | $passwordUsed = wpdm_valueof($passwordUsage, $password, ['validate' => 'int']); |
| 94 | if( $passwordUsageLimit > 0 && $passwordUsed >= $passwordUsageLimit) |
| 95 | $data['message'] = __("Password usages limit exceeded", "download-manager"); |
| 96 | else if(!$error){ |
| 97 | if(!is_array($passwordUsage)) $passwordUsage = []; |
| 98 | Session::set("pass_verified_" . $packageID, 1); |
| 99 | $passwordUsage[$password] = wpdm_valueof($passwordUsage, $password, ['validate' => 'int']) + 1; |
| 100 | update_post_meta($packageID, '__wpdm_password_usage', $passwordUsage); |
| 101 | $data = ['success' => true, 'downloadurl' => WPDM()->package->expirableDownloadLink($packageID)]; |
| 102 | } |
| 103 | wp_send_json($data); |
| 104 | } |
| 105 | |
| 106 | |
| 107 | } |
| 108 |