update
This commit is contained in:
987
wp-content/plugins/secure-downloads/core/admin/page-send.php
Normal file
987
wp-content/plugins/secure-downloads/core/admin/page-send.php
Normal file
@@ -0,0 +1,987 @@
|
||||
<?php /**
|
||||
* @version 1.0
|
||||
* @package Secure Downloads
|
||||
* @category Content of item Listing page
|
||||
* @author wpdevelop
|
||||
*
|
||||
* @web-site https://oplugins.com/
|
||||
* @email info@oplugins.com
|
||||
*
|
||||
* @modified 2015-11-13
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
||||
|
||||
|
||||
/** Show Content
|
||||
* Update Content
|
||||
* Define Slug
|
||||
* Define where to show
|
||||
*/
|
||||
class OPSD_Page_Single extends OPSD_Page_Structure {
|
||||
|
||||
|
||||
public function in_page() {
|
||||
return 'opsd';
|
||||
}
|
||||
|
||||
|
||||
public function tabs() {
|
||||
|
||||
$tabs = array();
|
||||
$tabs[ 'send' ] = array(
|
||||
'title' => __('Send Link', 'secure-downloads') // Title of TAB
|
||||
, 'hint' => __('Send Link', 'secure-downloads') // Hint
|
||||
, 'page_title' => __('Send Link', 'secure-downloads') // Title of Page
|
||||
, 'link' => '' // Can be skiped, then generated link based on Page and Tab tags. Or can be extenral link
|
||||
, 'position' => '' // 'left' || 'right' || ''
|
||||
, 'css_classes' => '' // CSS class(es)
|
||||
, 'icon' => '' // Icon - link to the real PNG img
|
||||
, 'font_icon' => 'glyphicon glyphicon-th' // CSS definition of forn Icon
|
||||
, 'default' => true // Is this tab activated by default or not: true || false.
|
||||
, 'disabled' => false // Is this tab disbaled: true || false.
|
||||
, 'hided' => true // Is this tab hided: true || false.
|
||||
, 'subtabs' => array()
|
||||
|
||||
);
|
||||
// $subtabs = array();
|
||||
// $tabs[ 'items' ][ 'subtabs' ] = $subtabs;
|
||||
return $tabs;
|
||||
}
|
||||
|
||||
|
||||
public function content() {
|
||||
|
||||
// Checking ////////////////////////////////////////////////////////////
|
||||
|
||||
do_action( 'opsd_hook_settings_page_header', array( 'page' => $this->in_page() ) ); // Define Notices Section and show some static messages, if needed.
|
||||
|
||||
// $this->settings_api(); // Init Settings API & Get Data from DB // Define all fields and get values from DB
|
||||
|
||||
|
||||
// Submit /////////////////////////////////////////////////////////////
|
||||
|
||||
$submit_form_name = 'opsd_send_links_form'; // Define form name
|
||||
|
||||
$data_after_update = false;
|
||||
if ( isset( $_POST['is_form_sbmitted_'. $submit_form_name ] ) ) {
|
||||
|
||||
// Nonce checking {Return false if invalid, 1 if generated between, 0-12 hours ago, 2 if generated between 12-24 hours ago. }
|
||||
$nonce_gen_time = check_admin_referer( 'opsd_settings_page_' . $submit_form_name ); // Its stop show anything on submiting, if its not refear to the original page
|
||||
|
||||
// Save Changes
|
||||
$data_after_update = $this->update();
|
||||
$updated_data = '';//$data_after_update['original_validated_data'];
|
||||
} else {
|
||||
$updated_data = '';
|
||||
}
|
||||
|
||||
//$opsd_user_role_master = get_opsd_option( 'opsd_user_role_master' ); // O L D W A Y: Get Fields Data
|
||||
|
||||
// JavaScript: Tooltips, Popover, Datepick (js & css) //////////////////
|
||||
echo '<span class="wpdevelop">';
|
||||
opsd_js_for_items_page();
|
||||
echo '</span>';
|
||||
|
||||
?><span class="wpdevelop"><?php // BS UI CSS Class
|
||||
// T o o l b a r s /////////////////////////////////////////////////
|
||||
// opsd_items_toolbar();
|
||||
?></span><?php
|
||||
|
||||
?><div class="clear" style="height:0px;"></div><?php
|
||||
|
||||
|
||||
// Content ////////////////////////////////////////////////////////////
|
||||
?>
|
||||
<div class="clear" style="margin-bottom:10px;"></div>
|
||||
<span class="metabox-holder">
|
||||
<form name="<?php echo $submit_form_name; ?>" id="<?php echo $submit_form_name; ?>" action="" method="post" >
|
||||
<?php
|
||||
// N o n c e field, and key for checking S u b m i t
|
||||
wp_nonce_field( 'opsd_settings_page_' . $submit_form_name );
|
||||
?><input type="hidden" name="is_form_sbmitted_<?php echo $submit_form_name; ?>" id="is_form_sbmitted_<?php echo $submit_form_name; ?>" value="1" />
|
||||
|
||||
<div class="clear" style="margin-bottom:0px;"></div>
|
||||
|
||||
<div class="opsd_settings_row opsd_settings_row_left" >
|
||||
|
||||
<?php opsd_open_meta_box_section( 'opsd_single_results', __('Send', 'secure-downloads') ); ?>
|
||||
|
||||
<?php
|
||||
|
||||
// Get List of products ////////////////////////////////////
|
||||
$products_csv = get_opsd_option('opsd_products_csv' );
|
||||
|
||||
$products_obj = new OPSD_Products();
|
||||
|
||||
$products_obj->define_products_from_csv( $products_csv ); /** Array
|
||||
(
|
||||
[id] => 0
|
||||
[order] => 0
|
||||
[ip] => 0.0.0.0
|
||||
[ipl] => 0
|
||||
[expire] => +1440 seconds
|
||||
[title] => Personal
|
||||
[size] => 3.45
|
||||
[path] => XXXXXXXXXX/wpbc/personal.zip
|
||||
), ...
|
||||
*/
|
||||
|
||||
$products = $products_obj->get_products();
|
||||
|
||||
//$secret_link = opsd_get_secret_link( $products[0] ); // Get Secret Link
|
||||
|
||||
// Warning - NO Products
|
||||
if ( $products_obj->get_products_count() == 0 ) {
|
||||
|
||||
$notice_id = 'opsd_warning_no_products';
|
||||
if ( ! opsd_section_is_dismissed( $notice_id ) ) {
|
||||
|
||||
?><div id="<?php echo $notice_id; ?>"
|
||||
class="opsd_system_notice opsd_is_dismissible0 opsd_is_hideable0 notice-error opsd_internal_notice"
|
||||
data-nonce="<?php echo wp_create_nonce( $nonce_name = $notice_id . '_opsdnonce' ); ?>"
|
||||
data-user-id="<?php echo get_current_user_id(); ?>"
|
||||
><?php
|
||||
// opsd_x_dismiss_button();
|
||||
echo '<strong>' . __( 'Warning!', 'secure-downloads' ) . '</strong> ';
|
||||
printf( __( 'No products defined at %s menu page.', 'secure-downloads' )
|
||||
, '<a href="' . admin_url( 'admin.php?page=opsd-files' ) . '">'
|
||||
. '<strong>' . 'Secure Downloads > ' . __( 'Files', 'secure-downloads' ) . '</strong>'
|
||||
. '</a>'
|
||||
);
|
||||
?></div><?php
|
||||
}
|
||||
|
||||
$opsd_csv_separator = get_opsd_option( 'opsd_csv_separator' );
|
||||
if ( ( strlen( $products_csv ) > 0 )
|
||||
&& ( strpos( $products_csv, $opsd_csv_separator ) === false ) ) {
|
||||
|
||||
|
||||
$notice_id = 'opsd_warning_wrong_csv_separator';
|
||||
if ( ! opsd_section_is_dismissed( $notice_id ) ) {
|
||||
|
||||
?><div id="<?php echo $notice_id; ?>"
|
||||
class="opsd_system_notice opsd_is_dismissible0 opsd_is_hideable0 notice-warning opsd_internal_notice"
|
||||
data-nonce="<?php echo wp_create_nonce( $nonce_name = $notice_id . '_opsdnonce' ); ?>"
|
||||
data-user-id="<?php echo get_current_user_id(); ?>"
|
||||
><?php
|
||||
// opsd_x_dismiss_button();
|
||||
echo '<strong>' . __( 'Warning!', 'secure-downloads' ) . '</strong> ';
|
||||
printf( __( 'Probabaly you have defined incorrect CSV separator at %s menu page.', 'secure-downloads' )
|
||||
, '<a href="' . admin_url( 'admin.php?page=opsd-settings' ) . '#opsd_general_settings_opsd_misc_metabox">'
|
||||
. '<strong>' . __( 'Settings', 'secure-downloads' ) . '</strong>'
|
||||
. '</a>'
|
||||
);
|
||||
?></div><?php
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
|
||||
if ( ! empty( $data_after_update ) ) {
|
||||
opsd_show_copy_button();
|
||||
}
|
||||
|
||||
?><div class="opsd_link_container wpdevelop"><?php
|
||||
|
||||
// Email //////////////////////////////////////////////////
|
||||
$fields = array( 'type' => 'email',
|
||||
'title' => ''
|
||||
, 'disabled' => false
|
||||
, 'class' => ''
|
||||
, 'css' => ''
|
||||
, 'placeholder' => 'info@server.com'
|
||||
, 'description' => ''
|
||||
, 'attr' => array()
|
||||
, 'group' => 'general'
|
||||
, 'tr_class' => ''
|
||||
, 'only_field' => true
|
||||
, 'description_tag' => 'p'
|
||||
, 'validate_as' => array( 'email' )
|
||||
, 'value' => ( ( ! empty( $_GET[ 'email' ] ) ) ? sanitize_email( $_GET[ 'email' ] ) : '' ) //FixIn: 1.1.5
|
||||
);
|
||||
OPSD_Settings_API::field_text_row_static( 'opsd_email_to', $fields );
|
||||
|
||||
// Send Button ////////////////////////////////////////////
|
||||
?>
|
||||
<a class="button button-primary opsd_send_button opsd_generate_button"
|
||||
href="javascript:void(0)" title="<?php _e('Generate Secure Link for Download' , 'secure-downloads') ?>"
|
||||
><span class="opsd_text_hide_mobile"><?php _e('Generate' , 'secure-downloads') ?> </span><span class="glyphicon glyphicon-share-alt" aria-hidden="true"></span></a>
|
||||
</div>
|
||||
<input type="hidden" value='' name='opsd_action' id='opsd_action' />
|
||||
<?php
|
||||
|
||||
|
||||
|
||||
// Products List //////////////////////////////////////////
|
||||
$options = array( '' => __( 'Please Select', 'secure-downloads' ) );
|
||||
|
||||
$is_group_open = false;
|
||||
|
||||
//FixIn: 1.1.5
|
||||
$selected_product_id = ( ! empty( $_GET[ 'product_id' ] ) ) ? intval( $_GET[ 'product_id' ] ) : 0 ;
|
||||
|
||||
$check_name = '';
|
||||
if ( ! empty( $_GET[ 'product_name' ] ) ) {
|
||||
$check_name = esc_js( $_GET[ 'product_name' ] );
|
||||
}
|
||||
|
||||
foreach ( $products as $product_arr ) {
|
||||
|
||||
//FixIn: 1.1.5
|
||||
if ( ( ! empty( $check_name ) ) && ( $product_arr['title'] == $check_name ) ) { //FixIn: 1.1.3.2
|
||||
$selected_product_id = $product_arr['id'];
|
||||
}
|
||||
|
||||
if ( count($product_arr) == 2 ) { //Group
|
||||
|
||||
if ( $is_group_open ) {
|
||||
$options[ intval( microtime( false ) ) + wp_rand(100) ] = array( 'optgroup' => true, 'title' =>'', 'close' => true ) ; //FixIn: 1.1.2.3
|
||||
}
|
||||
|
||||
$options[ intval( microtime( false ) ) + wp_rand(100) ] = array( 'optgroup' => true, 'title' => $product_arr['title'], 'close' => false ) ; //FixIn: 1.1.2.3
|
||||
$is_group_open = true;
|
||||
|
||||
} else { // Regular option
|
||||
|
||||
|
||||
$options[ $product_arr['id'] ] = $product_arr['title'] . ' ~ ' . $product_arr['version_num'];
|
||||
}
|
||||
}
|
||||
|
||||
//Close group, if opened
|
||||
if ( $is_group_open ) {
|
||||
$options[ intval( microtime( false ) ) + wp_rand(100) ] = array( 'optgroup' => true, 'title' =>'', 'close' => true ) ; //FixIn: 1.1.2.3
|
||||
}
|
||||
|
||||
|
||||
$fields = array(
|
||||
'title' => ''
|
||||
, 'label' => ''
|
||||
, 'disabled' => false
|
||||
, 'disabled_options' => array()
|
||||
, 'class' => 'opsd_product_selection'
|
||||
, 'css' => ''
|
||||
, 'type' => 'select'
|
||||
, 'description' => ''
|
||||
, 'multiple' => ! true
|
||||
, 'attr' => array( 'size' => 1 )
|
||||
, 'options' => $options
|
||||
, 'group' => 'general'
|
||||
, 'tr_class' => ''
|
||||
, 'only_field' => true
|
||||
, 'description_tag' => 'span'
|
||||
, 'value' => ( ( ! empty( $selected_product_id ) ) ? intval( $selected_product_id ) : 1 ) //FixIn: 1.1.4 //FixIn: 1.1.5
|
||||
);
|
||||
OPSD_Settings_API::field_select_row_static( 'opsd_product_selection', $fields );
|
||||
|
||||
}
|
||||
|
||||
do_action( 'opsd_secure_links_send_section_footer' );
|
||||
|
||||
?>
|
||||
|
||||
|
||||
<?php opsd_close_meta_box_section(); ?>
|
||||
|
||||
<?php opsd_open_meta_box_section( 'opsd_single_help', __('Info', 'secure-downloads') ); ?>
|
||||
|
||||
<?php //$this->settings_api()->show( 'help' ); ?>
|
||||
<div class="opsd_submmary">
|
||||
<?php printf(__('Nothing yet.', 'secure-downloads'),'<code>[email]</code>') ?>
|
||||
</div>
|
||||
|
||||
<?php opsd_close_meta_box_section(); ?>
|
||||
|
||||
</div>
|
||||
<div class="opsd_settings_row opsd_settings_row_right">
|
||||
|
||||
<?php opsd_open_meta_box_section( 'opsd_single_actions', __('Advanced', 'secure-downloads') ); ?>
|
||||
|
||||
<table class="form-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="padding-left: 0;">
|
||||
|
||||
|
||||
</td>
|
||||
<td>
|
||||
<?php
|
||||
|
||||
$mail_api = new OPSD_Emails_API_LinkUser( OPSD_EMAIL_LINK_USER_ID );
|
||||
|
||||
$field_name = 'send_copy_to_admin';
|
||||
|
||||
$field = array(
|
||||
'title' => ''
|
||||
, 'label' => __('Send copy to administrator', 'secure-downloads')
|
||||
, 'type' => 'checkbox'
|
||||
, 'value' => ( ( $mail_api->fields_values['copy_to_admin'] == 'On' ) ? 'On' : 'Off' )
|
||||
, 'class' => ''
|
||||
, 'css' => ''
|
||||
, 'group' => 'advanced'
|
||||
, 'only_field' => true
|
||||
);
|
||||
OPSD_Settings_API::field_checkbox_row_static( $field_name, $field );
|
||||
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
$options = array(
|
||||
'' => __('Default Expiration', 'secure-downloads')
|
||||
, '+5 minutes' => '5 ' . __('minutes', 'secure-downloads')
|
||||
, '+15 minutes' => '15 ' . __('minutes', 'secure-downloads')
|
||||
, '+30 minutes' => '30 ' . __('minutes', 'secure-downloads')
|
||||
, '+45 minutes' => '45 ' . __('minutes', 'secure-downloads')
|
||||
, '+1 hour' => '1 ' . __('hour', 'secure-downloads')
|
||||
, '+6 hours' => '6 ' . __('hours', 'secure-downloads')
|
||||
, '+12 hours' => '12 ' . __('hours', 'secure-downloads')
|
||||
, '+24 hours' => '24 ' . __('hours', 'secure-downloads')
|
||||
, '+3 days' => '3 ' . __('days', 'secure-downloads')
|
||||
, '+5 days' => '5 ' . __('days', 'secure-downloads')
|
||||
, '+7 days' => '7 ' . __('days', 'secure-downloads')
|
||||
, '+30 days' => '30 ' . __('days', 'secure-downloads')
|
||||
, '+90 days' => '90 ' . __('days', 'secure-downloads')
|
||||
, '+365 days' => '1 ' . __('year', 'secure-downloads')
|
||||
, '0' => __('Never', 'secure-downloads') //FixIn: 1.2.2.2
|
||||
);
|
||||
// Expire
|
||||
$fields = array(
|
||||
'title' => __('Link expire after', 'secure-downloads')
|
||||
, 'label' => ''
|
||||
, 'disabled' => false
|
||||
, 'disabled_options' => array()
|
||||
, 'class' => ''
|
||||
, 'css' => ''
|
||||
, 'type' => 'select'
|
||||
, 'description' => ''
|
||||
, 'multiple' => false
|
||||
, 'attr' => array()
|
||||
, 'options' => $options
|
||||
, 'group' => 'advanced'
|
||||
, 'tr_class' => ''
|
||||
, 'only_field' => false
|
||||
, 'description_tag' => 'span'
|
||||
, 'value' => get_opsd_option( 'opsd_defualt_expiration' ) //array( '+24 hours' )
|
||||
);
|
||||
OPSD_Settings_API::field_select_row_static( 'opsd_product_expire', $fields );
|
||||
|
||||
|
||||
// IP lock
|
||||
$fields = array(
|
||||
'title' => __( 'IP Lock', 'secure-downloads')
|
||||
, 'disabled' => false
|
||||
, 'class' => ''
|
||||
, 'css' => 'width:100%;'
|
||||
, 'placeholder' => '0.0.0.0'
|
||||
, 'description' => ''
|
||||
, 'attr' => array()
|
||||
, 'group' => 'advanced'
|
||||
, 'tr_class' => ''
|
||||
, 'only_field' => false
|
||||
, 'description_tag' => 'p'
|
||||
, 'validate_as' => array()
|
||||
, 'value' => get_opsd_option( 'opsd_defualt_iplock' )
|
||||
);
|
||||
OPSD_Settings_API::field_text_row_static( 'opsd_product_ip_lock', $fields );
|
||||
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<?php opsd_close_meta_box_section(); ?>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
<!-- <input type="button" value="<?php _e('Send', 'secure-downloads'); ?>" class="button button-primary opsd_send_button" /> -->
|
||||
<!-- <input type="submit" value="<?php _e('Submit', 'secure-downloads'); ?>" class="button button-primary opsd_submit_button" />-->
|
||||
|
||||
</form>
|
||||
<?php
|
||||
|
||||
if ( ! empty( $data_after_update ) )
|
||||
echo $data_after_update['sent_summary_content'];
|
||||
?>
|
||||
</span>
|
||||
<?php
|
||||
|
||||
opsd_show_opsd_footer();
|
||||
|
||||
$this->js();
|
||||
$this->css();
|
||||
|
||||
do_action( 'opsd_hook_settings_page_footer', 'send_links' );
|
||||
}
|
||||
|
||||
|
||||
public function update() {
|
||||
|
||||
$post_action_key = 'opsd_action';
|
||||
if ( isset( $_POST[ $post_action_key ] ) && ( $_POST[ $post_action_key ] == 'go_send' ) ) {
|
||||
|
||||
// Get Validated post
|
||||
$validated = array();
|
||||
|
||||
// Email
|
||||
$validated['opsd_email_to'] = OPSD_Settings_API::validate_email_post_static( 'opsd_email_to' );
|
||||
|
||||
// Is send copy to admin
|
||||
$validated['send_copy_to_admin'] = OPSD_Settings_API::validate_checkbox_post_static( 'send_copy_to_admin' );
|
||||
|
||||
// Products
|
||||
$validated['opsd_product_selection'] = OPSD_Settings_API::validate_select_post_static( 'opsd_product_selection' );
|
||||
|
||||
// Expire
|
||||
$validated['opsd_product_expire'] = OPSD_Settings_API::validate_select_post_static( 'opsd_product_expire' );
|
||||
|
||||
// IP lock
|
||||
$validated['opsd_product_ip_lock'] = OPSD_Settings_API::validate_text_post_static( 'opsd_product_ip_lock' );
|
||||
|
||||
// Check if we selected custom email template and need to send email even if the product was not selected
|
||||
$validated['continue_without_product'] = false;
|
||||
$validated = apply_filters( 'opsd_send_secure_links_validate_fields', $validated ); //Hook for validated fields.
|
||||
|
||||
|
||||
$response = opsd_send_secure_download_email_to_user( $validated ); //FixIn: 1.1.3.2
|
||||
|
||||
//debuge($response);
|
||||
|
||||
$sent_summary_content = '';
|
||||
|
||||
switch ( $response[ 'status' ] ) {
|
||||
|
||||
case 'error':
|
||||
|
||||
if ( 'select_valid_product' == $response[ 'error_type' ] ) {
|
||||
|
||||
opsd_show_fixed_message( __( 'Select valid product', 'secure-downloads' ), 3, 'updated error' ); // Show Message
|
||||
}
|
||||
break;
|
||||
|
||||
case 'email_sent':
|
||||
|
||||
// Get Summary about sending email and generating link ...
|
||||
$sent_summary_content = $this->get_sent_summary( $response['mail_api'], $response['product_replace'], $validated );
|
||||
|
||||
opsd_show_fixed_message ( __('Email sent to', 'secure-downloads') . ' ' . $validated['opsd_email_to'], 3 ); // Show Message
|
||||
break;
|
||||
|
||||
case 'link_generated':
|
||||
|
||||
// Get Summary about sending email and generating link ...
|
||||
$sent_summary_content = $this->get_sent_summary( $response['mail_api'], $response['product_replace'], $validated );
|
||||
|
||||
opsd_show_fixed_message ( __('Link generated', 'secure-downloads'), 3 ); // Show Message
|
||||
break;
|
||||
|
||||
default:
|
||||
// Default
|
||||
}
|
||||
|
||||
// Reload page after sending. Stop from sending once again, if refresh browser in mobile browser after some time
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
setTimeout(function() { document.location.href = "<?php echo opsd_get_master_url(); ?>"; }, 30000);
|
||||
</script>
|
||||
<?php
|
||||
|
||||
return array ( 'validated_data' => $validated, 'sent_summary_content' => $sent_summary_content ); // Exit, for do not parse
|
||||
}
|
||||
|
||||
/*
|
||||
//$validated_fields = $this->settings_api()->validate_post(); // Get Validated Settings fields in $_POST request.
|
||||
|
||||
//$validated_fields = apply_filters( 'opsd_settings_validate_fields_before_saving', $validated_fields ); //Hook for validated fields.
|
||||
|
||||
// Skip saving specific option, for example in Demo mode.
|
||||
// unset($validated_fields['opsd_start_day_weeek']);
|
||||
|
||||
//$this->settings_api()->save_to_db( $validated_fields ); // Save fields to DB
|
||||
//opsd_show_changes_saved_message();
|
||||
//opsd_show_fixed_message ( __('Done', 'secure-downloads'), 0 ); // Show Message
|
||||
|
||||
// O L D W A Y: Saving Fields Data
|
||||
// update_opsd_option( 'opsd_is_delete_if_deactive'
|
||||
// , OPSD_Settings_API::validate_checkbox_post('opsd_is_delete_if_deactive') );
|
||||
// ( (isset( $_POST['opsd_is_delete_if_deactive'] ))?'On':'Off') );
|
||||
*/
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
public function get_sent_summary( $mail_api, $replace, $validated ) {
|
||||
|
||||
if ( false === $mail_api ) { // Email disabled
|
||||
$mail_api = new OPSD_Emails_API_LinkUser( OPSD_EMAIL_LINK_USER_ID );
|
||||
}
|
||||
|
||||
// Parse for getting email content /////////////////////////////////
|
||||
$mail_api->set_replace( $replace );
|
||||
$content_email = $mail_api->get_content();
|
||||
$subject_email = $mail_api->get_subject();
|
||||
$mail_api->set_replace(); // Reset Email
|
||||
|
||||
$pos = strpos($content_email, '<body' );
|
||||
if ( $pos !== false ) {
|
||||
$pos = strpos($content_email, '>', ++$pos );
|
||||
$content_email = substr($content_email, ++$pos );
|
||||
}
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
ob_start();
|
||||
|
||||
opsd_open_meta_box_section( 'opsd_sent_summary', __('Summary', 'secure-downloads') );
|
||||
|
||||
//debuge($validated,$replace);
|
||||
?><table class="form-table"><tbody><?php
|
||||
|
||||
?><tr><td colspan="2" style="padding-left: 0;font-size: 1.2em;border-bottom: 2px dashed #ddd;line-height: 1.8em;"><?php
|
||||
if ( ! empty ( $validated['opsd_email_to'] ) )
|
||||
echo __( 'Email have sent to', 'secure-downloads' ) . ' <strong>' . $validated['opsd_email_to'] . '</strong> - ';
|
||||
//echo ( $validated['send_copy_to_admin'] == 'On' ) ? ' [' . __('copy to administrator' , 'secure-downloads') . ']' : '';
|
||||
|
||||
if (
|
||||
( isset( $replace[ 'product_summary' ] ) )
|
||||
&& ( isset( $replace[ 'product_expire_date' ] ) )
|
||||
)
|
||||
echo $replace['product_summary'] . ' <code>' . $replace['product_expire_date'] . '</code>';
|
||||
?></td></tr><?php
|
||||
|
||||
// Link
|
||||
$fields = array(
|
||||
'title' => __( 'Link', 'secure-downloads')
|
||||
, 'disabled' => false
|
||||
, 'class' => ''
|
||||
, 'css' => 'width:100%;'
|
||||
, 'placeholder' => ''
|
||||
, 'description' => ''
|
||||
, 'attr' => array()
|
||||
, 'group' => 'advanced'
|
||||
, 'tr_class' => 'opsd_tr_more_margin'
|
||||
, 'only_field' => false
|
||||
, 'description_tag' => 'p'
|
||||
, 'validate_as' => array()
|
||||
, 'value' => ( isset( $replace[ 'product_link' ] ) ) ? $replace['product_link'] : ''
|
||||
);
|
||||
OPSD_Settings_API::field_text_row_static( 'opsd_sent_summary_link', $fields );
|
||||
|
||||
// email
|
||||
$fields = array(
|
||||
'title' => __( 'To', 'secure-downloads')
|
||||
, 'disabled' => false
|
||||
, 'class' => ''
|
||||
, 'css' => 'width:100%;'
|
||||
, 'placeholder' => ''
|
||||
, 'description' => ''
|
||||
, 'attr' => array()
|
||||
, 'group' => 'advanced'
|
||||
, 'tr_class' => ''
|
||||
, 'only_field' => false
|
||||
, 'description_tag' => 'p'
|
||||
, 'validate_as' => array()
|
||||
, 'value' => $validated['opsd_email_to']
|
||||
);
|
||||
OPSD_Settings_API::field_text_row_static( 'opsd_sent_summary_email', $fields );
|
||||
|
||||
// email
|
||||
$fields = array(
|
||||
'title' => __( 'Subject', 'secure-downloads')
|
||||
, 'disabled' => false
|
||||
, 'class' => ''
|
||||
, 'css' => 'width:100%;'
|
||||
, 'placeholder' => '0.0.0.0'
|
||||
, 'description' => ''
|
||||
, 'attr' => array()
|
||||
, 'group' => 'advanced'
|
||||
, 'tr_class' => ''
|
||||
, 'only_field' => false
|
||||
, 'description_tag' => 'p'
|
||||
, 'validate_as' => array()
|
||||
, 'value' => $subject_email
|
||||
);
|
||||
OPSD_Settings_API::field_text_row_static( 'opsd_sent_summary_subject', $fields );
|
||||
|
||||
|
||||
$field = array(
|
||||
'title' => '',
|
||||
'disabled' => false,
|
||||
'class' => '',
|
||||
'css' => '',
|
||||
'placeholder' => '',
|
||||
'type' => 'text',
|
||||
'description' => '',
|
||||
'attr' => array(),
|
||||
'rows' => 10,
|
||||
'cols' => 20,
|
||||
'teeny' => true,
|
||||
'show_visual_tabs' => true,
|
||||
'default_editor' => 'tinymce', // 'tinymce' | 'html' // 'html' is used for the "Text" editor tab.
|
||||
'drag_drop_upload' => false,
|
||||
'show_in_2_cols' => true,
|
||||
'group' => 'general',
|
||||
'tr_class' => '',
|
||||
'only_field' => false,
|
||||
'description_tag' => 'p'
|
||||
, 'value' => $content_email
|
||||
);
|
||||
|
||||
$email_content = OPSD_Settings_API::field_wp_textarea_row_static( 'show_email_content' , $field );
|
||||
|
||||
?></tbody></table><?php
|
||||
|
||||
opsd_close_meta_box_section();
|
||||
/*
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
jQuery( document ).ready(function(){
|
||||
setTimeout(function() {
|
||||
opsd_scroll_to( '#opsd_sent_summary_metabox' );
|
||||
}, 100)
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
*/
|
||||
return ob_get_clean();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public function js() {
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
// Catch data for summary
|
||||
jQuery('#opsd_email_to').on( "keypress", function( event ) {
|
||||
if( event.which != 13) {
|
||||
opsd_generate_send_info();
|
||||
//return false;
|
||||
}
|
||||
});
|
||||
jQuery('#opsd_email_to,#opsd_product_selection,#opsd_product_expire,#opsd_product_ip_lock').on( 'change', function(){
|
||||
opsd_generate_send_info();
|
||||
} );
|
||||
jQuery(document).ready( function(){
|
||||
setTimeout( opsd_generate_send_info , 1000);
|
||||
// opsd_generate_send_info();
|
||||
});
|
||||
// On click submit form
|
||||
jQuery( '.opsd_send_button' ).on( 'click', function() {
|
||||
if ( jQuery( '.opsd_send_button' ).hasClass( 'disabled' ) ) {
|
||||
return false; // Prevent submit form, if button disabled.
|
||||
}
|
||||
jQuery('#opsd_action').val('go_send');
|
||||
jQuery('#opsd_send_links_form<?php //echo $submit_form_name; ?>').trigger( 'submit' );
|
||||
return false;
|
||||
});
|
||||
//Allow enter key on textareas and submit buttons only
|
||||
jQuery(document).on( "keypress", ":input:not(textarea):not([type=submit])", function( event ) {
|
||||
if( event.which == 13) {
|
||||
if ( jQuery( '.opsd_send_button' ).hasClass( 'disabled' ) ) {
|
||||
return false; // Prevent submit form, if button disabled.
|
||||
}
|
||||
//alert('You pressed enter!');
|
||||
jQuery('#opsd_action').val('go_send');
|
||||
jQuery('#opsd_send_links_form<?php //echo $submit_form_name; ?>').trigger( 'submit' );
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
function opsd_generate_send_info() {
|
||||
|
||||
if ( jQuery( '#opsd_email_to' ).length == 0 )
|
||||
return;
|
||||
|
||||
var selected_products = [];
|
||||
var selected_products_val = [];
|
||||
jQuery('#opsd_product_selection :selected').each(function(i, selected){
|
||||
selected_products[i] = jQuery(selected).text().trim();
|
||||
selected_products_val[i] = jQuery(selected).val().trim();
|
||||
});
|
||||
selected_products = selected_products.join( ', ' );
|
||||
selected_products_val = selected_products_val.join( ', ' );
|
||||
if ( '' == selected_products_val ) {
|
||||
jQuery( '.opsd_send_button' ).addClass( 'disabled' );
|
||||
} else {
|
||||
jQuery( '.opsd_send_button' ).removeClass( 'disabled' )
|
||||
}
|
||||
|
||||
jQuery('.opsd_submmary').html('<table class="form-table"><tbody></tbody></table>');
|
||||
|
||||
if ( jQuery( '#opsd_email_to' ).val().trim() != '' ) {
|
||||
jQuery( '.opsd_send_button .opsd_text_hide_mobile' ).html('<?php echo esc_js( __( 'Send', 'secure-downloads' ) ); ?> ');
|
||||
jQuery('.opsd_submmary .form-table tbody').append( '<tr><th style="width:5em;"><?php echo esc_js( __( 'To', 'secure-downloads' ) ); ?></th><td>[' + jQuery( '#opsd_email_to' ).val().trim() + ']</td></tr>' );
|
||||
} else {
|
||||
jQuery( '.opsd_send_button .opsd_text_hide_mobile' ).html('<?php echo esc_js( __( 'Generate', 'secure-downloads' ) ); ?> ');
|
||||
jQuery('.opsd_submmary .form-table tbody').append( '<tr><th colspan="2" style=""><?php echo esc_js( __( 'Generate Secure Link for Download', 'secure-downloads' ) ); ?></th></tr>' );
|
||||
}
|
||||
|
||||
jQuery('.opsd_submmary .form-table tbody').append( '<tr><th style="width:5em;"><?php echo esc_js( __( 'Products', 'secure-downloads' ) ); ?></th><td>[' + selected_products.trim() + ']</td></tr>' );
|
||||
jQuery('.opsd_submmary .form-table tbody').append( '<tr><th style="width:5em;"><?php echo esc_js( __( 'Expire', 'secure-downloads' ) ); ?></th><td>[' + jQuery('#opsd_product_expire :selected').text().trim() + ']</td></tr>' );
|
||||
if ( jQuery('#opsd_product_ip_lock').val().trim() != '' )
|
||||
jQuery('.opsd_submmary .form-table tbody').append( '<tr><th style="width:5em;"><?php echo esc_js( __( 'IP Loc', 'secure-downloads' ) ); ?></th><td>' + jQuery('#opsd_product_ip_lock').val().trim() + '</td></tr>' );
|
||||
|
||||
jQuery( ".opsd_submmary" ).trigger( "generate_send_info" , [] ); // Action hook
|
||||
}
|
||||
|
||||
</script>
|
||||
<?php
|
||||
}
|
||||
|
||||
|
||||
public function css() {
|
||||
?>
|
||||
<style type="text/css">
|
||||
.opsd_link_container {
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
.opsd_link_container #opsd_email_to {
|
||||
flex: 65% 1 0;
|
||||
font-size: 1.4em;
|
||||
font-weight: 600;
|
||||
height: 43px;
|
||||
line-height: 2;
|
||||
/*max-width: 25rem;*/
|
||||
min-width: 0;
|
||||
padding: 6px 10px;
|
||||
}
|
||||
.opsd_link_container .opsd_generate_button{
|
||||
flex: 10% 0 0;
|
||||
margin: 0 0 0 1.5em;
|
||||
line-height: 34px;
|
||||
font-size: 1.2em;
|
||||
text-align: center;
|
||||
height: 43px;
|
||||
padding: 5px 20px;
|
||||
box-shadow: none;
|
||||
}
|
||||
.opsd_tr_more_margin th,
|
||||
.opsd_tr_more_margin td {
|
||||
padding-top: 30px !important;
|
||||
}
|
||||
.metabox-holder select option{
|
||||
padding:0.7em 20px;
|
||||
height:1.5em;
|
||||
border-bottom:1px solid #ccc;
|
||||
}
|
||||
select.opsd_product_selection,
|
||||
#select_opsd_form {
|
||||
margin: 30px 0 0;
|
||||
width:100%;
|
||||
|
||||
max-width: 100%;
|
||||
height: 2.2em;
|
||||
/*line-height: 2.2em;*/
|
||||
font-size: 1.2em;
|
||||
}
|
||||
/*#opsd_email_to { */
|
||||
/* width: 75%;*/
|
||||
/* font-size: 1.4em;*/
|
||||
/* font-weight: 600;*/
|
||||
/* height: 2.1em; */
|
||||
/*}*/
|
||||
/*.opsd_page .opsd_send_button { */
|
||||
/* font-size: 1.4em;*/
|
||||
/* height: 2.04em;*/
|
||||
/* font-weight: 600;*/
|
||||
/* line-height: 1.91em;*/
|
||||
/* width: 100%;*/
|
||||
/* overflow: hidden;*/
|
||||
/* text-align: center;*/
|
||||
/* padding:0;*/
|
||||
/*}*/
|
||||
/* iPad mini and all iPhones and other Mobile Devices */
|
||||
@media (max-width: 782px) {
|
||||
.opsd_page .opsd_copy_2_clipboard_button,
|
||||
.opsd_page .opsd_send_button {
|
||||
line-height: 2.15;
|
||||
/* padding: 2px; */
|
||||
/* margin-top: 1px;*/
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
add_action('opsd_menu_created', array( new OPSD_Page_Single() , '__construct') ); // Executed after creation of Menu
|
||||
|
||||
|
||||
|
||||
|
||||
//function opsd_gotopages() {
|
||||
//
|
||||
// wp_redirect( admin_url('admin.php?page=opsd' ) );
|
||||
//}
|
||||
//add_action('wp_dashboard_setup', 'opsd_gotopages');
|
||||
|
||||
|
||||
function opsd_show_copy_button(){
|
||||
|
||||
if (
|
||||
( ( isset( $_SERVER['SCRIPT_FILENAME'] ) ) && ( strpos( $_SERVER['SCRIPT_FILENAME'], '/email-reminders/www' ) !== false ) )
|
||||
|| ( ( isset( $_SERVER['SCRIPT_FILENAME'] ) ) && ( strpos( $_SERVER['SCRIPT_FILENAME'], 'wpbookingcalendar.com' ) !== false ) )
|
||||
|| ( ( isset( $_SERVER['HTTP_HOST'] ) ) && ( strpos( $_SERVER['HTTP_HOST'], 'wpbookingcalendar.com' ) !== false ) )
|
||||
){
|
||||
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
?>
|
||||
<div class="opsd_link_container wpdevelop" style="margin: 0 0 2em;justify-content: flex-end;">
|
||||
<a class="button button-primary opsd_copy_2_clipboard_button opsd_generate_button js-copy-email-btn" style="margin: 0;"
|
||||
href="javascript:void(0)" title="<?php _e('Copy to clipboard' , 'secure-downloads') ?>"
|
||||
><span class="opsd_text_hide_mobile0 btn_text_inside"><?php _e('Copy to clipboard' , 'secure-downloads') ?> </span><span class="glyphicon glyphicon-copy" aria-hidden="true"></span></a>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
copyEmailBtn = document.querySelector('.js-copy-email-btn');
|
||||
|
||||
copyEmailBtn.addEventListener('click', function(event) {
|
||||
|
||||
var inputid = 'show_email_content';
|
||||
var content;
|
||||
var editor = tinyMCE.get(inputid);
|
||||
if (editor) {
|
||||
// Ok, the active tab is Visual
|
||||
content = editor.getContent();
|
||||
} else {
|
||||
// The active tab is HTML, so just query the textarea
|
||||
content = $('#'+inputid).val();
|
||||
}
|
||||
console.log( content );
|
||||
|
||||
// Now get it as HTML (original here https://stackoverflow.com/questions/34191780/javascript-copy-string-to-clipboard-as-text-html )
|
||||
|
||||
// Create container for the HTML
|
||||
// [1]
|
||||
var container = document.createElement('div')
|
||||
container.innerHTML = content
|
||||
|
||||
// Hide element
|
||||
// [2]
|
||||
container.style.position = 'fixed'
|
||||
container.style.pointerEvents = 'none'
|
||||
container.style.opacity = 0
|
||||
|
||||
// Detect all style sheets of the page
|
||||
var activeSheets = Array.prototype.slice.call(document.styleSheets)
|
||||
.filter(function (sheet) {
|
||||
return !sheet.disabled
|
||||
})
|
||||
|
||||
// Mount the container to the DOM to make `contentWindow` available
|
||||
// [3]
|
||||
document.body.appendChild(container)
|
||||
|
||||
// Copy to clipboard
|
||||
// [4]
|
||||
window.getSelection().removeAllRanges()
|
||||
|
||||
var range = document.createRange()
|
||||
range.selectNode(container)
|
||||
window.getSelection().addRange(range)
|
||||
|
||||
// [5.1]
|
||||
document.execCommand('copy')
|
||||
|
||||
// [5.2]
|
||||
for (var i = 0; i < activeSheets.length; i++) activeSheets[i].disabled = true
|
||||
|
||||
// [5.3]
|
||||
|
||||
//if ( ! navigator.clipboard ){
|
||||
|
||||
try{
|
||||
var successful = document.execCommand( 'copy' );
|
||||
var msg = successful ? 'successful' : 'unsuccessful';
|
||||
//console.log( 'Fallback: Copying text command was ' + msg );
|
||||
|
||||
var btn_today = new Date();
|
||||
var btn_date = btn_today.getFullYear()+'-'+(btn_today.getMonth()+1)+'-'+btn_today.getDate();
|
||||
var btn_time = btn_today.getHours() + ":" + btn_today.getMinutes() + ":" + btn_today.getSeconds();
|
||||
var btn_dateTime = ' '+btn_time;
|
||||
jQuery( '.js-copy-email-btn .btn_text_inside').html( 'Copied' + btn_dateTime + ' ' );
|
||||
|
||||
opsd_scroll_to( jQuery( '#opsd_sent_summary_subject' ) );
|
||||
|
||||
} catch ( err ){
|
||||
//console.error( 'Fallback: Oops, unable to copy', err );
|
||||
}
|
||||
// } else {
|
||||
// var type = "text/html";
|
||||
// var blob = new Blob([content], { type });
|
||||
// var data = [new ClipboardItem({ [type]: blob })];
|
||||
//
|
||||
// navigator.clipboard.write(data).then(
|
||||
// function () {
|
||||
// /* success */
|
||||
// console.log( 'Async: Copying to clipboard was successful!' );
|
||||
// },
|
||||
// function (err) {
|
||||
// /* failure */
|
||||
// console.error( 'Async: Could not copy text: ', err );
|
||||
// }
|
||||
// );
|
||||
// }
|
||||
|
||||
|
||||
// [5.4]
|
||||
for (var i = 0; i < activeSheets.length; i++) activeSheets[i].disabled = false
|
||||
|
||||
// Remove the container
|
||||
// [6]
|
||||
document.body.removeChild(container)
|
||||
|
||||
// opsd_copy_text_to_clipboard( content );
|
||||
});
|
||||
|
||||
|
||||
|
||||
function opsd_fallback_copy_text_to_clipboard( text ){
|
||||
var textArea = document.createElement( "textarea" );
|
||||
textArea.value = text;
|
||||
|
||||
// Avoid scrolling to bottom
|
||||
textArea.style.top = "0";
|
||||
textArea.style.left = "0";
|
||||
textArea.style.position = "fixed";
|
||||
|
||||
document.body.appendChild( textArea );
|
||||
textArea.focus();
|
||||
textArea.select();
|
||||
|
||||
try{
|
||||
var successful = document.execCommand( 'copy' );
|
||||
var msg = successful ? 'successful' : 'unsuccessful';
|
||||
console.log( 'Fallback: Copying text command was ' + msg );
|
||||
} catch ( err ){
|
||||
console.error( 'Fallback: Oops, unable to copy', err );
|
||||
}
|
||||
|
||||
document.body.removeChild( textArea );
|
||||
}
|
||||
|
||||
|
||||
function opsd_copy_text_to_clipboard( text ){
|
||||
if ( !navigator.clipboard ){
|
||||
opsd_fallback_copy_text_to_clipboard( text );
|
||||
return;
|
||||
}
|
||||
navigator.clipboard.writeText( text ).then( function (){
|
||||
console.log( 'Async: Copying to clipboard was successful!' );
|
||||
}, function ( err ){
|
||||
console.error( 'Async: Could not copy text: ', err );
|
||||
} );
|
||||
}
|
||||
|
||||
</script>
|
||||
<?php
|
||||
}
|
||||
Reference in New Issue
Block a user