phpdoc for comment.php from darkdragon. fixes #5578

git-svn-id: http://svn.automattic.com/wordpress/trunk@6553 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
ryan 2008-01-04 20:03:42 +00:00
parent 91586ebff4
commit 502a542d64

View File

@ -1,5 +1,27 @@
<?php
/**
* Manages WordPress comments
*
* @package WordPress
*/
/**
* check_comment() - Checks whether a comment passes internal checks to be allowed to add
*
* {@internal Missing Long Description}}
*
* @since 1.2
* @uses $wpdb
*
* @param string $author {@internal Missing Description }}
* @param string $email {@internal Missing Description }}
* @param string $url {@internal Missing Description }}
* @param string $comment {@internal Missing Description }}
* @param string $user_ip {@internal Missing Description }}
* @param string $user_agent {@internal Missing Description }}
* @param string $comment_type {@internal Missing Description }}
* @return bool {@internal Missing Description }}
*/
function check_comment($author, $email, $url, $comment, $user_ip, $user_agent, $comment_type) {
global $wpdb;
@ -60,15 +82,32 @@ function check_comment($author, $email, $url, $comment, $user_ip, $user_agent, $
return true;
}
/**
* get_approved_comments() - Returns the approved comments for post $post_id
*
* @since 2.0
* @uses $wpdb
*
* @param int $post_id The ID of the post
* @return array $comments The approved comments
*/
function get_approved_comments($post_id) {
global $wpdb;
return $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_approved = '1' ORDER BY comment_date", $post_id));
}
// Retrieves comment data given a comment ID or comment object.
// Handles comment caching.
/**
* get_comment() - Retrieves comment data given a comment ID or comment object.
*
* {@internal Missing Long Description}}
*
* @since 2.0
* @uses $wpdb
*
* @param object|string|int $comment {@internal Missing Description}}
* @param string $output OBJECT or ARRAY_A or ARRAY_N constants
* @return object|array|null Depends on $output value.
*/
function &get_comment(&$comment, $output = OBJECT) {
global $wpdb;
@ -102,8 +141,27 @@ function &get_comment(&$comment, $output = OBJECT) {
}
}
// Deprecate in favor of get_comment()?
/**
* get_commentdata() - Returns an array of comment data about comment $comment_ID
*
* get_comment() technically does the same thing as this function. This function also
* appears to reference variables and then not use them or not update them when needed.
* It is advised to switch to get_comment(), since this function might be deprecated in
* favor of using get_comment().
*
* @deprecated Use get_comment()
* @see get_comment()
* @since 0.71
*
* @uses $postc Comment cache, might not be used any more
* @uses $id
* @uses $wpdb Database Object
*
* @param int $comment_ID The ID of the comment
* @param int $no_cache Whether to use the cache or not (casted to bool)
* @param bool $include_unapproved Whether to include unapproved comments or not
* @return array The comment data
*/
function get_commentdata( $comment_ID, $no_cache = 0, $include_unapproved = false ) { // less flexible, but saves DB queries
global $postc, $wpdb;
if ( $no_cache ) {
@ -127,7 +185,18 @@ function get_commentdata( $comment_ID, $no_cache = 0, $include_unapproved = fals
return $myrow;
}
/**
* get_lastcommentmodified() - The date the last comment was modified
*
* {@internal Missing Long Description}}
*
* @since 1.5.0
* @uses $wpdb
* @global array $cache_lastcommentmodified
*
* @param string $timezone Which timezone to use in reference to 'gmt', 'blog', or 'server' locations
* @return string Last comment modified date
*/
function get_lastcommentmodified($timezone = 'server') {
global $cache_lastcommentmodified, $wpdb;
$add_seconds_server = date('Z');
@ -151,54 +220,72 @@ function get_lastcommentmodified($timezone = 'server') {
return $lastcommentmodified;
}
/**
* get_comment_count() - The amount of comments in a post or total comments
*
* {@internal Missing Long Description}}
*
* @since 2.0.0
* @uses $wpdb
*
* @param int $post_id Optional. Comment amount in post if > 0, else total com
ments blog wide
* @return array The amount of spam, approved, awaiting moderation, and total
*/
function get_comment_count( $post_id = 0 ) {
global $wpdb;
global $wpdb;
$post_id = (int) $post_id;
$post_id = (int) $post_id;
$where = '';
if ( $post_id > 0 ) {
$where = "WHERE comment_post_ID = {$post_id}";
}
$where = '';
if ( $post_id > 0 ) {
$where = "WHERE comment_post_ID = {$post_id}";
}
$totals = (array) $wpdb->get_results("
SELECT comment_approved, COUNT( * ) AS total
FROM {$wpdb->comments}
{$where}
GROUP BY comment_approved
", ARRAY_A);
$totals = (array) $wpdb->get_results("
SELECT comment_approved, COUNT( * ) AS total
FROM {$wpdb->comments}
{$where}
GROUP BY comment_approved
", ARRAY_A);
$comment_count = array(
"approved" => 0,
"awaiting_moderation" => 0,
"spam" => 0,
"total_comments" => 0
);
$comment_count = array(
"approved" => 0,
"awaiting_moderation" => 0,
"spam" => 0,
"total_comments" => 0
);
foreach ( $totals as $row ) {
switch ( $row['comment_approved'] ) {
case 'spam':
$comment_count['spam'] = $row['total'];
$comment_count["total_comments"] += $row['total'];
break;
case 1:
$comment_count['approved'] = $row['total'];
$comment_count['total_comments'] += $row['total'];
break;
case 0:
$comment_count['awaiting_moderation'] = $row['total'];
$comment_count['total_comments'] += $row['total'];
break;
default:
break;
}
}
foreach ( $totals as $row ) {
switch ( $row['comment_approved'] ) {
case 'spam':
$comment_count['spam'] = $row['total'];
$comment_count["total_comments"] += $row['total'];
break;
case 1:
$comment_count['approved'] = $row['total'];
$comment_count['total_comments'] += $row['total'];
break;
case 0:
$comment_count['awaiting_moderation'] = $row['total'];
$comment_count['total_comments'] += $row['total'];
break;
default:
break;
}
}
return $comment_count;
return $comment_count;
}
/**
* sanitize_comment_cookies() - {@internal Missing Short Description}}
*
* {@internal Missing Long Description}}
*
* @since 2.0.4
*
*/
function sanitize_comment_cookies() {
if ( isset($_COOKIE['comment_author_'.COOKIEHASH]) ) {
$comment_author = apply_filters('pre_comment_author_name', $_COOKIE['comment_author_'.COOKIEHASH]);
@ -221,7 +308,19 @@ function sanitize_comment_cookies() {
}
}
/**
* wp_allow_comment() - Validates whether this comment is allowed to be made or not
*
* {@internal Missing Long Description}}
*
* @since 2.0.0
* @uses $wpdb
* @uses apply_filters() Calls 'pre_comment_approved' hook on the type of comment
* @uses do_action() Calls 'check_comment_flood' hook on $comment_author_IP, $comment_author_email, and $comment_date_gmt
*
* @param array $commentdata Contains information on the comment
* @return mixed Signifies the approval status (0|1|'spam')
*/
function wp_allow_comment($commentdata) {
global $wpdb;
extract($commentdata, EXTR_SKIP);
@ -260,6 +359,20 @@ function wp_allow_comment($commentdata) {
return $approved;
}
/**
* check_comment_flood_db() - {@internal Missing Short Description}}
*
* {@internal Missing Long Description}}
*
* @since 2.3.0
* @uses $wpdb
* @uses apply_filters() {@internal Missing Description}}
* @uses do_action() {@internal Missing Description}}
*
* @param string $ip {@internal Missing Description}}
* @param string $email {@internal Missing Description}}
* @param unknown_type $date {@internal Missing Description}}
*/
function check_comment_flood_db( $ip, $email, $date ) {
global $wpdb;
if ( $lasttime = $wpdb->get_var("SELECT comment_date_gmt FROM $wpdb->comments WHERE comment_author_IP = '$ip' OR comment_author_email = '$email' ORDER BY comment_date DESC LIMIT 1") ) {
@ -273,6 +386,22 @@ function check_comment_flood_db( $ip, $email, $date ) {
}
}
/**
* wp_blacklist_check() - Does comment contain blacklisted characters or words
*
* {@internal Missing Long Description}}
*
* @since 1.5.0
* @uses do_action() Calls 'wp_blacklist_check' hook for all parameters
*
* @param string $author The author of the comment
* @param string $email The email of the comment
* @param string $url The url used in the comment
* @param string $comment The comment content
* @param string $user_ip The comment author IP address
* @param string $user_agent The author's browser user agent
* @return bool True if comment contains blacklisted content, false if comment does not
*/
function wp_blacklist_check($author, $email, $url, $comment, $user_ip, $user_agent) {
do_action('wp_blacklist_check', $author, $email, $url, $comment, $user_ip, $user_agent);
@ -315,7 +444,20 @@ function wp_blacklist_check($author, $email, $url, $comment, $user_ip, $user_age
return false;
}
/**
* wp_delete_comment() - Removes comment ID and maybe updates post comment count
*
* The post comment count will be updated if the comment was approved and has a post
* ID available.
*
* @since 2.0.0
* @uses $wpdb
* @uses do_action() Calls 'delete_comment' hook on comment ID
* @uses do_action() Calls 'wp_set_comment_status' hook on comment ID with 'delete' set for the second parameter
*
* @param int $comment_id Comment ID
* @return bool False if delete comment query failure, true on success
*/
function wp_delete_comment($comment_id) {
global $wpdb;
do_action('delete_comment', $comment_id);
@ -335,7 +477,14 @@ function wp_delete_comment($comment_id) {
return true;
}
/**
* wp_get_comment_status() - The status of a comment by ID
*
* @since 1.0.0
*
* @param int $comment_id Comment ID
* @return string|bool Status might be 'deleted', 'approved', 'unapproved', 'spam'. False on failure
*/
function wp_get_comment_status($comment_id) {
$comment = get_comment($comment_id);
if ( !$comment )
@ -355,7 +504,18 @@ function wp_get_comment_status($comment_id) {
return false;
}
/**
* wp_get_current_commenter() - Get current commenter's name, email, and URL
*
* Expects cookies content to already be sanitized. User of this function
* might wish to recheck the returned array for validity.
*
* @see sanitize_comment_cookies() Use to sanitize cookies
*
* @since 2.0.4
*
* @return array Comment author, email, url respectively
*/
function wp_get_current_commenter() {
// Cookies should already be sanitized.
@ -374,7 +534,17 @@ function wp_get_current_commenter() {
return compact('comment_author', 'comment_author_email', 'comment_author_url');
}
/**
* wp_insert_comment() - Inserts a comment to the database
*
* {@internal Missing Long Description}}
*
* @since 2.0.0
* @uses $wpdb
*
* @param array $commentdata Contains information on the comment
* @return int The new comment's id
*/
function wp_insert_comment($commentdata) {
global $wpdb;
extract($commentdata, EXTR_SKIP);
@ -406,7 +576,25 @@ function wp_insert_comment($commentdata) {
return $id;
}
/**
* wp_filter_comment() - Parses and returns comment information
*
* Sets the comment data 'filtered' field to true when finished. This
* can be checked as to whether the comment should be filtered and to
* keep from filtering the same comment more than once.
*
* @since 2.0.0
* @uses apply_filters() Calls 'pre_user_id' hook on comment author's user ID
* @uses apply_filters() Calls 'pre_comment_user_agent' hook on comment author's user agent
* @uses apply_filters() Calls 'pre_comment_author_name' hook on comment author's name
* @uses apply_filters() Calls 'pre_comment_content' hook on the comment's content
* @uses apply_filters() Calls 'pre_comment_user_ip' hook on comment author's IP
* @uses apply_filters() Calls 'pre_comment_author_url' hook on comment author's URL
* @uses apply_filters() Calls 'pre_comment_author_email' hook on comment author's email address
*
* @param array $commentdata Contains information on the comment
* @return array Parsed comment information
*/
function wp_filter_comment($commentdata) {
$commentdata['user_id'] = apply_filters('pre_user_id', $commentdata['user_ID']);
$commentdata['comment_agent'] = apply_filters('pre_comment_user_agent', $commentdata['comment_agent']);
@ -419,7 +607,18 @@ function wp_filter_comment($commentdata) {
return $commentdata;
}
/**
* wp_throttle_comment_flood() - {@internal Missing Short Description}}
*
* {@internal Missing Long Description}}
*
* @since 2.1.0
*
* @param unknown_type $block {@internal Missing Description}}
* @param unknown_type $time_lastcomment {@internal Missing Description}}
* @param unknown_type $time_newcomment {@internal Missing Description}}
* @return unknown {@internal Missing Description}}
*/
function wp_throttle_comment_flood($block, $time_lastcomment, $time_newcomment) {
if ( $block ) // a plugin has already blocked... we'll let that decision stand
return $block;
@ -428,7 +627,21 @@ function wp_throttle_comment_flood($block, $time_lastcomment, $time_newcomment)
return false;
}
/**
* wp_new_comment() - Parses and adds a new comment to the database
*
* {@internal Missing Long Description}}
*
* @since 1.5.0
* @uses apply_filters() Calls 'preprocess_comment' hook on $commentdata parameter array before processing
* @uses do_action() Calls 'comment_post' hook on $comment_ID returned from adding the comment and if the comment was approved.
* @uses wp_filter_comment() Used to filter comment before adding comment
* @uses wp_allow_comment() checks to see if comment is approved.
* @uses wp_insert_comment() Does the actual comment insertion to the database
*
* @param array $commentdata Contains information on the comment
* @return int The ID of the comment after adding.
*/
function wp_new_comment( $commentdata ) {
$commentdata = apply_filters('preprocess_comment', $commentdata);
@ -462,7 +675,17 @@ function wp_new_comment( $commentdata ) {
return $comment_ID;
}
/**
* wp_set_comment_status() - Sets the status of comment ID
*
* {@internal Missing Long Description}}
*
* @since 1.0.0
*
* @param int $comment_id Comment ID
* @param string $comment_status New comment status, either 'hold', 'approve', 'spam', or 'delete'
* @return bool False on failure or deletion and true on success.
*/
function wp_set_comment_status($comment_id, $comment_status) {
global $wpdb;
@ -495,7 +718,17 @@ function wp_set_comment_status($comment_id, $comment_status) {
return true;
}
/**
* wp_update_comment() - Parses and updates an existing comment in the database
*
* {@internal Missing Long Description}}
*
* @since 2.0.0
* @uses $wpdb
*
* @param array $commentarr Contains information on the comment
* @return int Comment was updated if value is 1, or was not updated if value is 0.
*/
function wp_update_comment($commentarr) {
global $wpdb;
@ -537,19 +770,51 @@ function wp_update_comment($commentarr) {
return $rval;
}
function wp_defer_comment_counting($defer=NULL) {
/**
* wp_defer_comment_counting() - Whether to defer comment counting
*
* When setting $defer to true, all post comment counts will not be updated
* until $defer is set to false. When $defer is set to false, then all
* previously deferred updated post comment counts will then be automatically
* updated without having to call wp_update_comment_count() after.
*
* @since 2.5
* @staticvar bool $_defer
*
* @param bool $defer
* @return unknown
*/
function wp_defer_comment_counting($defer=null) {
static $_defer = false;
if ( is_bool($defer) ) {
$_defer = $defer;
// flush any deferred counts
if ( !$defer )
wp_update_comment_count( NULL, true );
wp_update_comment_count( null, true );
}
return $_defer;
}
/**
* wp_update_comment_count() - Updates the comment count for post(s)
*
* When $do_deferred is false (is by default) and the comments have been
* set to be deferred, the post_id will be added to a queue, which will
* be updated at a later date and only updated once per post ID.
*
* If the comments have not be set up to be deferred, then the post will
* be updated. When $do_deferred is set to true, then all previous deferred
* post IDs will be updated along with the current $post_id.
*
* @since 2.1.0
* @see wp_update_comment_count_now() For what could cause a false return value
*
* @param int $post_id Post ID
* @param bool $do_deferred Whether to process previously deferred post comment counts
* @return bool True on success, false on failure
*/
function wp_update_comment_count($post_id, $do_deferred=false) {
static $_deferred = array();
@ -557,7 +822,7 @@ function wp_update_comment_count($post_id, $do_deferred=false) {
$_deferred = array_unique($_deferred);
foreach ( $_deferred as $i => $_post_id ) {
wp_update_comment_count_now($_post_id);
unset( $_deferred[$i] );
unset( $_deferred[$i] ); /** @todo Move this outside of the foreach and reset $_deferred to an array instead */
}
}
@ -571,6 +836,17 @@ function wp_update_comment_count($post_id, $do_deferred=false) {
}
/**
* wp_update_comment_count_now() - Updates the comment count for the post
*
* @since 2.5
* @uses $wpdb
* @uses do_action() Calls 'wp_update_comment_count' hook on $post_id, $new, and $old
* @uses do_action() Calls 'edit_posts' hook on $post_id and $post
*
* @param int $post_id Post ID
* @return bool False on '0' $post_id or if post with ID does not exist. True on success.
*/
function wp_update_comment_count_now($post_id) {
global $wpdb;
$post_id = (int) $post_id;
@ -594,11 +870,22 @@ function wp_update_comment_count_now($post_id) {
return true;
}
//
// Ping and trackback functions.
//
/**
* discover_pingback_server_uri() - Finds a pingback server URI based on the given URL
*
* {@internal Missing Long Description}}
*
* @since 1.5.0
* @uses $wp_version
*
* @param string $url URL to ping
* @param int $timeout_bytes Number of bytes to timeout at. Prevents big file downloads, default is 2048.
* @return bool|string False on failure, string containing URI on success.
*/
function discover_pingback_server_uri($url, $timeout_bytes = 2048) {
global $wp_version;
@ -679,7 +966,14 @@ function discover_pingback_server_uri($url, $timeout_bytes = 2048) {
return false;
}
/**
* do_all_pings() - {@internal Missing Short Description}}
*
* {@internal Missing Long Description}}
*
* @since 2.1.0
* @uses $wpdb
*/
function do_all_pings() {
global $wpdb;
@ -706,6 +1000,16 @@ function do_all_pings() {
generic_ping();
}
/**
* do_trackbacks() - {@internal Missing Short Description}}
*
* {@internal Missing Long Description}}
*
* @since 1.5.0
* @uses $wpdb
*
* @param int $post_id Post ID to do trackbacks on
*/
function do_trackbacks($post_id) {
global $wpdb;
@ -744,7 +1048,16 @@ function do_trackbacks($post_id) {
}
}
/**
* generic_ping() - {@internal Missing Short Description}}
*
* {@internal Missing Long Description}}
*
* @since 1.2.0
*
* @param int $post_id Post ID. Not actually used.
* @return int Same as Post ID from parameter
*/
function generic_ping($post_id = 0) {
$services = get_option('ping_sites');
$services = preg_replace("|(\s)+|", '$1', $services); // Kill dupe lines
@ -758,7 +1071,18 @@ function generic_ping($post_id = 0) {
return $post_id;
}
/**
* pingback() - Pings back the links found in a post
*
* {@internal Missing Long Description}}
*
* @since 0.71
* @uses $wp_version
* @uses IXR_Client
*
* @param string $content {@internal Missing Description}}
* @param int $post_ID {@internal Missing Description}}
*/
function pingback($content, $post_ID) {
global $wp_version;
include_once(ABSPATH . WPINC . '/class-IXR.php');
@ -824,7 +1148,16 @@ function pingback($content, $post_ID) {
}
}
/**
* privacy_ping_filter() - {@internal Missing Short Description}}
*
* {@internal Missing Long Description}}
*
* @since 2.1.0
*
* @param unknown_type $sites {@internal Missing Description}}
* @return unknown {@internal Missing Description}}
*/
function privacy_ping_filter($sites) {
if ( '0' != get_option('blog_public') )
return $sites;
@ -832,7 +1165,21 @@ function privacy_ping_filter($sites) {
return '';
}
// Send a Trackback
/**
* trackback() - Send a Trackback
*
* {@internal Missing Long Description}}
*
* @since 0.71
* @uses $wpdb
* @uses $wp_version WordPress version
*
* @param string $trackback_url {@internal Missing Description}}
* @param string $title {@internal Missing Description}}
* @param string $excerpt {@internal Missing Description}}
* @param int $ID {@internal Missing Description}}
* @return unknown {@internal Missing Description}}
*/
function trackback($trackback_url, $title, $excerpt, $ID) {
global $wpdb, $wp_version;
@ -864,7 +1211,18 @@ function trackback($trackback_url, $title, $excerpt, $ID) {
return $wpdb->query("UPDATE $wpdb->posts SET to_ping = TRIM(REPLACE(to_ping, '$tb_url', '')) WHERE ID = '$ID'");
}
/**
* weblog_ping() - {@internal Missing Short Description}}
*
* {@internal Missing Long Description}}
*
* @since 1.2.0
* @uses $wp_version
* @uses IXR_Client
*
* @param unknown_type $server
* @param unknown_type $path
*/
function weblog_ping($server = '', $path = '') {
global $wp_version;
include_once(ABSPATH . WPINC . '/class-IXR.php');
@ -885,12 +1243,34 @@ function weblog_ping($server = '', $path = '') {
// Cache
//
/**
* clean_comment_cache() - Removes comment ID from the comment cache
*
* @since 2.3.0
* @package WordPress
* @subpackage Cache
*
* @param int $id Comment ID to remove from cache
*/
function clean_comment_cache($id) {
wp_cache_delete($id, 'comment');
}
/**
* update_comment_cache() - Updates the comment cache of given comments
*
* Will add the comments in $comments to the cache. If comment ID already
* exists in the comment cache then it will not be updated.
*
* The comment is added to the cache using the comment group with the key
* using the ID of the comments.
*
* @since 2.3.0
*
* @param array $comments Array of comment row objects
*/
function update_comment_cache($comments) {
foreach ( $comments as $comment )
foreach ( (array) $comments as $comment )
wp_cache_add($comment->comment_ID, $comment, 'comment');
}