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

Overview

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

Comments
  • LaravelEmojiOne::imageToShortname

    LaravelEmojiOne::imageToShortname

    I would like to do the conversion below to insert the values into shortname in the database. LaravelEmojiOne::imageToShortname($str); But how to do that? I'd like some help. Thanks.

    opened by winadv 4
  • PHP 8 Support

    PHP 8 Support

    Are you planing to support PHP 8 in the near future? Currently getting christofferok/laravel-emojione[4.0.0, ..., 4.0.4] require php ~5.6|~7.0 -> your php version (8.0.5) does not satisfy that requirement. when trying to update composer.

    opened by MrMooky 3
  • emojione v3.1.3 breaks this package

    emojione v3.1.3 breaks this package

    Description:

    emojione v3.1.3 breaks this package returning Undefined variable: shortname

    v3.1.2 returns before trying to access the $shortname var

    $ruleset = $this->getRuleset();
    $shortcode_replace = $ruleset->getShortcodeReplace();
    $unicode_replace = $ruleset->getUnicodeReplace();
    $unicode_replace_greedy = $ruleset->getUnicodeReplaceGreedy();
    $unicode = strtoupper($m[0]);
      
    if ( array_key_exists($unicode, $unicode_replace))
    {
      $shortname = $unicode_replace[$unicode];
    }
    else if ( $this->greedyMatch && array_key_exists($unicode, $unicode_replace_greedy) )
    {
      $shortname = $unicode_replace_greedy[$unicode];
    }
    else
    {
      return $m[0]; // <-- returns here
    }
    
    $filename = $shortcode_replace[$shortname][2];
    $category = (strpos($filename, '-1f3f') !== false) ? 'diversity' : $shortcode_replace[$shortname][3];
    $titleTag = $this->imageTitleTag ? 'title="'.htmlspecialchars($shortname).'"' : '';
    

    https://github.com/emojione/emojione/blob/3.1.2/lib/php/src/Client.php#L466

    v3.1.3 no longer returns before setting the $shortname

    if ( array_key_exists($unicode, $unicode_replace) && !in_array($unicode, $bList) )
    {
        $shortname = $unicode_replace[$unicode];
    }
    else if ( $this->greedyMatch && array_key_exists($unicode, $unicode_replace_greedy) && !in_array($unicode, $bList) )
    {
        $shortname = $unicode_replace_greedy[$unicode];
    }
    else
    {
        $unicode; // <-- Gets to this point
    }
    $filename = $shortcode_replace[$shortname][2]; // <-- shortname is not set
    $category = (strpos($filename, '-1f3f') !== false) ? 'diversity' : $shortcode_replace[$shortname][3];
    $titleTag = $this->imageTitleTag ? 'title="'.htmlspecialchars($shortname).'"' : '';
    

    https://github.com/emojione/emojione/blob/3.1.3/lib/php/src/Client.php#L469

    opened by HDVinnie 2
  • Question

    Question

    Upon installing this does this mean I can just type :s m i l i e: in my textarea on my app for comments and it will automatically show as ๐Ÿ˜„ when posted? Im new to laravel so please excuse my noobness.

    <!-- Add comment -->
    <div class="col-md-12">
      {!! Form::open(array('route' => array('comment_torrent', 'slug' => $torrent->slug, 'id' => $torrent->id))) !!}
      <div class="form-group">
        <label for="content">Your comment:</label>
        <textarea name="content" cols="30" rows="5" class="form-control"></textarea>
      </div>
      <button type="submit" class="btn btn-danger">{!! trans('traduction.save') !!}</button><label class="checkbox-inline"><input type="checkbox" name="confirmation"><strong>Anonymous Comment</strong></label>
      {!! Form::close() !!}
    </div>
    <!-- /Add comment -->
    
    question 
    opened by HDVinnie 2
  • How Can i print all emojis for picking into Messages

    How Can i print all emojis for picking into Messages

    I want to add a button like facebook or other lots of sites are doing first they are printing all emojis and then they are using pick one by one in message or there comment.

    opened by vickymessii 1
  • Emoji parser not working on production server

    Emoji parser not working on production server

    I really find it strange since package is working perfectly in local server. After pushing changes to server emojis are not parsed on server.

    
    namespace App\Transformers;
    
    use App\Models\Post;
    use League\Fractal\TransformerAbstract;
    use ChristofferOK\LaravelEmojiOne\LaravelEmojiOneFacade;
    
    class FeedPostTransformer extends TransformerAbstract
    {
        /**
         * A Fractal transformer.
         *
         * @return array
         */
        public function transform(Post $post)
        {
            return [
                'description' => LaravelEmojiOneFacade::toImage($post->body)
            ];
        }
    
        
    }
    

    This is the code i use for parsing emojis. Actually using spatie/fractal wrapper for returning data. sttrng2 strnge

    Same request, first made on server and second made locally. I update composer on server, also cleared cache but cant get it working. Tested parsing emoji with tinker and works. Maybe it is fractal issue?

    opened by tprifti 1
  • Call to undefined function resolve()

    Call to undefined function resolve()

    Hi, I'm on laravel 5.2, when using @emojione($text) in blade, it shows an error with the title Call to undefined function resolve() and I fixed it by changing line 24 in LaravelEmojiOneServiceProvider.php file from: return "<?php echo resolve('".LaravelEmojiOne::class."')->toImage($expression); ?>"; to return "<?php echo \LaravelEmojiOne::toImage($expression); ?>";

    opened by nabidam 1
  • make the rdme easier to read

    make the rdme easier to read

    PS:

    for the usage section we can add a note about using accessors-and-mutators, this way your code doesnt change and you only need to enable/disable the accessors-and-mutators when needed

    opened by ctf0 0
  • Laravel-emojione enhancements

    Laravel-emojione enhancements

    Hello.

    Added

    1. Add ability to call the other EmojiOne\Client Methods dynamically, LaravelEmojiOne::asciiToShortname($str)

    2. Ability to set emoji sizes fluently, LaravelEmojiOne::setEmojiSize(32)->asciiToShortname($str);.

    Changed

    With the blade directive @emojione, I've added a second parameter for methods, @emojione('Hello :grin:', 'shortnameToUnicode')

    opened by amranidev 0
