<?php

// Template functions

// Start: Erweitert für Gästebuch Template
function guestbook_template$file '/guestbook.php' ) {
    global 
$wp_query$withcomments$post$wpdb$id$comment$user_login$user_ID$user_identity;

    if ( 
is_single() || is_page() || $withcomments ) :
        
$req get_settings('require_name_email');
        
$comment_author = isset($_COOKIE['comment_author_'.COOKIEHASH]) ? trim(stripslashes($_COOKIE['comment_author_'.COOKIEHASH])) : '';
        
$comment_author_email = isset($_COOKIE['comment_author_email_'.COOKIEHASH]) ? trim(stripslashes($_COOKIE['comment_author_email_'.COOKIEHASH])) : '';
        
$comment_author_url = isset($_COOKIE['comment_author_url_'.COOKIEHASH]) ? trim(stripslashes($_COOKIE['comment_author_url_'.COOKIEHASH])) : '';
    if ( empty(
$comment_author) ) {
        
$comments $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_post_ID = '$post->ID' AND comment_approved = '1' ORDER BY comment_date DESC");
    } else {
        
$author_db addslashes($comment_author);
        
$email_db  addslashes($comment_author_email);
        
$comments $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_post_ID = '$post->ID' AND ( comment_approved = '1' OR ( comment_author = '$author_db' AND comment_author_email = '$email_db' AND comment_approved = '0' ) ) ORDER BY comment_date DESC");
    }

    
get_currentuserinfo();

    
define('GUESTBOOK_TEMPLATE'true);
    
$include apply_filters('guestbook_template'TEMPLATEPATH $file );
    if ( 
file_exists$include ) )
        require( 
$include );
    else
        require( 
ABSPATH 'wp-content/themes/default/guestbook.php');

    endif;

}
// Ende: Erweiterung für Gästebuch Template

function comments_template$file '/comments.php' ) {
    global 
$wp_query$withcomments$post$wpdb$id$comment$user_login$user_ID$user_identity;

    if ( 
is_single() || is_page() || $withcomments ) :
        
$req get_settings('require_name_email');
        
$comment_author = isset($_COOKIE['comment_author_'.COOKIEHASH]) ? trim(stripslashes($_COOKIE['comment_author_'.COOKIEHASH])) : '';
        
$comment_author_email = isset($_COOKIE['comment_author_email_'.COOKIEHASH]) ? trim(stripslashes($_COOKIE['comment_author_email_'.COOKIEHASH])) : '';
        
$comment_author_url = isset($_COOKIE['comment_author_url_'.COOKIEHASH]) ? trim(stripslashes($_COOKIE['comment_author_url_'.COOKIEHASH])) : '';
    if ( empty(
$comment_author) ) {
        
$comments $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_post_ID = '$post->ID' AND comment_approved = '1' ORDER BY comment_date");
    } else {
        
$author_db addslashes($comment_author);
        
$email_db  addslashes($comment_author_email);
        
$comments $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_post_ID = '$post->ID' AND ( comment_approved = '1' OR ( comment_author = '$author_db' AND comment_author_email = '$email_db' AND comment_approved = '0' ) ) ORDER BY comment_date");
    }

    
get_currentuserinfo();

    
define('COMMENTS_TEMPLATE'true);
    
$include apply_filters('comments_template'TEMPLATEPATH $file );
    if ( 
file_exists$include ) )
        require( 
$include );
    else
        require( 
ABSPATH 'wp-content/themes/default/comments.php');

    endif;
}

function 
clean_url$url ) {
    if (
'' == $url) return $url;
    
$url preg_replace('|[^a-z0-9-~+_.?#=&;,/:]|i'''$url);
    
$url str_replace(';//''://'$url);
    
$url = (!strstr($url'://')) ? 'http://'.$url $url;
    
$url preg_replace('/&([^#])(?![a-z]{2,8};)/''&#038;$1'$url);
    return 
$url;
}

function 
get_comments_number$comment_id ) {
    global 
$wpdb$comment_count_cache;
    
$comment_id = (int) $comment_id;
    if (!isset(
$comment_count_cache[$comment_id]))
        
$comment_count_cache[$comment_id] =  $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->comments WHERE comment_post_ID = '$comment_id' AND comment_approved = '1'");
    
    return 
apply_filters('get_comments_number'$comment_count_cache[$comment_id]);
}

