A bunch of functions that can help

Installs: 199

Dependents: 1

Suggesters: 0

Stars: 0

Watchers: 1

Forks: 0

Open Issues: 0



This package has a few php helpers, for everyday tasks


This packages requires Spatie/Analytics for the charts You can install the package via composer:

$ composer require maksuco/Helpers
$ composer require maksuco/Helpers:dev-master

This Package works with auto discovery in Laravel +5.5, but is compatible with older versions



use Illuminate\Support\Facades\Helpers;

Device check: Mobile, Tables, Desktop

Response with the correct device, example: (300,'table',200), the response is 300 when is mobile OR 200 if it's desktop. ('mobile','table','desktop')



This function helps you show the user avatar or the gravatar, just send the user array or email. In your env file specify "SHOWAVATAR_PATH"

  $img = \Helpers::avatar($user);

First Name

Helps you show the user first name, from a full name, max length of the returned name is 11

  //Gina Gutierrez returns Gina
  //Gi Gutierrez returns Gi Gutierrez

Name Initials

  //SEND Sofia Loren
  //GET SL


Here's an example of how to implement crypto to transform strings to hashed keys, using 2 security keys: one set in the .env (CRYPTO_STRING) and another inside the controller, example the $user->id:

  $security = Helpers::encrypt($string,$key);
  $string = Helpers::decrypt($string,$key);

Active Navigation Page

Send the current page name, example 'about' or 'contactenos', it checks if theres a variable named $active (send from the controller) then checks if the route has a name and then checks the first segment of the page, example: about/history

  //SEND: nav_active('about')
  //RETURNS: 'active'

Text parser

Convert plain text to include real html links

  //SEND: Welcome to http:://
  //RETURNS: Welcome to <a href="http:://">http:://</a>

Get all countries

A list of countries to show in a select

  //RETURNS: Array

Get all languages or lang code name

  //RETURNS: Array
  //RETURNS: 'english'

Location GEOIP

Get the city, country, language and other data from the IP: This product includes GeoLite2 data created by MaxMind, available from

  $location_data = \Helpers::geoip($ip); //\Helpers::geoip($ip,'isp');

if you also want the isp info, just include the second call.

Date in IP TimeZone


Append to json (only works with first level for now)

Send new data to append to a json data or subcategory (subcategory is optional).

You send the DB column as $json, the new object or array as $new.


Modify csv string action=add,remove,check

Send id's to add, remove or check if exist in csv string


Collection Relations Append

Include in a collection the columns from another table with just one extra query $principal_relation_column = the principal reference INT, typically id (This is optional)

Examples: ($user,$post,'user_id',['post_name'=>'name'])


Column: Array and Json check

Check if a value is in a column (Works with json, array and string explode) //only 1 level RETURNS: true or false

  {{(\Helpers::column_check($data,$value))? 'YES!':'NO!'}} //($user->favorites,124)

Column Process (if is in column, it will delete it, if not it will add it)

  \Helpers::column_process($data,$table,$column,$value) //($user,'users','favorites',124)


Check if a domain doesn't have the http and adds it, and other links, domains helpers


  $domain = \Helpers::domain_from_email($email);
  //returns the domain from an email if it's not a free service like, else it returns false

  if(\Helpers::domain_check($email)) {}
  //returns the domain from the email and checks if it exist
  if(\Helpers::domain_check('')) {}
  //Checks if the domain exist

File size to bytes calculator

Send '1 mb' and get the result in bytes, send measurements in: b, kb, mb, gb, tb

  \Helpers::sizetobytes('1 mb');
  //returns xxxx bytes

Generate random string

Send the length of the random //in a future version specified if numeric only

  //returns xxxx

Filename Parsing

Get a filename name from a string or url, you can also parse it and get basename, extension and filename

  $filename = \Helpers::filename('');
  //RETURNS: this_is_the_name.png
  $filename = \Helpers::filename('',true);
  //RETURNS ARRAY: basename: this_is_the_name.png, extension: png, filename: this_is_the_name
  //USE: $filename->basename


Here's an example of how to implement the slug function to transform names to slugs:

  $slug = \Helpers::slug('Hi how are you? Muy@#$%^&*good');
  //RETURNS: hi-how-are-you-muy-good
  $slug = \Helpers::slug($name);

Transform file names, the second argument specifies a random addon at the end, can be text or INT

  $slug = \Helpers::slug_file('Hi how are you? Muy@#$%^&*good.jpg',0);
  $slug = \Helpers::slug_file($file->getClientOriginalName(),5);
  $slug = \Helpers::slug_file($filename,'great-doc');

In this function you can specify a new filename (REPLACE) and use the same extension

  $slug = \Helpers::slug_filename('SomeFile.jpg','new-name',0);
  $slug = \Helpers::slug_filename($file->getorriginalname(),'new-image',2);
  $slug = \Helpers::slug_filename($file,'one','great-images');

Here's an example of how to implement the random function, Adds random at the end of the file name, and checks if its numeric or string

  $slug = \Helpers::slug_random('new-image');

VeeValidate Honeypot

Renders a vee validate html and css honeypot:


Form input example with css error (cross)

<div class="form-group">
  <label for="email">Email address</label>
  <input type="email" class="form-control" id="email" placeholder="Enter email" v-validate="'required|email'" name="email" :class="{'form-control-invalid': errors.has('email')}">
  <small class="form-text text-danger">@{{errors.first('email')}}</small>

Vue code example

Vue.use(VeeValidate); // good to go.
new Vue({
  el: '#formVee',
  data: {
    submit_text: "{{__('Submit')}}",
    time: 0
  created () {
    setInterval(() => { this.time++;}, 1000);
  methods: {
    validateBeforeSubmit: function(e){
      this.$validator.validateAll().then((result) => {
        if(result) {
          if(this.time < 3) { alert('bot!!!');location.reload(); }
          this.submit_text = "<i class='far fa-circle-notch fa-spin'></i>";
          setTimeout(function(){ document.querySelector('#formVee').submit(); }, 500);