Sync plugins from current page
Signed-off-by: Adrian Nöthlich <git@promasu.tech>
This commit is contained in:
@@ -0,0 +1,472 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* acf_filter_attrs
|
||||
*
|
||||
* Filters out empty attrs from the provided array.
|
||||
*
|
||||
* @date 11/6/19
|
||||
* @since 5.8.1
|
||||
*
|
||||
* @param array $attrs The array of attrs.
|
||||
* @return array
|
||||
*/
|
||||
function acf_filter_attrs( $attrs ) {
|
||||
|
||||
// Filter out empty attrs but allow "0" values.
|
||||
$filtered = array_filter( $attrs, 'acf_not_empty' );
|
||||
|
||||
// Correct specific attributes (required="required").
|
||||
foreach( array('required', 'readonly', 'disabled', 'multiple') as $key ) {
|
||||
unset($filtered[ $key ]);
|
||||
if( !empty($attrs[ $key ]) ) {
|
||||
$filtered[ $key ] = $key;
|
||||
}
|
||||
}
|
||||
return $filtered;
|
||||
}
|
||||
|
||||
/**
|
||||
* acf_esc_attrs
|
||||
*
|
||||
* Generated valid HTML from an array of attrs.
|
||||
*
|
||||
* @date 11/6/19
|
||||
* @since 5.8.1
|
||||
*
|
||||
* @param array $attrs The array of attrs.
|
||||
* @return string
|
||||
*/
|
||||
function acf_esc_attrs( $attrs ) {
|
||||
$html = '';
|
||||
|
||||
// Loop over attrs and validate data types.
|
||||
foreach( $attrs as $k => $v ) {
|
||||
|
||||
// String (but don't trim value).
|
||||
if( is_string($v) && ($k !== 'value') ) {
|
||||
$v = trim($v);
|
||||
|
||||
// Boolean
|
||||
} elseif( is_bool($v) ) {
|
||||
$v = $v ? 1 : 0;
|
||||
|
||||
// Object
|
||||
} elseif( is_array($v) || is_object($v) ) {
|
||||
$v = json_encode($v);
|
||||
}
|
||||
|
||||
// Generate HTML.
|
||||
$html .= sprintf( ' %s="%s"', esc_attr($k), esc_attr($v) );
|
||||
}
|
||||
|
||||
// Return trimmed.
|
||||
return trim( $html );
|
||||
}
|
||||
|
||||
/**
|
||||
* acf_esc_html
|
||||
*
|
||||
* Encodes <script> tags for safe HTML output.
|
||||
*
|
||||
* @date 12/6/19
|
||||
* @since 5.8.1
|
||||
*
|
||||
* @param string $string
|
||||
* @return string
|
||||
*/
|
||||
function acf_esc_html( $string = '' ) {
|
||||
$string = strval($string);
|
||||
|
||||
// Encode "<script" tags to invalidate DOM elements.
|
||||
if( strpos($string, '<script') !== false ) {
|
||||
$string = str_replace('<script', htmlspecialchars('<script'), $string);
|
||||
$string = str_replace('</script', htmlspecialchars('</script'), $string);
|
||||
}
|
||||
return $string;
|
||||
}
|
||||
|
||||
/**
|
||||
* acf_html_input
|
||||
*
|
||||
* Returns the HTML of an input.
|
||||
*
|
||||
* @date 13/6/19
|
||||
* @since 5.8.1
|
||||
*
|
||||
* @param array $attrs The array of attrs.
|
||||
* @return string
|
||||
*/
|
||||
//function acf_html_input( $attrs = array() ) {
|
||||
// return sprintf( '<input %s/>', acf_esc_attrs($attrs) );
|
||||
//}
|
||||
|
||||
/**
|
||||
* acf_hidden_input
|
||||
*
|
||||
* Renders the HTML of a hidden input.
|
||||
*
|
||||
* @date 3/02/2014
|
||||
* @since 5.0.0
|
||||
*
|
||||
* @param array $attrs The array of attrs.
|
||||
* @return string
|
||||
*/
|
||||
function acf_hidden_input( $attrs = array() ) {
|
||||
echo acf_get_hidden_input( $attrs );
|
||||
}
|
||||
|
||||
/**
|
||||
* acf_get_hidden_input
|
||||
*
|
||||
* Returns the HTML of a hidden input.
|
||||
*
|
||||
* @date 3/02/2014
|
||||
* @since 5.0.0
|
||||
*
|
||||
* @param array $attrs The array of attrs.
|
||||
* @return string
|
||||
*/
|
||||
function acf_get_hidden_input( $attrs = array() ) {
|
||||
return sprintf( '<input type="hidden" %s/>', acf_esc_attrs($attrs) );
|
||||
}
|
||||
|
||||
/**
|
||||
* acf_text_input
|
||||
*
|
||||
* Renders the HTML of a text input.
|
||||
*
|
||||
* @date 3/02/2014
|
||||
* @since 5.0.0
|
||||
*
|
||||
* @param array $attrs The array of attrs.
|
||||
* @return string
|
||||
*/
|
||||
function acf_text_input( $attrs = array() ) {
|
||||
echo acf_get_text_input( $attrs );
|
||||
}
|
||||
|
||||
/**
|
||||
* acf_get_text_input
|
||||
*
|
||||
* Returns the HTML of a text input.
|
||||
*
|
||||
* @date 3/02/2014
|
||||
* @since 5.0.0
|
||||
*
|
||||
* @param array $attrs The array of attrs.
|
||||
* @return string
|
||||
*/
|
||||
function acf_get_text_input( $attrs = array() ) {
|
||||
$attrs = wp_parse_args($attrs, array(
|
||||
'type' => 'text'
|
||||
));
|
||||
return sprintf( '<input %s/>', acf_esc_attrs($attrs) );
|
||||
}
|
||||
|
||||
/**
|
||||
* acf_file_input
|
||||
*
|
||||
* Renders the HTML of a file input.
|
||||
*
|
||||
* @date 3/02/2014
|
||||
* @since 5.0.0
|
||||
*
|
||||
* @param array $attrs The array of attrs.
|
||||
* @return string
|
||||
*/
|
||||
function acf_file_input( $attrs = array() ) {
|
||||
echo acf_get_file_input( $attrs );
|
||||
}
|
||||
|
||||
/**
|
||||
* acf_get_file_input
|
||||
*
|
||||
* Returns the HTML of a file input.
|
||||
*
|
||||
* @date 3/02/2014
|
||||
* @since 5.0.0
|
||||
*
|
||||
* @param array $attrs The array of attrs.
|
||||
* @return string
|
||||
*/
|
||||
function acf_get_file_input( $attrs = array() ) {
|
||||
return sprintf( '<input type="file" %s/>', acf_esc_attrs($attrs) );
|
||||
}
|
||||
|
||||
/**
|
||||
* acf_textarea_input
|
||||
*
|
||||
* Renders the HTML of a textarea input.
|
||||
*
|
||||
* @date 3/02/2014
|
||||
* @since 5.0.0
|
||||
*
|
||||
* @param array $attrs The array of attrs.
|
||||
* @return string
|
||||
*/
|
||||
function acf_textarea_input( $attrs = array() ) {
|
||||
echo acf_get_textarea_input( $attrs );
|
||||
}
|
||||
|
||||
/**
|
||||
* acf_get_textarea_input
|
||||
*
|
||||
* Returns the HTML of a textarea input.
|
||||
*
|
||||
* @date 3/02/2014
|
||||
* @since 5.0.0
|
||||
*
|
||||
* @param array $attrs The array of attrs.
|
||||
* @return string
|
||||
*/
|
||||
function acf_get_textarea_input( $attrs = array() ) {
|
||||
$value = '';
|
||||
if( isset($attrs['value']) ) {
|
||||
$value = $attrs['value'];
|
||||
unset( $attrs['value'] );
|
||||
}
|
||||
return sprintf( '<textarea %s>%s</textarea>', acf_esc_attrs($attrs), esc_textarea($value) );
|
||||
}
|
||||
|
||||
/**
|
||||
* acf_checkbox_input
|
||||
*
|
||||
* Renders the HTML of a checkbox input.
|
||||
*
|
||||
* @date 3/02/2014
|
||||
* @since 5.0.0
|
||||
*
|
||||
* @param array $attrs The array of attrs.
|
||||
* @return string
|
||||
*/
|
||||
function acf_checkbox_input( $attrs = array() ) {
|
||||
echo acf_get_checkbox_input( $attrs );
|
||||
}
|
||||
|
||||
/**
|
||||
* acf_get_checkbox_input
|
||||
*
|
||||
* Returns the HTML of a checkbox input.
|
||||
*
|
||||
* @date 3/02/2014
|
||||
* @since 5.0.0
|
||||
*
|
||||
* @param array $attrs The array of attrs.
|
||||
* @return string
|
||||
*/
|
||||
function acf_get_checkbox_input( $attrs = array() ) {
|
||||
|
||||
// Allow radio or checkbox type.
|
||||
$attrs = wp_parse_args($attrs, array(
|
||||
'type' => 'checkbox'
|
||||
));
|
||||
|
||||
// Get label.
|
||||
$label = '';
|
||||
if( isset($attrs['label']) ) {
|
||||
$label= $attrs['label'];
|
||||
unset( $attrs['label'] );
|
||||
}
|
||||
|
||||
// Render.
|
||||
$checked = isset($attrs['checked']);
|
||||
return '<label' . ($checked ? ' class="selected"' : '') . '><input ' . acf_esc_attr($attrs) . '/> ' . acf_esc_html($label) . '</label>';
|
||||
}
|
||||
|
||||
/**
|
||||
* acf_radio_input
|
||||
*
|
||||
* Renders the HTML of a radio input.
|
||||
*
|
||||
* @date 3/02/2014
|
||||
* @since 5.0.0
|
||||
*
|
||||
* @param array $attrs The array of attrs.
|
||||
* @return string
|
||||
*/
|
||||
function acf_radio_input( $attrs = array() ) {
|
||||
echo acf_get_radio_input( $attrs );
|
||||
}
|
||||
|
||||
/**
|
||||
* acf_get_radio_input
|
||||
*
|
||||
* Returns the HTML of a radio input.
|
||||
*
|
||||
* @date 3/02/2014
|
||||
* @since 5.0.0
|
||||
*
|
||||
* @param array $attrs The array of attrs.
|
||||
* @return string
|
||||
*/
|
||||
function acf_get_radio_input( $attrs = array() ) {
|
||||
$attrs['type'] = 'radio';
|
||||
return acf_get_checkbox_input( $attrs );
|
||||
}
|
||||
|
||||
/**
|
||||
* acf_select_input
|
||||
*
|
||||
* Renders the HTML of a select input.
|
||||
*
|
||||
* @date 3/02/2014
|
||||
* @since 5.0.0
|
||||
*
|
||||
* @param array $attrs The array of attrs.
|
||||
* @return string
|
||||
*/
|
||||
function acf_select_input( $attrs = array() ) {
|
||||
echo acf_get_select_input( $attrs );
|
||||
}
|
||||
|
||||
/**
|
||||
* acf_select_input
|
||||
*
|
||||
* Returns the HTML of a select input.
|
||||
*
|
||||
* @date 3/02/2014
|
||||
* @since 5.0.0
|
||||
*
|
||||
* @param array $attrs The array of attrs.
|
||||
* @return string
|
||||
*/
|
||||
function acf_get_select_input( $attrs = array() ) {
|
||||
$value = (array) acf_extract_var( $attrs, 'value' );
|
||||
$choices = (array) acf_extract_var( $attrs, 'choices' );
|
||||
return sprintf(
|
||||
'<select %s>%s</select>',
|
||||
acf_esc_attrs($attrs),
|
||||
acf_walk_select_input($choices, $value)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* acf_walk_select_input
|
||||
*
|
||||
* Returns the HTML of a select input's choices.
|
||||
*
|
||||
* @date 27/6/17
|
||||
* @since 5.6.0
|
||||
*
|
||||
* @param array $choices The choices to walk through.
|
||||
* @param array $values The selected choices.
|
||||
* @param array $depth The current walk depth.
|
||||
* @return string
|
||||
*/
|
||||
function acf_walk_select_input( $choices = array(), $values = array(), $depth = 0 ) {
|
||||
$html = '';
|
||||
|
||||
// Sanitize values for 'selected' matching (only once).
|
||||
if( $depth == 0 ) {
|
||||
$values = array_map('esc_attr', $values);
|
||||
}
|
||||
|
||||
// Loop over choices and append to html.
|
||||
if( $choices ) {
|
||||
foreach( $choices as $value => $label ) {
|
||||
|
||||
// Multiple (optgroup)
|
||||
if( is_array($label) ){
|
||||
$html .= sprintf(
|
||||
'<optgroup label="%s">%s</optgroup>',
|
||||
esc_attr($value),
|
||||
acf_walk_select_input( $label, $values, $depth+1 )
|
||||
);
|
||||
|
||||
// single (option)
|
||||
} else {
|
||||
$attrs = array(
|
||||
'value' => $value
|
||||
);
|
||||
|
||||
// If is selected.
|
||||
$pos = array_search( esc_attr($value), $values );
|
||||
if( $pos !== false ) {
|
||||
$attrs['selected'] = 'selected';
|
||||
$attrs['data-i'] = $pos;
|
||||
}
|
||||
$html .= sprintf( '<option %s>%s</option>', acf_esc_attr($attrs), esc_html($label) );
|
||||
}
|
||||
}
|
||||
}
|
||||
return $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* acf_clean_atts
|
||||
*
|
||||
* See acf_filter_attrs().
|
||||
*
|
||||
* @date 3/10/17
|
||||
* @since 5.6.3
|
||||
*
|
||||
* @param array $attrs The array of attrs.
|
||||
* @return string
|
||||
*/
|
||||
function acf_clean_atts( $attrs ) {
|
||||
return acf_filter_attrs( $attrs );
|
||||
}
|
||||
|
||||
/**
|
||||
* acf_esc_atts
|
||||
*
|
||||
* See acf_esc_attrs().
|
||||
*
|
||||
* @date 27/6/17
|
||||
* @since 5.6.0
|
||||
*
|
||||
* @param array $attrs The array of attrs.
|
||||
* @return string
|
||||
*/
|
||||
function acf_esc_atts( $attrs ) {
|
||||
return acf_esc_attrs( $attrs );
|
||||
}
|
||||
|
||||
/**
|
||||
* acf_esc_attr
|
||||
*
|
||||
* See acf_esc_attrs().
|
||||
*
|
||||
* @date 13/6/19
|
||||
* @since 5.8.1
|
||||
* @deprecated 5.6.0
|
||||
*
|
||||
* @param array $attrs The array of attrs.
|
||||
* @return string
|
||||
*/
|
||||
function acf_esc_attr( $attrs ) {
|
||||
return acf_esc_attrs( $attrs );
|
||||
}
|
||||
|
||||
/**
|
||||
* acf_esc_attr_e
|
||||
*
|
||||
* See acf_esc_attrs().
|
||||
*
|
||||
* @date 13/6/19
|
||||
* @since 5.8.1
|
||||
* @deprecated 5.6.0
|
||||
*
|
||||
* @param array $attrs The array of attrs.
|
||||
* @return string
|
||||
*/
|
||||
function acf_esc_attr_e( $attrs ) {
|
||||
echo acf_esc_attrs( $attrs );
|
||||
}
|
||||
|
||||
/**
|
||||
* acf_esc_atts_e
|
||||
*
|
||||
* See acf_esc_attrs().
|
||||
*
|
||||
* @date 13/6/19
|
||||
* @since 5.8.1
|
||||
* @deprecated 5.6.0
|
||||
*
|
||||
* @param array $attrs The array of attrs.
|
||||
* @return string
|
||||
*/
|
||||
function acf_esc_atts_e( $attrs ) {
|
||||
echo acf_esc_attrs( $attrs );
|
||||
}
|
||||
Reference in New Issue
Block a user