function 
comments_number$zero 'No Comments'$one '1 Comment'$more '% Comments'$number '' ) {
    global 
$id$comment;
    
$number get_comments_number$id );
    if (
$number == 0) {
        
$blah $zero;
    } elseif (
$number == 1) {
        
$blah $one;
    } elseif (
$number  1) {
        
$blah str_replace('%'$number$more);
    }
    echo 
apply_filters('comments_number'$blah);
}

function 
get_comments_link() {
    return 
get_permalink() . '#comments';
}

function 
get_comment_link() {
    global 
$comment;
    return 
get_permalink$comment->comment_post_ID ) . '#comment-' $comment->comment_ID;
}

function 
comments_link$file ''$echo true ) {
    echo 
get_comments_link();
}

function 
comments_popup_script($width=400$height=400$file='') {
    global 
$wpcommentspopupfile$wptrackbackpopupfile$wppingbackpopupfile$wpcommentsjavascript;

        if (empty (
$file)) {
            
$wpcommentspopupfile '';  // Use the index.
        
} else {
            
$wpcommentspopupfile $file;
        }

    
$wpcommentsjavascript 1;
    
$javascript "<script type='text/javascript'>\nfunction wpopen (macagna) {\n    window.open(macagna, '_blank', 'width=$width,height=$height,scrollbars=yes,status=yes');\n}\n</script>\n";
    echo 
$javascript;
}

function 
comments_popup_link($zero='No Comments'$one='1 Comment'$more='% Comments'$CSSclass=''$none='Comments Off') {
    global 
$id$wpcommentspopupfile$wpcommentsjavascript$post$wpdb;
    global 
$comment_count_cache;

    if (! 
is_single() && ! is_page()) {
    if ( !isset(
$comment_count_cache[$id]))
            
$comment_count_cache[$id] = $wpdb->get_var("SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_post_ID = $id AND comment_approved = '1';");

        
$number $comment_count_cache[$id];

    if (
== $number && 'closed' == $post->comment_status && 'closed' == $post->ping_status) {
        echo 
$none;
        return;
    } else {
        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
                
echo('Enter your password to view comments');
                return;
            }
        }
        echo 
'<a href="';
        if (
$wpcommentsjavascript) {
                    if ( empty(
$wpcommentspopupfile) )
                        
$home get_settings('home');
                    else
                        
$home get_settings('siteurl');
                    echo 
$home '/' $wpcommentspopupfile.'?comments_popup='.$id;
                    echo 
'" onclick="wpopen(this.href); return false"';
        } else {
            
// if comments_popup_script() is not in the template, display simple comment link
            
comments_link();
            echo 
'"';
        }
        if (!empty(
$CSSclass)) {
            echo 
' class="'.$CSSclass.'"';
        }
        echo 
'>';
        
comments_number($zero$one$more$number);
        echo 
'</a>';
    }
    }
}

function 
get_comment_ID() {
    global 
$comment;
    return 
apply_filters('get_comment_ID'$comment->comment_ID);
}

function 
comment_ID() {
    echo 
get_comment_ID();
}

function 
get_comment_author() {
    global 
$comment;
    if ( empty(
$comment->comment_author) )
        
$author 'Anonymous';
    else
        
$author $comment->comment_author;
    return 
apply_filters('get_comment_author'$author);
}

function 
comment_author() {
    
$author apply_filters('comment_author'get_comment_author() );
    echo 
$author;
}

function 
get_comment_author_email() {
    global 
$comment;
    return 
apply_filters('get_comment_author_email'$comment->comment_author_email);    
}

function 
comment_author_email() {
    echo 
apply_filters('author_email'get_comment_author_email() );
}

function 
get_comment_author_link() {
    global 
$comment;
    
$url    get_comment_author_url();
    
$author get_comment_author();

    if ( empty( 
$url ) )
        
$return $author;
    else
        
$return "<a href='$url' rel='external nofollow'>$author</a>";
    return 
apply_filters('get_comment_author_link'$return);
}

function 
comment_author_link() {
    echo 
get_comment_author_link();
}

function 
get_comment_type() {
    global 
$comment;

    if ( 
'' == $comment->comment_type )
        
$comment->comment_type 'comment';

    return 
apply_filters('get_comment_type'$comment->comment_type);
}

