Current path: home/webdevt/www/wdp/wp-content/plugins/supportcandy/includes/admin/settings/general-settings/
?? Go up: /home/webdevt/www/wdp/wp-content/plugins/supportcandy/includes/admin/settings
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly!
}
if ( ! class_exists( 'WPSC_GS_File_Attachments' ) ) :
final class WPSC_GS_File_Attachments {
/**
* Initialize this class
*
* @return void
*/
public static function init() {
// User interface.
add_action( 'wp_ajax_wpsc_get_gs_file_attachments', array( __CLASS__, 'load_settings_ui' ) );
add_action( 'wp_ajax_wpsc_set_gs_file_attachments', array( __CLASS__, 'save_settings' ) );
add_action( 'wp_ajax_wpsc_reset_gs_file_attachments', array( __CLASS__, 'reset_settings' ) );
// File upload js function.
add_action( 'wpsc_js_ticket_form_functions', array( __CLASS__, 'js_upload_function' ) );
add_action( 'wpsc_js_my_profile_functions', array( __CLASS__, 'js_upload_function' ) );
add_action( 'wpsc_js_it_functions', array( __CLASS__, 'js_upload_function' ) );
add_action( 'wpsc_js_customer_list_functions', array( __CLASS__, 'js_upload_function' ) );
}
/**
* Reset settings
*
* @return void
*/
public static function reset() {
$allowed_extensions = 'jpg, jpeg, png, gif, pdf, doc, docx, ppt, pptx, pps, ppsx, odt, xls, xlsx, mp3, m4a, ogg, wav, mp4, m4v, mov, wmv, avi, mpg, ogv, 3gp, 3g2, zip, eml';
$file_attachments = apply_filters(
'wpsc_gs_file_attachments',
array(
'attachments-max-filesize' => 20,
'allowed-file-extensions' => $allowed_extensions,
'allowed-file-ext-mimes' => self::get_mime_types_by_extensions( $allowed_extensions ),
'mime-exceptions' => array(),
'image-download-behaviour' => 'open-browser',
)
);
update_option( 'wpsc-gs-file-attachments', $file_attachments );
}
/**
* Settings user interface
*
* @return void
*/
public static function load_settings_ui() {
if ( ! WPSC_Functions::is_site_admin() ) {
wp_send_json_error( __( 'Unauthorized access!', 'supportcandy' ), 401 );
}
$settings = get_option( 'wpsc-gs-file-attachments', array() );?>
<form action="#" onsubmit="return false;" class="wpsc-frm-gs-fa">
<div class="wpsc-dock-container">
<?php
printf(
/* translators: Click here to see the documentation */
esc_attr__( '%s to see the documentation!', 'supportcandy' ),
'<a href="https://supportcandy.net/docs/file-attachments/" target="_blank">' . esc_attr__( 'Click here', 'supportcandy' ) . '</a>'
);
?>
</div>
<div class="wpsc-input-group">
<div class="label-container">
<label for=""><?php esc_attr_e( 'Attachment max file size(mb)', 'supportcandy' ); ?></label>
</div>
<input id="wpsc-attachfile" type="text" name="attachments-max-filesize" value="<?php echo intval( $settings['attachments-max-filesize'] ); ?>">
</div>
<div class="wpsc-input-group">
<div class="label-container">
<label for=""><?php esc_attr_e( 'Allowed file extensions(comma separated)', 'supportcandy' ); ?></label>
</div>
<input id="wpsc-allowed-file" type="text" name="allowed-file-extensions" value="<?php echo esc_attr( $settings['allowed-file-extensions'] ); ?>">
</div>
<div class="wpsc-input-group">
<div class="label-container">
<label for=""><?php esc_attr_e( 'MIME exceptions (One per line)', 'supportcandy' ); ?></label>
</div>
<small style="padding-bottom: 5px;"><?php esc_attr_e( 'Add files in format, extension: MIME type. For example, png: image/png.', 'supportcandy' ); ?></small>
<?php $mime_exceptions = $settings['mime-exceptions'] ? implode( PHP_EOL, $settings['mime-exceptions'] ) : ''; ?>
<textarea name="wpsc-mime-exceptions" rows="5"><?php echo esc_attr( $mime_exceptions ); ?></textarea>
</div>
<div class="wpsc-input-group">
<div class="label-container">
<label for=""><?php esc_attr_e( 'Download behaviour', 'supportcandy' ); ?></label>
</div>
<select id="wpsc-db" name="image-download-behaviour">
<option <?php selected( $settings['image-download-behaviour'], 'open-browser' ); ?> value="open-browser"><?php esc_attr_e( 'Try opening in browser', 'supportcandy' ); ?></option>
<option <?php selected( $settings['image-download-behaviour'], 'download' ); ?> value="download"><?php esc_attr_e( 'Download', 'supportcandy' ); ?></option>
</select>
</div>
<?php do_action( 'wpsc_gs_file_attachments' ); ?>
<input type="hidden" name="action" value="wpsc_set_gs_file_attachments">
<input type="hidden" name="_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wpsc_set_gs_file_attachments' ) ); ?>">
</form>
<div class="setting-footer-actions">
<button
class="wpsc-button normal primary margin-right"
onclick="wpsc_set_gs_file_attachments(this);">
<?php esc_attr_e( 'Submit', 'supportcandy' ); ?></button>
<button
class="wpsc-button normal secondary"
onclick="wpsc_reset_gs_file_attachments(this, '<?php echo esc_attr( wp_create_nonce( 'wpsc_reset_gs_file_attachments' ) ); ?>');">
<?php esc_attr_e( 'Reset default', 'supportcandy' ); ?></button>
</div>
<?php
wp_die();
}
/**
* Save settings
*
* @return void
*/
public static function save_settings() {
if ( check_ajax_referer( 'wpsc_set_gs_file_attachments', '_ajax_nonce', false ) != 1 ) {
wp_send_json_error( 'Unauthorised request!', 401 );
}
if ( ! WPSC_Functions::is_site_admin() ) {
wp_send_json_error( __( 'Unauthorized access!', 'supportcandy' ), 401 );
}
$allowed_extensions = isset( $_POST['allowed-file-extensions'] ) ? sanitize_text_field( wp_unslash( $_POST['allowed-file-extensions'] ) ) : '';
$mime_exceptions = isset( $_POST['wpsc-mime-exceptions'] ) ? sanitize_textarea_field( wp_unslash( $_POST['wpsc-mime-exceptions'] ) ) : '';
$mime_exceptions = array_filter( array_map( 'sanitize_text_field', explode( PHP_EOL, $mime_exceptions ) ) );
$file_attachments = apply_filters(
'wpsc_set_gs_file_attachments',
array(
'attachments-max-filesize' => isset( $_POST['attachments-max-filesize'] ) ? intval( $_POST['attachments-max-filesize'] ) : 20,
'allowed-file-extensions' => $allowed_extensions,
'allowed-file-ext-mimes' => self::get_mime_types_by_extensions( $allowed_extensions ),
'mime-exceptions' => $mime_exceptions,
'image-download-behaviour' => isset( $_POST['image-download-behaviour'] ) ? sanitize_text_field( wp_unslash( $_POST['image-download-behaviour'] ) ) : 'open-browser',
)
);
update_option( 'wpsc-gs-file-attachments', $file_attachments );
wp_die();
}
/**
* Reset settings to default
*
* @return void
*/
public static function reset_settings() {
if ( check_ajax_referer( 'wpsc_reset_gs_file_attachments', '_ajax_nonce', false ) != 1 ) {
wp_send_json_error( 'Unauthorised request!', 401 );
}
if ( ! WPSC_Functions::is_site_admin() ) {
wp_send_json_error( __( 'Unauthorized access!', 'supportcandy' ), 401 );
}
self::reset();
wp_die();
}
/**
* Print file upload JS function with reCaptcha compatibility
*
* @return void
*/
public static function js_upload_function() {
$recaptcha = get_option( 'wpsc-recaptcha-settings' );
?>
/**
* Upload given file
*/
function wpsc_file_upload(fileAttachment, uniqueId, slug, single = false) {
var file_name_split = fileAttachment.name.split('.');
var file_extension = file_name_split[file_name_split.length-1];
file_extension = file_extension.toLowerCase();
<?php
$file_settings = get_option( 'wpsc-gs-file-attachments' );
?>
if (jQuery.inArray(file_extension, supportcandy.allowed_file_extensions) < 0) {
alert("<?php esc_attr_e( 'Attached file type not allowed!', 'supportcandy' ); ?>");
return;
}
var current_filesize = fileAttachment.size/1000000;
if (current_filesize > <?php echo intval( $file_settings['attachments-max-filesize'] ); ?>) {
<?php /* translators: %1$s: attachment max file size in MB */ ?>
alert("<?php printf( esc_attr__( 'File size exceeds allowed limit (%1$s MB)!', 'supportcandy' ), intval( $file_settings['attachments-max-filesize'] ) ); ?>");
return;
}
var htmlSnippet = jQuery('.wpsc-page-snippets .wpsc-editor-attachment').first().prop('outerHTML');
var attachmentContainer = jQuery('.wpsc-editor-attachment-container.' + uniqueId).append(htmlSnippet);
var attachment = attachmentContainer.children().last();
attachment.find('.attachment-label').text(fileAttachment.name);
attachment.find('.attachment-waiting').circleProgress({
startAngle: -Math.PI / 4 * 3,
size: 20,
value: 0.0,
lineCap: 'round',
fill: { gradient: ['#ff1e41', '#ff5f43'] }
});
attachment.find('.attachment-remove').data({ single, uniqueid: uniqueId });
// Append form data
var dataform = new FormData();
dataform.append('wpscFileAttachment', fileAttachment);
dataform.append('action', 'wpsc_file_upload');
dataform.append('_ajax_nonce', '<?php echo esc_attr( wp_create_nonce( 'wpsc_file_upload' ) ); ?>');
<?php
if ( $recaptcha['allow-recaptcha'] === 1 && $recaptcha['recaptcha-version'] == 3 && $recaptcha['recaptcha-site-key'] && $recaptcha['recaptcha-secret-key'] ) {
?>
grecaptcha.ready(function() {
grecaptcha.execute('<?php echo esc_attr( $recaptcha['recaptcha-site-key'] ); ?>', {action: 'file_upload'}).then(function(token) {
dataform.append('g-recaptcha-response', token);
jQuery.ajax({
url: supportcandy.ajax_url,
type: 'POST',
data: dataform,
xhr: function () {
var myXhr = jQuery.ajaxSettings.xhr();
if (myXhr.upload) {
myXhr.upload.addEventListener('progress', wpscAttachmentUploadProgress, false);
myXhr.upload.attachment = attachment;
myXhr.attachment = attachment;
myXhr.uniqueId = uniqueId;
myXhr.single = single;
}
return myXhr;
},
processData: false,
contentType: false,
error: function (data) {
// Upload not accepted
attachment.removeClass('upload-waiting');
attachment.addClass('upload-error');
},
success: function (response, textStatus, xhr) {
if (xhr.status === 200) {
// Upload created
var attachmentInput = '<input type="hidden" name="' + slug + '[]" value="' + response.id + '"/>';
attachment.append(attachmentInput);
attachment.removeClass('upload-waiting');
attachment.addClass('upload-success');
if(single) {
jQuery( 'input.' + uniqueId ).hide();
}
} else {
// Upload not accepted
attachment.removeClass('upload-waiting');
attachment.addClass('upload-error');
}
}
});
});
});
<?php
} else {
?>
jQuery.ajax({
url: supportcandy.ajax_url,
type: 'POST',
data: dataform,
xhr: function () {
var myXhr = jQuery.ajaxSettings.xhr();
if (myXhr.upload) {
myXhr.upload.addEventListener('progress', wpscAttachmentUploadProgress, false);
myXhr.upload.attachment = attachment;
myXhr.attachment = attachment;
myXhr.uniqueId = uniqueId;
myXhr.single = single;
}
return myXhr;
},
processData: false,
contentType: false,
error: function (data) {
// Upload not accepted
attachment.removeClass('upload-waiting');
attachment.addClass('upload-error');
},
success: function (response, textStatus, xhr) {
if (xhr.status === 200) {
// Upload created
var attachmentInput = '<input type="hidden" name="' + slug + '[]" value="' + response.id + '"/>';
attachment.append(attachmentInput);
attachment.removeClass('upload-waiting');
attachment.addClass('upload-success');
if(single) {
jQuery( 'input.' + uniqueId ).hide();
}
} else {
// Upload not accepted
attachment.removeClass('upload-waiting');
attachment.addClass('upload-error');
}
}
});
<?php
}
?>
}
<?php
}
/**
* Get MIME type extensions
*
* @param string $extensions - extension strings.
* @return array
*/
public static function get_mime_types_by_extensions( $extensions ) {
require_once WPSC_ABSPATH . 'includes/class-wpsc-mime-types.php';
$exts = $extensions ? explode( ',', $extensions ) : array();
$exts = array_map( 'trim', $exts );
$mimes = array();
foreach ( $exts as $key => $value ) {
$mime = WPSC_MIME_TYPES::get_mime_type( $value );
if ( $mime ) {
$mimes[ $value ] = $mime;
}
}
return $mimes;
}
}
endif;
WPSC_GS_File_Attachments::init();