Archive for November, 2005

Salesforce & Google Maps Mashup using PHP

Share

After reading this post, check out a more recent post on an improved mashup or visit the Arrowpointe’s product page for this functionality.

I have developed a mash-up of Salesforce.com and Google Maps. The script was developed in PHP and utilizes the PHP Nusoap Sforce Toolkit, created by Ryan Choi, to communicate with the Sforce API and Phoogle, developed by System 7 Designs, to communicate with the Google API.

Using the PHP Nusoap toolkit, this script logs into Salesforce and queries for all Account records that have a complete address. After setting up a Phoogle map instance, the script adds each address to the map. In addition to sending the map the latitude and longitude values, it also passes an HTML formatted string that populates each pin with the Account Name, Address and a link to the record in Salesforce.com.

Salesforce and Google Maps Mashup

The demo is now closed because my web host turned off calls to file_get_contents and I am not planning on re-writing the functionality. I noticed that the code is not running properly on IE. It gets an error and says “Operation Aborted”. I am not sure why. I have found a bunch of posts giving some solutions, but none of them seem to work. Still working on that.

The script has been tested on PHP 4.3.11, 4.4.1 and PHP5. In order for this to work on PHP5, you must download the latest version of the code, which came out on 12/6/2005. Older versions of the code need to use PHP4 because the soapclient class conflicts with another class in many PHP5 installs.

The script is free for download and licensed under the GPL. To get this setup on your own webserver, do the following:

  1. Download the scripts. The zip file contains all of the files you need.

    The included files unique to my development are:

    • MapAccounts.php: This is the primary script.
    • google-map-api-key.php: Holds the Google Maps API key for the web directory.
    • phoogle-extensions.php: I had to extend the Phoogle class.

    The PHP NuSoap Sforce toolkit code was not changed. The master source for this code, as well as other sample files for it, are at its Sourceforge page. The included PHP NuSoap Sforce toolkit files are:

    • salesforce.php: Primary file that defines the salesforce class.
    • nusoap.php
    • partner.wsdl

    I had to make some changes to the Phoogle files. I have communicated these changes to the Phoogle developers so they may get incorporated. The master source for the Phoogle code and documentation on its functionality is located here. The included Phoogle files are:

    • phoogle.php
  2. Sign-up for a Google API key. Google requires you to have a new API key for every web server directory you use.
  3. Enter your API key into the google-map-api-key.php file.
  4. Open the MapAccounts.php file and search for the phrase Enter a default username here. Update the file with your username.
  5. Open the MapAccounts.php file and search for the phrase Enter a default password here. Update the file with your password.
  6. Load all of these files to your web server.
  7. Run the MapAccounts.php file

Phoogle geocodes addresses using the Yahoo Geocode API. I have noticed that the current code has some trouble with multi-line addresses. If you are receiving errors, that could be why.

Please comment on this post and let me know what you think. Also, comment here and add links to how you have used this script or modified it. Have fun!

Updated 12/8/2005:
I made some small tweaks to the code that allows it to be run from within a custom tab so that it leverages the existing Salesforce session and applies all of the user’s visibility settings. I was able to get it working by having a Custom Tab with the following URL:

http://www.arrowpointe.com/dev/SalesforceGoogleMap/MapAccounts.php?sess= {!API_Session_ID}&srvr={!API_Partner_Server_URL_60}

You are welcome to try it out with the URL at arrowpointe.com if you want to, but I encourage you to host the PHP files yourself and link to your own files. My pages are NOT running in HTTPS. That’s why you should host them yourself. Also, I could change the code in my files at any time, so your link might break too.

In case you didn’t notice when looking at the code, you can alternatively pass in a username and password using the “un” and “pw” parameters the same way you can do it to log into Salesforce.

Note that the code is sensitive and, therefore, only pulls back Accounts with a complete addresses. Also, things like multi-line addresses or addresses that cannot be geocoded will result in script errors. I don’t have the error handling working now and this is not intended to be service I am providing at this time.

It works in PHP5 now too. The Salesforce PHP Nusoap package was updated on Sourceforge.

Comments (24) comments feed

Site Has Moved

The Perspectives on Salesforce.com blog has moved. The blog is now located at http://sfdc.arrowpointe.com.

If you are subscribed to the Feedburner feed, everything should take care of itself. I have redirected those feeds already. If you are receiving this post in your aggregator, then you are all set.

The new site is being run on WordPress. I am opening it up allowing people to register if they wish to contribute content. I’d like this blog to be a place where many people author the content and have it act as a supplement to the high-quality Best Practices blog that Salesforce maintains. I have not been too good about it so far, but I’d like the blog to take on more of a solutions-focus than a news-focus. To date, it’s been more about Salesforce news and functionality wishes. I want to leave the news to Salesforcewatch.com and stick to the functionality wishes and solutions. This is a bit of an overlap with Salesforce’s blog, but should still supplement it by having an independent consultant/developer point of view.

The about page has the information you need on registering and what that means. For starters, all postings by new registrants will need to be authorized for publishing, but that can be changed if this goes anywhere.

Please post comments with your feedback. I’m interested in getting suggestions on making this work and knowing if it’s of interest to people.

Comments (0) comments feed

Salesforce.com Winter 06 Release Landing Page

Visit the Winter Release landing page to see details regarding the new functionality.

The Admin Preview and Release Notes are particularly useful if you want some offline reading.

Comments (0) comments feed

Sforce API: What’s New in Winter ’06

Salesforce has posted a tech note on the changes to the API for the Winter Release.

Comments (0) comments feed