Changeset 13187
- Timestamp:
- 02/18/2010 01:52:37 AM (15 years ago)
- Location:
- trunk/wp-includes
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-includes/classes.php
r13071 r13187 1697 1697 } 1698 1698 1699 // A factory and constructor that upgrades stdClass "rows" to WordPress classes. 1700 class wp_row { 1701 // Factory. Call statically to upgrade a stdClass object to its specialized class: $o = wp_row::get($row). 1702 function get($row) { 1703 if ( is_a($row, 'wp_row') || is_subclass_of($row, 'wp_row') ) 1704 return $row; 1705 1706 if ( is_array($row) ) 1707 $row = (object) $row; 1708 1709 $class = 'wp_row'; 1710 if ( isset($row->post_type) ) { 1711 if ( class_exists("wp_" . $row->post_type) ) 1712 $class = "wp_" . $row->post_type; 1713 else 1714 $class = "wp_post"; 1715 } elseif ( isset($row->comment_type) ) { 1716 if ( class_exists("wp_" . $row->comment_type) ) 1717 $class = "wp_" . $row->comment_type; 1718 else 1719 $class = "wp_comment"; 1720 } 1721 1722 if ( function_exists("apply_filters") ) { 1723 $filtered_class = apply_filters("wp_row_class", $class, $row); 1724 if ( class_exists($filtered_class) ) 1725 $class = $filtered_class; 1726 } 1727 1728 return call_user_func(array($class, 'get'), $row); 1729 } 1730 1731 function wp_row(&$row) { 1732 return $this->__construct($row); 1733 } 1734 1735 function __construct($row) { 1736 if ( is_array($row) ) 1737 $row = (object) $row; 1738 1739 foreach ( (array) $row as $k => $v ) 1740 $this->$k = $row->$k; 1741 } 1742 } 1743 1744 class wp_post extends wp_row { 1745 // Factory 1746 function get($post) { 1747 if ( $post = get_post($post) ) 1748 return new wp_post($post); 1749 else 1750 return new WP_Error(404, "Post not found."); 1751 } 1752 1753 function id() { return $this->ID; } 1754 function post_id() { return $this->ID; } 1755 function type_id() { return 'post-' . $this->ID; } 1756 function classes($class='') { return join( ' ', get_post_class( $class, $this->id() ) ); } 1757 1758 function permalink() { return get_permalink($this); } 1759 function title() { return get_the_title($this); } 1760 function date($format='') { return; } 1761 function time($format='') { return get_the_time($format, $this); } 1762 function author() { $authordata = get_userdata($this->post_author); return $authordata->display_name; } 1763 function content() { return get_content($this); } 1764 } 1765 1766 class wp_comment extends wp_row { 1767 // Factory 1768 function get($comment) { 1769 if ( $comment = get_comment($comment) ) 1770 return new wp_comment($comment); 1771 else 1772 return new WP_Error(404, "Comment not found."); 1773 } 1774 1775 function id() { return $this->comment_ID; } 1776 function post_id() { return $this->comment_post_ID; } 1777 function type_id() { return 'comment-' . $this->comment_ID; } 1778 function classes($class='') { return join( ' ', get_comment_class( $class, $this->id() ) ); } 1779 1780 function permalink() { return get_comment_link($this); } 1781 function title() { return sprintf(__("Comment on %s"), get_the_title($this->post_id())); } 1782 function time($format='') { return mysql2date($format?$format:get_option('time_format'), $this->comment_date); } 1783 function date($format='') { return date($format?$format:get_option('date_format'), $this->time('U')); } 1784 function author() { return $this->comment_author; } 1785 function excerpt() { return $this->comment_content; } 1786 function content() { return get_comment_content($this); } 1787 } 1788 1789 function is_post($object) { 1790 return is_a('wp_post', $object); 1791 } 1792 1793 function is_comment($object) { 1794 return is_a('wp_comment', $object); 1795 } 1796 1699 1797 ?> -
trunk/wp-includes/query.php
r13172 r13187 2302 2302 if ( !$q['suppress_filters'] ) 2303 2303 $this->posts = apply_filters('posts_results', $this->posts); 2304 2305 // Turn each row into a classed object, e.g. wp_post, wp_comment. 2306 if ( is_array($this->posts) ) 2307 $this->posts = array_map(array('wp_row', 'get'), $this->posts); 2304 2308 2305 2309 if ( !empty($this->posts) && $this->is_comment_feed && $this->is_singular ) {
Note: See TracChangeset
for help on using the changeset viewer.