function 
comment_type($commenttxt 'Comment'$trackbacktxt 'Trackback'$pingbacktxt 'Pingback') {
    
$type get_comment_type();
    switch( 
$type ) {
        case 
'trackback' :
            echo 
$trackbacktxt;
            break;
        case 
'pingback' :
            echo 
$pingbacktxt;
            break;
        default :
            echo 
$commenttxt;
    }
}

function 
get_comment_author_url() {
    global 
$comment;
    return 
apply_filters('get_comment_author_url'$comment->comment_author_url);
}

function 
comment_author_url() {
    echo 
apply_filters('comment_url'get_comment_author_url());
}

function 
comment_author_email_link($linktext=''$before=''$after='') {
    global 
$comment;
    
$email apply_filters('comment_email'$comment->comment_author_email);
    if ((!empty(
$email)) && ($email != '@')) {
    
$display = ($linktext != '') ? $linktext $email;
        echo 
$before;
        echo 
"<a href='mailto:$email'>$display</a>";
        echo 
$after;
    }
}

function 
get_comment_author_url_link$linktext ''$before ''$after '' ) {
    global 
$comment;
    
$url get_comment_author_url();
    
$display = ($linktext != '') ? $linktext $url;
    
$return "$before<a href='$url' rel='external'>$display</a>$after";
    return 
apply_filters('get_comment_author_url_link'$return);
}

function 
comment_author_url_link$linktext ''$before ''$after '' ) {
    echo 
get_comment_author_url_link$linktext$before$after );
}

function 
get_comment_author_IP() {
    global 
$comment;
    return 
apply_filters('get_comment_author_IP'$comment->comment_author_IP);
}

function 
comment_author_IP() {
    echo 
get_comment_author_IP();
}

function 
get_comment_text() {
    global 
$comment;
    return 
apply_filters('get_comment_text'$comment->comment_content);
}

function 
comment_text() {
    echo 
apply_filters('comment_text'get_comment_text() );
}

function 
get_comment_excerpt() {
    global 
$comment;
    
$comment_text strip_tags($comment->comment_content);
    
$blah explode(' '$comment_text);
    if (
count($blah) > 20) {
        
$k 20;
        
$use_dotdotdot 1;
    } else {
        
$k count($blah);
        
$use_dotdotdot 0;
    }
    
$excerpt '';
    for (
$i=0$i<$k$i++) {
        
$excerpt .= $blah[$i] . ' ';
    }
    
$excerpt .= ($use_dotdotdot) ? '...' '';
    return 
apply_filters('get_comment_excerpt'$excerpt);
}

function 
comment_excerpt() {
    echo 
apply_filters('comment_excerpt'get_comment_excerpt() );
}

function 
get_comment_date$d '' ) {
    global 
$comment;
    if ( 
'' == $d )
        
$date mysql2dateget_settings('date_format'), $comment->comment_date);
    else
        
$date mysql2date($d$comment->comment_date);
    return 
apply_filters('get_comment_date'$date);
}

function 
comment_date$d '' ) {
    echo 
get_comment_date$d );
}

function 
get_comment_time$d ''$gmt false ) {
    global 
$comment;
    
$comment_date $gmt$comment->comment_date_gmt $comment->comment_date;
    if ( 
'' == $d )
        
$date mysql2date(get_settings('time_format'), $comment_date);
    else
        
$date mysql2date($d$comment_date);
    return 
apply_filters('get_comment_time'$date);
}

function 
comment_time$d '' ) {
    echo 
get_comment_time($d);
}

function 
get_trackback_url() {
    global 
$id;
    
$tb_url get_settings('siteurl') . '/wp-trackback.php?p=' $id;

    if ( 
'' != get_settings('permalink_structure') )
        
$tb_url trailingslashit(get_permalink()) . 'trackback/';

    return 
$tb_url;
}
function 
trackback_url$display true ) {
    if ( 
$display)
        echo 
get_trackback_url();
    else
        return 
get_trackback_url();
}

function 
trackback_rdf($timezone 0) {
    global 
$id;
    if (!
stristr($_SERVER['HTTP_USER_AGENT'], 'W3C_Validator')) {
    echo 
'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
        xmlns:dc="http://purl.org/dc/elements/1.1/"
        xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
        <rdf:Description rdf:about="'
;
    
the_permalink();
    echo 
'"'."\n";
    echo 
'    dc:identifier="';
    
the_permalink();
    echo 
'"'."\n";
    echo 
'    dc:title="'.str_replace('--''&#x2d;&#x2d;'wptexturize(strip_tags(get_the_title()))).'"'."\n";
    echo 
'    trackback:ping="'.trackback_url(0).'"'." />\n";
    echo 
'</rdf:RDF>';
    }
}

