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

WordPress Orderby Last Word In Title

Try this. First add the following orderby filter in functions.php

function posts_orderby_lastname ($orderby_statement) 
{
  $orderby_statement = "RIGHT(post_title, LOCATE(' ', REVERSE(post_title)) - 1) DESC";
    return $orderby_statement;
}

Continue reading WordPress Orderby Last Word In Title

WordPress set mail type to html

//Create function which will return content type

function set_html_content_type() {
     return 'text/html';
 }

//now add filter before wp-mail()

Continue reading WordPress set mail type to html

WordPress redirect user with role

WordPress has many users roles, you can redirect particular users by role with following function

<?php

function redirect_user_on_role()
 {

 // retrieve current user info

 global $current_user;
 get_currentuserinfo();

 // If login user role is Subscriber

 if ($current_user->user_level == 0)
 {
 wp_redirect(esc_url(get_permalink(get_page_by_title('Perticluar Page By Name'))));
 exit;
 }

 // If login user role is Contributor

   else
 if ($current_user ->user_level > 1)
 {
 wp_redirect(home_url());
 exit;
 }

 // If login user role is Editor

   else
 if ($current_user ->user_level > 8)
 {
 wp_redirect(home_url());
 exit;
 }

 //For other roles
  else
 {
   $redirect_to = 'http://google.com/';
   return $redirect_to;
 }
 }

add_action('admin_init', 'redirect_user_on_role');

Continue reading WordPress redirect user with role

WordPress Plugin Template redirect custom post, page, taxonomy

Here is example of how we can redirect to custom templates in wordpress plugin with page name, custom post type, custom taxonomies etc 

 

<?php
add_action("template_redirect", 'my_theme_redirect');

function my_theme_redirect()
 {
 global $wp;
 $plugindir = dirname(__FILE__);

 // A Specific page by title / name

 if ($wp->query_vars["pagename"] == 'agenda')
 {
 $templatefilename = 'page-event-list.php';
 if (file_exists(TEMPLATEPATH . '/' . $templatefilename))
 {
 $return_template = TEMPLATEPATH . '/' . $templatefilename;
 }
   else
 {
 $return_template = $plugindir . '/templates/' . $templatefilename;
 }

 do_theme_redirect($return_template);
 }

 // A Specific Custom Post Type

 if ($wp->query_vars["post_type"] == 'events')
 {
 $templatefilename = 'single-event.php';
 if (file_exists(TEMPLATEPATH . '/' . $templatefilename))
 {
 $return_template = TEMPLATEPATH . '/' . $templatefilename;
 }
   else
 {
 $return_template = $plugindir . '/templates/' . $templatefilename;
 }

 dmk_redirect_to_login_if_not_logged_in();
 do_theme_redirect($return_template);

 // A Custom Taxonomy Page

 }
 elseif ($wp->query_vars["taxonomy"] || is_tax('location') == 'location')
 {
 $templatefilename = 'taxonomy-event_location.php';
 if (file_exists(TEMPLATEPATH . '/' . $templatefilename))
 {
 $return_template = TEMPLATEPATH . '/' . $templatefilename;
 }
   else
 {
 $return_template = $plugindir . '/templates/' . $templatefilename;
 }

 do_theme_redirect($return_template);
 }
 }

// Function includes file and does redirection

function do_theme_redirect($url)
 {
 global $post, $wp_query;
 if (have_posts())
 {
 include ($url);

 die();
 }
   else
 {
 $wp_query->is_404 = true;
 }
 }

php text to speech with google api

// Convert Words (text) to Speech (MP3)
// ------------------------------------
$word=$_POST['word'];
// 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, 'http://translate.google.com/translate_tts?ie=UTF-8&tl=en&q='.$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
curl_close($ch);

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

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

WordPress bypass sanitize filter for post insert

I found solution for wordpress 3.6 and just want to share here
filter had to be unset due to security problems with it. You could try doing kses_remove_filters() before inserting the post and kses_init_filters() after inserting the post if you are trying to avoid the kses filtering of the post fields. Just be wary since that defeats most of the security measures for inserting posts.

kses_remove_filters(); // remove filter
wp_insert_post($args); //insert post
kses_init_filters(); // put back filter

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

Example:

php
require 'class.phpmailer.php';

$mail = new PHPMailer;

$mail->IsSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp1.example.com;smtp2.example.com';  // 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 = 'from@example.com';
$mail->FromName = 'Mailer';
$mail->AddAddress('josh@example.net', 'Josh Adams');  // Add a recipient
$mail->AddAddress('ellen@example.com');               // Name is optional
$mail->AddReplyTo('info@example.com', 'Information');
$mail->AddCC('cc@example.com');
$mail->AddBCC('bcc@example.com');

$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;
   exit;
}

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

require_once 'swift/lib/swift_required.php';

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

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

