/laravel-emojione

Laravel package to make it easy to use the gorgeous emojis from EmojiOne

Primary LanguagePHPMIT LicenseMIT

laravel-emojione ❤️

Latest Version on Packagist Total Downloads Software License

😀 🏋🏼 ❤️ ☮

Laravel package to make it easier working with the gorgeous emojis from EmojiOne.

Remember to read the EmojiOne Free License and provide the appropriate attribution. Or buy a premium license

Upgrading from 3.x to 4.x

  1. Update your composer dependency to: "christofferok/laravel-emojione": "^4.0" and run composer update
  2. Update config/emojione.php (if you have one) with 'emojiVersion' => '4.0'

If you are serving the assets yourself then you need to do the following things:

  1. Update your emojione/assets composer dependency to: "emojione/assets": "^4.0" and run composer update
  2. Update config/emojione.php with the correct paths and versions
  3. Publish the assets again. See "Assets" section further down

EmojiOne 4.x/3.x vs 2.0

EmojiOne made a lot of changes in their licensing and which resources are provided in the free license. v2 code is still available in the emojione-v2 branch. If you are upgrading this package, be aware that the SVG assets are not available anymore.

Install

Via Composer

$ composer require christofferok/laravel-emojione

If you are on Laravel 5.4 or lower you need to add the following to your config/app.php file:

Add the ServiceProvider to the providers array in config/app.php

ChristofferOK\LaravelEmojiOne\LaravelEmojiOneServiceProvider::class,

Add this to the aliases array in config/app.php

'LaravelEmojiOne' => ChristofferOK\LaravelEmojiOne\LaravelEmojiOneFacade::class,

Config:

$ php artisan vendor:publish --tag=config --provider="ChristofferOK\LaravelEmojiOne\LaravelEmojiOneServiceProvider"

Usage

LaravelEmojiOne::toShort($str); // - native unicode -> shortnames
LaravelEmojiOne::shortnameToImage($str); // - shortname -> images
LaravelEmojiOne::unicodeToImage($str); // - native unicode -> images
LaravelEmojiOne::toImage($str); // - native unicode + shortnames -> images (mixed input)

Blade (equivalent to LaravelEmojiOne::toImage($str)):

@emojione(':smile:') -> 😀

@emojione(':smile: ❤️') -> 😀❤️

🚨 The output is not escaped so be careful with what you pass into @emojione.

More details about how toImage($str) works can be found at https://github.com/Ranks/emojione/blob/master/examples/PHP.md

Example

You want to let users put emoji a comment. When you are saving a comment, you might want to run the content through LaravelEmojiOne::toShort($str) to convert 😄 and other emoji to :smile: etc.

Comment::create([
  'content' => LaravelEmojiOne::toShort(request('content'))
]);

So if someone leaves a comment like This is an awesome comment 😄🔥 it will be saved as This is an awesome comment :smile: :fire:

In your view where you display your comments you can use

@emojione($comment->content)

and that will convert :smile: and 😄 to the emojione equivalent.

Assets

By default it will use the assets from JSDelivr.

Remember to run this before trying to publish any of the assets:

composer require emojione/assets

If you want to serve the assets yourself you can publish them with the following commands. Remember to update config/emojione.php

PNG files in sizes 32/64/128:

$ php artisan vendor:publish --tag=public --provider="ChristofferOK\LaravelEmojiOne\LaravelEmojiOneServiceProvider"

In config/emojione.php specify the local path. Remember to specify which size you want in the path (32/64/128).

'imagePathPNG' => '/vendor/emojione/png/64/',

Sprites

If you want to use sprites:

$ php artisan vendor:publish --tag=sprites --provider="ChristofferOK\LaravelEmojiOne\LaravelEmojiOneServiceProvider"

In config/emojione.php enable sprites:

'sprites' => true,
'spriteSize' => 32, // 32 or 64

Add the stylesheet to your HTML:

<link rel="stylesheet" href="/vendor/emojione/sprites/emojione-sprite-{{ config('emojione.spriteSize') }}.min.css"/>

License

Remember to read the EmojiOne Free License and provide the appropriate attribution. Or buy a premium license