== 1.3.4 released 2008-10-03 * Fixed method names creation for conditions with modifiers * Create local column conditions, incase there are method conflicts. Such as "id". * All joins are switched to left outer joins. When search with *any* conditions, inner joins return incorrect results. Also when ordering by an association that allows for blanks, inner joins exclude the records with blank values. Only option is left outer joins. * If joins is manually set with a string, treat it as SQL, just like ActiveRecord == 1.3.3 released 2008-10-03 * Fixed modifiers being double escaped on equals condition * Fixed bug when merging conditions with array substitutions * Updated blank condition to check if the values is false or not * Fixed type for the year modifier in the mysql adapter == 1.3.2 released 2008-10-03 * Fixed condition to type cast all values in an array * Fixed bug to properly set the type for the type cast column * Fixed bug to allow conditions on local columns * Apparently ActiveRecord 2.2 doesnt remove duplicates on all joins, need to enforce this for ALL versions of ActiveRecord * Fixed bug when passing a symbol as the SQL type for condition return types * Moved duplicate removal to only apply when searching or calculating from a search object. Anything done in a normal ActiveRecord method should remain untouched and let ActiveRecord handle it. Just like in ActiveRecord if you do a User.all search and pass some :joins, you might get duplicate records. Searchgasm should not change that behavior, unless called from a searchgasm object. * Discard meaningless array values when setting a condition. * Delete blank strings from mass assignments on conditions. == 1.3.1 released 2008-10-02 * Fixed bug when requiring a connection adapter that is not present * Fixes bug in "not" conditions == 1.3.0 released 2008-10-02 * Added modifiers into the mix: hour_of_created_at_less_than = 10, etc. * Changed how the Searchgasm::Conditions::Base class works. Instead of predefining all methods for all conditions upon instantiation, they are defined as needed via method_missing. Similar to ActiveRecord's dynamic finders: User.find_by_name_and_email(name, email). Once the are defined they never hit method_missing again, acts like a cache. * Altered how values are handled for each condition, meaningless values are ignored completely. * Added in more "not" conditions: not_like, not_begin_with, not_have_keywords, etc == 1.2.2 released 2008-09-29 * Fixed bug when reverse engineering order to order_by, assumed ASC and DESC would always be present when they are not. * False is a meaningful value for some conditions, and false.blank? == true. So instead of using value.blank? to ignore conditions we use meaningless?(value), which returns false if it is false. * Fixed aliases for lt, lte, gt, and gte. * Fixed bug when writing conditions on associations via a hash with string keys * Added Config.remove_duplicates to turn off the "automatic" removing of duplicates if desired. * Updated searchgasm_state helper to insert the entire state all at once. * Added CSS class "ordering" to order_by_link if the search is being ordered by that. == 1.2.1 released 2008-09-25 * Fixed problem when determining if an order_by_link is currently being ordered. Just "stringified" both comparable values. * Removed default order_by and order_as. They will ONLY have values if you specify how to order, otherwise they are nil. * Removed order_as requirement. order_as is optional. * Added in deep_merge methods for hash, copied over from ActiveSupport 2.1 * Improved order by auto joins to be based off of what order_by returns instead of setting it when setting order_by. * Added priority_order_by. Useful if you want to order featured products first and then order as usual. See documentation in Searchgasm::Search::Ordering for more info. * Added in base64 support for order_by and priority_order_by so that it's value is safe in the URL * Added priority_order_by_link == 1.2.0 released 2008-09-24 * Added searchgasm_params and searchgasm_url helper to use outside of the control type helpers. * Added dup and clone methods that work properly for searchgasm objects * Fixed bug to remove nil scope values, HABTM likes to add :limit => nil * Removed unnecessary build_search methods for associations * Removed support for searching with conditions only. This just made things much more complicated when you can accomplish the same thing by starting a new search and only setting conditions. * Fixed bug when searching with *any* conditions to use left outer joins instead of inner joins. == 1.1.3 released 2008-09-23 * Setting a condition to nil removes it if the condition is set to ignore blanks * Setting search.conditions = "some sql" will reset ALL conditions. Alternatively search.conditions => {:first_name_contains => "Ben"} will overwrite "some sql". The same goes with search.conditions.first_name_contains = "Ben". * Fixed bug with inspect * Other small performance enhancements with memoized attributes == 1.1.2 released 2008-09-22 * Fixed bug with select control types not using :search_obj to determine its select values. * Added is_nil and is_blank condition types. * "memoized" various attributes for performance enhancements * Removed the :order option from calculation options when :order is useless and just slows down query. * Switched from using :include to :joins, big performance increase == 1.1.1 released 2008-09-19 * Fixed typo in "next page" button. * Updated valid options for searching and performing calculations, fixed some bugs when searching and performing calculations with advanced options. * Fixed bug in ordering where table name was assumed by the hash. Now assumed by the reflection. * Added default for per_page, so pagination comes implemented by default * On mass assignments blank strings for *any* conditions are ignored. Sometimes blank strings are meaningful for "equals" and "does not equal", those only takes effect if you explicitly call these conditions: search.conditions.name = "". User.new_search(:conditions => {:name => ""}) will be ignored. Also, Searchgasm should never change how ActiveRecord behaves by default. So User.all(:conditions => {:name => ""}) will NOT be ignored. == 1.1.0 released 2008-09-18 * Added the options :inner_spread and :outer_spread to the page_links helper. Also added various config options for setting page_links defaults. * Updated calculation methods to ignore :limit and :offset. AR returns 0 or nil on calculations that provide an offset. * Added support to allow for "any" of the conditions, instead of all of them. Joins conditions with "or" instead of "and". See Searchgasm::Conditions::Base or the readme == 1.0.4 released 2008-09-18 * Fixed bugs when performing calculations and searches on has_many through relationships. * Instead of merging the find_options myself, I delegated that to AR's with_scope function, which already does this. Much more solid, less intrusive. == 1.0.3 released 2008-09-18 * Updated inspect to show the current options for your search. Plays nicer in the console. * Made sure protection state is persistent among relationship conditions. * Fixed bug with backwards compatibility of rails. concat requires a proc in older version. * Defaulted remote control types to use GET requests instead of POST. * Completely reengineered integration with ActiveRecord. Searchgasm is properly using scopes letting you do use serachgasm where scope are implemented. @current_users.orders.new_search, etc. If your search is scoped and you want a search object, that search object will represent a new search in the context of those scopes, meaning the scopes get merged into Searchgasm as options. * Dropped support for Searchgasm functionality when defining relationships: has_many :order, :conditions => {:total_gt => 100}, will not work anymore. It's a chicken and the egg thing. Searchgasm needs AR constants, some models get loaded before others, therefore the Order model may not have been loaded yet, causing an unknown constant error. * Clean up redundant code and moved it into the Searchgasm::Shared namespace. == 1.0.2 released 2008-09-12 * Moved cached searchers out of the global namespace and into the Searchgasm::Cache namespce. * Various changes to improve performance through profiling / benchmarking. http://pastie.org/271936 * Config.per_page works with new_search & new_search! only. Where as before it was only working if the search was protected. == 1.0.1 released 2008-09-11 * Cached "searchers" so when a new search object is instantiated it doesn't go through all of the meta programming and method creation. Helps a lot with performance. You will see the speed benefits after the first instantiation. * Added in new options for page_links. * Fixed minor bugs when doing page_links. * Updated documentation to be more detailed and inclusive. == 1.0.0 released 2008-09-08 * Major changes in the helpers, they were completely re-engineered. Hence the new version. I established a pattern between all helpers giving you complete flexibility as to how they are used. All helpers are called differently now (see documentation). == 0.9.10 released 2008-09-08 * Fixed bug with setting the per_page configuration to only take effect on protected searches, thus staying out of the way of normal searching. * Hardened more tests == 0.9.9 released 2008-09-07 * Fixed setting per_page to nil, false, or ''. This is done to "show all" results. == 0.9.8 released 2008-09-06 * Fixed order_by helper bug when guessing the text with arrays. Should use the first value instead of last. * Added in per_page config option. == 0.9.7 released 2008-09-06 * Complete class restructure. Moved the 3 main components into their own base level class: Search, Conditions, Condition * Split logic and functionality into their own modules, implemented via alias_chain_method * Added in helpers for using in a rails app * Added link to documentation and live example in README * Various small bug fixes * Hardened tests == 0.9.6 released 2008-09-04 * Fixed bug when instantiating with nil options == 0.9.5 released 2008-09-03 * Enhanced searching with conditions only, added in search methods and calculations * Updated README to include examples == 0.9.4 released 2008-09-03 * Cleaned up search methods * Removed reset! method for both searching and searching by conditions == 0.9.3 released 2008-09-02 * Changed structure of conditions to have their own class * Added API for adding your own conditions. == 0.9.2 released 2008-09-02 * Enhanced protection from SQL injections (made more efficient) == 0.9.1 released 2008-09-02 * Added aliases for datetime, date, time, and timestamp attrs. You could call created_at_after, now you can also call created_after. Just removed the "at" requirement. == 0.9.0 released 2008-09-01 * First release