Table of Contents

3rd Party Libraries Used

In the Geo software, we utilize a number of 3rd party software libraries, which are listed below in sort-of directory listing order. Feel free to reference any of these libraries in your Addon, but pay attention to the notes on each library as some are slated for removal in future releases. If you see any out of date information, or if you know of a library with a newer version than listed below let us know about it!

Note that if you have a version earlier than what is listed under last updated, you will need to refer to your version's files to see what version of the library is included with your version.

<tip c w>Warning: Take note of the use of Prototype JS and Scriptaculous along side jQuery, which are not compatible with some other JS libraries such as MooTools. If you use jQuery, make sure you ALWAYS use the jQuery() and not the shortcut $(), as currently that will be used by Prototype. See the notes in the Prototype (Javascript Framework) for more info.</tip>

ADOdb (Database Access)

Name ADOdb
Location classes/adodb/
URL http://adodb.sourceforge.net/
Version & Release Date V5.11 (PHP5 only) 5 May 2010
Last Updated in Geo 3 March, 2011 (Version 6.0.0)
Usage in Geo Used by DataAccess class.

Usage Notes: We advise to not use this library directly, but use the Geo data accessor DataAccess which wraps the ADOdb class, and adds additional functionality on top of that. See the PHP Docs for the DataAccess class for more information.

html5shiv (HTML 5 Compatibility JS Library for IE)

Name html5shiv
Location js/html5shiv.js
URL https://code.google.com/p/html5shiv/
Version & Release Date 3.6.2pre
Last Updated in Geo 8 February, 2013 (Version 7.1)
Usage in Geo Used in new default templates, to ensure HTML5 compatibility in IE versions 8 and below.

Usage Notes: This is now (as of version 7.3.0) included as part of the Modernizr library, in earlier versions it was referenced in the default templates on it's own. This ensures that those HTML5 elements will work properly on older browser versions.

Modernizr

Name Modernizr
Location js/modernizr-2.6.2.min.js
URL http://modernizr.com/ - http://html5boilerplate.com1)
Version & Release Date 2.6.2
Last Updated in Geo 04 October, 2013 (Version 7.3.0)
Usage in Geo Used in new default templates, for browser feature detection and to ensure HTML5 compatibility in IE versions 8 and below.

Usage Notes: First added in version 7.3.0. Note that this includes html5shiv so renders the stand-alone html5shiv library unnecessary. Also note that unlike other JS libraries, this needs to be loaded after all of the CSS is loaded, but before the body is loaded2), in order to avoid FOUC.

At the moment just a few places make use of Modernizr's tests to it's full extent, going forward we plan to incrementally improve that to fully leverage what this library can accomplish.

Mobile Detect

Name Mobile Detect
Location classes/Mobile-Detect/Mobile_Detect.php
URL http://mobiledetect.net/
Version & Release Date 2.7.1
Last Updated in Geo 4 October, 2013 (Added in Version 7.3.0+)
Usage in Geo Used by the template system to detect when site is being viewed on mobile device, for purposes of selective mobile template loading.

Usage Notes: This library first added / used in Version 7.3.0. We recommend to not use this directly, instead go through the methods exposed in the geoTemplate class and geoSession class, to ensure best "forward compatibility".

PayPal SDK (Paypal Pro Gateway)

Name PayPal SDK
Location classes/PEAR/PayPal/ 3)
URL http://www.paypal.com/sdk (SOAP SDKs - PHP .zip package half way down the page)
Version PHP SDK V59
Last Updated in Geo 10/02/2009 (Version 4.1.0)
Usage in Geo In the PayPal Pro payment gateway.

Usage Notes: Added in Geo 4.1.0. The old location is in the Services/ directory, we have updated it (we were previously using a beta version from 2006) and moved its home to the directory noted.

PclZip

Name PclZip
Location classes/pclzip/
URL http://www.phpconcept.net/pclzip
Version 2.8.2
Last Updated in Geo 01/12/2011 (Version 5.2.0)
Usage in Geo Alternative to PHP Zip extension, for servers that do not have that extension loaded.

Usage Notes: Added in Geo 5.2.0. This library is only used on servers where the built in zip extension is not loaded in PHP, which apparently is often enough to warrant using an alternative. We advise not to use this class directly, if the Zip extension ever becomes "common place" enough, we may remove this library.

Swift Mailer (E-Mail)

Name Swift Mailer PHP5 version
Location classes/php5_classes/swift/
URL http://swiftmailer.org/
Version V3.3.3
Last Updated in Geo 01/08/2009
Usage in Geo In the E-Mail Send Direct Addon, which is a system addon that sends all the e-mails.

Usage Notes: In 4.0 just use the geoEmail::sendMail() method to send e-mails, see that method's documentation for more info.