$message = Swift_Message::newInstance('Your subject');
$message
  ->setTo(array(
    'user1@example.org',
    'user2@example.org' => 'User Two',
    'user3@exmaple.org' => 'Another User Name'
  ))
  ->setFrom(array('your@address.com' => 'Your Name'))
  ->attach(Swift_Attachment::fromPath('/path/to/doc1.pdf'))
  ->attach(Swift_Attachment::fromPath('/path/to/doc2.pdf'))
  ->setBody(
    $message->embed(Swift_Image::fromPath('/path/to/image.jpg')) . '" />',
    'text/html'
  )
  ->addPart('This is the alternative part', 'text/plain')
  ;
if ($mailer->send($message))
{
  echo "Message sent!";
}
else
{
  echo "Message could not be sent.";
}

Jquery moving all items in listbox at once

jQuery example of moving single element from one list to another
http://jsfiddle.net/RbLVQ/60/

Javascript:

$(document).ready(function() {
    $('#btnRight').click(function(e) {
        var selectedOpts = $('#lstBox1 option:selected');
        if (selectedOpts.length == 0) {
            alert("Nothing to move.");
            e.preventDefault();
        }

        $('#lstBox2').append($(selectedOpts).clone());
        $(selectedOpts).remove();
        e.preventDefault();
    });

    $('#btnLeft').click(function(e) {
        var selectedOpts = $('#lstBox2 option:selected');
        if (selectedOpts.length == 0) {
            alert("Nothing to move.");
            e.preventDefault();
        }

        $('#lstBox1').append($(selectedOpts).clone());
        $(selectedOpts).remove();
        e.preventDefault();
    });
});
 
HTML:
<table style='width:370px;'>
    <tr>
        <td style='width:160px;'>
            <b>Group 1:</b><br/>
           <select multiple="multiple" id='lstBox1'>
              <option value="ajax">Ajax</option>
              <option value="jquery">jQuery</option>
              <option value="javascript">JavaScript</option>
              <option value="mootool">MooTools</option>
              <option value="prototype">Prototype</option>
              <option value="dojo">Dojo</option>
        </select>
    </td>
    <td style='width:50px;text-align:center;vertical-align:middle;'>
        <input type='button' id='btnRight' value ='  >  '/>
        <br/><input type='button' id='btnLeft' value ='  <  '/>
    </td>
    <td style='width:160px;'>
        <b>Group 2: </b><br/>
        <select multiple="multiple" id='lstBox2'>
          <option value="asp">ASP.NET</option>
          <option value="c#">C#</option>
          <option value="vb">VB.NET</option>
          <option value="java">Java</option>
          <option value="php">PHP</option>
          <option value="python">Python</option>  
        </select>
    </td>
</tr>
</table> 
 

and Some CSS:
body { padding:10px; font-family:verdana; font-size:8pt;} select{ font-family:verdana; font-size:8pt; width : 150px; height:100px;}input { text-align: center; v-align: middle;}

If you want to move all elements at once
follow this example

or add this code
HTML:

<input type='button' id='btnRightAll' value ='  >>  '/>
Javascript:
$('#btnRightAll').click(function(e) {
    var selectedOpts = $('#lstBox1 option');
    if (selectedOpts.length == 0) {
        alert("Nothing to move.");
        e.preventDefault();
    }

    $('#lstBox2').append($(selectedOpts).clone());
    $(selectedOpts).remove();
    e.preventDefault();
});
 

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 http://milindmore22.blogspot.in/2012/07/way2sms-php-api.html
* @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.”.way2sms.com/Login1.action”);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, “username=”.$uid.”&password=”.$pwd.”&button=Login”);
//curl_setopt($curl , CURLOPT_PROXY , ‘144.16.192.218:8080’ );
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:1.9.0.5) Gecko/2008120122 Firefox/3.0.5”);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($curl, CURLOPT_REFERER, “http://site”.$autobalancer.”.way2sms.com/”);
$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.”.way2sms.com/jsp/InstantSMS.jsp”);
$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”);
continue;
}
$p = urlencode($p);

// Send SMS
curl_setopt($curl, CURLOPT_URL, ‘http://site’.$autobalancer.’.way2sms.com/quicksms.action’);
curl_setopt($curl, CURLOPT_REFERER, curl_getinfo($curl, CURLINFO_EFFECTIVE_URL));
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS,
“HiddenAction=instantsms&bulidgpwd=*******&bulidguid=username&catnamedis=Birthday&chkall=on&gpwd1=*******&guid1=username&ypwd1=*******&yuid1=username&Action=”.
$action.”&MobNo=”.$p.”&textArea=”.$msg);
$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.”.way2sms.com/LogOut”);
curl_setopt($curl, CURLOPT_REFERER, $refurl);
$text = curl_exec($curl);

curl_close($curl);
return $result;

}

PS: No longer Works