';
echo $e;
}
/*
* input_admin_enqueue_scripts()
*
* This action is called in the admin_enqueue_scripts action on the edit screen where your field is created.
* Use this action to add css + javascript to assist your create_field() action.
*
* $info http://codex.wordpress.org/Plugin_API/Action_Reference/admin_enqueue_scripts
* @type action
* @since 3.6
* @date 23/01/13
*/
function input_admin_enqueue_scripts()
{
// Note: This function can be removed if not used
/// scripts
wp_enqueue_script( 'acf-input-table', $this->settings['dir_url'] . 'js/input-v4.js', array( 'jquery', 'acf-input' ), $this->settings['version'], true );
// styles
wp_register_style( 'acf-input-table', $this->settings['dir_url'] . 'css/input.css', array( 'acf-input' ), $this->settings['version'] );
wp_enqueue_style(array(
'acf-input-table',
));
}
/*
* create_options()
*
* Create extra options for your field. This is rendered when editing a field.
* The value of $field['name'] can be used (like bellow) to save extra data to the $field
*
* @type action
* @since 3.6
* @date 23/01/13
*
* @param $field - an array holding all the field's data
*/
function create_options($field)
{
// defaults?
/*
$field = array_merge($this->defaults, $field);
*/
// key is needed in the field names to correctly save the data
$key = $field['name'];
if ( empty( $field['use_header'] ) ) {
$field['use_header'] = 0;
}
if ( empty( $field['use_caption'] ) ) {
$field['use_caption'] = 2;
}
// Create Field Options HTML
// USE HEADER
echo '
';
echo '
';
echo '';
echo '
' . __( "Presetting the usage of table header", 'acf-table' ) . '
';
}
/*
* format_value()
*
* This filter is appied to the $value after it is loaded from the db and before it is passed to the create_field action
*
* @type filter
* @since 3.6
* @date 23/01/13
*
* @param $value - the value which was loaded from the database
* @param $post_id - the $post_id from which the value was loaded
* @param $field - the field array holding all the field options
*
* @return $value - the modified value
*/
function format_value_for_api( $value, $post_id, $field )
{
if ( is_string( $value ) ) {
// CHECK FOR GUTENBERG BLOCK CONTENT (URL ENCODED JSON) {
if ( substr( $value , 0 , 1 ) === '%' ) {
$value = urldecode( $value );
}
// }
$value = json_decode( $value, true ); // decode gutenberg JSONs, but also old table JSONs strings to array
}
$a = $value;
$value = false;
// IF BODY DATA
if (
null !== $a['b'] &&
count( $a['b'] ) > 0
) {
// IF HEADER DATA
if ( $a['p']['o']['uh'] === 1 ) {
$value['header'] = $a['h'];
}
else {
$value['header'] = false;
}
// IF CAPTION DATA
if (
! empty( $field['use_caption'] ) AND
$field['use_caption'] === 1 AND
! empty( $a['p']['ca'] )
) {
$value['caption'] = $a['p']['ca'];
}
else {
$value['caption'] = false;
}
// BODY
$value['body'] = $a['b'];
// IF SINGLE EMPTY CELL, THEN DO NOT RETURN TABLE DATA
if (
count( $a['b'] ) === 1
AND count( $a['b'][0] ) === 1
AND trim( $a['b'][0][0]['c'] ) === ''
) {
$value = false;
}
}
return $value;
}
/*
* update_value()
*
* This filter is appied to the $value before it is updated in the db
*
* @type filter
* @since 3.6
* @date 23/01/13
*
* @param $value - the value which will be saved in the database
* @param $post_id - the $post_id of which the value will be saved
* @param $field - the field array holding all the field options
*
* @return $value - the modified value
*/
function update_value($value, $post_id, $field)
{
if ( is_string( $value ) ) {
$value = wp_unslash( $value );
$value = urldecode( $value );
$value = json_decode( $value, true );
}
// UPDATE via update_field() {
if (
isset( $value['header'] ) OR
isset( $value['body'] )
) {
$data = get_post_meta( $post_id, $field['name'], true );
if ( is_string( $data ) ) {
$data = json_decode( $data, true );
}
if ( isset( $value['header'] ) ) {
$data['h'] = $value['header'];
}
if ( isset( $value['body'] ) ) {
$data['b'] = $value['body'];
}
$value = $data;
}
// }
$value = $this->table_slash( $value );
return $value;
}
/**
* table_slash()
*
* Add slashes to a string or strings in an array.
*
* This should be used instead of wp_slash() because wp_slash() convertes all
* array values to strings which affects also the table object values of
* type number converting to string.
*/
function table_slash( $value ) {
if ( is_array( $value ) ) {
foreach ( $value as $k => $v ) {
if (
is_array( $v ) OR
is_object( $v )
) {
$value[ $k ] = $this->table_slash( $v );
}
else if( is_string( $v ) ) {
$value[ $k ] = addslashes( $v );
}
else {
$value[ $k ] = $v;
}
}
} else {
$value = addslashes( $value );
}
return $value;
}
}
// create field
new acf_table_add_on();