function 
comments_open() {
    global 
$post;
    if ( 
'open' == $post->comment_status )
        return 
true;
    else
        return 
false;
}

function 
pings_open() {
    global 
$post;
    if ( 
'open' == $post->ping_status 
        return 
true;
    else
        return 
false;
}

// Non-template functions

function get_lastcommentmodified($timezone 'server') {
    global 
$tablecomments$cache_lastcommentmodified$pagenow$wpdb;
    
$add_seconds_blog get_settings('gmt_offset') * 3600;
    
$add_seconds_server date('Z');
    
$now current_time('mysql'1);
    if ( !isset(
$cache_lastcommentmodified[$timezone]) ) {
        switch(
strtolower($timezone)) {
            case 
'gmt':
                
$lastcommentmodified $wpdb->get_var("SELECT comment_date_gmt FROM $tablecomments WHERE comment_date_gmt <= '$now' ORDER BY comment_date_gmt DESC LIMIT 1");
                break;
            case 
'blog':
                
$lastcommentmodified $wpdb->get_var("SELECT comment_date FROM $tablecomments WHERE comment_date_gmt <= '$now' ORDER BY comment_date_gmt DESC LIMIT 1");
                break;
            case 
'server':
                
$lastcommentmodified $wpdb->get_var("SELECT DATE_ADD(comment_date_gmt, INTERVAL '$add_seconds_server' SECOND) FROM $tablecomments WHERE comment_date_gmt <= '$now' ORDER BY comment_date_gmt DESC LIMIT 1");
                break;
        }
        
$cache_lastcommentmodified[$timezone] = $lastcommentmodified;
    } else {
        
$lastcommentmodified $cache_lastcommentmodified[$timezone];
    }
    return 
$lastcommentmodified;
}

function 
get_commentdata$comment_ID$no_cache 0$include_unapproved false ) { // less flexible, but saves DB queries
    
global $postc$id$commentdata$wpdb;
    if (
$no_cache) {
        
$query "SELECT * FROM $wpdb->comments WHERE comment_ID = '$comment_ID'";
        if (
false == $include_unapproved) {
            
$query .= " AND comment_approved = '1'";
        }
            
$myrow $wpdb->get_row($queryARRAY_A);
    } else {
        
$myrow['comment_ID'] = $postc->comment_ID;
        
$myrow['comment_post_ID'] = $postc->comment_post_ID;
        
$myrow['comment_author'] = $postc->comment_author;
        
$myrow['comment_author_email'] = $postc->comment_author_email;
        
$myrow['comment_author_url'] = $postc->comment_author_url;
        
$myrow['comment_author_IP'] = $postc->comment_author_IP;
        
$myrow['comment_date'] = $postc->comment_date;
        
$myrow['comment_content'] = $postc->comment_content;
        
$myrow['comment_karma'] = $postc->comment_karma;
        
$myrow['comment_approved'] = $postc->comment_approved;
        
$myrow['comment_type'] = $postc->comment_type;
    }
    return 
$myrow;
}

