<?php if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly if( ! class_exists('acf_location_attachment') ) : class acf_location_attachment extends acf_location { /* * __construct * * This function will setup the class functionality * * @type function * @date 5/03/2014 * @since 5.0.0 * * @param n/a * @return n/a */ function initialize() { // vars $this->name = 'attachment'; $this->label = __("Attachment",'acf'); $this->category = 'forms'; } /* * rule_match * * This function is used to match this location $rule to the current $screen * * @type function * @date 3/01/13 * @since 3.5.7 * * @param $match (boolean) * @param $rule (array) * @return $options (array) */ function rule_match( $result, $rule, $screen ) { // vars $attachment = acf_maybe_get( $screen, 'attachment' ); // validate if( !$attachment ) return false; // get attachment mime type $mime_type = get_post_mime_type( $attachment ); // no specific mime if( !strpos($rule['value'], '/') ) { // explode into [0] => type, [1] => mime $bits = explode('/', $mime_type); // if type matches, fake the $mime_type to match if( $rule['value'] === $bits[0] ) { $mime_type = $rule['value']; } } // match return $this->compare( $mime_type, $rule ); } /* * rule_operators * * This function returns the available values for this rule type * * @type function * @date 30/5/17 * @since 5.6.0 * * @param n/a * @return (array) */ function rule_values( $choices, $rule ) { // vars $mimes = get_allowed_mime_types(); $choices = array( 'all' => __('All', 'acf') ); // loop foreach( $mimes as $type => $mime ) { $group = current( explode('/', $mime) ); $choices[ $group ][ $group ] = sprintf( __('All %s formats', 'acf'), $group); $choices[ $group ][ $mime ] = "$type ($mime)"; } // return return $choices; } } // initialize acf_register_location_rule( 'acf_location_attachment' ); endif; // class_exists check ?>