Future Plans: There is a new version of Swift Mailer out which is a total re-write from previous versions. We have plans to move the e-mail functionality totally into the geoEmail class (right now that class just acts as a wrapper, relying on the addon to do the actual e-mailing), and at that time we will recode it to use the new version of the Swift Mailer. This is planned for a future release but since it is not done yet, no word on how soon that will be. The 5.0 line will continue to use the 3.3.3 version.

jQuery (Javascript Framework)

Name jQuery
Location js/jquery.min.js
URL http://jquery.com/
Version & Release Date 1.9.1
Last Updated in Geo 02/14/2013 (Version 7.1.0 and up ONLY)
Usage in Geo Switching to use jQuery instead of Prototype & Scriptaculous. We will be converting existing areas to use jQuery as time allows. Any "new features" will use jQuery going forward starting in 7.1.0.

Usage Notes: If you plan to do any JS stuff that requires a javascript framework, we highly recommend to use jQuery rather than Prototype and Scriptaculous. We plan to phase those libraries out, being replaced by jQuery over time, and new features will be using jQuery. In the mean time, both jQuery and Prototype/Scriptaculous will be used, until we are able to convert all built-in functionality over to jQuery.

If you are using Prototype / Scriptaculous now, we highly recommend to start making the switch over to use jQuery.

Customization Note: Some sites have started using jQuery already, if your site is already using jQuery make sure that you remove any calls to the jQuery JS file when you update to version 7.1.0 since the software will already load that built in. It will result in duplicate calls to jQuery if you leave your own in, and in some cases where you might be using an older version, may result in breaking features in the software.

<tip c w>Warning: Until we entirely "phase out" Prototype, avoid using Mootools as it will directly conflict with Prototype, causing you problems. This applies to any JS libraries that conflict with Prototype or Scriptaculous, before you decide to use something JS based ensure that it is compatible.

There's nothing wrong with Mootools any of the others, we just happened to choose Prototype & Scriptaculous starting out so until they are removed entirely, you will need to make sure you only use compatible libraries..</tip>

Note that it is possible to load this library from Google Libraries API rather than off the local site. See the Use Google Libraries API setting in the admin at Design > Template Sets in the Advanced Settings section.

jQuery UI

Name jQuery UI
Location js/jquery-ui.min.js
URL http://http://jqueryui.com/
Version & Release Date 1.10.2
Last Updated in Geo 02/27/2014 (First added in 7.1.0)
Usage in Geo We use a custom build of jQuery UI that only includes the components mentioned below, plus the requirements for those component(s). This is done to help with bandwidth, "everything" produces a 200K+ sized JS file minified. But only including the components mentioned below produces < 50K sized file (minified), much better for page load speed.
jQuery UI Components Draggable, Sortable, Autocomplete, Datepicker, Dialog

Customization note: As noted in the jQuery entry, we are switching from using Prototype to using jQuery. There is a LOT of existing code, so we're not going to do it all in one version. Until everything is converted over, Prototype and Scriptaculous will continue to be used. So be careful of using $() - that must ONLY be used for Prototype, it will not work (unless properly encapsulated) for calling jQuery or jQuery UI. Instead use the jQuery(…) syntax instead of the short-hand $(…) syntax.

Note that it is possible to load this library from Google Libraries API rather than off the local site. See the Use Google Libraries API setting in the admin at Design > Template Sets in the Advanced Settings section.

jQuery UI Touch Punch

Name jQuery UI Touch Punch
Location js/jquery.ui.touch-punch.min.js
URL http://touchpunch.furf.com/
Version & Release Date 0.2.3
Last Updated in Geo 03/25/2014 (First added in 7.4.0)
Usage in Geo Used to make jQuery-UI compatible with touch events. Meaning it makes the jQuery-UI stuff, like sortable lists (drag & drop), work on mobile devices. Note that this will be removed if/when jQuery UI is compatible with touch events natively.

Prototype (Javascript Framework)

Name Prototype JavaScript framework
Location js/prototype.js
URL http://www.prototypejs.org/
Version & Release Date 1.7.1
Last Updated in Geo 01/15/2013 (Version 7.1.0)
Usage in Geo Used extensively for features in the past, but currently in process of being phased out, to be replaced by jQuery (starting in version 7.1.0).

Usage Notes: If you plan to do any JS stuff that requires a javascript framework, we highly recommend to stick to using jQuery, as starting in version 7.1.0 the use of Prototype is being phased out. If you have custom scripts using Prototype we recommend to start converting them to use jQuery instead, or find alternative scripts that do the same that using jQuery. Once we have entirely phased out Prototype and Scriptaculous it will be removed from the software completely, however this may take some time.

JQuery Compatibility: During the time that we work to phase out Prototype, the software will be loading both Prototype and jQuery (running in compatibility mode) at same time.

