Changeset 3712
- Timestamp:
- 04/18/2006 04:47:26 AM (18 years ago)
- Location:
- trunk/wp-includes
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-includes/functions.php
r3711 r3712 179 179 } 180 180 181 182 181 function get_usernumposts($userid) { 183 182 global $wpdb; 184 183 return $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->posts WHERE post_author = '$userid' AND post_type = 'post' AND post_status = 'publish'"); 185 184 } 186 187 188 // examine a url (supposedly from this blog) and try to189 // determine the post ID it represents.190 function url_to_postid($url) {191 global $wp_rewrite;192 193 // First, check to see if there is a 'p=N' or 'page_id=N' to match against194 preg_match('#[?&](p|page_id)=(\d+)#', $url, $values);195 $id = intval($values[2]);196 if ( $id ) return $id;197 198 // Check to see if we are using rewrite rules199 $rewrite = $wp_rewrite->wp_rewrite_rules();200 201 // Not using rewrite rules, and 'p=N' and 'page_id=N' methods failed, so we're out of options202 if ( empty($rewrite) )203 return 0;204 205 // $url cleanup by Mark Jaquith206 // This fixes things like #anchors, ?query=strings, missing 'www.',207 // added 'www.', or added 'index.php/' that will mess up our WP_Query208 // and return a false negative209 210 // Get rid of the #anchor211 $url_split = explode('#', $url);212 $url = $url_split[0];213 214 // Get rid of URI ?query=string215 $url_split = explode('?', $url);216 $url = $url_split[0];217 218 // Add 'www.' if it is absent and should be there219 if ( false !== strpos(get_settings('home'), '://www.') && false === strpos($url, '://www.') )220 $url = str_replace('://', '://www.', $url);221 222 // Strip 'www.' if it is present and shouldn't be223 if ( false === strpos(get_settings('home'), '://www.') )224 $url = str_replace('://www.', '://', $url);225 226 // Strip 'index.php/' if we're not using path info permalinks227 if ( false === strpos($rewrite, 'index.php/') )228 $url = str_replace('index.php/', '', $url);229 230 if ( false !== strpos($url, get_settings('home')) ) {231 // Chop off http://domain.com232 $url = str_replace(get_settings('home'), '', $url);233 } else {234 // Chop off /path/to/blog235 $home_path = parse_url(get_settings('home'));236 $home_path = $home_path['path'];237 $url = str_replace($home_path, '', $url);238 }239 240 // Trim leading and lagging slashes241 $url = trim($url, '/');242 243 $request = $url;244 245 // Done with cleanup246 247 // Look for matches.248 $request_match = $request;249 foreach ($rewrite as $match => $query) {250 // If the requesting file is the anchor of the match, prepend it251 // to the path info.252 if ( (! empty($url)) && (strpos($match, $url) === 0) ) {253 $request_match = $url . '/' . $request;254 }255 256 if ( preg_match("!^$match!", $request_match, $matches) ) {257 // Got a match.258 // Trim the query of everything up to the '?'.259 $query = preg_replace("!^.+\?!", '', $query);260 261 // Substitute the substring matches into the query.262 eval("\$query = \"$query\";");263 $query = new WP_Query($query);264 if ( $query->is_single || $query->is_page )265 return $query->post->ID;266 else267 return 0;268 }269 }270 return 0;271 }272 273 185 274 186 function maybe_unserialize($original) { -
trunk/wp-includes/rewrite.php
r3697 r3712 57 57 global $wp_rewrite; 58 58 $wp_rewrite->add_endpoint($name, $places); 59 } 60 61 // examine a url (supposedly from this blog) and try to 62 // determine the post ID it represents. 63 function url_to_postid($url) { 64 global $wp_rewrite; 65 66 // First, check to see if there is a 'p=N' or 'page_id=N' to match against 67 preg_match('#[?&](p|page_id)=(\d+)#', $url, $values); 68 $id = intval($values[2]); 69 if ( $id ) return $id; 70 71 // Check to see if we are using rewrite rules 72 $rewrite = $wp_rewrite->wp_rewrite_rules(); 73 74 // Not using rewrite rules, and 'p=N' and 'page_id=N' methods failed, so we're out of options 75 if ( empty($rewrite) ) 76 return 0; 77 78 // $url cleanup by Mark Jaquith 79 // This fixes things like #anchors, ?query=strings, missing 'www.', 80 // added 'www.', or added 'index.php/' that will mess up our WP_Query 81 // and return a false negative 82 83 // Get rid of the #anchor 84 $url_split = explode('#', $url); 85 $url = $url_split[0]; 86 87 // Get rid of URI ?query=string 88 $url_split = explode('?', $url); 89 $url = $url_split[0]; 90 91 // Add 'www.' if it is absent and should be there 92 if ( false !== strpos(get_settings('home'), '://www.') && false === strpos($url, '://www.') ) 93 $url = str_replace('://', '://www.', $url); 94 95 // Strip 'www.' if it is present and shouldn't be 96 if ( false === strpos(get_settings('home'), '://www.') ) 97 $url = str_replace('://www.', '://', $url); 98 99 // Strip 'index.php/' if we're not using path info permalinks 100 if ( false === strpos($rewrite, 'index.php/') ) 101 $url = str_replace('index.php/', '', $url); 102 103 if ( false !== strpos($url, get_settings('home')) ) { 104 // Chop off http://domain.com 105 $url = str_replace(get_settings('home'), '', $url); 106 } else { 107 // Chop off /path/to/blog 108 $home_path = parse_url(get_settings('home')); 109 $home_path = $home_path['path']; 110 $url = str_replace($home_path, '', $url); 111 } 112 113 // Trim leading and lagging slashes 114 $url = trim($url, '/'); 115 116 $request = $url; 117 118 // Done with cleanup 119 120 // Look for matches. 121 $request_match = $request; 122 foreach ($rewrite as $match => $query) { 123 // If the requesting file is the anchor of the match, prepend it 124 // to the path info. 125 if ( (! empty($url)) && (strpos($match, $url) === 0) ) { 126 $request_match = $url . '/' . $request; 127 } 128 129 if ( preg_match("!^$match!", $request_match, $matches) ) { 130 // Got a match. 131 // Trim the query of everything up to the '?'. 132 $query = preg_replace("!^.+\?!", '', $query); 133 134 // Substitute the substring matches into the query. 135 eval("\$query = \"$query\";"); 136 $query = new WP_Query($query); 137 if ( $query->is_single || $query->is_page ) 138 return $query->post->ID; 139 else 140 return 0; 141 } 142 } 143 return 0; 59 144 } 60 145
Note: See TracChangeset
for help on using the changeset viewer.