CouponsPage
1 year ago
CustomersPage
5 months ago
DashboardPage
1 year ago
DownloadLogsPage
1 year ago
ExportPage
5 months ago
GroupsPage
1 year ago
OrdersPage
1 year ago
PlansPage
2 months ago
SubscriptionsPage
3 months ago
TaxSettings
3 years ago
views
1 month ago
CheckListHeader.php
3 years ago
CheckoutFieldsManager.php
1 year ago
ContextualStateChangeHelper.php
3 years ago
FileDownloads.php
3 years ago
PaymentMethods.php
1 year ago
PaymentSettings.php
1 month ago
PlanIntegrationsMetabox.php
10 months ago
SettingsFieldsParser.php
1 year ago
index.php
3 years ago
FileDownloads.php
100 lines
| 1 | <?php |
| 2 | |
| 3 | namespace ProfilePress\Core\Admin\SettingsPages\Membership; |
| 4 | |
| 5 | use ProfilePress\Core\Admin\SettingsPages\AbstractSettingsPage; |
| 6 | use ProfilePress\Custom_Settings_Page_Api; |
| 7 | |
| 8 | class FileDownloads |
| 9 | { |
| 10 | public function __construct() |
| 11 | { |
| 12 | add_filter('ppress_settings_page_submenus_tabs', [$this, 'header_sub_menu_tab']); |
| 13 | |
| 14 | add_action('ppress_admin_settings_submenu_page_payments_file-downloads', [$this, 'file_downloads_page']); |
| 15 | |
| 16 | add_action('ppress_register_menu_page_payments_file-downloads', function () { |
| 17 | |
| 18 | add_filter('ppress_general_settings_admin_page_title', function () { |
| 19 | return esc_html__('File Downloads ‹ Payments', 'wp-user-avatar'); |
| 20 | }); |
| 21 | }); |
| 22 | } |
| 23 | |
| 24 | public function header_sub_menu_tab($tabs) |
| 25 | { |
| 26 | $tabs[176] = ['parent' => 'payments', 'id' => 'file-downloads', 'label' => esc_html__('File Downloads', 'wp-user-avatar')]; |
| 27 | |
| 28 | return $tabs; |
| 29 | } |
| 30 | |
| 31 | public function file_downloads_page() |
| 32 | { |
| 33 | $instance = Custom_Settings_Page_Api::instance(); |
| 34 | $instance->option_name(PPRESS_FILE_DOWNLOADS_OPTION_NAME); |
| 35 | $instance->page_header(esc_html__('File Downloads', 'wp-user-avatar')); |
| 36 | |
| 37 | $instance->add_view_classes('ppress-file-downloads'); |
| 38 | |
| 39 | $settings = [ |
| 40 | [ |
| 41 | 'download_method' => [ |
| 42 | 'label' => esc_html__('Download Method', 'wp-user-avatar'), |
| 43 | 'type' => 'select', |
| 44 | 'options' => [ |
| 45 | 'direct' => esc_html__('Force Downloads', 'wp-user-redirect'), |
| 46 | 'xsendfile' => esc_html__('X-Accel-Redirect/X-Sendfile', 'wp-user-redirect'), |
| 47 | 'redirect' => esc_html__('Redirect (Insecure)', 'wp-user-redirect') |
| 48 | ], |
| 49 | 'description' => sprintf( |
| 50 | __("Select the file download method. If you are using X-Accel-Redirect/X-Sendfile download method (recommended, especially for delivery large files), make sure that you have applied settings as described in <a href='%s'>Downloadable Product Handling</a> guide.", 'wp-user-avatar'), |
| 51 | 'https://profilepress.com/article/sell-downloads-wordpress-membership/#servers' |
| 52 | ) |
| 53 | ], |
| 54 | 'download_limit' => [ |
| 55 | 'label' => esc_html__('Download Limit', 'wp-user-avatar'), |
| 56 | 'description' => esc_html__('The maximum number of times files can be downloaded (Leaving blank or using a value of 0 is unlimited). Can be overwritten for each membership plan.', 'wp-user-avatar'), |
| 57 | 'value' => '0', |
| 58 | 'type' => 'number' |
| 59 | ], |
| 60 | 'download_expiry' => [ |
| 61 | 'label' => esc_html__('Download Expiry', 'wp-user-avatar'), |
| 62 | 'description' => esc_html__('How long in days should download links be valid for? Default is 1 day from the time they are generated. Can be overwritten for each membership plan.', 'wp-user-avatar'), |
| 63 | 'value' => '1', |
| 64 | 'type' => 'number' |
| 65 | ], |
| 66 | 'access_restriction' => [ |
| 67 | 'label' => esc_html__('Access restriction', 'wp-user-avatar'), |
| 68 | 'checkbox_label' => esc_html__('Downloads require login', 'wp-user-avatar'), |
| 69 | 'description' => esc_html__('Enable to require users to be logged in to download files.', 'wp-user-avatar'), |
| 70 | 'type' => 'checkbox' |
| 71 | ], |
| 72 | 'downloads_add_hash_filename' => [ |
| 73 | 'label' => esc_html__('Filename', 'wp-user-avatar'), |
| 74 | 'checkbox_label' => esc_html__('Append a unique string to filename for security', 'wp-user-avatar'), |
| 75 | 'description' => sprintf( |
| 76 | __("Not required if your download directory is protected. <a href='%s'>See this guide</a> for more details. Files already uploaded will not be affected.", 'woocommerce'), |
| 77 | 'https://profilepress.com/article/sell-downloads-wordpress-membership/#unique-string' |
| 78 | ), |
| 79 | 'type' => 'checkbox' |
| 80 | ] |
| 81 | ] |
| 82 | ]; |
| 83 | |
| 84 | $instance->main_content($settings); |
| 85 | $instance->remove_white_design(); |
| 86 | AbstractSettingsPage::register_core_settings($instance); |
| 87 | $instance->build(); |
| 88 | } |
| 89 | |
| 90 | public static function get_instance() |
| 91 | { |
| 92 | static $instance = null; |
| 93 | |
| 94 | if (is_null($instance)) { |
| 95 | $instance = new self(); |
| 96 | } |
| 97 | |
| 98 | return $instance; |
| 99 | } |
| 100 | } |