Вход Регистрация
Файл: severus/application/libraries/gravatar.php
Строк: 103
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); // Remove line to use class outside of codeigniter
/*
* Gravatar library for use with codeigniter
*
* @author Ryan Marshall <ryan@irealms.co.uk>
* @link http://www.irealms.co.uk
* @package Codeigniter
* @subpackage Gravatar
*
*/

class gravatar
{
    private 
$base_url 'http://www.gravatar.com/';
    private 
$secure_base_url 'https://secure.gravatar.com/';

    
/*
     * Set the email to be used, converting it into an md5 hash as required by gravatar.com
     *
     * @param string $email
     *
     * @return string|null Email hash or if email didn't validate then return NULL
     */
    
public function set_email($email)
    {
        
$email strtolower($email);
        
$email trim($email);

        if ( ! 
filter_var($emailFILTER_VALIDATE_EMAIL) === FALSE) {
            return 
md5($email);
        }

        return 
NULL;
    }

    
/*
    * get_gravatar_url
    *
    * @see http://en.gravatar.com/site/implement/images/ for available options
    *
    * @param string $rating defaults to g
    * @param string $size defaults to 80
    * @param string $default_image default sets can be found on the above link
    * @param boolean $secure set to TRUE if a secure url is required
    *
    * @return string gratavar url
    */
    
public function get_gravatar($email$rating NULL$size NULL$default_image NULL$secure NULL)
    {
        
$hash $this->set_email($email);

        if (
$hash === NULL) {
            
// $hash has to be set to a value so the gravatar site can return a default image
            
$hash 'invalid_email';
        }

        
$query_string NULL;
        
$options = array();

        if (
$rating !== NULL) {
            
$options['r'] = $rating;
        }

        if (
$size !== NULL) {
            
$options['s'] = $size;
        }

        if (
$default_image !== NULL) {
            
$options['d'] = urlencode($default_image);
        }

        if (
count($options) > 0) {
            
$query_string '?'http_build_query($options);
        }

        if (
$secure !== NULL) {
            
$base $this->secure_base_url;
        } else {
            
$base $this->base_url;
        }

        return 
$base .'avatar/'$hash $query_string;
    }

    
/*
     * Grab the full profile data for a given email from gravatar.com in xml format
     *
     * @param string $email
     * @param string fetch_method defaults to file, 'curl' is the other option
     *
     * @return object|null $xml->entry on success, NULL on an error
     */
    
public function get_profile($email$fetch_method 'file')
    {
        
$hash $this->set_email($email);

        if (
$hash === NULL) {
            
// A hash value of NULL will return no xml so the method returns NULL
            
return NULL;
        }

        
libxml_use_internal_errors(TRUE);

        if (
$fetch_method === 'file') {
            if (
ini_get('allow_url_fopen') == FALSE) {
                return 
NULL;
            }

            
$str file_get_contents($this->base_url $hash .'.xml');
        }

        if (
$fetch_method === 'curl') {
            if ( ! 
function_exists('curl_init')) {
                return 
NULL;
            }

            
$ch curl_init();
            
$options = array(
                
CURLOPT_RETURNTRANSFER => TRUE,
                
CURLOPT_POST => TRUE,
                
CURLOPT_URL => $this->secure_base_url $hash .'.xml',
                
CURLOPT_TIMEOUT => 3
            
);
            
curl_setopt_array($ch$options);
            
$str curl_exec($ch);
        }

        
$xml simplexml_load_string($str);

        if (
$xml === FALSE) {
            
$errors = array();
            foreach (
libxml_get_errors() as $error) {
                
$errors[] = $error->message.'n';
            }
            
$error_string implode('n'$errors);
            throw new 
Exception('Failed loading XMLn'$error_string);
        } else {
            return 
$xml->entry;
        }
    }
}
/* End of file Gravatar.php */
/* Location: ./application/libraries/Gravatar.php */
Онлайн: 0
Реклама