More massive code cleanups from Mark Jaquith. fixes #1772

git-svn-id: http://svn.automattic.com/wordpress/trunk@2955 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
ryan 2005-10-18 22:42:02 +00:00
parent 751a663f3c
commit ab8cf86716
1 changed files with 234 additions and 207 deletions

View File

@ -9,38 +9,43 @@ function get_the_password_form() {
return $output; return $output;
} }
function the_ID() { function the_ID() {
global $id; global $id;
echo $id; echo $id;
} }
function the_title($before = '', $after = '', $echo = true) { function the_title($before = '', $after = '', $echo = true) {
$title = get_the_title(); $title = get_the_title();
if ( strlen($title) > 0 ) { if ( strlen($title) > 0 ) {
$title = apply_filters('the_title', $before . $title . $after, $before, $after); $title = apply_filters('the_title', $before . $title . $after, $before, $after);
if ($echo) if ( $echo )
echo $title; echo $title;
else else
return $title; return $title;
} }
} }
function get_the_title($id = 0) { function get_the_title($id = 0) {
$post = &get_post($id); $post = &get_post($id);
$title = $post->post_title; $title = $post->post_title;
if (!empty($post->post_password)) if ( !empty($post->post_password) )
$title = sprintf(__('Protected: %s'), $title); $title = sprintf(__('Protected: %s'), $title);
return $title; return $title;
} }
function get_the_guid( $id = 0 ) { function get_the_guid( $id = 0 ) {
$post = &get_post($id); $post = &get_post($id);
return apply_filters('get_the_guid', $post->guid); return apply_filters('get_the_guid', $post->guid);
} }
function the_guid( $id = 0 ) { function the_guid( $id = 0 ) {
echo get_the_guid($id); echo get_the_guid($id);
} }
@ -53,55 +58,57 @@ function the_content($more_link_text = '(more...)', $stripteaser = 0, $more_file
echo $content; echo $content;
} }
function get_the_content($more_link_text = '(more...)', $stripteaser = 0, $more_file = '') { function get_the_content($more_link_text = '(more...)', $stripteaser = 0, $more_file = '') {
global $id, $post, $more, $single, $withcomments, $page, $pages, $multipage, $numpages; global $id, $post, $more, $single, $withcomments, $page, $pages, $multipage, $numpages;
global $preview; global $preview;
global $pagenow; global $pagenow;
$output = ''; $output = '';
if (!empty($post->post_password)) { // if there's a password if ( !empty($post->post_password) ) { // if there's a password
if (stripslashes($_COOKIE['wp-postpass_'.COOKIEHASH]) != $post->post_password) { // and it doesn't match the cookie if ( stripslashes($_COOKIE['wp-postpass_'.COOKIEHASH]) != $post->post_password ) { // and it doesn't match the cookie
$output = get_the_password_form(); $output = get_the_password_form();
return $output; return $output;
} }
} }
if ($more_file != '') { if ( $more_file != '' )
$file = $more_file; $file = $more_file;
} else { else
$file = $pagenow; //$_SERVER['PHP_SELF']; $file = $pagenow; //$_SERVER['PHP_SELF'];
}
$content = $pages[$page-1]; $content = $pages[$page-1];
$content = explode('<!--more-->', $content, 2); $content = explode('<!--more-->', $content, 2);
if ((preg_match('/<!--noteaser-->/', $post->post_content) && ((!$multipage) || ($page==1)))) if ( (preg_match('/<!--noteaser-->/', $post->post_content) && ((!$multipage) || ($page==1))) )
$stripteaser = 1; $stripteaser = 1;
$teaser = $content[0]; $teaser = $content[0];
if (($more) && ($stripteaser)) if ( ($more) && ($stripteaser) )
$teaser = ''; $teaser = '';
$output .= $teaser; $output .= $teaser;
if (count($content)>1) { if ( count($content) > 1 ) {
if ($more) { if ( $more )
$output .= '<a id="more-'.$id.'"></a>'.$content[1]; $output .= '<a id="more-'.$id.'"></a>'.$content[1];
} else { else
$output .= ' <a href="'. get_permalink() . "#more-$id\">$more_link_text</a>"; $output .= ' <a href="'. get_permalink() . "#more-$id\">$more_link_text</a>";
} }
} if ( $preview ) // preview fix for javascript bug with foreign languages
if ($preview) { // preview fix for javascript bug with foreign languages
$output = preg_replace('/\%u([0-9A-F]{4,4})/e', "'&#'.base_convert('\\1',16,10).';'", $output); $output = preg_replace('/\%u([0-9A-F]{4,4})/e', "'&#'.base_convert('\\1',16,10).';'", $output);
}
return $output; return $output;
} }
function the_excerpt() { function the_excerpt() {
echo apply_filters('the_excerpt', get_the_excerpt()); echo apply_filters('the_excerpt', get_the_excerpt());
} }
function get_the_excerpt($fakeit = true) { function get_the_excerpt($fakeit = true) {
global $id, $post; global $id, $post;
$output = ''; $output = '';
$output = $post->post_excerpt; $output = $post->post_excerpt;
if (!empty($post->post_password)) { // if there's a password if ( !empty($post->post_password) ) { // if there's a password
if ($_COOKIE['wp-postpass_'.COOKIEHASH] != $post->post_password) { // and it doesn't match the cookie if ( $_COOKIE['wp-postpass_'.COOKIEHASH] != $post->post_password ) { // and it doesn't match the cookie
$output = __('There is no excerpt because this is a protected post.'); $output = __('There is no excerpt because this is a protected post.');
return $output; return $output;
} }
@ -110,72 +117,79 @@ function get_the_excerpt($fakeit = true) {
return apply_filters('get_the_excerpt', $output); return apply_filters('get_the_excerpt', $output);
} }
function wp_link_pages($args = '') { function wp_link_pages($args = '') {
parse_str($args, $r); parse_str($args, $r);
if (!isset($r['before'])) $r['before'] = '<p>' . __('Pages:'); if ( !isset($r['before']) )
if (!isset($r['after'])) $r['after'] = '</p>'; $r['before'] = '<p>' . __('Pages:');
if (!isset($r['next_or_number'])) $r['next_or_number'] = 'number'; if ( !isset($r['after']) )
if (!isset($r['nextpagelink'])) $r['nextpagelink'] = 'Next page'; $r['after'] = '</p>';
if (!isset($r['previouspagelink'])) $r['previouspagelink'] = 'Previous page'; if ( !isset($r['next_or_number']) )
if (!isset($r['pagelink'])) $r['pagelink'] = '%'; $r['next_or_number'] = 'number';
if (!isset($r['more_file'])) $r['more_file'] = ''; if ( !isset($r['nextpagelink']) )
$r['nextpagelink'] = 'Next page';
if ( !isset($r['previouspagelink']) )
$r['previouspagelink'] = 'Previous page';
if ( !isset($r['pagelink']) )
$r['pagelink'] = '%';
if ( !isset($r['more_file']) )
$r['more_file'] = '';
link_pages($r['before'], $r['after'], $r['next_or_number'], $r['nextpagelink'], $r['previouspagelink'], $r['pagelink'], $r['more_file']); link_pages($r['before'], $r['after'], $r['next_or_number'], $r['nextpagelink'], $r['previouspagelink'], $r['pagelink'], $r['more_file']);
} }
function link_pages($before='<br />', $after='<br />', $next_or_number='number', $nextpagelink='next page', $previouspagelink='previous page', $pagelink='%', $more_file='') { function link_pages($before='<br />', $after='<br />', $next_or_number='number', $nextpagelink='next page', $previouspagelink='previous page', $pagelink='%', $more_file='') {
global $id, $page, $numpages, $multipage, $more; global $id, $page, $numpages, $multipage, $more, $pagenow;
global $pagenow; if ( $more_file != '' )
if ($more_file != '') {
$file = $more_file; $file = $more_file;
} else { else
$file = $pagenow; $file = $pagenow;
} if ( $multipage ) {
if (($multipage)) { if ( 'number' == $next_or_number ) {
if ($next_or_number=='number') {
echo $before; echo $before;
for ($i = 1; $i < ($numpages+1); $i = $i + 1) { for ( $i = 1; $i < ($numpages+1); $i = $i + 1 ) {
$j=str_replace('%',"$i",$pagelink); $j = str_replace('%',"$i",$pagelink);
echo ' '; echo ' ';
if (($i != $page) || ((!$more) && ($page==1))) { if ( ($i != $page) || ((!$more) && ($page==1)) ) {
if ('' == get_settings('permalink_structure')) { if ( '' == get_settings('permalink_structure') )
echo '<a href="' . get_permalink() . '&amp;page=' . $i . '">'; echo '<a href="' . get_permalink() . '&amp;page=' . $i . '">';
} else { else
echo '<a href="' . trailingslashit( get_permalink() ) . $i . '/">'; echo '<a href="' . trailingslashit( get_permalink() ) . $i . '/">';
} }
}
echo $j; echo $j;
if (($i != $page) || ((!$more) && ($page==1))) if ( ($i != $page) || ((!$more) && ($page==1)) )
echo '</a>'; echo '</a>';
} }
echo $after; echo $after;
} else { } else {
if ($more) { if ( $more ) {
echo $before; echo $before;
$i=$page-1; $i = $page - 1;
if ($i && $more) { if ( $i && $more ) {
if ('' == get_settings('permalink_structure')) { if ( '' == get_settings('permalink_structure') )
echo '<a href="' . get_permalink() . '&amp;page=' . $i . '">'.$previouspagelink.'</a>'; echo '<a href="' . get_permalink() . '&amp;page=' . $i . '">'.$previouspagelink.'</a>';
} else { else
echo '<a href="' . get_permalink() . $i . '/">'.$previouspagelink.'</a>'; echo '<a href="' . get_permalink() . $i . '/">'.$previouspagelink.'</a>';
} }
} $i = $page + 1;
$i=$page+1; if ( $i <= $numpages && $more ) {
if ($i<=$numpages && $more) { if ( '' == get_settings('permalink_structure') )
if ('' == get_settings('permalink_structure')) {
echo '<a href="'.get_permalink() . '&amp;page=' . $i . '">'.$nextpagelink.'</a>'; echo '<a href="'.get_permalink() . '&amp;page=' . $i . '">'.$nextpagelink.'</a>';
} else { else
echo '<a href="'.get_permalink().$i.'/">'.$nextpagelink.'</a>'; echo '<a href="'.get_permalink().$i.'/">'.$nextpagelink.'</a>';
} }
}
echo $after; echo $after;
} }
} }
} }
} }
/* /*
* Post-meta: Custom per-post fields. Post-meta: Custom per-post fields.
*/ */
function get_post_custom( $post_id = 0 ) { function get_post_custom( $post_id = 0 ) {
global $id, $post_meta_cache, $wpdb; global $id, $post_meta_cache, $wpdb;
@ -185,18 +199,17 @@ function get_post_custom( $post_id = 0 ) {
return $post_meta_cache[$id]; return $post_meta_cache[$id];
} else { } else {
if ( $meta_list = $wpdb->get_results("SELECT post_id, meta_key, meta_value FROM $wpdb->postmeta WHERE post_id = '$id' ORDER BY post_id, meta_key", ARRAY_A) ) { if ( $meta_list = $wpdb->get_results("SELECT post_id, meta_key, meta_value FROM $wpdb->postmeta WHERE post_id = '$id' ORDER BY post_id, meta_key", ARRAY_A) ) {
// Change from flat structure to hierarchical: // Change from flat structure to hierarchical:
$post_meta_cache = array(); $post_meta_cache = array();
foreach ($meta_list as $metarow) { foreach ( $meta_list as $metarow ) {
$mpid = $metarow['post_id']; $mpid = $metarow['post_id'];
$mkey = $metarow['meta_key']; $mkey = $metarow['meta_key'];
$mval = $metarow['meta_value']; $mval = $metarow['meta_value'];
// Force subkeys to be array type: // Force subkeys to be array type:
if (!isset($post_meta_cache[$mpid]) || !is_array($post_meta_cache[$mpid])) if ( !isset($post_meta_cache[$mpid]) || !is_array($post_meta_cache[$mpid]) )
$post_meta_cache[$mpid] = array(); $post_meta_cache[$mpid] = array();
if (!isset($post_meta_cache[$mpid]["$mkey"]) || !is_array($post_meta_cache[$mpid]["$mkey"])) if ( !isset($post_meta_cache[$mpid]["$mkey"]) || !is_array($post_meta_cache[$mpid]["$mkey"]) )
$post_meta_cache[$mpid]["$mkey"] = array(); $post_meta_cache[$mpid]["$mkey"] = array();
// Add a value to the current pid/key: // Add a value to the current pid/key:
@ -207,38 +220,43 @@ function get_post_custom( $post_id = 0 ) {
} }
} }
function get_post_custom_keys() { function get_post_custom_keys() {
global $id, $post_meta_cache; global $id, $post_meta_cache;
if (!is_array($post_meta_cache[$id])) if ( !is_array($post_meta_cache[$id]) )
return; return;
if ($keys = array_keys($post_meta_cache[$id])) if ( $keys = array_keys($post_meta_cache[$id]) )
return $keys; return $keys;
} }
function get_post_custom_values($key='') { function get_post_custom_values($key='') {
global $id, $post_meta_cache; global $id, $post_meta_cache;
return $post_meta_cache[$id][$key]; return $post_meta_cache[$id][$key];
} }
function post_custom( $key = '' ) { function post_custom( $key = '' ) {
global $id, $post_meta_cache; global $id, $post_meta_cache;
if ( 1 == count($post_meta_cache[$id][$key]) ) return $post_meta_cache[$id][$key][0]; if ( 1 == count($post_meta_cache[$id][$key]) )
else return $post_meta_cache[$id][$key]; return $post_meta_cache[$id][$key][0];
else
return $post_meta_cache[$id][$key];
} }
// this will probably change at some point... // this will probably change at some point...
function the_meta() { function the_meta() {
global $id, $post_meta_cache; global $id, $post_meta_cache;
if ($keys = get_post_custom_keys()) { if ( $keys = get_post_custom_keys() ) {
echo "<ul class='post-meta'>\n"; echo "<ul class='post-meta'>\n";
foreach ($keys as $key) { foreach ( $keys as $key ) {
$values = array_map('trim',$post_meta_cache[$id][$key]); $values = array_map('trim',$post_meta_cache[$id][$key]);
$value = implode($values,', '); $value = implode($values,', ');
echo "<li><span class='post-meta-key'>$key:</span> $value</li>\n"; echo "<li><span class='post-meta-key'>$key:</span> $value</li>\n";
} }
echo "</ul>\n"; echo "</ul>\n";
@ -246,9 +264,10 @@ function the_meta() {
} }
// /*
// Pages Pages
// */
function &get_page_children($page_id, $pages) { function &get_page_children($page_id, $pages) {
global $page_cache; global $page_cache;
@ -257,32 +276,35 @@ function &get_page_children($page_id, $pages) {
$pages = &$page_cache; $pages = &$page_cache;
$page_list = array(); $page_list = array();
foreach ($pages as $page) { foreach ( $pages as $page ) {
if ($page->post_parent == $page_id) { if ( $page->post_parent == $page_id ) {
$page_list[] = $page; $page_list[] = $page;
if ( $children = get_page_children($page->ID, $pages)) { if ( $children = get_page_children($page->ID, $pages) )
$page_list = array_merge($page_list, $children); $page_list = array_merge($page_list, $children);
} }
} }
}
return $page_list; return $page_list;
} }
function &get_pages($args = '') { function &get_pages($args = '') {
global $wpdb; global $wpdb;
parse_str($args, $r); parse_str($args, $r);
if (!isset($r['child_of'])) $r['child_of'] = 0; if ( !isset($r['child_of']) )
if (!isset($r['sort_column'])) $r['sort_column'] = 'post_title'; $r['child_of'] = 0;
if (!isset($r['sort_order'])) $r['sort_order'] = 'ASC'; if ( !isset($r['sort_column']) )
$r['sort_column'] = 'post_title';
if ( !isset($r['sort_order']) )
$r['sort_order'] = 'ASC';
$exclusions = ''; $exclusions = '';
if (!empty($r['exclude'])) { if ( !empty($r['exclude']) ) {
$expages = preg_split('/[\s,]+/',$r['exclude']); $expages = preg_split('/[\s,]+/',$r['exclude']);
if (count($expages)) { if ( count($expages) ) {
foreach ($expages as $expage) { foreach ( $expages as $expage ) {
$exclusions .= ' AND ID <> ' . intval($expage) . ' '; $exclusions .= ' AND ID <> ' . intval($expage) . ' ';
} }
} }
@ -300,31 +322,38 @@ function &get_pages($args = '') {
// Update cache. // Update cache.
update_page_cache($pages); update_page_cache($pages);
if ($r['child_of']) if ( $r['child_of'] )
$pages = & get_page_children($r['child_of'], $pages); $pages = & get_page_children($r['child_of'], $pages);
return $pages; return $pages;
} }
function wp_list_pages($args = '') { function wp_list_pages($args = '') {
parse_str($args, $r); parse_str($args, $r);
if ( !isset($r['depth']) ) $r['depth'] = 0; if ( !isset($r['depth']) )
if ( !isset($r['show_date']) ) $r['show_date'] = ''; $r['depth'] = 0;
if ( !isset($r['child_of']) ) $r['child_of'] = 0; if ( !isset($r['show_date']) )
if ( !isset($r['title_li']) ) $r['title_li'] = __('Pages'); $r['show_date'] = '';
if ( !isset($r['echo']) ) $r['echo'] = 1; if ( !isset($r['child_of']) )
$r['child_of'] = 0;
if ( !isset($r['title_li']) )
$r['title_li'] = __('Pages');
if ( !isset($r['echo']) )
$r['echo'] = 1;
$output = ''; $output = '';
// Query pages. // Query pages.
$pages = & get_pages($args); $pages = & get_pages($args);
if ( $pages ) : if ( $pages ) {
if ( $r['title_li'] ) if ( $r['title_li'] )
$output .= '<li class="pagenav">' . $r['title_li'] . '<ul>'; $output .= '<li class="pagenav">' . $r['title_li'] . '<ul>';
// Now loop over all pages that were selected // Now loop over all pages that were selected
$page_tree = Array(); $page_tree = Array();
foreach($pages as $page) { foreach ( $pages as $page ) {
// set the title for the current page // set the title for the current page
$page_tree[$page->ID]['title'] = $page->post_title; $page_tree[$page->ID]['title'] = $page->post_title;
$page_tree[$page->ID]['name'] = $page->post_name; $page_tree[$page->ID]['name'] = $page->post_name;
@ -334,8 +363,8 @@ function wp_list_pages($args = '') {
// the createtion date or the modification date // the createtion date or the modification date
// as a unix timestamp. It will also always be in the // as a unix timestamp. It will also always be in the
// ts field. // ts field.
if (! empty($r['show_date'])) { if ( !empty($r['show_date']) ) {
if ('modified' == $r['show_date']) if ( 'modified' == $r['show_date'] )
$page_tree[$page->ID]['ts'] = $page->post_modified; $page_tree[$page->ID]['ts'] = $page->post_modified;
else else
$page_tree[$page->ID]['ts'] = $page->post_date; $page_tree[$page->ID]['ts'] = $page->post_date;
@ -354,7 +383,7 @@ function wp_list_pages($args = '') {
$output .= _page_level_out($r['child_of'],$page_tree, $r, 0, false); $output .= _page_level_out($r['child_of'],$page_tree, $r, 0, false);
if ( $r['title_li'] ) if ( $r['title_li'] )
$output .= '</ul></li>'; $output .= '</ul></li>';
endif; }
$output = apply_filters('wp_list_pages', $output); $output = apply_filters('wp_list_pages', $output);
@ -364,40 +393,38 @@ function wp_list_pages($args = '') {
return $output; return $output;
} }
function _page_level_out($parent, $page_tree, $args, $depth = 0, $echo = true) { function _page_level_out($parent, $page_tree, $args, $depth = 0, $echo = true) {
global $wp_query; global $wp_query;
$queried_obj = $wp_query->get_queried_object(); $queried_obj = $wp_query->get_queried_object();
$output = ''; $output = '';
if($depth) if ( $depth )
$indent = str_repeat("\t", $depth); $indent = str_repeat("\t", $depth);
//$indent = join('', array_fill(0,$depth,"\t")); //$indent = join('', array_fill(0,$depth,"\t"));
foreach($page_tree[$parent]['children'] as $page_id) { foreach ( $page_tree[$parent]['children'] as $page_id ) {
$cur_page = $page_tree[$page_id]; $cur_page = $page_tree[$page_id];
$title = $cur_page['title']; $title = $cur_page['title'];
$css_class = 'page_item'; $css_class = 'page_item';
if( $page_id == $queried_obj->ID) { if ( $page_id == $queried_obj->ID )
$css_class .= ' current_page_item'; $css_class .= ' current_page_item';
}
$output .= $indent . '<li class="' . $css_class . '"><a href="' . get_page_link($page_id) . '" title="' . wp_specialchars($title) . '">' . $title . '</a>'; $output .= $indent . '<li class="' . $css_class . '"><a href="' . get_page_link($page_id) . '" title="' . wp_specialchars($title) . '">' . $title . '</a>';
if(isset($cur_page['ts'])) { if ( isset($cur_page['ts']) ) {
$format = get_settings('date_format'); $format = get_settings('date_format');
if(isset($args['date_format'])) if ( isset($args['date_format']) )
$format = $args['date_format']; $format = $args['date_format'];
$output .= " " . mysql2date($format, $cur_page['ts']); $output .= " " . mysql2date($format, $cur_page['ts']);
} }
$output .= "\n"; $output .= "\n";
if(isset($cur_page['children']) && is_array($cur_page['children'])) { if ( isset($cur_page['children']) && is_array($cur_page['children']) ) {
$new_depth = $depth + 1; $new_depth = $depth + 1;
if(!$args['depth'] || $depth < ($args['depth']-1)) { if ( !$args['depth'] || $depth < ($args['depth']-1) ) {
$output .= "$indent<ul>\n"; $output .= "$indent<ul>\n";
$output .= _page_level_out($page_id, $page_tree, $args, $new_depth, false); $output .= _page_level_out($page_id, $page_tree, $args, $new_depth, false);
$output .= "$indent</ul>\n"; $output .= "$indent</ul>\n";