Setting up WordPress VIP Development Environment with Easy Engine (nginx)

Hey there,

As you know VIP quick start has been deprecated recently. Here is some easy way to get started with VIP development, We hope soon EasyEngine will V4 launch with VIP support but for now, let’s do all thing manually.

You need Ubuntu 14 / 16 LTS with sudo access also we need svn and git installed.

For starter let’s install easy engine if you don’t already have one open terminal

wget -qO ee && sudo bash ee # install easyengine

Next step create a multisite

ee site create --wpsubdom

save username and password somewhere for safe keeping, We are ready with the initial setup for VIP now let’s make site real VIP 😉
The user www-data has the write access to /var/www/ folder so let’s switch user with the following command

sudo -su www-data

Go to htdocs folder with

cd /var/www/

Let’s add VIP Plugins and Helper files

svn co wp-content/themes/vip/plugins

For next step lets install some mu-plugins

git clone --recursive wp-content/mu-plugins

these repos should be updated daily with svn up and git pull

If you have a theme ready for project lets put that in wp-content/themes/vip/{your-theme}. If you don’t have theme ready right now lets put one of WordPress default theme to VIP directory by simply moving that to VIP directory

mv wp-content/themes/twentysixteen/ wp-content/themes/vip/twentysixteen

Now let’s include vip-init.php to themes functions.php at the beginning of the file and check it by loading facebook instant article plugin.

require_once WP_CONTENT_DIR . '/themes/vip/plugins/vip-init.php';
wpcom_vip_load_plugin( 'facebook-instant-articles', 'plugins','3.3' );

Now visit and log in by username and password generated and go to Dashboard and activate theme in which you added vip-init.php

We are done!

Please let me know your thoughts in comments

Google Maps API drawing polygon with JSTS Librery

One of our client  has asked for road map feature for their website. basically what he need is A Road map which list all places around the route.

Now getting distance between to points was very easy the important thing is how to draw polygon around route.

After lot of browsing and googling  I found amazing library which is able to draw polygon around route it’s called JSTS library.

Continue reading “Google Maps API drawing polygon with JSTS Librery”

php text to speech with google api

// Convert Words (text) to Speech (MP3)
// ------------------------------------
// Google Translate API cannot handle strings > 100 characters
$word = substr($word, 0, 100);

// Replace the non-alphanumeric characters
// The spaces in the sentence are replaced with the Plus symbol
$word = urlencode($word);

// If the MP3 file exists, do not create a new request
// create curl resource
$ch = curl_init();

// set url
curl_setopt($ch, CURLOPT_URL, ''.$word);

//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// $output contains the mp3 file
$mp3 = curl_exec($ch);

// close curl resource to free up system resources

file_put_contents('temp/'.$word.'.mp3', $mp3);

PS: this code no longer works as google added captcha code

Sending MIME Mail with PHP

You can send email with PHP Mailer with attachment and MIME type, with help of following libraries

1)PHP Mailer
you can download latest version from github


require 'class.phpmailer.php';

$mail = new PHPMailer;

$mail->IsSMTP();                                      // Set mailer to use SMTP
$mail->Host = ';';  // Specify main and backup server
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = 'jswan';                            // SMTP username
$mail->Password = 'secret';                           // SMTP password
$mail->SMTPSecure = 'tls';                            // Enable encryption, 'ssl' also accepted

$mail->From = '';
$mail->FromName = 'Mailer';
$mail->AddAddress('', 'Josh Adams');  // Add a recipient
$mail->AddAddress('');               // Name is optional
$mail->AddReplyTo('', 'Information');

$mail->WordWrap = 50;                                 // Set word wrap to 50 characters
$mail->AddAttachment('/var/tmp/file.tar.gz');         // Add attachments
$mail->AddAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name
$mail->IsHTML(true);                                  // Set email format to HTML

$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body in bold!';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->Send()) {
   echo 'Message could not be sent.';
   echo 'Mailer Error: ' . $mail->ErrorInfo;

echo 'Message has been sent';?>
You can also send Emails with SwiftMailer

require_once 'swift/lib/swift_required.php';

