devdaily home | apple | java | perl | unix | directory | blog

What this is

This file is included in the DevDaily.com "PHP Source Code Warehouse" project. The intent of this project is to help you "Learn PHP by Example" TM.

Other links

The source code

<?php
require(dirname(__FILE__) . '/wp-config.php');

// trackback is done by a POST
$request_array = 'HTTP_POST_VARS';
$tb_id = explode('/', $_SERVER['REQUEST_URI']);
$tb_id = intval($tb_id[count($tb_id)-1]);
$tb_url = $_POST['url'];
$title = $_POST['title'];
$excerpt = $_POST['excerpt'];
$blog_name = $_POST['blog_name'];

require('wp-blog-header.php');

if ( (($p != '') && ($p != 'all')) || ($name != '') ) {
    $tb_id = $posts[0]->ID;
}

if (empty($title) && empty($tb_url) && empty($blog_name)) {
	// If it doesn't look like a trackback at all...
	header('Location: ' . get_permalink($tb_id));
}

if ((strlen(''.$tb_id)) && (empty($_GET['__mode'])) && (strlen(''.$tb_url))) {

	@header('Content-Type: text/xml');

	if (!get_settings('use_trackback'))
		trackback_response(1, 'Sorry, this weblog does not allow you to trackback its posts.');

	$pingstatus = $wpdb->get_var("SELECT ping_status FROM $tableposts WHERE ID = $tb_id");

	if ('closed' == $pingstatus)
		trackback_response(1, 'Sorry, trackbacks are closed for this item.');

	$tb_url = addslashes($tb_url);
	$title = strip_tags($title);
	$title = (strlen($title) > 255) ? substr($title, 0, 252).'...' : $title;
	$excerpt = strip_tags($excerpt);
	$excerpt = (strlen($excerpt) > 255) ? substr($excerpt, 0, 252).'...' : $excerpt;
	$blog_name = htmlspecialchars($blog_name);
	$blog_name = (strlen($blog_name) > 255) ? substr($blog_name, 0, 252).'...' : $blog_name;

	$comment = '<trackback />';
	$comment .= "<strong>$title</strong>\n$excerpt";

	$author = addslashes(stripslashes(stripslashes($blog_name)));
	$email = '';
	$original_comment = $comment;
	$comment_post_ID = $tb_id;

	$user_ip = $_SERVER['REMOTE_ADDR'];
	$user_domain = gethostbyaddr($user_ip);
	$now = current_time('mysql');
	$now_gmt = current_time('mysql', 1);

	$comment = convert_chars($comment);
	$comment = format_to_post($comment);

	$comment_author = $author;
	$comment_author_email = $email;
	$comment_author_url = $tb_url;

	$author = addslashes($author);

	$comment_moderation = get_settings('comment_moderation');
	$moderation_notify = get_settings('moderation_notify');

	if(check_comment($author, $email, $url, $comment, $user_ip)) {
		$approved = 1;
	} else {
		$approved = 0;
	}

	$result = $wpdb->query("INSERT INTO $tablecomments 
	(comment_post_ID, comment_author, comment_author_email, comment_author_url, comment_author_IP, comment_date, comment_date_gmt, comment_content, comment_approved)
	VALUES 
	('$comment_post_ID', '$author', '$email', '$tb_url', '$user_ip', '$now', '$now_gmt', '$comment', '$approved')
	");

	if (!$result) {
		die ("There is an error with the database, it can't store your comment...<br />Please contact the webmaster.");
	} else {
		$comment_ID = $wpdb->get_var('SELECT last_insert_id()');
		if (get_settings('comments_notify'))
			wp_notify_postauthor($comment_ID, 'trackback');
		trackback_response(0);
		do_action('trackback_post', $comment_ID);
	}
}
?>




Copyright 1998-2008 Alvin Alexander
All Rights Reserved.
 
devdaily.com is based in louisville, kentucky, and this web site is hosted by godaddy.com