From PHRETS
1.0rc2
+ When debug_mode is turned on, the debug log now contains the body of the response from the RETS server
- Thanks to Luke Brookhart for the suggestion and code
+ Added support for the new RETS GetObject 'Preferred' header.
- See http://retsdoc.onconfluence.com/display/rcpcenter/RCP+79+-+Add+Prefered+flag+to+GetObject+responses
+ Added support for the new RETS optional Query/QueryType parameters.
- See http://retsdoc.onconfluence.com/display/rcpcenter/RCP+80+-+Optional+Query
+ IsMaxrowsReached(), TotalRecordsFound() and NumRows() now take the returned pointer from SearchQuery(). If none given, defaults to last SearchQuery()
+ Search() now uses SearchQuery() behind-the-scenes but returns data as it did before
- Thanks to Luke Brookhart for the suggestion and code submissions
+ New auto-encoding fixes. Use "$rets->SetParam("disable_encoding_fix", true);" to turn this new feature off if it causes issues
+ Small change to better handle User-Agent Authentication
+ New auto-'Offset' feature. The server MUST support the optional 'Offset' feature of RETS for this to work
- Must be enabled by "$rets->SetParam("offset_support", true);"
- When issuing:
$search = $rets->SearchQuery($resource, $class, $query, array('Limit' => 1000) );
if the result of the query results in more than 1,000 records, it will automatically reissue the requests necessary to get all remaining results
- Using $rets->FetchRow($search) will return back record results for all records, not just the first 1,000
- Thanks to Luke Brookhart for the suggestion and code submissions
+ New SetParam()'s:
- catch_last_response: If true, $rets->GetLastServerResponse() will return the full body of the last response from the server
- disable_encoding_fix: If true, turns off the auto-encoding fixes (mentioned previously)
- offset_support: If true, SearchQuery() will automatically paginate through results until all available records are received
- override_offset_protection: If true, overrides SearchQuery()'s infinite loop protector.
- If false or not set, SearchQuery() will stop if it's made 300 RETS 'Search' requests in order to fulfill a SearchQuery() call
1.0rc1
+ Lots of code clean-up
+ Lots of changes to support RETS 1.7.x
+ Enhanced error checking
- All functions will return false if there's an error keeping it from fulfilling the request
- New Error() function. See documentation
+ All requesting functions now confirm that they know how to make the request with the server before making it
- Fixes issues where a failed login could go undetected resulting in 404 errors elsewhere
+ All trigger_error() calls removed by popular demand
+ GetObject changes
- Better handling of multiple content IDs
- Can now pass a comma-delimited list of IDs to retrieve
- Auto-cleans leading and trailing spaces from individual content IDs
- Better handling of multiple object IDs
- Can now pass a comma- or colon-delimited list object IDs to retrieve
- Auto-cleans leading and trailing spaces from individual object IDs
- Example: $photos = $rets->GetObject("Property", "Photo", "12345,67890", "1,2,3");
- Returns the first 3 photos for 12345 and first 3 photos for 67890
- Fixed a small bug with detecting Content-Description in single object responses
- Added a checker and fix for incorrect "Content-type" case headers. Auto-corrects to "Content-Type"
+ New SearchQuery() function (to replace Search() in the future)
- Similar to Search() except that it returns an internal pointer rather than an array
- Large memory improvement over Search()
- Pointer is used in new FetchRow() function. See docs
- Pointer is used in new FreeResult() function. See docs
- Pointer is used in new SearchGetFields() function. See docs
- FetchRow() returns ALL array keys where Search() only returns key if a value exists
- See documentation for how to use this new function
+ Search() changes
- Will now return an array key for fields that contain 0 as a value
+ Various other new functions
- GetAllLookupValues()
- GetMetadataResources()
- GetMetadataTable()
- GetMetadataObjects()
- See documentation for complete list
+ New SetParam() options
- debug_file: value is filename used for curl debug log
- force_basic_authentication: value is true or false. default is false
- use_interealty_ua_auth: value is true or false. default is false. only use with User-Agent authentication on Interealty servers
+ SetParam() changes
- Cookie file location is pre-set unless one is specifically set. This makes it so calling SetParam() is optional prior to connecting.
+ AddHeader() changes
- RETS-Version, User-Agent and Accept are now all optional.
- This should eliminate the need to have any AddHeader() calls before connecting in most cases. See docs
+ New FirewallTest() function
- Quick helper function to test your system for proper connectivity to potential RETS servers.
0.6.2
+ Added additional protection against non-compliant multipart responses in GetObject
+ Added support for Query=* to Search
0.6.1
+ Fixed an issue where GetObject wouldn't see the last photo from Interealty servers
0.6
+ Added GetMetadataInfo() (special thanks to Jean-Michel)
+ Fixed an issue where a GetObject multipart boundary may not be surrounded by double quotes
+ Improved error handling by adding isset() in a ton of places
+ Keeps servers with error_reporting turned on from going crazy. Please report other issues if found
+ Added Login XML processing support for RETS 1.0 servers
+ Will automatically recognize how to process Login response based on version
+ This makes the Login response processing RETS 1.0 compliant but other 1.0 compliance issues may remain
0.5
+ Added GetObject()
+ Changed how query within Search() is surrounded with parenthesis
+ Search() would, by default, wrap whatever query it received in parenthesis.
+ Now, it will only wrap parenthesis around the query if none exist
+ Fixed a small bug where LastRequest() information wasn't always updating in various transactions
+ Added check to make sure Lookup data is returned in valid format before trying to parse through
+ Added a 4th, optional passed variable to Connect() for the User-Agent authentication.
+ Any non-blank value will force UA-Authentication
+ Removed hack workaround for Interealty servers and UA-Authentication.
+ Fixed a small bug in Login responses where extra spaces or extra '=' characters could cause issues
+ Added new SetParam() options.
+ disable_follow_location: defaults to FALSE. May be disabled if PHP safe_mode causes errors
+ force_au_authentication: defaults to FALSE. Used to force UA-Authentication without a UA password
0.4
+ Added Search()
+ Added IsMaxrowsReached() (related to Search())
+ Added TotalRecordsFound() (related to Search())
+ Added NumRows() (related to Search())
+ Changed parser for HTTP headers. Fixes a few issues with reading headers
+ Fixes an issue with multipart GetObject calls where headers wouldn't be recognized correctly
+ Fixes an issue where redirects or other "bouncing" would cause headers to be parsed incorrectly
+ Moved a few curl_setopt() calls from RETSRequest() to Connect() function
+ Added support for gzip compression. Off by default. Use "$rets->SetParam('compression_enabled', true);" to enable
0.3
+ Added GetLookupValues()
+ Added CheckAuthSupport()
+ Added GetAllTransactions()
+ Added GetServerSoftware()
+ Added GetServerVersion()
+ Added GetLoginURL()
+ Added GetServerInformation()
+ Made minor improvements to memory usage
+ Add code to clean up the cookie file after use
+ Added checker to verify all required headers are set
+ Changed XML parsing to suppress errors
+ Returns parsing error data as $rets->err
+ Added a temporary workaround for 1.5 Interealty support. Better solution coming soon
+ Added cURL option to support redirects sent by the server automatically
+ Better detection of returned HTTP status code
0.2
+ Initial release