$smtp = Swift_SmtpTransport::newInstance('', 25)
  ->setUsername(' ... ')
  ->setPassword(' ... ');

$mailer = Swift_Mailer::newInstance($smtp);

$message = Swift_Message::newInstance('Your subject');
    '' => 'User Two',
    '' => 'Another User Name'
  ->setFrom(array('' => 'Your Name'))
    $message->embed(Swift_Image::fromPath('/path/to/image.jpg')) . '" />',
  ->addPart('This is the alternative part', 'text/plain')
if ($mailer->send($message))
  echo "Message sent!";
  echo "Message could not be sent.";

Way2sms PHP API

Hello , build your own sms base application in php with this way2sms api interface
post comments and queries

* sendWay2SMS
* Function to send to sms to single/multiple people via way2sms
* @author Milind
* @category SMS
* @example sendWay2SMS ( ‘9000012345’ , ‘password’ , ‘987654321,9876501234’ , ‘Hello World’)
* @url
* @return String/Array
* Please use this code on your own risk. The author is no way responsible for the outcome arising out of this
* Good Luck!

function sendWay2SMS($uid, $pwd, $phone, $msg)
$curl = curl_init();
$timeout = 30;
$result = array();

$uid = urlencode($uid);
$pwd = urlencode($pwd);

$autobalancer = rand(1, 8);

curl_setopt($curl, CURLOPT_URL, “http://site”.$autobalancer.””);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, “username=”.$uid.”&password=”.$pwd.”&button=Login”);
//curl_setopt($curl , CURLOPT_PROXY , ‘’ );
curl_setopt($curl, CURLOPT_COOKIESESSION, 1);
curl_setopt($curl, CURLOPT_COOKIEFILE, “cookie_way2sms”);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_MAXREDIRS, 20);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_USERAGENT, “Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv: Gecko/2008120122 Firefox/3.0.5”);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($curl, CURLOPT_REFERER, “http://site”.$autobalancer.””);
$text = curl_exec($curl);

// Check if any error occured
if (curl_errno($curl))
return “access error : “. curl_error($curl);

// Check for proper login
$pos = stripos(curl_getinfo($curl, CURLINFO_EFFECTIVE_URL), “Main.action”);
if ($pos === “FALSE” || $pos == 0 || $pos == “”)
return “invalid login”;

if (trim($msg) == “” || strlen($msg) == 0)
return “invalid message”;
$msg = urlencode(substr($msg, 0, 160));
$pharr = explode(“,”, $phone);
$refurl = curl_getinfo($curl, CURLINFO_EFFECTIVE_URL);
curl_setopt($curl, CURLOPT_REFERER, $refurl);
curl_setopt($curl, CURLOPT_URL, “http://site”.$autobalancer.””);
$text = curl_exec($curl);

preg_match_all(‘/  $action = $match[1][0]; // get custid from the form fro the Action field in the post form

foreach ($pharr as $p)
if (strlen($p) != 10 || !is_numeric($p) || strpos($p, “.”) != false)
$result[] = array(‘phone’ => $p, ‘msg’ => urldecode($msg), ‘result’ => “invalid number”);
$p = urlencode($p);

// Send SMS
curl_setopt($curl, CURLOPT_URL, ‘http://site’.$autobalancer.’’);
curl_setopt($curl, CURLOPT_REFERER, curl_getinfo($curl, CURLINFO_EFFECTIVE_URL));
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS,
$contents = curl_exec($curl);

//Check Message Status

//preg_match_all(‘/?([^>]*)?</span>/si’, $contents, $match);
//$out=str_replace(” “,””,$match[1][0]);
$pos = strpos($contents, ‘Message has been submitted successfully’);
$res = ($pos !== false) ? true : false;
$result[] = array(‘phone’ => $p, ‘msg’ => urldecode($msg), ‘result’ => $res);

//echo $text;

// Logout
curl_setopt($curl, CURLOPT_URL, “http://site”.$autobalancer.””);
curl_setopt($curl, CURLOPT_REFERER, $refurl);
$text = curl_exec($curl);

return $result;


PS: No longer Works