Author’s Note: PHP Dashboard v5 – Brand New Enterprise Edition

“It takes a village to GO DATA! This is the dashboard tool for that village.”
– Data Ninja (3/14/2018)

It’s been 3 years since I wrote the first version of PHP Dashboard. Back then version 1.0 was just about coming up with a quality script that renders a dashboard in PHP. Version 5 shows how far this tool has come – see key updates section below.

What’s most exciting to me, if you follow my blog, I use my portfolio of scripts in an effort to develop a next generation data visualization tool that allows large organizations with vast amounts of data to be more data-centric, make day to day decisions based on available data. The current data visualization and business intelligence tools fall short and are still designed for a centralized group to do organization wide reporting. I feel version 5 gets us an order of magnitude closer to this vision with the draglet architecture and marketplace.

New Key Updates

  • With Version 5, data, reporting and insights are more democratic and collaborative.
  • A social dashboarding tool has yet to become mainstream that allows a more collabrative approach to dashboards. I’m hoping this tool has it’s place in that product segment.
  • Version 5 takes version 4 as the foundation but has been re-architected to allow add-ons to be developed by third parties. The add-on I will call “draglets” (draggable applets). Think of draglets like plug-ins are to WordPress or modules are to Drupal.
  • I also created a draglet marketplace so that additional draggables I create will be developed as a draglet and contributed to a marketplace (visit
  • I introduced complete dashboard and infographic templates as my first set of draglets introduced in this fashion.
  • Finally this version also addresses the fact that the next generation of “computer users” won’t be using computers at all and are more tablet-centric. Less desktops and laptops, more tablets and stylus pens. So I revamped the interface to make version 5 tablet friendly.

All in all, a lot of great enhancements! Check it out. Hope  you like it!

Tanoshinde (‘Have fun!’),
Data Ninja
my email:
my codecanyon portfolio: click here

JUST RELEASED! Twilio “Geo-text” Plug-in (a PHP Uber-style Geotracker Add-On)

Check out my latest script – Twilio “Geo-text” Plug-In (a PHP Uber-style Geotracker Add-On) – click here at!


(def) “Geo-texting” – (verb) is the act of inviting people, via text, to share their location realtime with each other on a private geomap…uberstyle. Anyone with a smartphone and can text to the geo-text phone number can play dispatcher and invite people to share a geomap. To set up your own geo-text your own environment, you’ll need to host this plug-in, my latest script PHP Uber-style Geotracking and Twilio’s SMS “texting” services ( You can try it out in my demo environment here. Just text commands (below) to 415-360-0886 – FREE!.

This Twilio “Geo-text” plug-in is an add-on to my PHP Uber-style Geotracking script that allows anyone with access to your Twilio phone number to invite people via text to share their location with others uber-style on a private geomap. In addition the script features dispatcher functionality not found in the original geotracking script. This functionality includes managing multiple geomaps, adding/deleting geotrackees, renaming maps and geotrackees, pinging geotrackees to update their location, all from a smartphone using SMS texting.

The script is super easy to install – just unzip contents (3 files) into the /php/sms folder of your original PHP Uber-style Geotracking installation. This requires a Twilio account to send and process SMS texts. Configuration instructions to link your Twilio phone number to this plug-in appear below.


This script includes PHP code that CAN BE USED BY PHP DEVELOPERS AS A TEMPLATE for using SMS TEXTING (using Twilio) as the user interface for their software/web applications. For PHP developers who have not explored SMS texting as a user interface for your software (as I’ve done here), it is worth exploring. Texting is something everyone knows how to do (young, old and in between) and cuts learning curve of using your software. (see “Overview of PHP Code” section below for how code is structured).

Using the plug-in is as easy as texting a list of geotrackees to the script’s twilio phone number (or for demo – 415-360-0886). Click on “Live Demo” link above for more detailed instructions.

  1. Install script/plug-in. For demo, text to 415-360-0886.
  2. Simply “text” a space or comma separated list of geotrackee email addresses or smart phone numbers to invite to a private geomap. The script will text you an invitation link (it automatically includes map owner as a geotrackee in every map. It will also text you confirmation which geotrackees were invited and which ones didn’t (didn’t pass validation).
  3. To add more geotrackees, continue to text emaill address and phone numbers to the plug-in phone number in step 1.

OTHER DISPATCHER FEATURES Here is the list of all the dispatcher features built into this script that can be executed by texting commands to your Twilio phone number on your smartphone. Click HERE for the How To Guide.

  • LIST ALL YOUR MAPS – Text “list-maps” or “lm” to the twilio number to get a numbered list of maps you own.
  • ADD A NEW MAP – Text “new-map” or “nm” to the twilio number
  • SWITCH ACTIVE MAP – Text “switch-map” or “sm” and then the map number (from “list-maps” list) to the twilio number (e.g. “sm 3”)
  • RENAME MAP – Give your map a friendlier name. Text “rename-map” or “rm”, followed by the map number and then the friendly name you want to give the map. (e.g. “rm 2 My Test Map”)
  • DELETING A MAP – Text “delete-map” or “dm” and then the map number you want to delete followed by the map number you want to delete.
  • ADDING A GEOTRACKEE – Text “add-geotrackee” or “ag” and then a comma or space separated list of geotrackee emails and phone numbers. This is optional, you can just text new emails and phone numbers. (e.g. “ag 4153333333”)
  • LIST ALL GEOTRACKEES OF ACTIVE MAP – Text “list-geotrackees” or “lg” to get a numbered list of geotrackees in the active map. (e.g. “ag 4153333333”)
  • DELETING A GEOTRACKEE – Text “delete-geotrackee” or “dg” and the geotrackee’s number from “list-geotrackee” list. (e.g. “dg 2”)
  • RENAME A GEOTRACKEE – Text “rename-geotrackee” or “rg”, the geotrackee’s number from “list-geotrackee” list and the geotrackee’s nickname. (e.g. “rg 2 Lucky Louie”)
  • PING ALL THE GEOTRACKEES IN THE ACTIVE MAP – Text “ping-geotrackee” or “pg”, then the word “all”. (e.g. “pg all”)
  • PING AN INDIVIDUAL GEOTRACKEE IN THE ACTIVE MAP – Text “ping-geotrackee” or “pg”, then the geotrackee’s number you want to ping. (e.g. “pg 3”)
  • GETTING HELP – Text “help-me” or “?” to clear all the maps and geotrackees and reset.
  • RESETTING – Text “clear-all” or “ca” to clear all the maps and geotrackees and reset.


    1. If you have not done so, purchase the “PHP Uber-style Geotracker” script from
    2. If you have not done so, install the script (see ‘Installation Instructions’ section in the script’s documentation)
    3. Purchase this plug-in- Twilio “Geo-Text” Plug-In
    4. Unzip the contents of the zip file into the /php/sms/ folder in your installation from step 1 and 2 (http:///php/sms/)
    5. Go to and sign up for your account (sign up for the SMS product – make sure you purchase a twilio phone number for your users to text to)
    6. Click on ‘Dashboard’ link to display Console Dashboard.
    7. Click on ‘Programmable SMS’ link under the All Twilio Products section on Console Dashboard.
    8. Click on ‘Messaging Services’ link on the Programmable SMS Dashbaord page
    9. Click on ‘+’ sign on the Messaging Services page
    10. Enter ‘geotracker’ as the friendly name and ‘Notifications, 2-Way’ as the use case
    11. Check the ‘Process Inbound Messages’ check box and enter https:///php/sms/receive.php and save Configure page

See table below for list of commands. Examples below are “text” commands that are sent to the Twilio phone number you set up during installation (or use the demo phone number: 415-360-0886).

help-me or hm get help or list of commands
text: “help-me”
clear-all or ca clear all my maps and geotrackees
text: “clear-all” or “ca”
new-map or nm create new map
text: “new-map” or “nm”
list-maps or lm list all my maps
text: “list-maps” or “lm”
rename-map or rm rename existing map
text: “rm 2 My Map”
switch-map or sm switch active map
text: “switch-map 3”
delete-map or dm text: “delete-map 2”
add-geotrackees or ag add geotrackees to the active map (default)
text: “ag 4154444444”
list-geotrackees or lg get list of geotrackees in active map
text: “list-geotrackees”
delete-geotrackee or dg delete geotrackee
text: “dg 4”
rename-geotrackee or rg create nickname for a geotrackee
text: “rename-geotrackee 2 Cool Dude”
ping-geotrackees or pg ping all geotrackee to update location
text: “pg 1,2,3” or “pg all”
or simply type in a comma separated (“,”) list of email addresses and phone numbers directly to invite people to an active geotracking map

With this script comes a “template” PHP class that can be used as a starting point for PHP developers to create other conversational Twilio SMS applications. See below documentation of this PHP class. The code can be found in the twilioGeotextClass.php file.


class twilioGeotext {

// Properties
private $twilioFrom; // phone number of “texter”
private $twilioBody; // body of the text
private $twilioAccountSid; // Twilio Account Sid
private $twilioAuthToken; // Twilio Auth Token
private $twilioPhoneNumber; // Twilio Phone Number
private $sessionActiveMap; // mapkey for current active map
private $db; // handle to database db
private $urlRoot; // url of script
private $background; // background color of geotrackee icon
private $letter; // assigned geotrackee letter
private $headers; // email headers<

// Methods
public function getTwilioFrom()
public function setTwilioFrom($twilioFrom)
public function getTwilioBody()
public function setTwilioBody($twilioBody)
public function getUrlRoot()
public function setUrlRoot($urlRoot)
public function getLetter()
public function setLetter($letter)
public function getHeaders()
public function setHeaders($headers)
public function getBackground()
public function setBackground($background)
public function getTwilioAccountSid()
public function setTwilioAccountSid($twilioAccountSid)
public function getTwilioAuthToken()
public function setTwilioAuthToken($twilioAuthToken)
public function getTwilioPhoneNumber()
public function setTwilioPhoneNumber($twilioPhoneNumber)
public function getSessionActiveMap()
public function setSessionActiveMap($sessionActiveMap)
public function getDb()
public function setDb($db)
public function getGeotrackeeCount() // get geotrackee count
public function getGeotrackeeTable() // assemble geotrackee table for email
public function generateRandomKey($length = 10) // generate random key
public function validatePhone($phoneNumber)
public function getMode() // get current mode of operation
public function getArg($argNo) // get n-th token from command (text body)
public function getMapkey($arg) // get mapkey of active map
public function getMapname($arg) // get mapname of active map
public function getMapCreated($arg) // get created date of active map
public function sendSms($to, $msg) // send sms back to “texter”
public function getActiveMap() // get active map info
public function doHelpMe() // do “help-me” command
public function doListMaps() // do “list-maps” command
public function doClearAll() // do “clear-all” command
public function doActiveMap() // do “active-map” command
public function doSwitchMap() // do “switch-map” command
public function doDeleteMap() // do “delete-map” command
public function doAddMap() // do “add-map” command
public function doRenameMap() // do “rename-map” command
public function doListGeotrackees() // do “list-geotrackees” command
public function doDeleteGeotrackee() // do “delete-geotrackee” command
public function doAddGeotrackees() // do “add-geotrackee” command
public function doPingGeotrackee() // do “ping-geotrackee” command

Not sure if there is much more to add to this script. I may want to
add some geotrackee viewing restrictions so that you can differentiate
between geotrackee’s that can see everyone’s location, with
geotrackees that can only see their own and also hiding owner’s

I do plan to create a dispatcher module that uses a regular desktop user interface for serious dispatching. But not sure of the timing of this. It will probably leverage my other scripts including PHP Dashboards, etc. Let me know what you think by commenting on this script.

-Data Ninja

AUTHOR’S NOTE ON SCRIPT: see blog post – Twilio “Geo-Text” Plug-In
DOCUMENTATION: – How to Geotext (Guide)

REMINDER ON EXTENDED LICENSES: Just a friendly reminder that there are two different license levels at The regular license is for single FREE user use. If you have multiple clients or charging clients for functionality from this script, then an extended license is the appropriate level. It’s only fair as I do spend a lot of time tuning these scripts. And more sales/revenues means I can code more features and it has come to my attention that many purchasers are using my script for commercial (for pay) purposes with just the regular license. Thanks for you support. Click for more details – Regular vs. Extended License Comparison


    • Any browser that supports HTML5/Javascript, jQuery (2.1.4). Tested with Chrome Version 49.0.2623.110 (64-bit), Safari Version 5.1.7 (7534.57.2), Internet Explorer 11.0.9600.18230, Firefox 5.0.2
    • A PHP/MySQL supported webserver is required for jsfiddle features (preview, share, save) and render script options #3 and #4 – click here for phpinfo for PHP/MySQL versions and configuration options of the server serving up the demo. IMPORTANT: make sure to compare with phpinfo of your installation. Many PHP/MySQL errors stem from configuration options of customer php server instances.
    • You will need a PAID Twilio account and phone number

(See installation instructions on this page to see how to sign up and install)

VERSION HISTORY – Twilio “Geo-text” Plug-In

  • VERSION 1.0 (10/02/2017) – Initial launch version
    1. Twilio SMS texting user interface for the PHP Uber-style Geotracker script.
    2. Dispatcher features not found in the original geotracker script. See ”List of Text Commands’ section on this page for the list of features included in this initial version.

My Other Scripts at Codecanyon:

– (BRAND NEW!!!) PHP Daytrader’s Candlestick Pattern Hunter
– PHP Uber-style GeoTracker
– PHP Dashboard v4.0 Collaborative Social Dashboards
– PHP Dashboard v2.7 – Responsive Carousels/D3js/Highcharts/Highmaps/MySQL
– PHP Dashboard v3.0 – For Mobile Devices
– HTML5 Cloud Dashboard Designer
– HTML5 Streetmaps
– PHP Streetmaps


my email:
my codecanyon portfolio: click here

Author’s Note: Twilio “Geo-text” Plug-In (a PHP Uber-style Geotracker Add-on)


– Data Ninja 10/1/2017

Cooking has come a long way from when I was growing up. Back then, there were very strict rules about the “proper” way to cook well-defined dishes/recipes. Access to ingredients was limited (usually by country/regional/geographic borders) and restaurants had to fall into strict, well defined categories (ethnic cuisines – italian, french, japanese, chinese or food categories – burgers, bbq, seafood, etc) to be “understood” by their customers and critics and be successful.

Today, because of globalization, internet and better transportation infrastructure that gives chefs <24 hour access to ingredients from anywhere around the world, cooking and food has changed. Dishes are now made using a vastly wider selection of ingredients and sourced anywhere around the world. Tastes have changed, and chefs are free to “mash-up” cuisines so you can have a dish that takes the best from the different cuisines around the world (e.g. an italian dish using best chinese ingredients using cooking techniques from france, etc).

Programming NOW is changing and no different to what’s happened to cooking!

Back in the day, if you were a Apple mac programmer, that’s what you were. Windows programmer, same thing. iPhone…same and so on. A database programmer situated themselves on the backend layer of the tech stack and focused on data based (database) programming. A front end programmer did so in the front end, focusing on the user experience and technologies like HTML, CSS, javascript and jquery, to serve up information from the back-end. Back then, “roles” were well defined and obeyed because it was much more difficult to develop the expertise to build in the different layers of the tech stack. Developers needed to specialize.

But now…with the social media and the internet…everything has changed. The barriers to learning HAVE COME DOWN!

Nowadays, the “ingredients” for writing applications are much more easily accessible. With open source, youtube, google, wikipedia, jsfiddle, stack overflow, etc. It is so much easier for someone who knows how to code (“a developer”) to learn and master any technology and incorporate into their applications.

This Twilio Geo-texting Plug-in, I am about to release, is an example of the changing landscape of programming and what’s possible!

“Coding Chefs” (a.k.a. developers) now have easy access to a lot more “ingredients”. Someone like me that primarily programs in javascript and PHP can learn geolocation technologies available from JS frameworks such as mapbox and leaflet, and mash them up with SMS texting technologies from companies like Twilio and master the expertise in a few days in order to create a new generation of applications – such as the Twilio Geo-text Plug-In. All using PHP/Javascript/MySQL as the glue!

This plug-in is an example of what’s possible in the future! Let me know what you think of it and if you have any other ideas of how best to mash up different technologies.

The Twilio Geo-text Plug-In will be available NOW at! Click here!

Tanoshinde (‘Have fun!’),
Data Ninja
my email:
my codecanyon portfolio: click here