Revision History for PHP Module for IP2Location
7.2.5 Fri Jun 10 15:40:23 2016
	* Fixes:
	
	- Fix the IP lookup issue for DB24

7.2.4 Wed Jan 06 14:44:23 2016
	* Fixes:

	- Fixed IPv6 lookup issue.

7.2.3 Wed Aug 12 10:29:37 2015
	* Fixes:

	- Fix IPv4 lookup issue.

7.2.2 Thu Jul 30 10:27:55 2015
	* Fixes:

	- Defended against 32 bit overflow in a couple more places.
	- Added checks for default / unset / infinite memory limits.
	- Fixed lookup function, in order for it to consistently return the correct datatype.


	* Enhancements:

	- Cached the result of the memory limit calculation in order not to recheck it for each instantiation.


	* Additions:
	
	- Added exception code constants to ease the handling of exceptional conditions in the client.
	- Added the ability to set default returned fields on construction, in order not to have to pass them around constantly.


7.2.0 Wed Jul 29 14:07:23 2015
	**Special thanks to Mariano (mariano.perez.rodriguez [at] gmail.com) for working on this release**
	
	* Removals:

	- Removed IP2LocationRecord class, it served little purpose and an array response would be much more flexible (see below).
	- Removed everything to do with endianness (there was some leftover code and constants).
	- Removed IP version constants, they were unused.
	- Removed the SHM_KEY constant in favor of a dynamic shared memory key calculation.
	- Removed "$database" property in favor of a set of IP-version-directed metadata properties.
	- Removed useless caching of lookup results in "$result" property.
	- Removed closing PHP tag.


	* Fixes:

	- Fixed possible overruns of the binary file by only reading as much as needed and not more.
	- Fixed IPv6 lookup (it was never going to work: you were trying to compare a number to a BCMath string).
	- Fixed binary search midpoint calculation.
	- Fixed shared memory permissions so as not to leak information to other users / groups.
	- Gave a unique number to each numeric class constant to prevent accidental misuse.


	* Enhancements:

	- Automatically determine float size (this is not optimal, but as good as we're going to get).
	- Removed "magic numbers" as much as possible and factored them out to class constants.
	- IP address, version, and number are now selectable fields.
	- The "$columns" array has been made static, no need for a copy for each possible instance.
	- The "$columns" array has been reindexed with integer keys to avoid double lookup during binary search.
	- The "$columns" array has had its entries multiplied by 4, in order to avoid repeatedly multiplying by 4 every time its values were going to be used.
	- The memory buffer has been made static (this way, if two instances are created they can share the buffer instead of using up twice as much memory for the same data).
	- Internal variable handling has been simplified with a single "$resource" property whose meaning changes as the caching method changes.
	- The class constructor will now accept an empty filename, in this case, it will look for the most general database BIN in the file's directory and load that.
	- Quadwords and IPv6 addresses are now parsed by a simple and highly portable routine.
	- Low level reading abstracting away from the caching method has been implemented as a private method (this simplifies the low-level reading functions tremendously).
	- Strings are now read by providing just a pointer to the word value describing its start: the length is automatically retrieved and only the necessary bytes are read (preventing overrun errors).
	- Low level read routines have been greatly simplified.
	- High level read routines have been added, specifically, those providing related fields have been grouped together.
	- Binary search has been decoupled from field lookup (cleaning up the implementation).
	- Binary search will now work correctly with IPv6 addresses.


	* Additions:

	- Added "FIELD_NOT_KNOWN" to manage unknown field requests.
	- Added "multiple" fields (eg. "COORDINATES" in order to get latitude and longitude at the same time).
	- Added the "Ip2Location" namespace, and changed the class' name to "Database", so we now have "Ip2Location\Database", accordingly, the filename has been changed to "Database.php", this should be put in a directory named "Ip2Location" in order to comply with PSR-0 / PSR-4.
	- A destructor has been added to properly detach from shared memory / close opened files.
	- A static method has been added to tear down the shared memory segments created by the class (otherwise, it's a pain to delete them).
	- Added a "getDate()" method, this will provide the database's compilation date as YYYY-MM-DD.
	- Added a "getType()" method, returning the database type (1--24).
	- Added a "getFields()" method, returning the supported fields.
	- Rewrote the "lookup()" method: it now accepts either a field name (which could be a MULTIPLE field), or an array of field names, and it will return either a single field value (if a single field given), or an array (possibly named) of values found.


7.1.0 Thu Jul 23 15:15:36 2015
	Removed dependency php_gmp
	Fixed shared memory issues
	Fixed binary read functions
	Restructure lookup algorithm

7.0.0 Wed Aug 13 12:41:16 2014
	Added support to IP2Location IPv6 DB2-DB24

6.00  Wed May 08 08:43:22 2013
	Added support to IP2Location DB21-24
	Added new lookup method MEMORY_CACHE, and SHARED_MEMORY
	New structure to use IP2Location class

5.00  Fri Jan 14 09:59:15 2011
	Added support to IP2Location DB19-20
	Added new public function "getMcc"
	Added new public function "getMnc"
	Added new public function "getMobileBrand"

4.00  Thu  Oct 01 13:09:43 2009
	Merged all functions into one class
	Changed functions name

3.00  Wed  Aug 13 10:00:00 2008
	Added support to IP2Location DB15-18
	Added new public function "IP2Location_get_idd_code"
	Added new public function "IP2Location_get_area_code"
	Added new public function "IP2Location_get_weather_code"
	Added new public function "IP2Location_get_weather_name"

2.20  Tue  Sep 25 00:00:00 2007
	Support PHP4 and PHP5

2.10  Fri  Oct 20 00:00:00 2006
	Support IP2Location DB11, DB12, DB13 & DB14

2.00  Fri  Oct 20 00:00:00 2006
	Support IP2Location IPv6

1.30  Wed  Nov 23 16:59:58 2005
	Minor Bug Fix
      
1.20  Thu  Nov 17 16:59:58 2005
	Minor Bug Fix

1.10  Thu  Oct 27 16:59:58 2005
	Support Big Endian Machines

1.00  Thu  Oct 13 16:59:58 2005
	First release for PHP 4.0 and above
	Added new public function "IP2Location_open"
	Added new public function "IP2Location_close"
	Added new public function "IP2Location_get_all"
	Added new public structure "IP2Location"
	Added new public structure "IP2LocationRecord"