function 
pingback($content$post_ID) {
    global 
$wp_version$wpdb;
    include_once (
ABSPATH WPINC '/class-IXR.php');

    
// original code by Mort (http://mort.mine.nu:8080)
    
$log debug_fopen(ABSPATH '/pingback.log''a');
    
$post_links = array();
    
debug_fwrite($log'BEGIN '.date('YmdHis'time())."\n");

    
$pung get_pung($post_ID);

    
// Variables
    
$ltrs '\w';
    
$gunk '/#~:.?+=&%@!\-';
    
$punc '.:?\-';
    
$any $ltrs $gunk $punc;

    
// Step 1
    // Parsing the post, external links (if any) are stored in the $post_links array
    // This regexp comes straight from phpfreaks.com
    // http://www.phpfreaks.com/quickcode/Extract_All_URLs_on_a_Page/15.php
    
preg_match_all("{\b http : [$any] +? (?= [$punc] * [^$any] | $)}x"$content$post_links_temp);

    
// Debug
    
debug_fwrite($log'Post contents:');
    
debug_fwrite($log$content."\n");
    
    
// Step 2.
    // Walking thru the links array
    // first we get rid of links pointing to sites, not to specific files
    // Example:
    // http://dummy-weblog.org
    // http://dummy-weblog.org/
    // http://dummy-weblog.org/post.php
    // We don't wanna ping first and second types, even if they have a valid <link/>

    
foreach($post_links_temp[0] as $link_test) :
        if ( !
in_array($link_test$pung) ) : // If we haven't pung it already
            
$test parse_url($link_test);
            if (isset(
$test['query']))
                
$post_links[] = $link_test;
            elseif((
$test['path'] != '/') && ($test['path'] != ''))
                
$post_links[] = $link_test;
        endif;
    endforeach;

    foreach (
$post_links as $pagelinkedto){
        
debug_fwrite($log"Processing -- $pagelinkedto\n");
        
$pingback_server_url discover_pingback_server_uri($pagelinkedto2048);

        if (
$pingback_server_url) {
                        
set_time_limit60 ); 
             
// Now, the RPC call
            
debug_fwrite($log"Page Linked To: $pagelinkedto \n");
            
debug_fwrite($log'Page Linked From: ');
            
$pagelinkedfrom get_permalink($post_ID);
            
debug_fwrite($log$pagelinkedfrom."\n");

            
// using a timeout of 3 seconds should be enough to cover slow servers
            
$client = new IXR_Client($pingback_server_url);
            
$client->timeout 3;
            
$client->useragent .= ' -- WordPress/' $wp_version;

            
// when set to true, this outputs debug messages by itself
            
$client->debug false;
            
            if ( 
$client->query('pingback.ping', array($pagelinkedfrom$pagelinkedto) ) )
                
add_ping$post_ID$pagelinkedto );
            else
                
debug_fwrite($log"Error.\n Fault code: ".$client->getErrorCode()." : ".$client->getErrorMessage()."\n");
        }
    }

    
debug_fwrite($log"\nEND: ".time()."\n****************************\n");
    
debug_fclose($log);
}

function 
discover_pingback_server_uri($url$timeout_bytes 2048) {
    global 
$wp_version;

    
$byte_count 0;
    
$contents '';
    
$headers '';
    
$pingback_str_dquote 'rel="pingback"';
    
$pingback_str_squote 'rel=\'pingback\'';
    
$x_pingback_str 'x-pingback: ';
    
$pingback_href_original_pos 27;

    
extract(parse_url($url));

    if (!isset(
$host)) {
        
// Not an URL. This should never happen.
        
return false;
    }

    
$path  = (!isset($path)) ? '/'        $path;
    
$path .= (isset($query)) ? '?'.$query '';
    
$port  = (isset($port))  ? $port      80;

    
// Try to connect to the server at $host
    
$fp = @fsockopen($host$port$errno$errstr2);
    if (!
$fp) {
        
// Couldn't open a connection to $host;
        
return false;
    }

    
// Send the GET request
    
$request "GET $path HTTP/1.1\r\nHost: $host\r\nUser-Agent: WordPress/$wp_version PHP/" phpversion() . "\r\n\r\n";
    
ob_end_flush();
    
fputs($fp$request);

    
// Let's check for an X-Pingback header first
    
while (!feof($fp)) {
        
$line fgets($fp512);
        if (
trim($line) == '') {
            break;
        }
        
$headers .= trim($line)."\n";
        
$x_pingback_header_offset strpos(strtolower($headers), $x_pingback_str);
        if (
$x_pingback_header_offset) {
            
// We got it!
            
preg_match('#x-pingback: (.+)#is'$headers$matches);
            
$pingback_server_url trim($matches[1]);
            return 
$pingback_server_url;
        }
        if(
strpos(strtolower($headers), 'content-type: ')) {
            
preg_match('#content-type: (.+)#is'$headers$matches);
            
$content_type trim($matches[1]);
        }
    }

    if (
preg_match('#(image|audio|video|model)/#is'$content_type)) {
        
// Not an (x)html, sgml, or xml page, no use going further
        
return false;
    }

    while (!
feof($fp)) {
        
$line fgets($fp1024);
        
$contents .= trim($line);
        
$pingback_link_offset_dquote strpos($contents$pingback_str_dquote);
        
$pingback_link_offset_squote strpos($contents$pingback_str_squote);
        if (
$pingback_link_offset_dquote || $pingback_link_offset_squote) {
            
$quote = ($pingback_link_offset_dquote) ? '"' '\'';
            
$pingback_link_offset = ($quote=='"') ? $pingback_link_offset_dquote $pingback_link_offset_squote;
            
$pingback_href_pos = @strpos($contents'href='$pingback_link_offset);
            
$pingback_href_start $pingback_href_pos+6;
            
$pingback_href_end = @strpos($contents$quote$pingback_href_start);
            
$pingback_server_url_len $pingback_href_end $pingback_href_start;
            
$pingback_server_url substr($contents$pingback_href_start$pingback_server_url_len);
            
// We may find rel="pingback" but an incomplete pingback URI
            
if ($pingback_server_url_len 0) {
                
// We got it!
                
return $pingback_server_url;
            }
        }
        
$byte_count += strlen($line);
        if (
$byte_count $timeout_bytes) {
            
// It's no use going further, there probably isn't any pingback
            // server to find in this file. (Prevents loading large files.)
            
return false;
        }
    }

    
// We didn't find anything.
    
return false;
}


