Skip to:
Content

BuddyPress.org

Changeset 5621


Ignore:
Timestamp:
01/07/2012 12:36:24 AM (13 years ago)
Author:
djpaul
Message:

Update Activity Akismet support for user agent and CSS changes introduced in Akismet 2.5.4. Fixes #3904

Location:
trunk/bp-activity
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-activity/admin/css/admin.css

    r5528 r5621  
    1 #wp-bp-activities-wrap{padding:5px 0;}#bp-activities{height:120px;}#bp-replyhead{font-size:1em;line-height:1.4em;margin:0;}#bp-replysubmit{margin:0;padding:0 0 3px;text-align:center;}#bp-replysubmit .error{color:red;line-height:21px;text-align:center;vertical-align:center;}#bp-replysubmit img.waiting{float:right;padding:4px 10px 0;vertical-align:top;}#bp-activities-form .column-response img{float:left;margin-right:10px;margin-top:1px;}.activity-errors{list-style-type:disc;margin-left:2em;}#bp_activity_action div.inside,#bp_activity_content div.inside{line-height:0;}#bp_activity_action h3,#bp_activity_content h3{cursor:auto;}#bp_activity_action td.mceIframeContainer,#bp_activity_content td.mceIframeContainer{background-color:white;}#post-body #bp-activities-action_resize,#post-body #bp-activities-content_resize{position:inherit;margin-top:-2px;}#bp_activity_link input{width:99%;}#bp-activities-primaryid{margin-bottom:1em;}
     1.akismet-status{float:right;}.akismet-status a{color:#AAA;font-style:italic;}#wp-bp-activities-wrap{padding:5px 0;}#bp-activities{height:120px;}#bp-replyhead{font-size:1em;line-height:1.4em;margin:0;}#bp-replysubmit{margin:0;padding:0 0 3px;text-align:center;}#bp-replysubmit .error{color:red;line-height:21px;text-align:center;vertical-align:center;}#bp-replysubmit img.waiting{float:right;padding:4px 10px 0;vertical-align:top;}#bp-activities-form .column-response img{float:left;margin-right:10px;margin-top:1px;}.activity-errors{list-style-type:disc;margin-left:2em;}#bp_activity_action div.inside,#bp_activity_content div.inside{line-height:0;}#bp_activity_action h3,#bp_activity_content h3{cursor:auto;}#bp_activity_action td.mceIframeContainer,#bp_activity_content td.mceIframeContainer{background-color:white;}#post-body #bp-activities-action_resize,#post-body #bp-activities-content_resize{position:inherit;margin-top:-2px;}#bp_activity_link input{width:99%;}#bp-activities-primaryid{margin-bottom:1em;}
  • trunk/bp-activity/admin/css/admin.dev.css

    r5528 r5621  
     1.akismet-status {
     2    float: right;
     3}
     4.akismet-status a {
     5    color: #AAA;
     6    font-style: italic;
     7}
    18#wp-bp-activities-wrap {
    29    padding: 5px 0;
  • trunk/bp-activity/bp-activity-akismet.php

    r5414 r5621  
    460460
    461461        // Send to Akismet
    462         $response                      = $this->http_post( $query_string, $akismet_api_host, $path, $akismet_api_port );
     462        add_filter( 'akismet_ua', array( $this, 'buddypress_ua' ) );
     463        $response = akismet_http_post( $query_string, $akismet_api_host, $path, $akismet_api_port );
     464        remove_filter( 'akismet_ua', array( $this, 'buddypress_ua' ) );
     465
    463466        $activity_data['bp_as_result'] = $response[1];
    464467
     
    467470
    468471    /**
    469      * Submit data to the Akismet service with a unique user agent.
    470      *
    471      * Props to WordPress core Akismet plugin, and bbPress, for alot of this
    472      *
    473      * @param string $request The request we are sending
    474      * @param string $host The host to send our request to
    475      * @param string $path The path from the host
    476      * @param string $port The port to use
    477      * @param string $ip Optional Override $host with an IP address
    478      * @return mixed WP_Error on error, array on success, empty on failure
    479      * @since 1.6
    480      */
    481     private function http_post( $request, $host, $path, $port = 80, $ip = '' ) {
    482         $blog_charset   = bp_get_option( 'blog_charset' );
    483         $content_length = strlen( $request );
    484         $errno          = null;
    485         $errstr         = null;
    486         $http_host      = $host;
    487         $response       = '';
    488 
    489         // Unique User Agent
    490         $akismet_ua     = 'BuddyPress/' . bp_get_version() . ' | Akismet/'. constant( 'AKISMET_VERSION' );
    491 
    492         // Use specific IP (if provided)
    493         if ( !empty( $ip ) && long2ip( ip2long( $ip ) ) )
    494             $http_host = $ip;
    495 
    496         // WP HTTP class is available
    497         if ( function_exists( 'wp_remote_post' ) ) {
    498 
    499             // Setup the arguments
    500             $http_args = array(
    501                 'body'             => $request,
    502                 'headers'          => array(
    503                     'Content-Type' => 'application/x-www-form-urlencoded; charset=' . $blog_charset,
    504                     'Host'         => $host,
    505                     'User-Agent'   => $akismet_ua
    506                 ),
    507                 'httpversion'      => '1.0',
    508                 'timeout'          => 15
    509             );
    510 
    511             // Where we are sending our request
    512             $akismet_url = 'http://' . $http_host . $path;
    513 
    514             // Send the request
    515             $response    = wp_remote_post( $akismet_url, $http_args );
    516 
    517             // Bail if the response is an error
    518             if ( is_wp_error( $response ) )
    519                 return '';
    520 
    521             // No errors so return response
    522             return array( $response['headers'], $response['body'] );
    523 
    524         // WP HTTP class is not available (Why not?)
    525         } else {
    526 
    527             // Header info to use with our socket
    528             $http_request  = "POST {$path} HTTP/1.0\r\n";
    529             $http_request .= "Host: {$host}\r\n";
    530             $http_request .= "Content-Type: application/x-www-form-urlencoded; charset={$blog_charset}\r\n";
    531             $http_request .= "Content-Length: {$content_length}\r\n";
    532             $http_request .= "User-Agent: {$akismet_ua}\r\n";
    533             $http_request .= "\r\n";
    534             $http_request .= $request;
    535 
    536             // Open a socket connection
    537             if ( false != ( $fs = @fsockopen( $http_host, $port, $errno, $errstr, 10 ) ) ) {
    538 
    539                 // Write our request to the pointer
    540                 fwrite( $fs, $http_request );
    541 
    542                 // Loop through pointer and compile a response
    543                 while ( !feof( $fs ) ) {
    544                     // One TCP-IP packet at a time
    545                     $response .= fgets( $fs, 1160 );
    546                 }
    547 
    548                 // Close our socket
    549                 fclose( $fs );
    550 
    551                 // Explode the response into usable data
    552                 $response = explode( "\r\n\r\n", $response, 2 );
    553             }
    554 
    555             // Return the response ('' if error/empty)
    556             return $response;
    557         }
     472     * Filters user agent when sending to Akismet.
     473     *
     474     * @param string $user_agent
     475     * @since 1.0
     476     */
     477    public function buddypress_ua( $user_agent ) {
     478        return 'BuddyPress/' . bp_get_version() . ' | Akismet/'. constant( 'AKISMET_VERSION' );
    558479    }
    559480
Note: See TracChangeset for help on using the changeset viewer.