<tip c w>Warning: Avoid using Mootools as it will directly conflict with Prototype, causing you problems in the software until all use of Prototype has been converted to jQuery. This applies to any JS libraries that conflict with Prototype or Scriptaculous, before you decide to use something JS based ensure that it is compatible.

There's nothing wrong with Mootools or any of the others, we just happened to choose Prototype & Scriptaculous jQuery now that it has become the most popular JS library.</tip>

Note that it is possible to load this library from Google Libraries API rather than off the local site. See the Use Google Libraries API setting in the admin at Design > Template Sets in the Advanced Settings section.

Script.aculo.us (Prototype-based Javascript Effects)

Name script.aculo.us
Location js/scriptaculous/
URL http://script.aculo.us/
Version v1.9.0
Last Updated in Geo 04 March, 2011 (Version 6.0.0)
Usage in Geo Used extensively in past versions, starting in 7.1.0 it has begun to be phased out, replaced by jQuery. We recommend using jQuery going forward.

Usage Notes: We recommend to use jQuery instead, starting in version 7.1.0 Scriptaculous is being phased out, to be replaced by jQuery. This will not happen all at once, it will be done in phases. Any new features will use jQuery.

Note that it is possible to load this library from Google Libraries API rather than off the local site. See the Use Google Libraries API setting in the admin at Design > Template Sets in the Advanced Settings section. At least it will be once the Google Library API is updated with the latest version of Scriptaculous, version 1.9.0.

CalendarView (Prototype-based)

Name CalendarView
Location js/calendarview.js
URL http://calendarview.org/
Version v1.2
Last Updated in Geo 25 August, 2010 (Version 5.1.2)
Usage in Geo For now, used for "date selection" fields, will be replaced with jQuery compatible version in the future.

Usage Notes: We recommend to avoid using this as it will be removed as soon as we replace it with something that is compatible with jQuery.

IXR (XML-RPC Library)

Name IXR - The Inutio XML-RPC Library
Location classes/rpc/
URL http://scripts.incutio.com/xmlrpc/
Version & Release Date 1.7.4 (7th September 2010)
Last Updated in Geo 03/04/2011 (Version 6.0.0)
Usage in Geo In the Remote API system, used to communicate.

Usage Notes: When using the Remote API you don't have to worry about communication with the "client" script, in the remote API call all you need to do is return the data as you want the client to receive it, and the Geo Remote API system will take care of it for you.

Smarty (Template system)

Name Smarty
Location classes/php5_classes/smarty/
URL http://www.smarty.net
Version & Release Date 3.1.18 (Apr 7th, 2014)
Last Updated in Geo 08 April, 2014 (version 7.4.0)
Usage in Geo Used in the geoTemplate class (that class extends the Smarty class). The geoTemplate class is used throughout the Geo software

Usage Notes: See the geoView and geoTemplate documentation.

TinyMCE (WYSIWYG Editor)

Name TinyMCE & TinyMCE Compressor PHP
Location js/tiny_mce/
URL http://tinymce.moxiecode.com/
Version & Release Date - TinyMCE - Version 3.5.8 (2012-11-20)
- TinyMCE Compressor PHP - Version 2.0.4 (2011-03-23)
Last Updated in Geo - TinyMCE - 02/14/2013 (In Version 7.1.0)
- TinyMCE Compressor PHP - 05/09/2011 (In Version 5.2.3)
Usage in Geo Used as the WYSIWYG editor anywhere such an editor is used.

Usage Notes: If you wish to customize the TinyMCE configuration that is used, see Customizing the TinyMCE Display (WYSIWYG editor) V5

CodeMirror

Name CodeMirror
Location js/codemirror/
URL http://codemirror.net/
Version & Release Date 3.02 (21-01-2013)
Last Updated in Geo February 14, 2013 (Version 7.1.0)
Usage in Geo Used as the text editor on the <..> Source Code Editor tab when editing files under Design > Manager.

Usage Notes: This is only available starting on version 6.0.0. See documentation on http://codemirror.net/ for usage on other pages within the software.

minify

Name minify
Location classes/php5_classes/minify/
URL http://code.google.com/p/minify/
Version & Release Date 2.1.5 (2012-03-10)
Last Updated in Geo June 19, 2013 (Version 7.3.0)
Usage in Geo Used to minify CSS and JS.

Usage Notes: The actual complete library is pretty big, we only include 2 parts of the library: A file in the minify folder used to minify the JS. And a file used to minify CSS that was actually integrated directly into the "geo_templates/min.php" file and heavily modified.

1)
The modernizr is a custom build that is distributed with the HTML5 Boilerplate project.
2)
In other words, right before the </head> tag in most cases.
3)
As of Geo version 4.1.0, old location in Services/