/wp-content/plugins/advanced-custom-fields-pro/api/api-value.php
https://gitlab.com/sihabudinahmad/asppi · PHP · 372 lines · 136 code · 122 blank · 114 comment · 19 complexity · 0e934aa006c24af9653b0aea4bd89353 MD5 · raw file
- <?php
- /*
- * acf_get_value
- *
- * This function will load in a field's value
- *
- * @type function
- * @date 28/09/13
- * @since 5.0.0
- *
- * @param $value (mixed)
- * @param $post_id (int)
- * @param $field (array)
- * @param $format (boolean)
- * @param $format_template (boolean)
- * @return (mixed)
- */
- function acf_get_value( $post_id, $field, $db_only = false ) {
-
- // vars
- $value = null;
-
-
- // try cache
- $found = false;
- $cache = wp_cache_get( "load_value/post_id={$post_id}/name={$field['name']}", 'acf', false, $found );
-
- if( $found ) {
-
- return $cache;
-
- }
-
-
- // load value depending on the $type
- if( empty($post_id) ) {
-
- // do nothing
-
- } elseif( is_numeric($post_id) ) {
-
- $v = get_post_meta( $post_id, $field['name'], false );
-
- // value is an array
- if( isset($v[0]) ) {
-
- $value = $v[0];
-
- }
- } elseif( strpos($post_id, 'user_') !== false ) {
-
- $user_id = str_replace('user_', '', $post_id);
- $user_id = intval( $user_id );
-
- $v = get_user_meta( $user_id, $field['name'], false );
-
- // value is an array
- if( isset($v[0]) ) {
-
- $value = $v[0];
-
- }
-
- } elseif( strpos($post_id, 'comment_') !== false ) {
-
- $comment_id = str_replace('comment_', '', $post_id);
- $comment_id = intval( $comment_id );
-
- $v = get_comment_meta( $comment_id, $field['name'], false );
-
- // value is an array
- if( isset($v[0]) ) {
-
- $value = $v[0];
-
- }
-
- } else {
-
- $v = get_option( "{$post_id}_{$field['name']}", null );
-
- if( ! is_null($v) ) {
-
- $value = $v;
-
- }
- }
-
-
- // no value? try default_value
- if( $value === null && isset($field['default_value']) ) {
-
- $value = $field['default_value'];
-
- }
-
-
- // if value was duplicated, it may now be a serialized string!
- $value = maybe_unserialize( $value );
-
-
- // bail early if db only value (no need to update cache)
- if( $db_only ) {
-
- return $value;
-
- }
-
-
- // filter for 3rd party customization
- $value = apply_filters( "acf/load_value", $value, $post_id, $field );
- $value = apply_filters( "acf/load_value/type={$field['type']}", $value, $post_id, $field );
- $value = apply_filters( "acf/load_value/name={$field['name']}", $value, $post_id, $field );
- $value = apply_filters( "acf/load_value/key={$field['key']}", $value, $post_id, $field );
-
-
-
- //update cache
- wp_cache_set( "load_value/post_id={$post_id}/name={$field['name']}", $value, 'acf' );
-
- // return
- return $value;
-
- }
- /*
- * acf_format_value
- *
- * This function will format the value for front end use
- *
- * @type function
- * @date 3/07/2014
- * @since 5.0.0
- *
- * @param $value (mixed)
- * @param $post_id (mixed)
- * @param $field (array)
- * @return $value
- */
- function acf_format_value( $value, $post_id, $field ) {
-
- // apply filters
- $value = apply_filters( "acf/format_value", $value, $post_id, $field );
- $value = apply_filters( "acf/format_value/type={$field['type']}", $value, $post_id, $field );
-
-
- // return
- return $value;
-
- }
- /*
- * acf_update_value
- *
- * updates a value into the db
- *
- * @type action
- * @date 23/01/13
- *
- * @param {mixed} $value the value to be saved
- * @param {int} $post_id the post ID to save the value to
- * @param {array} $field the field array
- * @param {boolean} $exact allows the update_value filter to be skipped
- * @return N/A
- */
- function acf_update_value( $value = null, $post_id = 0, $field ) {
-
- // vars
- $return = false;
-
-
- // strip slashes
- // allow 3rd party customisation
- if( acf_get_setting('stripslashes') )
- {
- $value = stripslashes_deep($value);
- }
-
-
- // filter for 3rd party customization
- $value = apply_filters( "acf/update_value", $value, $post_id, $field );
- $value = apply_filters( "acf/update_value/type={$field['type']}", $value, $post_id, $field );
- $value = apply_filters( "acf/update_value/name={$field['name']}", $value, $post_id, $field );
- $value = apply_filters( "acf/update_value/key={$field['key']}", $value, $post_id, $field );
-
- // note:
- // attempted to save values as individual rows for better WP_Query compatibility. Issues are clear that order would not work.
- if( is_numeric($post_id) )
- {
- // allow ACF to save to revision!
- $return = update_metadata('post', $post_id, $field['name'], $value );
- update_metadata('post', $post_id, '_' . $field['name'], $field['key']);
- }
- elseif( strpos($post_id, 'user_') !== false )
- {
- $user_id = str_replace('user_', '', $post_id);
- $return = update_metadata('user', $user_id, $field['name'], $value);
- update_metadata('user', $user_id, '_' . $field['name'], $field['key']);
- }
- elseif( strpos($post_id, 'comment_') !== false )
- {
- $comment_id = str_replace('comment_', '', $post_id);
- $return = update_metadata('comment', $comment_id, $field['name'], $value);
- update_metadata('comment', $comment_id, '_' . $field['name'], $field['key']);
- }
- else
- {
- // for some reason, update_option does not use stripslashes_deep.
- // update_metadata -> http://core.trac.wordpress.org/browser/tags/3.4.2/wp-includes/meta.php#L82: line 101 (does use stripslashes_deep)
- // update_option -> http://core.trac.wordpress.org/browser/tags/3.5.1/wp-includes/option.php#L0: line 215 (does not use stripslashes_deep)
- $value = stripslashes_deep($value);
-
- $return = acf_update_option( $post_id . '_' . $field['name'], $value );
- acf_update_option( '_' . $post_id . '_' . $field['name'], $field['key'] );
- }
-
-
- // clear cache
- wp_cache_delete( "load_value/post_id={$post_id}/name={$field['name']}", 'acf' );
-
- // return
- return $return;
- }
- /*
- * acf_update_option
- *
- * This function is a wrapper for the WP update_option but provides logic for a 'no' autoload
- *
- * @type function
- * @date 4/01/2014
- * @since 5.0.0
- *
- * @param $option (string)
- * @param $value (mixed)
- * @return (boolean)
- */
- function acf_update_option( $option = '', $value = false, $autoload = 'no' ) {
-
- // vars
- $deprecated = '';
- $return = false;
-
-
- // add or update
- if( get_option($option) !== false ) {
-
- $return = update_option( $option, $value );
-
- } else {
-
- $return = add_option( $option, $value, $deprecated, $autoload );
-
- }
-
-
- // return
- return $return;
-
- }
- /*
- * acf_delete_value
- *
- * This function will delete a value from the database
- *
- * @type function
- * @date 28/09/13
- * @since 5.0.0
- *
- * @param $post_id (mixed)
- * @param $key (string|array) the meta_name or $field
- * @return (boolean)
- */
- function acf_delete_value( $post_id = 0, $key = '' ) {
-
- // vars
- $field = false;
- $return = false;
-
-
- // string
- if( is_string($key) ) {
-
- // find selector
- $field = acf_get_field_reference( $key, $post_id );
-
-
- // get field key
- $field = acf_get_field( $field );
-
-
- // field
- } elseif( is_array($key) ) {
-
- // set vars
- $field = $key;
- $key = $field['name'];
-
-
- // bail early if not valid key
- } else {
-
- return false;
-
- }
-
-
- // post
- if( is_numeric($post_id) ) {
-
- $return = delete_metadata('post', $post_id, $key );
- delete_metadata('post', $post_id, '_' . $key );
-
- // user
- } elseif( strpos($post_id, 'user_') !== false ) {
-
- $user_id = str_replace('user_', '', $post_id);
- $return = delete_metadata('user', $user_id, $key);
- delete_metadata('user', $user_id, '_' . $key);
-
- // comment
- } elseif( strpos($post_id, 'comment_') !== false ) {
-
- $comment_id = str_replace('comment_', '', $post_id);
- $return = delete_metadata('comment', $comment_id, $key);
- delete_metadata('comment', $comment_id, '_' . $key);
-
- // option
- } else {
-
- $return = delete_option( $post_id . '_' . $key );
- delete_option( '_' . $post_id . '_' . $key );
-
- }
-
-
- // clear cache
- wp_cache_delete( "load_value/post_id={$post_id}/name={$key}", 'acf' );
-
-
- // action for 3rd party customization
- do_action("acf/delete_value", $post_id, $key, $field);
-
- if( $field ) {
-
- do_action("acf/delete_value/type={$field['type']}", $post_id, $key, $field);
- do_action("acf/delete_value/name={$field['_name']}", $post_id, $key, $field);
- do_action("acf/delete_value/key={$field['key']}", $post_id, $key, $field);
-
- }
-
-
- // return
- return $return;
- }
- ?>