WordPress.org

Plugin Directory

Changeset 533647


Ignore:
Timestamp:
04/19/12 17:25:53 (2 years ago)
Author:
dimadin
Message:

Make it possible to check for gravatar existence even when allow_url_fopen isn't allowed.

  • Introduce gravatar_signup_encouragement_allow_url_fopen() that checks allow_url_fopen status on server.
  • Use admin-ajax.php for checking when allow_url_fopen isn't allowed.
  • Make gravatar_signup_encouragement_check_gravatar_existence() fail over to WordPress HTTP API when allow_url_fopen isn't allowed.
  • Add gse_check action to jQuery.post functions so that they can be used with admin-ajax.php.

Props jlencion for idea and initial patch.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • gravatar-signup-encouragement/trunk/gravatar-signup-encouragment.php

    r533038 r533647  
    227227 
    228228/** 
     229 * Check if allow_url_fopen is allowed 
     230 * 
     231 * @since 3.1 
     232 * @return bool 
     233 */ 
     234function gravatar_signup_encouragement_allow_url_fopen() { 
     235    if ( ini_get( 'allow_url_fopen' ) ) 
     236        return true; 
     237    else 
     238        return false; 
     239} 
     240 
     241/** 
    229242 * Get URL of gravatar existence check 
    230243 * 
     
    234247 */ 
    235248function gravatar_signup_encouragement_check_url() { 
    236     $gse_grav_check_url = plugins_url( 'gravatar-check.php', __FILE__ ); 
    237     return $gse_grav_check_url; 
     249    if ( gravatar_signup_encouragement_allow_url_fopen() ) 
     250        return plugins_url( 'gravatar-check.php', __FILE__ ); 
     251    else 
     252        return admin_url( 'admin-ajax.php' ); 
    238253} 
    239254 
     
    527542function gravatar_signup_encouragement_check_gravatar_existence( $email ) { 
    528543    $fileUrl = "http://www.gravatar.com/avatar/" . md5( strtolower( $email ) )."?s=2&d=404"; 
    529     $AgetHeaders = @get_headers( $fileUrl ); 
    530     if ( ! preg_match( "|200|", $AgetHeaders[0] ) ) { 
    531         return false; 
     544    /* Lets first try with faster method */ 
     545    if ( gravatar_signup_encouragement_allow_url_fopen() ) { 
     546        $AgetHeaders = @get_headers( $fileUrl ); 
     547        if ( ! preg_match( "|200|", $AgetHeaders[0] ) ) { 
     548            return false; 
     549        } else { 
     550            return true; 
     551        } 
     552    /* Then we try with WordPress HTTP API */ 
    532553    } else { 
    533         return true; 
     554        $response = wp_remote_get( $fileUrl ); 
     555        /* If there is no error, get response code */ 
     556        if ( ! is_wp_error( $response ) ) { 
     557            $response_code = wp_remote_retrieve_response_code( $response ); 
     558            if ( 200 == $response_code ) { 
     559                return true; 
     560            } else { 
     561                return false; 
     562            } 
     563        /* Otherwise return true */ 
     564        } else { 
     565            return true; 
     566        } 
    534567    } 
    535568} 
     
    607640    return $gse_tip_text; 
    608641} 
     642 
     643/** 
     644 * Handle check on admin-ajax.php 
     645 * 
     646 * Used when allow_url_fopen is dissalowed 
     647 * 
     648 * @since 3.1 
     649 */ 
     650function gravatar_signup_encouragement_wp_ajax_check() { 
     651    /* Load e-mail address sent via POST */ 
     652    $gravatar_email = $_POST['gravmail']; 
     653 
     654    /* Echo no if no existence */ 
     655    if ( ! gravatar_signup_encouragement_check_gravatar_existence( $gravatar_email ) ) 
     656        die ( 'no' ); 
     657} 
     658add_action( 'wp_ajax_gse_check', 'gravatar_signup_encouragement_wp_ajax_check' ); 
     659add_action( 'wp_ajax_nopriv_gse_check', 'gravatar_signup_encouragement_wp_ajax_check' ); 
    609660 
    610661/** 
     
    626677    <?php // post and check if gravatar exists or not from ajax ?> 
    627678    var emailValue = jQuery("<?php echo apply_filters( 'gse_get_email_value_com_unreg', '#email' ); ?>").val(); 
    628     jQuery.post("<?php echo gravatar_signup_encouragement_check_url(); ?>",{ gravmail:emailValue } ,function(data) 
     679    jQuery.post("<?php echo gravatar_signup_encouragement_check_url(); ?>",{ gravmail:emailValue, action:"gse_check" } ,function(data) 
    629680    { 
    630       if(data) <?php // if gravatar doesn't exist ?> 
     681      if (data == 'no') <?php // if gravatar doesn't exist ?> 
    631682      { 
    632683        var emailValue = jQuery("<?php echo apply_filters( 'gse_get_email_value_com_unreg', '#email' ); ?>").val(); <?php // pick up e-mail address from field ?> 
     
    656707    {        
    657708        <?php // post and check if gravatar exists or not from ajax ?> 
    658         jQuery.post("<?php echo gravatar_signup_encouragement_check_url(); ?>",{ gravmail:jQuery(this).val() } ,function(data) 
     709        jQuery.post("<?php echo gravatar_signup_encouragement_check_url(); ?>",{ gravmail:jQuery(this).val(), action:"gse_check" } ,function(data) 
    659710        { 
    660           if(data) <?php // if gravatar doesn't exist ?> 
     711          if (data == 'no') <?php // if gravatar doesn't exist ?> 
    661712          { 
    662713            var emailValue = jQuery("<?php echo apply_filters( 'gse_get_email_value_com_unreg', '#email' ); ?>").val(); <?php // pick up e-mail address from field ?> 
     
    696747{        
    697748        <?php // post and check if gravatar exists or not from ajax ?> 
    698         jQuery.post("<?php echo gravatar_signup_encouragement_check_url(); ?>",{ gravmail:"<?php echo $user_email; ?>" } ,function(data) 
     749        jQuery.post("<?php echo gravatar_signup_encouragement_check_url(); ?>",{ gravmail:"<?php echo $user_email; ?>", action:"gse_check" } ,function(data) 
    699750        { 
    700           if(data) <?php // if gravatar doesn't exist ?> 
     751          if (data == 'no') <?php // if gravatar doesn't exist ?> 
    701752          { 
    702753            jQuery('#gse_comments_message').hide(); <?php // hide tip if allready shown ?> 
     
    849900{ 
    850901        <?php // post and check if gravatar exists or not from ajax ?> 
    851         jQuery.post("<?php echo gravatar_signup_encouragement_check_url(); ?>",{ gravmail:"<?php echo $user_email; ?>" } ,function(data) 
     902        jQuery.post("<?php echo gravatar_signup_encouragement_check_url(); ?>",{ gravmail:"<?php echo $user_email; ?>", action:"gse_check" } ,function(data) 
    852903        { 
    853           if(data) <?php // if gravatar doesn't exist ?> 
     904          if (data == 'no') <?php // if gravatar doesn't exist ?> 
    854905          { 
    855906            jQuery('#gse_profile_message').hide(); <?php // hide tip if allready shown ?> 
     
    891942        var value = this.value; delayed = setTimeout(function() {  
    892943            <?php // post and check if gravatar exists or not from ajax ?> 
    893             jQuery.post("<?php echo gravatar_signup_encouragement_check_url(); ?>",{ gravmail:value } ,function(data) 
     944            jQuery.post("<?php echo gravatar_signup_encouragement_check_url(); ?>",{ gravmail:value, action:"gse_check" } ,function(data) 
    894945            { 
    895               if(data) <?php // if gravatar doesn't exist ?> 
     946              if (data == 'no') <?php // if gravatar doesn't exist ?> 
    896947              { 
    897948                var emailValue = jQuery("#user_email").val(); <?php // pick up e-mail address from field ?> 
     
    9551006{        
    9561007        <?php // post and check if gravatar exists or not from ajax ?> 
    957         jQuery.post("<?php echo gravatar_signup_encouragement_check_url(); ?>",{ gravmail:"<?php echo $user_email; ?>" } ,function(data) 
     1008        jQuery.post("<?php echo gravatar_signup_encouragement_check_url(); ?>",{ gravmail:"<?php echo $user_email; ?>", action:"gse_check" } ,function(data) 
    9581009        { 
    959           if(data) <?php // if gravatar doesn't exist ?> 
     1010          if (data == 'no') <?php // if gravatar doesn't exist ?> 
    9601011          { 
    9611012            jQuery('#gse_bbpress_message').hide(); <?php // hide tip if allready shown ?> 
     
    9941045        var value = this.value; delayed = setTimeout(function() {  
    9951046            <?php // post and check if gravatar exists or not from ajax ?> 
    996             jQuery.post("<?php echo gravatar_signup_encouragement_check_url(); ?>",{ gravmail:value } ,function(data) 
     1047            jQuery.post("<?php echo gravatar_signup_encouragement_check_url(); ?>",{ gravmail:value, action:"gse_check" } ,function(data) 
    9971048            { 
    998               if(data) <?php // if gravatar doesn't exist ?> 
     1049              if (data == 'no') <?php // if gravatar doesn't exist ?> 
    9991050              { 
    10001051                var emailValue = jQuery("#user_email").val(); <?php // pick up e-mail address from field ?> 
Note: See TracChangeset for help on using the changeset viewer.