Laravel4-Getgravatar
An avatar is a graphical representation of a user . It could be the personâs picture , or a random icon they want to be associated with . All a user has to do is to register an account based on their email address and upload an avatar to associate with that account . On the other side of the coin , webmasters that want to let their visitors graphically identify themselves have to implement a REST request to Gravatar's API . The request is just an URL encoded string with the email address of the user . If Gravatar's servers recognize this email address as a registered user , the user's associated Avatar is send back . Webmasters can also configure their system to automatically display an Identicon when a user has no registered Gravatar .
This library is meant to be used as a Laravel 4.0 / 4.1 package and help PHP developers be concentrated on more important parts of their Laravel project ., (*1)
Prerequisites :
It is assumed that you already have a working Laravel 4 project . Basic knowledge with Laravel's concepts are also required . For instance : Route , Controller , Blade or Authentication-adapter shouldn't be "strange" words to you ., (*2)
Installation :
- 1) Update your Laravel's
composer.json
file
{
"require": {
"laravel/framework": "4.0.*" ,
"ascension/laravel4-getgravatar": "dev-master"
}
}
- 2) Run a
composer update
command from your project's root
- 3) Add the Gravatar Service Provider and an alias to your configuration file
app/config/app.php
:
'providers' => array(
'Illuminate\Foundation\Providers\ArtisanServiceProvider',
'Illuminate\Auth\AuthServiceProvider',
'Illuminate\Cache\CacheServiceProvider',
'Illuminate\View\ViewServiceProvider',
'Illuminate\Workbench\WorkbenchServiceProvider',
` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `
'Tournasdim\Getgravatar\GetgravatarServiceProvider' ),
```javascript
'aliases' => array(
'App' => 'Illuminate\Support\Facades\App',
'Artisan' => 'Illuminate\Support\Facades\Artisan',
'Auth' => 'Illuminate\Support\Facades\Auth',
'Blade' => 'Illuminate\Support\Facades\Blade',
'View' => 'Illuminate\Support\Facades\View',
'Gravatar' => 'Tournasdim\Getgravatar\Facades\Getgravatar' ,, (*3)
* 4) Optionally "transfer" the configuration file of this package into ***"app/config/packages"*** directory . This will give you the option to customize basic features of this package . Run `php artisan config:publish "tournasdim/laravel4-getgravatar"` and open the file ***"app/config/packages/tournasdim/getgravatar/config.php"*** to customize basic functionality (size , customGravUrl , defGrav , authAdapter , maxRating) . Every option is explained in the configuration file , drop me an issue if you need specific help though .
##Un-Installing the package :
1. Remove this package's registration from Laravel's `composer.json` file
2. Remove Gravatar Service Provider from config file `app/config/app.php`
3. Remove the alias from the config file `app/config/app.php`
3. If step 4 of the installation process was implemented , manually remove the
"tournasdim" directory from `app/config/packages` directory . Instead of manually removing this directory , alternatively use the CLI : `php artisan gravatar:uninstall `
4. Run a `composer update` command .
### Basic usage :
#### The "Gravar" Class accepts three optional parameters .
* ***$size :*** Expresed in pixels , if defined then it will overwrite the value defined into the configuration file .
* ***$randomize :*** This feature is enabled by default ,the Class will randomly select a name from a Pool of accepted names ('mm' , 'identicon' , 'monsterid' , 'wavatar' , 'retro') . If the email send to Gravatar's server is not recognized then this specified Avatar will be returned instead . By setting the value of this option to ***"false"*** , random is turned off , and the value of `defGrav` will be used as parameter (a predefined fallback avatar) .
* ***$email :*** Default is set to null . Logged-in user's email is resolved by using the current Auth's adaptor Interface . Which adapter is currently used by the application is defined into a key ("authAdapter") of the configuration file . By specifying an email , we actualy force the Class to use this as value into the query string . This feature is handy for non registered users , we will use their specified email (on comment sections) to build our query string .
* Another important configuration option is made directly into the configuration file ***"app/config/packages/tournasdim/getgravatar/config.php"*** (supposed that step 4 of the installation process was applied ) . If you'd prefer to use your own default fallback-image (perhaps your logo , a funny face , whatever), then you can easily do so by supplying a custom URL to an image . Just set your prefered Url into the ***"customGravUrl"*** variable of this package's configuration file . If the email send to Gravatar's server is not recognized , an image from the custom Url will be returned instead . Keep in mind though that the ***"size"*** attribute isn't active anymore because Gravatar's server won't crop our custom image (make sure you have uploaded the right size for the custom fallback image) .
### Practical examples :
#### Calling an Avatar from a Route
* ***Example 1 :***
```javascript
/*
Defining an Email address :
1) If recognized by Gravatar's server , its accompanied image is returned , else
2) An alternative Avatar is returned (randomly chosen from a "pool" )
*/
Route::get('/' , function()
{
return Gravatar::get( null , false , 'johndoe@gmail.com' ) ;
});
/*
* No Email address defined : For logged-in users , their email address will be send to Gravatar's API .
*/
Route::get('/' , function()
{
return Gravatar::get() ;
});
/*
Disable "random image" , which Avatar is returned depends on :
1) if "customGravUrl" is defined , then return the image from that Url
2) if "customGravUrl" was not defined then use the image specified in "defGrav".
*/
Route::get('/' , function()
{
return Gravatar::get(null , false) ;
});
// Defining an Avatar from a Route and passing it to the View
Route::get('/' , function()
{
$gravatar = \Gravatar::get() ;
return View::make('welcome')->with('gravatar' , $gravatar) ;
});
Calling an Avatar from a Controller
with('gravatar' , $gravatar) ;
}
}
?>
// admin/dashboard.blade.php
@extends('layouts.admin'))
@section('header')
<h3>
<i class="icon-dashboard"></i>
Dashboard {{$gravatar}}
</h3>
@stop
with('gravatar' , $gravatar) ;
}
}
?>
// admin/dashboard.blade.php
@extends('layouts.admin'))
@section('header')
<h3>
<i class="icon-dashboard"></i>
Dashboard {{$gravatar}}
</h3>
@stop
Calling an Avatar from Controller's constructor
gravatar = \Gravatar::get() ;
}
?>
// A controller that extends the base controller
with('gravatar' , $this->gravatar);
}
public function profiler()
{
return View::make('admin.profiler')
->with('gravatar' , $this->gravatar);
}
}
?>
// views/admin/dashboard.blade.php
@extends('layouts.admin'))
@section('header')
<h3>
<i class="icon-dashboard"></i>
Dashboard {{$gravatar}}
</h3>
@stop
Where to get help :
Open a new issue on this repository and I'll try to help . Please limit your question(s) only to issues related to this project . Laravel's forums / IRC are more suited places to get general information about the Framework . Reports about bugs are welcome , but also , I would be glad to hear about your experience and suggestions of this repository ., (*4)
Special thanks to :
Of course the creator of the Laravel Framework (Taylor Otwell) and all active members of Laravel's forum / IRC channel ., (*5)
Things to do :
- Based on user's feedback , improvements will be applied accordingly .
- Users may optionally enter a variety of profile information to associate with their Gravatar account. This information is openly-accessible by Gravatar's API . Probably , a future release of this package will implement this functionality .
- Completing the Unit testing Class
- An headless Linux box (CentOs 6) as web-server (Apache 2 , PHP5.4)
- Sublime Text 2 (Free version)
- Phing for automated deployment to GitHub and for FTP to the Linux box
- Git-Bash for versioning of the code
- Windows 7 with WAMP stack (Apache2.2.2 , PHP5.4.3)
License :
>, (*6)
Getgravatar, (*7)
My Blog
@copyright Tournas Dimitiros 2013, (*8)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
any later version., (*9)
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details., (*10)
You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.
@author Tournas Dimitrios tournasdimitrios@gmail.com
@version V1.0.0, (*11)