first commit
This commit is contained in:
@@ -0,0 +1,204 @@
|
||||
<?php
|
||||
|
||||
if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
||||
|
||||
if( ! class_exists('ACF_Media') ) :
|
||||
|
||||
class ACF_Media {
|
||||
|
||||
|
||||
/*
|
||||
* __construct
|
||||
*
|
||||
* Initialize filters, action, variables and includes
|
||||
*
|
||||
* @type function
|
||||
* @date 23/06/12
|
||||
* @since 5.0.0
|
||||
*
|
||||
* @param N/A
|
||||
* @return N/A
|
||||
*/
|
||||
|
||||
function __construct() {
|
||||
|
||||
// actions
|
||||
add_action('acf/enqueue_scripts', array($this, 'enqueue_scripts'));
|
||||
add_action('acf/save_post', array($this, 'save_files'), 5, 1);
|
||||
|
||||
|
||||
// filters
|
||||
add_filter('wp_handle_upload_prefilter', array($this, 'handle_upload_prefilter'), 10, 1);
|
||||
|
||||
|
||||
// ajax
|
||||
add_action('wp_ajax_query-attachments', array($this, 'wp_ajax_query_attachments'), -1);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* enqueue_scripts
|
||||
*
|
||||
* Localizes data
|
||||
*
|
||||
* @date 27/4/18
|
||||
* @since 5.6.9
|
||||
*
|
||||
* @param void
|
||||
* @return void
|
||||
*/
|
||||
|
||||
function enqueue_scripts(){
|
||||
|
||||
// localize
|
||||
acf_localize_data(array(
|
||||
'mimeTypeIcon' => wp_mime_type_icon(),
|
||||
'mimeTypes' => get_allowed_mime_types()
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* handle_upload_prefilter
|
||||
*
|
||||
* description
|
||||
*
|
||||
* @type function
|
||||
* @date 16/02/2015
|
||||
* @since 5.1.5
|
||||
*
|
||||
* @param $post_id (int)
|
||||
* @return $post_id (int)
|
||||
*/
|
||||
|
||||
function handle_upload_prefilter( $file ) {
|
||||
|
||||
// bail early if no acf field
|
||||
if( empty($_POST['_acfuploader']) ) {
|
||||
return $file;
|
||||
}
|
||||
|
||||
|
||||
// load field
|
||||
$field = acf_get_field( $_POST['_acfuploader'] );
|
||||
if( !$field ) {
|
||||
return $file;
|
||||
}
|
||||
|
||||
|
||||
// get errors
|
||||
$errors = acf_validate_attachment( $file, $field, 'upload' );
|
||||
|
||||
|
||||
/**
|
||||
* Filters the errors for a file before it is uploaded to WordPress.
|
||||
*
|
||||
* @date 16/02/2015
|
||||
* @since 5.1.5
|
||||
*
|
||||
* @param array $errors An array of errors.
|
||||
* @param array $file An array of data for a single file.
|
||||
* @param array $field The field array.
|
||||
*/
|
||||
$errors = apply_filters( "acf/upload_prefilter/type={$field['type']}", $errors, $file, $field );
|
||||
$errors = apply_filters( "acf/upload_prefilter/name={$field['_name']}", $errors, $file, $field );
|
||||
$errors = apply_filters( "acf/upload_prefilter/key={$field['key']}", $errors, $file, $field );
|
||||
$errors = apply_filters( "acf/upload_prefilter", $errors, $file, $field );
|
||||
|
||||
|
||||
// append error
|
||||
if( !empty($errors) ) {
|
||||
$file['error'] = implode("\n", $errors);
|
||||
}
|
||||
|
||||
|
||||
// return
|
||||
return $file;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* save_files
|
||||
*
|
||||
* This function will save the $_FILES data
|
||||
*
|
||||
* @type function
|
||||
* @date 24/10/2014
|
||||
* @since 5.0.9
|
||||
*
|
||||
* @param $post_id (int)
|
||||
* @return $post_id (int)
|
||||
*/
|
||||
|
||||
function save_files( $post_id = 0 ) {
|
||||
|
||||
// bail early if no $_FILES data
|
||||
if( empty($_FILES['acf']['name']) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// upload files
|
||||
acf_upload_files();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* wp_ajax_query_attachments
|
||||
*
|
||||
* description
|
||||
*
|
||||
* @type function
|
||||
* @date 26/06/2015
|
||||
* @since 5.2.3
|
||||
*
|
||||
* @param $post_id (int)
|
||||
* @return $post_id (int)
|
||||
*/
|
||||
|
||||
function wp_ajax_query_attachments() {
|
||||
|
||||
add_filter('wp_prepare_attachment_for_js', array($this, 'wp_prepare_attachment_for_js'), 10, 3);
|
||||
|
||||
}
|
||||
|
||||
function wp_prepare_attachment_for_js( $response, $attachment, $meta ) {
|
||||
|
||||
// append attribute
|
||||
$response['acf_errors'] = false;
|
||||
|
||||
|
||||
// bail early if no acf field
|
||||
if( empty($_POST['query']['_acfuploader']) ) {
|
||||
return $response;
|
||||
}
|
||||
|
||||
|
||||
// load field
|
||||
$field = acf_get_field( $_POST['query']['_acfuploader'] );
|
||||
if( !$field ) {
|
||||
return $response;
|
||||
}
|
||||
|
||||
|
||||
// get errors
|
||||
$errors = acf_validate_attachment( $response, $field, 'prepare' );
|
||||
|
||||
|
||||
// append errors
|
||||
if( !empty($errors) ) {
|
||||
$response['acf_errors'] = implode('<br />', $errors);
|
||||
}
|
||||
|
||||
|
||||
// return
|
||||
return $response;
|
||||
}
|
||||
}
|
||||
|
||||
// instantiate
|
||||
acf_new_instance('ACF_Media');
|
||||
|
||||
endif; // class_exists check
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user