Reworg post/page/attachment functions. #2525

git-svn-id: http://svn.automattic.com/wordpress/trunk@3851 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
ryan 2006-06-07 23:17:59 +00:00
parent 741934931d
commit 3c8ed766e1
8 changed files with 1187 additions and 1162 deletions

View File

@ -195,6 +195,52 @@ function wp_allow_comment($commentdata) {
return $approved;
}
function wp_blacklist_check($author, $email, $url, $comment, $user_ip, $user_agent) {
global $wpdb;
do_action('wp_blacklist_check', $author, $email, $url, $comment, $user_ip, $user_agent);
if ( preg_match_all('/&#(\d+);/', $comment . $author . $url, $chars) ) {
foreach ($chars[1] as $char) {
// If it's an encoded char in the normal ASCII set, reject
if ( 38 == $char )
continue; // Unless it's &
if ($char < 128)
return true;
}
}
$mod_keys = trim( get_settings('blacklist_keys') );
if ('' == $mod_keys )
return false; // If moderation keys are empty
$words = explode("\n", $mod_keys );
foreach ($words as $word) {
$word = trim($word);
// Skip empty lines
if ( empty($word) ) { continue; }
// Do some escaping magic so that '#' chars in the
// spam words don't break things:
$word = preg_quote($word, '#');
$pattern = "#$word#i";
if ( preg_match($pattern, $author ) ) return true;
if ( preg_match($pattern, $email ) ) return true;
if ( preg_match($pattern, $url ) ) return true;
if ( preg_match($pattern, $comment ) ) return true;
if ( preg_match($pattern, $user_ip ) ) return true;
if ( preg_match($pattern, $user_agent) ) return true;
}
if ( isset($_SERVER['REMOTE_ADDR']) ) {
if ( wp_proxy_check($_SERVER['REMOTE_ADDR']) ) return true;
}
return false;
}
function wp_delete_comment($comment_id) {
global $wpdb;
do_action('delete_comment', $comment_id);

View File

@ -340,303 +340,6 @@ function delete_option($name) {
return true;
}
function add_post_meta($post_id, $key, $value, $unique = false) {
global $wpdb, $post_meta_cache;
if ( $unique ) {
if ( $wpdb->get_var("SELECT meta_key FROM $wpdb->postmeta WHERE meta_key
= '$key' AND post_id = '$post_id'") ) {
return false;
}
}
$original = $value;
if ( is_array($value) || is_object($value) )
$value = $wpdb->escape(serialize($value));
$wpdb->query("INSERT INTO $wpdb->postmeta (post_id,meta_key,meta_value) VALUES ('$post_id','$key','$value')");
$post_meta_cache['$post_id'][$key][] = $original;
return true;
}
function delete_post_meta($post_id, $key, $value = '') {
global $wpdb, $post_meta_cache;
if ( empty($value) ) {
$meta_id = $wpdb->get_var("SELECT meta_id FROM $wpdb->postmeta WHERE
post_id = '$post_id' AND meta_key = '$key'");
} else {
$meta_id = $wpdb->get_var("SELECT meta_id FROM $wpdb->postmeta WHERE
post_id = '$post_id' AND meta_key = '$key' AND meta_value = '$value'");
}
if ( !$meta_id )
return false;
if ( empty($value) ) {
$wpdb->query("DELETE FROM $wpdb->postmeta WHERE post_id = '$post_id'
AND meta_key = '$key'");
unset($post_meta_cache['$post_id'][$key]);
} else {
$wpdb->query("DELETE FROM $wpdb->postmeta WHERE post_id = '$post_id'
AND meta_key = '$key' AND meta_value = '$value'");
$cache_key = $post_meta_cache['$post_id'][$key];
if ($cache_key) foreach ( $cache_key as $index => $data )
if ( $data == $value )
unset($post_meta_cache['$post_id'][$key][$index]);
}
unset($post_meta_cache['$post_id'][$key]);
return true;
}
function get_post_meta($post_id, $key, $single = false) {
global $wpdb, $post_meta_cache;
if ( isset($post_meta_cache[$post_id][$key]) ) {
if ( $single ) {
return maybe_unserialize( $post_meta_cache[$post_id][$key][0] );
} else {
return maybe_unserialize( $post_meta_cache[$post_id][$key] );
}
}
$metalist = $wpdb->get_results("SELECT meta_value FROM $wpdb->postmeta WHERE post_id = '$post_id' AND meta_key = '$key'", ARRAY_N);
$values = array();
if ( $metalist ) {
foreach ($metalist as $metarow) {
$values[] = $metarow[0];
}
}
if ( $single ) {
if ( count($values) ) {
$return = maybe_unserialize( $values[0] );
} else {
return '';
}
} else {
$return = $values;
}
return maybe_unserialize($return);
}
function update_post_meta($post_id, $key, $value, $prev_value = '') {
global $wpdb, $post_meta_cache;
$original_value = $value;
if ( is_array($value) || is_object($value) )
$value = $wpdb->escape(serialize($value));
$original_prev = $prev_value;
if ( is_array($prev_value) || is_object($prev_value) )
$prev_value = $wpdb->escape(serialize($prev_value));
if (! $wpdb->get_var("SELECT meta_key FROM $wpdb->postmeta WHERE meta_key
= '$key' AND post_id = '$post_id'") ) {
return false;
}
if ( empty($prev_value) ) {
$wpdb->query("UPDATE $wpdb->postmeta SET meta_value = '$value' WHERE
meta_key = '$key' AND post_id = '$post_id'");
$cache_key = $post_meta_cache['$post_id'][$key];
if ( !empty($cache_key) )
foreach ($cache_key as $index => $data)
$post_meta_cache['$post_id'][$key][$index] = $original_value;
} else {
$wpdb->query("UPDATE $wpdb->postmeta SET meta_value = '$value' WHERE
meta_key = '$key' AND post_id = '$post_id' AND meta_value = '$prev_value'");
$cache_key = $post_meta_cache['$post_id'][$key];
if ( !empty($cache_key) )
foreach ($cache_key as $index => $data)
if ( $data == $original_prev )
$post_meta_cache['$post_id'][$key][$index] = $original_value;
}
return true;
}
// Retrieves post data given a post ID or post object.
// Handles post caching.
function &get_post(&$post, $output = OBJECT) {
global $post_cache, $wpdb;
if ( empty($post) ) {
if ( isset($GLOBALS['post']) )
$_post = & $GLOBALS['post'];
else
$_post = null;
} elseif ( is_object($post) ) {
if ( 'page' == $post->post_type )
return get_page($post, $output);
if ( !isset($post_cache[$post->ID]) )
$post_cache[$post->ID] = &$post;
$_post = & $post_cache[$post->ID];
} else {
if ( $_post = wp_cache_get($post, 'pages') )
return get_page($_post, $output);
elseif ( isset($post_cache[$post]) )
$_post = & $post_cache[$post];
else {
$query = "SELECT * FROM $wpdb->posts WHERE ID = '$post' LIMIT 1";
$_post = & $wpdb->get_row($query);
if ( 'page' == $_post->post_type )
return get_page($_post, $output);
$post_cache[$post] = & $_post;
}
}
if ( defined(WP_IMPORTING) )
unset($post_cache);
if ( $output == OBJECT ) {
return $_post;
} elseif ( $output == ARRAY_A ) {
return get_object_vars($_post);
} elseif ( $output == ARRAY_N ) {
return array_values(get_object_vars($_post));
} else {
return $_post;
}
}
function &get_children($post = 0, $output = OBJECT) {
global $post_cache, $wpdb;
if ( empty($post) ) {
if ( isset($GLOBALS['post']) )
$post_parent = & $GLOBALS['post']->post_parent;
else
return false;
} elseif ( is_object($post) ) {
$post_parent = $post->post_parent;
} else {
$post_parent = $post;
}
$post_parent = (int) $post_parent;
$query = "SELECT * FROM $wpdb->posts WHERE post_parent = $post_parent";
$children = $wpdb->get_results($query);
if ( $children ) {
foreach ( $children as $key => $child ) {
$post_cache[$child->ID] =& $children[$key];
$kids[$child->ID] =& $children[$key];
}
} else {
return false;
}
if ( $output == OBJECT ) {
return $kids;
} elseif ( $output == ARRAY_A ) {
foreach ( $kids as $kid )
$weeuns[$kid->ID] = get_object_vars($kids[$kid->ID]);
return $weeuns;
} elseif ( $output == ARRAY_N ) {
foreach ( $kids as $kid )
$babes[$kid->ID] = array_values(get_object_vars($kids[$kid->ID]));
return $babes;
} else {
return $kids;
}
}
function get_page_by_path($page_path, $output = OBJECT) {
global $wpdb;
$page_path = rawurlencode(urldecode($page_path));
$page_path = str_replace('%2F', '/', $page_path);
$page_path = str_replace('%20', ' ', $page_path);
$page_paths = '/' . trim($page_path, '/');
$leaf_path = sanitize_title(basename($page_paths));
$page_paths = explode('/', $page_paths);
foreach($page_paths as $pathdir)
$full_path .= ($pathdir!=''?'/':'') . sanitize_title($pathdir);
$pages = $wpdb->get_results("SELECT ID, post_name, post_parent FROM $wpdb->posts WHERE post_name = '$leaf_path' AND post_type='page'");
if ( empty($pages) )
return NULL;
foreach ($pages as $page) {
$path = '/' . $leaf_path;
$curpage = $page;
while ($curpage->post_parent != 0) {
$curpage = $wpdb->get_row("SELECT ID, post_name, post_parent FROM $wpdb->posts WHERE ID = '$curpage->post_parent' and post_type='page'");
$path = '/' . $curpage->post_name . $path;
}
if ( $path == $full_path )
return get_page($page->ID, $output);
}
return NULL;
}
// Retrieves page data given a page ID or page object.
// Handles page caching.
function &get_page(&$page, $output = OBJECT) {
global $wpdb;
if ( empty($page) ) {
if ( isset($GLOBALS['page']) ) {
$_page = & $GLOBALS['page'];
wp_cache_add($_page->ID, $_page, 'pages');
} else {
$_page = null;
}
} elseif ( is_object($page) ) {
if ( 'post' == $page->post_type )
return get_post($page, $output);
wp_cache_add($page->ID, $page, 'pages');
$_page = $page;
} else {
if ( isset($GLOBALS['page']) && ($page == $GLOBALS['page']->ID) ) {
$_page = & $GLOBALS['page'];
wp_cache_add($_page->ID, $_page, 'pages');
} elseif ( $_page = $GLOBALS['post_cache'][$page] ) {
return get_post($page, $output);
} elseif ( $_page = wp_cache_get($page, 'pages') ) {
// Got it.
} else {
$query = "SELECT * FROM $wpdb->posts WHERE ID= '$page' LIMIT 1";
$_page = & $wpdb->get_row($query);
if ( 'post' == $_page->post_type )
return get_post($_page, $output);
wp_cache_add($_page->ID, $_page, 'pages');
}
}
if ( $output == OBJECT ) {
return $_page;
} elseif ( $output == ARRAY_A ) {
return get_object_vars($_page);
} elseif ( $output == ARRAY_N ) {
return array_values(get_object_vars($_page));
} else {
return $_page;
}
}
function get_all_page_ids() {
global $wpdb;
if ( ! $page_ids = wp_cache_get('all_page_ids', 'pages') ) {
$page_ids = $wpdb->get_col("SELECT ID FROM $wpdb->posts WHERE post_type = 'page'");
wp_cache_add('all_page_ids', $page_ids, 'pages');
}
return $page_ids;
}
function gzip_compression() {
if ( !get_settings('gzipcompression') ) return false;
@ -1274,14 +977,6 @@ function update_category_cache() {
return true;
}
function wp_head() {
do_action('wp_head');
}
function wp_footer() {
do_action('wp_footer');
}
/*
add_query_arg: Returns a modified querystring by adding
a single key & value or an associative array.
@ -1600,4 +1295,189 @@ function wp_nonce_field($action = -1) {
echo '<input type="hidden" name="_wpnonce" value="' . wp_create_nonce($action) . '" />';
}
function wp_mkdir_p($target) {
// from php.net/mkdir user contributed notes
if (file_exists($target)) {
if (! @ is_dir($target))
return false;
else
return true;
}
// Attempting to create the directory may clutter up our display.
if (@ mkdir($target)) {
$stat = @ stat(dirname($target));
$dir_perms = $stat['mode'] & 0007777; // Get the permission bits.
@ chmod($target, $dir_perms);
return true;
} else {
if ( is_dir(dirname($target)) )
return false;
}
// If the above failed, attempt to create the parent node, then try again.
if (wp_mkdir_p(dirname($target)))
return wp_mkdir_p($target);
return false;
}
// Returns an array containing the current upload directory's path and url, or an error message.
function wp_upload_dir() {
$siteurl = get_settings('siteurl');
//prepend ABSPATH to $dir and $siteurl to $url if they're not already there
$path = str_replace(ABSPATH, '', trim(get_settings('upload_path')));
$dir = ABSPATH . $path;
$url = trailingslashit($siteurl) . $path;
if ( $dir == ABSPATH ) { //the option was empty
$dir = ABSPATH . 'wp-content/uploads';
}
if ( defined('UPLOADS') ) {
$dir = ABSPATH . UPLOADS;
$url = trailingslashit($siteurl) . UPLOADS;
}
if ( get_settings('uploads_use_yearmonth_folders')) {
// Generate the yearly and monthly dirs
$time = current_time( 'mysql' );
$y = substr( $time, 0, 4 );
$m = substr( $time, 5, 2 );
$dir = $dir . "/$y/$m";
$url = $url . "/$y/$m";
}
// Make sure we have an uploads dir
if ( ! wp_mkdir_p( $dir ) ) {
$message = sprintf(__('Unable to create directory %s. Is its parent directory writable by the server?'), $dir);
return array('error' => $message);
}
$uploads = array('path' => $dir, 'url' => $url, 'error' => false);
return apply_filters('upload_dir', $uploads);
}
function wp_upload_bits($name, $type, $bits) {
if ( empty($name) )
return array('error' => "Empty filename");
$upload = wp_upload_dir();
if ( $upload['error'] !== false )
return $upload;
$number = '';
$filename = $name;
$path_parts = pathinfo($filename);
$ext = $path_parts['extension'];
if ( empty($ext) )
$ext = '';
else
$ext = ".$ext";
while ( file_exists($upload['path'] . "/$filename") ) {
if ( '' == "$number$ext" )
$filename = $filename . ++$number . $ext;
else
$filename = str_replace("$number$ext", ++$number . $ext, $filename);
}
$new_file = $upload['path'] . "/$filename";
if ( ! wp_mkdir_p( dirname($new_file) ) ) {
$message = sprintf(__('Unable to create directory %s. Is its parent directory writable by the server?'), dirname($new_file));
return array('error' => $message);
}
$ifp = @ fopen($new_file, 'wb');
if ( ! $ifp )
return array('error' => "Could not write file $new_file.");
$success = @ fwrite($ifp, $bits);
fclose($ifp);
// Set correct file permissions
$stat = @ stat(dirname($new_file));
$perms = $stat['mode'] & 0007777;
$perms = $perms & 0000666;
@ chmod($new_file, $perms);
// Compute the URL
$url = $upload['url'] . "/$filename";
return array('file' => $new_file, 'url' => $url, 'error' => false);
}
function do_trackbacks($post_id) {
global $wpdb;
$post = $wpdb->get_row("SELECT * FROM $wpdb->posts WHERE ID = $post_id");
$to_ping = get_to_ping($post_id);
$pinged = get_pung($post_id);
if ( empty($to_ping) ) {
$wpdb->query("UPDATE $wpdb->posts SET to_ping = '' WHERE ID = '$post_id'");
return;
}
if (empty($post->post_excerpt))
$excerpt = apply_filters('the_content', $post->post_content);
else
$excerpt = apply_filters('the_excerpt', $post->post_excerpt);
$excerpt = str_replace(']]>', ']]&gt;', $excerpt);
$excerpt = strip_tags($excerpt);
if ( function_exists('mb_strcut') ) // For international trackbacks
$excerpt = mb_strcut($excerpt, 0, 252, get_settings('blog_charset')) . '...';
else
$excerpt = substr($excerpt, 0, 252) . '...';
$post_title = apply_filters('the_title', $post->post_title);
$post_title = strip_tags($post_title);
if ($to_ping) : foreach ($to_ping as $tb_ping) :
$tb_ping = trim($tb_ping);
if ( !in_array($tb_ping, $pinged) ) {
trackback($tb_ping, $post_title, $excerpt, $post_id);
$pinged[] = $tb_ping;
} else {
$wpdb->query("UPDATE $wpdb->posts SET to_ping = TRIM(REPLACE(to_ping, '$tb_ping', '')) WHERE ID = '$post_id'");
}
endforeach; endif;
}
function do_all_pings() {
global $wpdb;
// Do pingbacks
while ($ping = $wpdb->get_row("SELECT * FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_pingme' LIMIT 1")) {
$wpdb->query("DELETE FROM {$wpdb->postmeta} WHERE post_id = {$ping->ID} AND meta_key = '_pingme';");
pingback($ping->post_content, $ping->ID);
}
// Do Enclosures
while ($enclosure = $wpdb->get_row("SELECT * FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_encloseme' LIMIT 1")) {
$wpdb->query("DELETE FROM {$wpdb->postmeta} WHERE post_id = {$enclosure->ID} AND meta_key = '_encloseme';");
do_enclose($enclosure->post_content, $enclosure->ID);
}
// Do Trackbacks
$trackbacks = $wpdb->get_results("SELECT ID FROM $wpdb->posts WHERE CHAR_LENGTH(TRIM(to_ping)) > 7 AND post_status = 'publish'");
if ( is_array($trackbacks) ) {
foreach ( $trackbacks as $trackback ) {
do_trackbacks($trackback->ID);
}
}
//Do Update Services/Generic Pings
generic_ping();
}
function wp_proxy_check($ipnum) {
if ( get_option('open_proxy_check') && isset($ipnum) ) {
$rev_ip = implode( '.', array_reverse( explode( '.', $ipnum ) ) );
$lookup = $rev_ip . '.opm.blitzed.org.';
if ( $lookup != gethostbyname( $lookup ) )
return true;
}
return false;
}
?>

View File

@ -1,25 +1,21 @@
<?php
function get_the_password_form() {
$output = '<form action="' . get_settings('siteurl') . '/wp-pass.php" method="post">
<p>' . __("This post is password protected. To view it please enter your password below:") . '</p>
<p><label>' . __("Password:") . ' <input name="post_password" type="password" size="20" /></label> <input type="submit" name="Submit" value="' . __("Submit") . '" /></p>
</form>
';
return $output;
}
//
// "The Loop" post functions
//
function the_ID() {
global $id;
echo $id;
}
function get_the_ID() {
global $id;
return $id;
}
function the_title($before = '', $after = '', $echo = true) {
$title = get_the_title();
if ( strlen($title) > 0 ) {
@ -42,6 +38,9 @@ function get_the_title($id = 0) {
return $title;
}
function the_guid( $id = 0 ) {
echo get_the_guid($id);
}
function get_the_guid( $id = 0 ) {
$post = &get_post($id);
@ -49,12 +48,6 @@ function get_the_guid( $id = 0 ) {
return apply_filters('get_the_guid', $post->guid);
}
function the_guid( $id = 0 ) {
echo get_the_guid($id);
}
function the_content($more_link_text = '(more...)', $stripteaser = 0, $more_file = '') {
$content = get_the_content($more_link_text, $stripteaser, $more_file);
$content = apply_filters('the_content', $content);
@ -190,59 +183,9 @@ function link_pages($before='<br />', $after='<br />', $next_or_number='number',
}
/*
Post-meta: Custom per-post fields.
*/
function get_post_custom( $post_id = 0 ) {
global $id, $post_meta_cache, $wpdb;
if ( ! $post_id )
$post_id = $id;
if ( isset($post_meta_cache[$post_id]) )
return $post_meta_cache[$post_id];
if ( $meta_list = $wpdb->get_results("SELECT post_id, meta_key, meta_value FROM $wpdb->postmeta WHERE post_id = '$post_id' ORDER BY post_id, meta_key", ARRAY_A) ) {
// Change from flat structure to hierarchical:
$post_meta_cache = array();
foreach ( $meta_list as $metarow ) {
$mpid = $metarow['post_id'];
$mkey = $metarow['meta_key'];
$mval = $metarow['meta_value'];
// Force subkeys to be array type:
if ( !isset($post_meta_cache[$mpid]) || !is_array($post_meta_cache[$mpid]) )
$post_meta_cache[$mpid] = array();
if ( !isset($post_meta_cache[$mpid]["$mkey"]) || !is_array($post_meta_cache[$mpid]["$mkey"]) )
$post_meta_cache[$mpid]["$mkey"] = array();
// Add a value to the current pid/key:
$post_meta_cache[$mpid][$mkey][] = $mval;
}
return $post_meta_cache[$mpid];
}
}
function get_post_custom_keys() {
$custom = get_post_custom();
if ( ! is_array($custom) )
return;
if ( $keys = array_keys($custom) )
return $keys;
}
function get_post_custom_values( $key = '' ) {
$custom = get_post_custom();
return $custom[$key];
}
//
// Post-meta: Custom per-post fields.
//
function post_custom( $key = '' ) {
@ -274,107 +217,9 @@ function the_meta() {
}
/*
Pages
*/
function walk_page_tree() {
$walker = new Walker_Page;
$args = func_get_args();
return call_user_func_array(array(&$walker, 'walk'), $args);
}
function walk_page_dropdown_tree() {
$walker = new Walker_PageDropdown;
$args = func_get_args();
return call_user_func_array(array(&$walker, 'walk'), $args);
}
function &get_page_children($page_id, $pages) {
global $page_cache;
if ( empty($pages) )
$pages = &$page_cache;
$page_list = array();
foreach ( $pages as $page ) {
if ( $page->post_parent == $page_id ) {
$page_list[] = $page;
if ( $children = get_page_children($page->ID, $pages) )
$page_list = array_merge($page_list, $children);
}
}
return $page_list;
}
function &get_pages($args = '') {
global $wpdb;
if ( is_array($args) )
$r = &$args;
else
parse_str($args, $r);
$defaults = array('child_of' => 0, 'sort_order' => 'ASC', 'sort_column' => 'post_title',
'hierarchical' => 1, 'exclude' => '', 'include' => '', 'meta_key' => '', 'meta_value' => '');
$r = array_merge($defaults, $r);
extract($r);
$inclusions = '';
if ( !empty($include) ) {
$child_of = 0; //ignore child_of, exclude, meta_key, and meta_value params if using include
$exclude = '';
$meta_key = '';
$meta_value = '';
$incpages = preg_split('/[\s,]+/',$include);
if ( count($incpages) ) {
foreach ( $incpages as $incpage ) {
if (empty($inclusions))
$inclusions = ' AND ( ID = ' . intval($incpage) . ' ';
else
$inclusions .= ' OR ID = ' . intval($incpage) . ' ';
}
}
}
if (!empty($inclusions))
$inclusions .= ')';
$exclusions = '';
if ( !empty($exclude) ) {
$expages = preg_split('/[\s,]+/',$exclude);
if ( count($expages) ) {
foreach ( $expages as $expage ) {
if (empty($exclusions))
$exclusions = ' AND ( ID <> ' . intval($expage) . ' ';
else
$exclusions .= ' AND ID <> ' . intval($expage) . ' ';
}
}
}
if (!empty($exclusions))
$exclusions .= ')';
$query = "SELECT * FROM $wpdb->posts " ;
$query .= ( empty( $meta_key ) ? "" : ", $wpdb->postmeta " ) ;
$query .= " WHERE (post_type = 'page' AND post_status = 'publish') $exclusions $inclusions " ;
$query .= ( empty( $meta_key ) | empty($meta_value) ? "" : " AND ($wpdb->posts.ID = $wpdb->postmeta.post_id AND $wpdb->postmeta.meta_key = '$meta_key' AND $wpdb->postmeta.meta_value = '$meta_value' )" ) ;
$query .= " ORDER BY " . $sort_column . " " . $sort_order ;
$pages = $wpdb->get_results($query);
$pages = apply_filters('get_pages', $pages, $r);
if ( empty($pages) )
return array();
// Update cache.
update_page_cache($pages);
if ( $child_of || $hierarchical )
$pages = & get_page_children($child_of, $pages);
return $pages;
}
//
// Pages
//
function wp_dropdown_pages($args = '') {
if ( is_array($args) )
@ -439,6 +284,26 @@ function wp_list_pages($args = '') {
return $output;
}
//
// Page helpers
//
function walk_page_tree() {
$walker = new Walker_Page;
$args = func_get_args();
return call_user_func_array(array(&$walker, 'walk'), $args);
}
function walk_page_dropdown_tree() {
$walker = new Walker_PageDropdown;
$args = func_get_args();
return call_user_func_array(array(&$walker, 'walk'), $args);
}
//
// Attachments
//
function the_attachment_link($id = 0, $fullsize = false, $max_dims = false) {
echo get_the_attachment_link($id, $fullsize, $max_dims);
}
@ -561,4 +426,17 @@ function prepend_attachment($content) {
return "$p\n$content";
}
//
// Misc
//
function get_the_password_form() {
$output = '<form action="' . get_settings('siteurl') . '/wp-pass.php" method="post">
<p>' . __("This post is password protected. To view it please enter your password below:") . '</p>
<p><label>' . __("Password:") . ' <input name="post_password" type="password" size="20" /></label> <input type="submit" name="Submit" value="' . __("Submit") . '" /></p>
</form>
';
return $output;
}
?>

File diff suppressed because it is too large Load Diff

View File

@ -155,6 +155,13 @@ function get_author_link($echo = false, $author_id, $author_nicename) {
return $link;
}
// Get author's preferred display name
function get_author_name( $auth_id ) {
$authordata = get_userdata( $auth_id );
return $authordata->display_name;
}
function wp_list_authors($args = '') {
if ( is_array($args) )
$r = &$args;

View File

@ -694,6 +694,14 @@ function the_weekday_date($before='',$after='') {
echo $the_weekday_date;
}
function wp_head() {
do_action('wp_head');
}
function wp_footer() {
do_action('wp_footer');
}
function rsd_link() {
echo '<link rel="EditURI" type="application/rsd+xml" title="RSD" href="' . get_bloginfo('wpurl') . "/xmlrpc.php?rsd\" />\n";
}
@ -703,4 +711,71 @@ function noindex() {
if ( ! get_option('blog_public') )
echo '<meta name="robots" content="noindex,nofollow" />' . "\n";
}
/**
* Places a textarea according to the current user's preferences, filled with $content.
* Also places a script block that enables tabbing between Title and Content.
*
* @param string Editor contents
* @param string (optional) Previous form field's ID (for tabbing support)
*/
function the_editor($content, $id = 'content', $prev_id = 'title') {
$rows = get_settings('default_post_edit_rows');
if (($rows < 3) || ($rows > 100))
$rows = 12;
$rows = "rows='$rows'";
the_quicktags();
if ( user_can_richedit() )
add_filter('the_editor_content', 'wp_richedit_pre');
$the_editor = apply_filters('the_editor', "<div><textarea class='mceEditor' $rows cols='40' name='$id' tabindex='2' id='$id'>%s</textarea></div>\n");
$the_editor_content = apply_filters('the_editor_content', $content);
printf($the_editor, $the_editor_content);
?>
<script type="text/javascript">
//<!--
edCanvas = document.getElementById('<?php echo $id; ?>');
<?php if ( user_can_richedit() ) : ?>
// This code is meant to allow tabbing from Title to Post (TinyMCE).
if ( tinyMCE.isMSIE )
document.getElementById('<?php echo $prev_id; ?>').onkeydown = function (e)
{
e = e ? e : window.event;
if (e.keyCode == 9 && !e.shiftKey && !e.controlKey && !e.altKey) {
var i = tinyMCE.selectedInstance;
if(typeof i == 'undefined')
return true;
tinyMCE.execCommand("mceStartTyping");
this.blur();
i.contentWindow.focus();
e.returnValue = false;
return false;
}
}
else
document.getElementById('<?php echo $prev_id; ?>').onkeypress = function (e)
{
e = e ? e : window.event;
if (e.keyCode == 9 && !e.shiftKey && !e.controlKey && !e.altKey) {
var i = tinyMCE.selectedInstance;
if(typeof i == 'undefined')
return true;
tinyMCE.execCommand("mceStartTyping");
this.blur();
i.contentWindow.focus();
e.returnValue = false;
return false;
}
}
<?php endif; ?>
//-->
</script>
<?php
}
?>

View File

@ -84,6 +84,11 @@ function get_permalink($id = 0) {
}
}
// get permalink from post ID
function post_permalink($post_id = 0, $mode = '') { // $mode legacy
return get_permalink($post_id);
}
function get_page_link($id = false) {
global $post, $wp_rewrite;

View File

@ -124,7 +124,6 @@ if ( !is_blog_installed() && (!strstr($_SERVER['PHP_SELF'], 'install.php') && !d
}
require (ABSPATH . WPINC . '/functions-formatting.php');
require (ABSPATH . WPINC . '/functions-post.php');
require (ABSPATH . WPINC . '/capabilities.php');
require (ABSPATH . WPINC . '/classes.php');
require (ABSPATH . WPINC . '/query.php');
@ -132,7 +131,8 @@ require (ABSPATH . WPINC . '/theme.php');
require (ABSPATH . WPINC . '/template-functions-general.php');
require (ABSPATH . WPINC . '/template-functions-links.php');
require (ABSPATH . WPINC . '/template-functions-author.php');
require (ABSPATH . WPINC . '/template-functions-post.php');
require (ABSPATH . WPINC . '/post.php');
require (ABSPATH . WPINC . '/post-template.php');
require (ABSPATH . WPINC . '/category.php');
require (ABSPATH . WPINC . '/category-template.php');
require (ABSPATH . WPINC . '/comment.php');