function 
wp_set_comment_status($comment_id$comment_status) {
    global 
$wpdb;

    switch(
$comment_status) {
        case 
'hold':
            
$query "UPDATE $wpdb->comments SET comment_approved='0' WHERE comment_ID='$comment_id' LIMIT 1";
        break;
        case 
'approve':
            
$query "UPDATE $wpdb->comments SET comment_approved='1' WHERE comment_ID='$comment_id' LIMIT 1";
        break;
         case 
'spam':
             
$query "UPDATE $wpdb->comments SET comment_approved='spam' WHERE comment_ID='$comment_id' LIMIT 1";
         break;
        case 
'delete':
            
$query "DELETE FROM $wpdb->comments WHERE comment_ID='$comment_id' LIMIT 1";
        break;
        default:
            return 
false;
    }
    
    if (
$wpdb->query($query)) {
        
do_action('wp_set_comment_status'$comment_id$comment_status);
        return 
true;
    } else {
        return 
false;
    }
}


function 
wp_get_comment_status($comment_id) {
    global 
$wpdb;
    
    
$result $wpdb->get_var("SELECT comment_approved FROM $wpdb->comments WHERE comment_ID='$comment_id' LIMIT 1");
    if (
$result == NULL) {
        return 
'deleted';
    } else if (
$result == '1') {
        return 
'approved';
    } else if (
$result == '0') {
        return 
'unapproved';
    } else if (
$result == 'spam') {
        return 
'spam';
    } else {
        return 
false;
    }
}

function 
check_comment($author$email$url$comment$user_ip$user_agent$comment_type) {
    global 
$wpdb;

    if (
== get_settings('comment_moderation')) return false// If moderation is set to manual

    
if ( (count(explode('http:'$comment)) - 1) >= get_settings('comment_max_links') )
        return 
false// Check # of external links

    
$mod_keys trimget_settings('moderation_keys') );
    if ( !empty(
$mod_keys) ) {
        
$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 false;
            if ( 
preg_match($pattern$email) ) return false;
            if ( 
preg_match($pattern$url) ) return false;
            if ( 
preg_match($pattern$comment) ) return false;
            if ( 
preg_match($pattern$user_ip) ) return false;
            if ( 
preg_match($pattern$user_agent) ) return false;
        }
    }

    
// Comment whitelisting:
    
if ( == get_settings('comment_whitelist')) {
        if ( 
'trackback' == $comment_type || 'pingback' == $comment_type ) { // check if domain is in blogroll
            
$uri parse_url($url);
            
$domain $uri['host'];
            
$uri parse_urlget_option('home') );
            
$home_domain $uri['host'];
            if ( 
$wpdb->get_var("SELECT link_id FROM $wpdb->links WHERE link_url LIKE ('%$domain%') LIMIT 1") || $domain == $home_domain )
                return 
true;
            else
                return 
false;
        } elseif( 
$author != '' && $email != '' ) {
            
$ok_to_comment $wpdb->get_var("SELECT comment_approved FROM $wpdb->comments WHERE comment_author = '$author' AND comment_author_email = '$email' and comment_approved = '1' LIMIT 1");
            if ( 
== $ok_to_comment && false === strpos$emailget_settings('moderation_keys')) )
                return 
true;
            else
                return 
false;
        } else {
            return 
false;
        }
    }

    return 
true;
}

?>