WordPress.org

Make WordPress Core

Ticket #11631: 11631-code-improvements.3.patch

File 11631-code-improvements.3.patch, 5.6 KB (added by hakre, 8 years ago)

Removed duplicate code (again); Better helper function name.

  • wp-includes/post-template.php

    ### Eclipse Workspace Patch 1.0
    #P wordpress-trunk
     
    9494/**
    9595 * Retrieve post title.
    9696 *
    97  * If the post is protected and the visitor is not an admin, then "Protected"
    98  * will be displayed before the post title. If the post is private, then
    99  * "Private" will be located before the post title.
     97 * Get title of a post. Reflects visibility like public, password protected
     98 * or private.
    10099 *
    101100 * @since 0.71
    102101 *
    103  * @param int $id Optional. Post ID.
    104  * @return string
     102 * @param int $id (optional) id of post
     103 * @return string title
    105104 */
    106105function get_the_title( $id = 0 ) {
    107         $post = &get_post($id);
     106        $title  = '';
     107        $format = '';
     108        $post   = &get_post($id);
     109       
     110        if ( isset($post->ID) )
     111                $id    = $post->ID;
    108112
    109         $title = $post->post_title;
     113        if ( isset($post->post_title) )
     114                $title = $post->post_title;
    110115
    111         if ( !is_admin() ) {
    112                 if ( !empty($post->post_password) ) {
    113                         $protected_title_format = apply_filters('protected_title_format', __('Protected: %s'));
    114                         $title = sprintf($protected_title_format, $title);
    115                 } else if ( isset($post->post_status) && 'private' == $post->post_status ) {
    116                         $private_title_format = apply_filters('private_title_format', __('Private: %s'));
    117                         $title = sprintf($private_title_format, $title);
    118                 }
     116        if ( !is_admin() && !empty($post->post_password)) {
     117                $format = apply_filters('protected_title_format', __('Protected: %s'));
     118        } else if ( !is_admin() && isset($post->post_status) && 'private' == $post->post_status ) {
     119                $format = apply_filters('private_title_format', __('Private: %s'));             
    119120        }
    120         return apply_filters( 'the_title', $title, $post->ID );
     121       
     122        if ($format) $title = sprintf($format, $title);
     123
     124        return apply_filters('the_title', $title, $id);
    121125}
    122126
    123127/**
  • wp-includes/post.php

     
    230230 * $post, must be given as a variable, since it is passed by reference.
    231231 *
    232232 * @since 1.5.1
    233  * @uses $wpdb
    234233 * @link http://codex.wordpress.org/Function_Reference/get_post
    235234 *
    236  * @param int|object $post Post ID or post object.
    237  * @param string $output Optional, default is Object. Either OBJECT, ARRAY_A, or ARRAY_N.
    238  * @param string $filter Optional, default is raw.
    239  * @return mixed Post data
     235 * @param int|object $post Post ID or post object or set to 0 to get current post
     236 * @param string $output (optional) default is OBJECT, can be ARRAY_A or ARRAY_N.
     237 * @param string $filter (optional) default is 'raw'.
     238 * @return object|array Post data based on $output parameter: OBJECT, ARRAY_A or
     239 *                      ARRAY_N. NULL if no post available.
    240240 */
    241241function &get_post(&$post, $output = OBJECT, $filter = 'raw') {
    242         global $wpdb;
    243         $null = null;
     242        $_post = null; // init return value
    244243
    245         if ( empty($post) ) {
    246                 if ( isset($GLOBALS['post']) )
    247                         $_post = & $GLOBALS['post'];
    248                 else
    249                         return $null;
    250         } elseif ( is_object($post) && empty($post->filter) ) {
    251                 _get_post_ancestors($post);
    252                 $_post = sanitize_post($post, 'raw');
    253                 wp_cache_add($post->ID, $_post, 'posts');
     244        if ( empty($post) && ! isset($GLOBALS['post']) ) {
     245                return $_post;
     246        } else if ( empty($post) && isset($GLOBALS['post']) ) {
     247                $_post = & $GLOBALS['post'];
     248        } else if ( is_object($post) && empty($post->filter) ) {
     249                $_post = _get_post($post);
    254250        } else {
    255                 if ( is_object($post) )
    256                         $post = $post->ID;
    257                 $post = (int) $post;
    258                 if ( ! $_post = wp_cache_get($post, 'posts') ) {
    259                         $_post = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->posts WHERE ID = %d LIMIT 1", $post));
    260                         if ( ! $_post )
    261                                 return $null;
    262                         _get_post_ancestors($_post);
    263                         $_post = sanitize_post($_post, 'raw');
    264                         wp_cache_add($_post->ID, $_post, 'posts');
     251                // retrieve post by numerical ID (incl. cache roundtrip)
     252                $post = (int) ( is_object($post) ? $post->ID : $post );
     253                if ( ! ( $_post = wp_cache_get($post, 'posts') )
     254                     && null === ( $_post = _get_post($post) ) ) {
     255                        return $_post;
    265256                }
    266257        }
    267258
    268259        if ($filter != 'raw')
    269260                $_post = sanitize_post($_post, $filter);
     261               
     262        // convert into parametrized output datatype           
     263        if ( ARRAY_N == $ouput || ARRAY_A == $ouput )   
     264                $_post = get_object_vars($_post);               
     265        if ( ARRAY_N == $ouput )
     266                $_post = array_values($_post);
     267       
     268        return $_post;
     269}
    270270
    271         if ( $output == OBJECT ) {
    272                 return $_post;
    273         } elseif ( $output == ARRAY_A ) {
    274                 $__post = get_object_vars($_post);
    275                 return $__post;
    276         } elseif ( $output == ARRAY_N ) {
    277                 $__post = array_values(get_object_vars($_post));
    278                 return $__post;
     271/**
     272 * get post object by id
     273 *
     274 * retrieves the data from the database (optional), retrieves it's 
     275 * ancestors, sanitizes it with RAW context and stores it in
     276 * the cache.
     277 *
     278 * helper function for get_post()
     279 *
     280 * @since 3.0
     281 * @see get_post()
     282 *
     283 * @param  int|onject $inpost id of post to get or post object
     284 * @return object     post, NULL if post of id does not exists
     285 * @global WPDB
     286 */
     287function &_get_post( &$inpost )
     288{
     289         /* @var $wpdb WPDB */
     290        global $wpdb;
     291       
     292        if ( is_object($inpost) ) {
     293                $post =& $inpost;               
    279294        } else {
    280                 return $_post;
     295                $post_id = intval($inpost);
     296                $post = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->posts} WHERE ID = %d LIMIT 1", $post_id));
    281297        }
     298       
     299        if ( ! $post ) {
     300                $post = null;           
     301        } else {       
     302                _get_post_ancestors($post);
     303                $post = sanitize_post($post, 'raw');
     304                wp_cache_add($post->ID, $post, 'posts');
     305        }
     306       
     307        return $post;
    282308}
    283309
    284310/**