From a415c29efee45520ae252d2aa28f1083a521cd7b Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 09:56:49 +0200 Subject: Adding upstream version 6.4.3+dfsg1. Signed-off-by: Daniel Baumann --- wp-includes/class-wp-post.php | 388 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 388 insertions(+) create mode 100644 wp-includes/class-wp-post.php (limited to 'wp-includes/class-wp-post.php') diff --git a/wp-includes/class-wp-post.php b/wp-includes/class-wp-post.php new file mode 100644 index 0000000..682b000 --- /dev/null +++ b/wp-includes/class-wp-post.php @@ -0,0 +1,388 @@ +get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = %d LIMIT 1", $post_id ) ); + + if ( ! $_post ) { + return false; + } + + $_post = sanitize_post( $_post, 'raw' ); + wp_cache_add( $_post->ID, $_post, 'posts' ); + } elseif ( empty( $_post->filter ) || 'raw' !== $_post->filter ) { + $_post = sanitize_post( $_post, 'raw' ); + } + + return new WP_Post( $_post ); + } + + /** + * Constructor. + * + * @since 3.5.0 + * + * @param WP_Post|object $post Post object. + */ + public function __construct( $post ) { + foreach ( get_object_vars( $post ) as $key => $value ) { + $this->$key = $value; + } + } + + /** + * Isset-er. + * + * @since 3.5.0 + * + * @param string $key Property to check if set. + * @return bool + */ + public function __isset( $key ) { + if ( 'ancestors' === $key ) { + return true; + } + + if ( 'page_template' === $key ) { + return true; + } + + if ( 'post_category' === $key ) { + return true; + } + + if ( 'tags_input' === $key ) { + return true; + } + + return metadata_exists( 'post', $this->ID, $key ); + } + + /** + * Getter. + * + * @since 3.5.0 + * + * @param string $key Key to get. + * @return mixed + */ + public function __get( $key ) { + if ( 'page_template' === $key && $this->__isset( $key ) ) { + return get_post_meta( $this->ID, '_wp_page_template', true ); + } + + if ( 'post_category' === $key ) { + if ( is_object_in_taxonomy( $this->post_type, 'category' ) ) { + $terms = get_the_terms( $this, 'category' ); + } + + if ( empty( $terms ) ) { + return array(); + } + + return wp_list_pluck( $terms, 'term_id' ); + } + + if ( 'tags_input' === $key ) { + if ( is_object_in_taxonomy( $this->post_type, 'post_tag' ) ) { + $terms = get_the_terms( $this, 'post_tag' ); + } + + if ( empty( $terms ) ) { + return array(); + } + + return wp_list_pluck( $terms, 'name' ); + } + + // Rest of the values need filtering. + if ( 'ancestors' === $key ) { + $value = get_post_ancestors( $this ); + } else { + $value = get_post_meta( $this->ID, $key, true ); + } + + if ( $this->filter ) { + $value = sanitize_post_field( $key, $value, $this->ID, $this->filter ); + } + + return $value; + } + + /** + * {@Missing Summary} + * + * @since 3.5.0 + * + * @param string $filter Filter. + * @return WP_Post + */ + public function filter( $filter ) { + if ( $this->filter === $filter ) { + return $this; + } + + if ( 'raw' === $filter ) { + return self::get_instance( $this->ID ); + } + + return sanitize_post( $this, $filter ); + } + + /** + * Convert object to array. + * + * @since 3.5.0 + * + * @return array Object as array. + */ + public function to_array() { + $post = get_object_vars( $this ); + + foreach ( array( 'ancestors', 'page_template', 'post_category', 'tags_input' ) as $key ) { + if ( $this->__isset( $key ) ) { + $post[ $key ] = $this->__get( $key ); + } + } + + return $post; + } +} -- cgit v1.2.3