Changeset 5555
- Timestamp:
- 05/26/2007 11:32:06 PM (17 years ago)
- Location:
- trunk/wp-includes
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-includes/category.php
r5553 r5555 123 123 } 124 124 125 // 126 // Cache 127 // 128 129 function update_category_cache() { 130 return true; 131 } 132 133 function clean_category_cache($id) { 134 clean_term_cache($id, 'category'); 135 } 136 125 137 ?> -
trunk/wp-includes/functions.php
r5541 r5555 115 115 $week['end'] = $week['start'] + 604799; 116 116 return $week; 117 }118 119 function get_lastpostdate($timezone = 'server') {120 global $cache_lastpostdate, $pagenow, $wpdb, $blog_id;121 $add_seconds_blog = get_option('gmt_offset') * 3600;122 $add_seconds_server = date('Z');123 if ( !isset($cache_lastpostdate[$blog_id][$timezone]) ) {124 switch(strtolower($timezone)) {125 case 'gmt':126 $lastpostdate = $wpdb->get_var("SELECT post_date_gmt FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_date_gmt DESC LIMIT 1");127 break;128 case 'blog':129 $lastpostdate = $wpdb->get_var("SELECT post_date FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_date_gmt DESC LIMIT 1");130 break;131 case 'server':132 $lastpostdate = $wpdb->get_var("SELECT DATE_ADD(post_date_gmt, INTERVAL '$add_seconds_server' SECOND) FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_date_gmt DESC LIMIT 1");133 break;134 }135 $cache_lastpostdate[$blog_id][$timezone] = $lastpostdate;136 } else {137 $lastpostdate = $cache_lastpostdate[$blog_id][$timezone];138 }139 return $lastpostdate;140 }141 142 function get_lastpostmodified($timezone = 'server') {143 global $cache_lastpostmodified, $pagenow, $wpdb, $blog_id;144 $add_seconds_blog = get_option('gmt_offset') * 3600;145 $add_seconds_server = date('Z');146 if ( !isset($cache_lastpostmodified[$blog_id][$timezone]) ) {147 switch(strtolower($timezone)) {148 case 'gmt':149 $lastpostmodified = $wpdb->get_var("SELECT post_modified_gmt FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_modified_gmt DESC LIMIT 1");150 break;151 case 'blog':152 $lastpostmodified = $wpdb->get_var("SELECT post_modified FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_modified_gmt DESC LIMIT 1");153 break;154 case 'server':155 $lastpostmodified = $wpdb->get_var("SELECT DATE_ADD(post_modified_gmt, INTERVAL '$add_seconds_server' SECOND) FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_modified_gmt DESC LIMIT 1");156 break;157 }158 $lastpostdate = get_lastpostdate($timezone);159 if ( $lastpostdate > $lastpostmodified ) {160 $lastpostmodified = $lastpostdate;161 }162 $cache_lastpostmodified[$blog_id][$timezone] = $lastpostmodified;163 } else {164 $lastpostmodified = $cache_lastpostmodified[$blog_id][$timezone];165 }166 return $lastpostmodified;167 117 } 168 118 … … 599 549 return(0); 600 550 } 601 }602 603 function update_post_cache(&$posts) {604 global $post_cache, $blog_id;605 606 if ( !$posts )607 return;608 609 for ($i = 0; $i < count($posts); $i++) {610 $post_cache[$blog_id][$posts[$i]->ID] = &$posts[$i];611 }612 }613 614 function clean_post_cache($id) {615 global $post_cache, $post_meta_cache, $category_cache, $tag_cache, $blog_id;616 617 if ( isset( $post_cache[$blog_id][$id] ) )618 unset( $post_cache[$blog_id][$id] );619 620 if ( isset ($post_meta_cache[$blog_id][$id] ) )621 unset( $post_meta_cache[$blog_id][$id] );622 623 if ( isset( $category_cache[$blog_id][$id]) )624 unset ( $category_cache[$blog_id][$id] );625 626 if ( isset( $tag_cache[$blog_id][$id]) )627 unset ( $tag_cache[$blog_id][$id] );628 }629 630 function update_page_cache(&$pages) {631 global $page_cache, $blog_id;632 633 if ( !$pages )634 return;635 636 for ($i = 0; $i < count($pages); $i++) {637 $page_cache[$blog_id][$pages[$i]->ID] = &$pages[$i];638 wp_cache_add($pages[$i]->ID, $pages[$i], 'pages');639 }640 }641 642 function clean_page_cache($id) {643 global $page_cache, $blog_id;644 645 if ( isset( $page_cache[$blog_id][$id] ) )646 unset( $page_cache[$blog_id][$id] );647 648 wp_cache_delete($id, 'pages');649 wp_cache_delete( 'all_page_ids', 'pages' );650 wp_cache_delete( 'get_pages', 'page' );651 }652 653 function update_post_category_cache($post_ids) {654 global $wpdb, $category_cache, $tag_cache, $blog_id;655 // TODO656 return;657 if ( empty($post_ids) )658 return;659 660 if ( is_array($post_ids) )661 $post_id_list = implode(',', $post_ids);662 663 $post_id_array = (array) explode(',', $post_ids);664 $count = count( $post_id_array);665 for ( $i = 0; $i < $count; $i++ ) {666 $post_id = (int) $post_id_array[ $i ];667 if ( isset( $category_cache[$blog_id][$post_id] ) ) {668 unset( $post_id_array[ $i ] );669 continue;670 }671 }672 if ( count( $post_id_array ) == 0 )673 return;674 $post_id_list = join( ',', $post_id_array ); // with already cached stuff removed675 676 $dogs = $wpdb->get_results("SELECT post_id, category_id, rel_type FROM $wpdb->post2cat WHERE post_id IN ($post_id_list)");677 678 if ( empty($dogs) )679 return;680 681 foreach ($dogs as $catt) {682 if ( 'category' == $catt->rel_type )683 $category_cache[$blog_id][$catt->post_id][$catt->category_id] = &get_category($catt->category_id);684 elseif ( 'tag' == $catt->rel_type )685 $tag_cache[$blog_id][$catt->post_id][$catt->category_id] = &get_category($catt->category_id);686 }687 }688 689 function update_post_caches(&$posts) {690 global $post_cache, $category_cache, $post_meta_cache, $tag_cache;691 global $wpdb, $blog_id;692 693 // No point in doing all this work if we didn't match any posts.694 if ( !$posts )695 return;696 697 // Get the categories for all the posts698 for ($i = 0; $i < count($posts); $i++) {699 $post_id_array[] = $posts[$i]->ID;700 $post_cache[$blog_id][$posts[$i]->ID] = &$posts[$i];701 }702 703 $post_id_list = implode(',', $post_id_array);704 705 update_post_category_cache($post_id_list);706 707 update_postmeta_cache($post_id_list);708 }709 710 function update_postmeta_cache($post_id_list = '') {711 global $wpdb, $post_meta_cache, $blog_id;712 713 // We should validate this comma-separated list for the upcoming SQL query714 $post_id_list = preg_replace('|[^0-9,]|', '', $post_id_list);715 716 if ( empty( $post_id_list ) )717 return false;718 719 // we're marking each post as having its meta cached (with no keys... empty array), to prevent posts with no meta keys from being queried again720 // any posts that DO have keys will have this empty array overwritten with a proper array, down below721 $post_id_array = (array) explode(',', $post_id_list);722 $count = count( $post_id_array);723 for ( $i = 0; $i < $count; $i++ ) {724 $post_id = (int) $post_id_array[ $i ];725 if ( isset( $post_meta_cache[$blog_id][$post_id] ) ) { // If the meta is already cached726 unset( $post_id_array[ $i ] );727 continue;728 }729 $post_meta_cache[$blog_id][$post_id] = array();730 }731 if ( count( $post_id_array ) == 0 )732 return;733 $post_id_list = join( ',', $post_id_array ); // with already cached stuff removeds734 735 // Get post-meta info736 if ( $meta_list = $wpdb->get_results("SELECT post_id, meta_key, meta_value FROM $wpdb->postmeta WHERE post_id IN($post_id_list) ORDER BY post_id, meta_key", ARRAY_A) ) {737 // Change from flat structure to hierarchical:738 if ( !isset($post_meta_cache) )739 $post_meta_cache[$blog_id] = array();740 741 foreach ($meta_list as $metarow) {742 $mpid = (int) $metarow['post_id'];743 $mkey = $metarow['meta_key'];744 $mval = $metarow['meta_value'];745 746 // Force subkeys to be array type:747 if ( !isset($post_meta_cache[$blog_id][$mpid]) || !is_array($post_meta_cache[$blog_id][$mpid]) )748 $post_meta_cache[$blog_id][$mpid] = array();749 if ( !isset($post_meta_cache[$blog_id][$mpid]["$mkey"]) || !is_array($post_meta_cache[$blog_id][$mpid]["$mkey"]) )750 $post_meta_cache[$blog_id][$mpid]["$mkey"] = array();751 752 // Add a value to the current pid/key:753 $post_meta_cache[$blog_id][$mpid][$mkey][] = $mval;754 }755 }756 }757 758 function update_category_cache() {759 return true;760 }761 762 function clean_category_cache($id) {763 wp_cache_delete($id, 'category');764 wp_cache_delete('all_category_ids', 'category');765 wp_cache_delete('get_categories', 'category');766 delete_option('category_children');767 551 } 768 552 -
trunk/wp-includes/post.php
r5553 r5555 413 413 if ( 'publish' == $post->post_status && 'post' == $post->post_type ) { 414 414 $categories = wp_get_post_categories($post->ID); 415 if ( is_array( $categories ) ) {415 if ( is_array( $categories ) ) { 416 416 foreach ( $categories as $cat_id ) { 417 417 $wpdb->query("UPDATE $wpdb->categories SET category_count = category_count - 1 WHERE cat_ID = '$cat_id'"); … … 1595 1595 } 1596 1596 1597 function get_lastpostdate($timezone = 'server') { 1598 global $cache_lastpostdate, $pagenow, $wpdb, $blog_id; 1599 $add_seconds_blog = get_option('gmt_offset') * 3600; 1600 $add_seconds_server = date('Z'); 1601 if ( !isset($cache_lastpostdate[$blog_id][$timezone]) ) { 1602 switch(strtolower($timezone)) { 1603 case 'gmt': 1604 $lastpostdate = $wpdb->get_var("SELECT post_date_gmt FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_date_gmt DESC LIMIT 1"); 1605 break; 1606 case 'blog': 1607 $lastpostdate = $wpdb->get_var("SELECT post_date FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_date_gmt DESC LIMIT 1"); 1608 break; 1609 case 'server': 1610 $lastpostdate = $wpdb->get_var("SELECT DATE_ADD(post_date_gmt, INTERVAL '$add_seconds_server' SECOND) FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_date_gmt DESC LIMIT 1"); 1611 break; 1612 } 1613 $cache_lastpostdate[$blog_id][$timezone] = $lastpostdate; 1614 } else { 1615 $lastpostdate = $cache_lastpostdate[$blog_id][$timezone]; 1616 } 1617 return $lastpostdate; 1618 } 1619 1620 function get_lastpostmodified($timezone = 'server') { 1621 global $cache_lastpostmodified, $pagenow, $wpdb, $blog_id; 1622 $add_seconds_blog = get_option('gmt_offset') * 3600; 1623 $add_seconds_server = date('Z'); 1624 if ( !isset($cache_lastpostmodified[$blog_id][$timezone]) ) { 1625 switch(strtolower($timezone)) { 1626 case 'gmt': 1627 $lastpostmodified = $wpdb->get_var("SELECT post_modified_gmt FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_modified_gmt DESC LIMIT 1"); 1628 break; 1629 case 'blog': 1630 $lastpostmodified = $wpdb->get_var("SELECT post_modified FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_modified_gmt DESC LIMIT 1"); 1631 break; 1632 case 'server': 1633 $lastpostmodified = $wpdb->get_var("SELECT DATE_ADD(post_modified_gmt, INTERVAL '$add_seconds_server' SECOND) FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_modified_gmt DESC LIMIT 1"); 1634 break; 1635 } 1636 $lastpostdate = get_lastpostdate($timezone); 1637 if ( $lastpostdate > $lastpostmodified ) { 1638 $lastpostmodified = $lastpostdate; 1639 } 1640 $cache_lastpostmodified[$blog_id][$timezone] = $lastpostmodified; 1641 } else { 1642 $lastpostmodified = $cache_lastpostmodified[$blog_id][$timezone]; 1643 } 1644 return $lastpostmodified; 1645 } 1646 1647 // 1648 // Cache 1649 // 1650 1651 function update_post_cache(&$posts) { 1652 global $post_cache, $blog_id; 1653 1654 if ( !$posts ) 1655 return; 1656 1657 for ($i = 0; $i < count($posts); $i++) { 1658 $post_cache[$blog_id][$posts[$i]->ID] = &$posts[$i]; 1659 } 1660 } 1661 1662 function clean_post_cache($id) { 1663 global $post_cache, $post_meta_cache, $category_cache, $tag_cache, $blog_id; 1664 1665 if ( isset( $post_cache[$blog_id][$id] ) ) 1666 unset( $post_cache[$blog_id][$id] ); 1667 1668 if ( isset ($post_meta_cache[$blog_id][$id] ) ) 1669 unset( $post_meta_cache[$blog_id][$id] ); 1670 1671 if ( isset( $category_cache[$blog_id][$id]) ) 1672 unset ( $category_cache[$blog_id][$id] ); 1673 1674 if ( isset( $tag_cache[$blog_id][$id]) ) 1675 unset ( $tag_cache[$blog_id][$id] ); 1676 } 1677 1678 function update_page_cache(&$pages) { 1679 global $page_cache, $blog_id; 1680 1681 if ( !$pages ) 1682 return; 1683 1684 for ($i = 0; $i < count($pages); $i++) { 1685 $page_cache[$blog_id][$pages[$i]->ID] = &$pages[$i]; 1686 wp_cache_add($pages[$i]->ID, $pages[$i], 'pages'); 1687 } 1688 } 1689 1690 function clean_page_cache($id) { 1691 global $page_cache, $blog_id; 1692 1693 if ( isset( $page_cache[$blog_id][$id] ) ) 1694 unset( $page_cache[$blog_id][$id] ); 1695 1696 wp_cache_delete($id, 'pages'); 1697 wp_cache_delete( 'all_page_ids', 'pages' ); 1698 wp_cache_delete( 'get_pages', 'page' ); 1699 } 1700 1701 function update_post_category_cache($post_ids) { 1702 global $wpdb, $category_cache, $tag_cache, $blog_id; 1703 // TODO 1704 return; 1705 if ( empty($post_ids) ) 1706 return; 1707 1708 if ( is_array($post_ids) ) 1709 $post_id_list = implode(',', $post_ids); 1710 1711 $post_id_array = (array) explode(',', $post_ids); 1712 $count = count( $post_id_array); 1713 for ( $i = 0; $i < $count; $i++ ) { 1714 $post_id = (int) $post_id_array[ $i ]; 1715 if ( isset( $category_cache[$blog_id][$post_id] ) ) { 1716 unset( $post_id_array[ $i ] ); 1717 continue; 1718 } 1719 } 1720 if ( count( $post_id_array ) == 0 ) 1721 return; 1722 $post_id_list = join( ',', $post_id_array ); // with already cached stuff removed 1723 1724 $dogs = $wpdb->get_results("SELECT post_id, category_id, rel_type FROM $wpdb->post2cat WHERE post_id IN ($post_id_list)"); 1725 1726 if ( empty($dogs) ) 1727 return; 1728 1729 foreach ($dogs as $catt) { 1730 if ( 'category' == $catt->rel_type ) 1731 $category_cache[$blog_id][$catt->post_id][$catt->category_id] = &get_category($catt->category_id); 1732 elseif ( 'tag' == $catt->rel_type ) 1733 $tag_cache[$blog_id][$catt->post_id][$catt->category_id] = &get_category($catt->category_id); 1734 } 1735 } 1736 1737 function update_post_caches(&$posts) { 1738 global $post_cache, $category_cache, $post_meta_cache, $tag_cache; 1739 global $wpdb, $blog_id; 1740 1741 // No point in doing all this work if we didn't match any posts. 1742 if ( !$posts ) 1743 return; 1744 1745 // Get the categories for all the posts 1746 for ($i = 0; $i < count($posts); $i++) { 1747 $post_id_array[] = $posts[$i]->ID; 1748 $post_cache[$blog_id][$posts[$i]->ID] = &$posts[$i]; 1749 } 1750 1751 $post_id_list = implode(',', $post_id_array); 1752 1753 update_post_category_cache($post_id_list); 1754 1755 update_postmeta_cache($post_id_list); 1756 } 1757 1758 function update_postmeta_cache($post_id_list = '') { 1759 global $wpdb, $post_meta_cache, $blog_id; 1760 1761 // We should validate this comma-separated list for the upcoming SQL query 1762 $post_id_list = preg_replace('|[^0-9,]|', '', $post_id_list); 1763 1764 if ( empty( $post_id_list ) ) 1765 return false; 1766 1767 // we're marking each post as having its meta cached (with no keys... empty array), to prevent posts with no meta keys from being queried again 1768 // any posts that DO have keys will have this empty array overwritten with a proper array, down below 1769 $post_id_array = (array) explode(',', $post_id_list); 1770 $count = count( $post_id_array); 1771 for ( $i = 0; $i < $count; $i++ ) { 1772 $post_id = (int) $post_id_array[ $i ]; 1773 if ( isset( $post_meta_cache[$blog_id][$post_id] ) ) { // If the meta is already cached 1774 unset( $post_id_array[ $i ] ); 1775 continue; 1776 } 1777 $post_meta_cache[$blog_id][$post_id] = array(); 1778 } 1779 if ( count( $post_id_array ) == 0 ) 1780 return; 1781 $post_id_list = join( ',', $post_id_array ); // with already cached stuff removeds 1782 1783 // Get post-meta info 1784 if ( $meta_list = $wpdb->get_results("SELECT post_id, meta_key, meta_value FROM $wpdb->postmeta WHERE post_id IN($post_id_list) ORDER BY post_id, meta_key", ARRAY_A) ) { 1785 // Change from flat structure to hierarchical: 1786 if ( !isset($post_meta_cache) ) 1787 $post_meta_cache[$blog_id] = array(); 1788 1789 foreach ($meta_list as $metarow) { 1790 $mpid = (int) $metarow['post_id']; 1791 $mkey = $metarow['meta_key']; 1792 $mval = $metarow['meta_value']; 1793 1794 // Force subkeys to be array type: 1795 if ( !isset($post_meta_cache[$blog_id][$mpid]) || !is_array($post_meta_cache[$blog_id][$mpid]) ) 1796 $post_meta_cache[$blog_id][$mpid] = array(); 1797 if ( !isset($post_meta_cache[$blog_id][$mpid]["$mkey"]) || !is_array($post_meta_cache[$blog_id][$mpid]["$mkey"]) ) 1798 $post_meta_cache[$blog_id][$mpid]["$mkey"] = array(); 1799 1800 // Add a value to the current pid/key: 1801 $post_meta_cache[$blog_id][$mpid][$mkey][] = $mval; 1802 } 1803 } 1804 } 1805 1597 1806 ?> -
trunk/wp-includes/taxonomy.php
r5553 r5555 96 96 $term_id = apply_filters('term_id_filter', $term_id, $tt_id); 97 97 98 //clean_term_cache($term_id);98 clean_term_cache($term_id, $taxonomy); 99 99 100 100 do_action("created_term", $term_id, $tt_id); … … 147 147 $wpdb->query("DELETE FROM $wpdb->term_taxonomy WHERE term_taxonomy_id = '$tt_id'"); 148 148 149 //clean_term_cache($term, $taxonomy); 149 clean_term_cache($term, $taxonomy); 150 150 151 do_action("delete_$taxonomy", $term, $tt_id); 151 152 … … 210 211 $term_id = apply_filters('term_id_filter', $term_id, $tt_id); 211 212 212 //clean_term_cache($term_id);213 clean_term_cache($term_id, $taxonomy); 213 214 214 215 do_action("edited_term", $term_id, $tt_id); … … 510 511 511 512 $cache[ $key ] = $terms; 512 wp_cache_add( 'get_terms', $cache, 'term s' );513 wp_cache_add( 'get_terms', $cache, 'term' ); 513 514 514 515 $terms = apply_filters('get_terms', $terms, $taxonomies, $args); … … 583 584 } 584 585 586 function clean_term_cache($id, $taxonomy) { 587 wp_cache_delete($id, $taxonomy); 588 wp_cache_delete('all_ids', $taxonomy); 589 wp_cache_delete('get', $taxonomy); 590 delete_option("{$taxonomy}_children"); 591 wp_cache_delete('get_terms', 'terms'); 592 } 593 585 594 function _get_term_hierarchy($taxonomy) { 586 595 // TODO Make sure taxonomy is hierarchical
Note: See TracChangeset
for help on using the changeset viewer.