Releases(5.1.0)
Owner
Christoffer Korvald
Christoffer Korvald
A PHP package to make the Chronopost API easier to use.

Chronopost API A PHP package to make the Chronopost API easier to use. Table of Contents Requirements Installation Usage Testing Requirements PHP 7.3,

HOUIS Mathis 9 Oct 27, 2022
Phalcon Builder - is a packaging system that make it easy and quick to build Phalcon packages such as rpms, debs, etc. Phalcon's distribution that hosted at PackageCloud.

Phalcon Builder - is a packaging system that make it easy and quick to build Phalcon packages such as rpms, debs, etc. Phalcon's distribution that hos

The Phalcon PHP Framework 26 Oct 7, 2022
EasyRdf is a PHP library designed to make it easy to consume and produce RDF.

EasyRdf EasyRdf is a PHP library designed to make it easy to consume and produce RDF. It was designed for use in mixed teams of experienced and inexpe

EasyRdf 578 Dec 23, 2022
Icinga Director has been designed to make Icinga 2 configuration handling easy

The Director aims to be your new favourite Icinga config deployment tool. Director is designed for those who want to automate their configuration deployment and those who want to grant their โ€œpoint & clickโ€ users easy access to the configuration.

Icinga 395 Jan 3, 2023
The Laravel eCommerce Accept Payment Gateway allows the customer to make use of Accept payment gateway in the Bagisto eCommerce website.

Introduction Bagisto WeAccept add-on allow customers to pay for others using WeAccept payment gateway. Requirements: Bagisto: 1.3.2 Installation with

Bagisto 2 May 31, 2022
Make WhatsApp ChatBot and use WhatsApp API to send the WhatsApp messages in php .

Ultramsg.com WhatsApp Bot using WhatsApp API and ultramsg Demo WhatsApp API ChatBot using Ultramsg API with php. Chatbot tasks: The output of the comm

Ultramsg 33 Nov 19, 2022
Parse DSN strings into value objects to make them easier to use, pass around and manipulate

DSN parser Parse DSN strings into value objects to make them easier to use, pass around and manipulate. Install Via Composer composer require nyholm/d

Tobias Nyholm 77 Dec 13, 2022
A simple and easy-to-use enumeration extension package to help you manage enumerations in your project more conveniently

A simple and easy-to-use enumeration extension package to help you manage enumerations in your project more conveniently

null 3 Jul 29, 2022
PHP package to make your objects strict and throw exception when you try to access or set some undefined property in your objects.

?? Yell PHP package to make your objects strict and throw exception when you try to access or set some undefined property in your objects. Requirement

Zeeshan Ahmad 20 Dec 8, 2018
Run your WP site on github pages, php innovation award winner https://www.phpclasses.org/package/12091-PHP-Make-a-WordPress-site-run-on-GitHub-pages.html

Gitpress Run wordpress directly on github pages Gitpress won the innovation award for may 2021 Read more about this https://naveen17797.github.io/gitp

naveen 13 Nov 18, 2022
Easy to use utility functions for everyday PHP projects. This is a port of the Lodash JS library to PHP

Lodash-PHP Lodash-PHP is a port of the Lodash JS library to PHP. It is a set of easy to use utility functions for everyday PHP projects. Lodash-PHP tr

Lodash PHP 474 Dec 31, 2022
An easy-to-use web interface for downloading bittorrents, videos from twitter, youtube and the likes

An easy-to-use web interface for Aria2 and youtube-dl Search for torrents within the app from mutiple BT sites Control Aria2 and manage download tasks

jiaxin huang 54 Dec 22, 2022
My solution use PHP with a class for easy setup

My solution use PHP with a class for easy setup. It accepts requests with the get method just passing the username and password as well as the ip and http port of the Proxmox server. Just needing a web server.

Full Monitoring 2 Jan 15, 2022
A easy to use library for using InfluxDB with PHP.

influxdb-php InfluxDB client library for PHP Note: This library is for use with InfluxDB 1.x. For connecting to InfluxDB 2.x instances, please use the

InfluxData 425 Nov 19, 2022
Very easy to use a current limiting component, the code is very simple, based on the webman framework.

Very easy to use a current limiting component, the code is very simple, based on the webman framework.

nsp-team 13 Dec 29, 2022
NamelessMC is a free, easy to use & powerful website software for your Minecraft server, which includes a large range of features.

NamelessMC is a free, easy to use & powerful website software for your Minecraft server, which includes a large range of features

NamelessMC 519 Dec 31, 2022
PHP Unoconv - An Object Oriented library which allow easy to use file conversion with Unoconv.

An Object Oriented library which allow easy to use file conversion with Unoconv. Install The recommended way to install PHP-Unoconv is thr

Alchemy 69 Dec 3, 2022
An easy-to-use API for Discord webhook

WebhookAPI An easy-to-use API for Discord webhook ฤฐmage: Example Add use use ayd1ndemirci\WebhookAPI; Usage: $webhook = "your_discord_webhook_url";

Aydฤฑn Demirci 5 Jun 7, 2023