# Changelog
## 2.2.9
- Improved performance by decreasing the number of calls to `get_plugins()`.
## 2.2.8
- Fixed issue where a license validation function was being called on every request.
- Improved permission handling of Gravity Wiz licenses and perk registration on subsites for users who are not network admins.
- Improved license API performance on WordPress multisite.
- Fixed issue where license data would become cached which would cause some actions such as refreshing, registering perks, and deregistering perks to not always show the correct information.
- Added "Update URI" to plugin header to improve security.
## 2.2.7
- Fixed positional tooltip issues introduced in Gravity Forms 2.5.6.
- Added `gperks_tooltips_initialized` jQuery event to be used by Perks adding tooltips after initial load.
## 2.2.6
- Fixed a potential issue where some perks may display settings in the wrong tab.
- Updated field setting group label styles.
## 2.2.5
- Added ASM Select so perks no longer need to include this individually.
## 2.2.4
- Added additional helper styles for Gravity Forms 2.5 field settings.
- Fixed issue where some perks relied on a script file that was loaded in footer.
- Fixed issue where Perk minimum requirements would not be enforced in some situations.
## 2.2.3
- Added support for customizing Gravity Forms tooltips.
- Updated admin scripts to be output to the footer.
- Added default styles for new `.gp-tooltip-right`. Used by tooltips that are close to the right side of the screen (particularly in the field settings).
- Added new styles for child settings in Gravity Forms 2.5.
- Fixed issue where Perk minimum requirements would not be enforced in some situations.
## 2.2.2
- Fixed issue where minimum requirement admin notices were not displayed in WordPress dashboard. Gravity Forms 2.5 no longer shows notices on their settings pages.
- Fixed issue where double notices were displayed on plugin row.
- Fixed issue where perks' init was not correctly halted when min requirements were not met in Gravity Forms 2.5.
## 2.2.1
- Fixed issue where request URL was not logged accurately.
- Updated affiliate URL.
- Added support for Gravity Forms 2.5. (#9)
- Added support for disabling animation when toggling settings.
- Added styles for Select2 with .gp-selectwoo selector.
- Added support for enabling import/export of feeds for a given Gravity Perk by using the gravityperks_export_feeds_PLUGIN-SLUG filter.
- Fixed styling of plugin row notices and disable auto-updater if license is not registered.
## 2.2
- Added full support for Gravity Forms 2.5!
- Added gf-legacy-ui body class on admin pages to allow perks to target specific styles to versions of Gravity Forms prior to 2.5.
- Added support for a Perks tab for field settings in the GF 2.5 form editor.
- Added helper functions for determining if a given version of GF is active.
- Added default styling for GF 2.5's implementation of SelectWoo.
- Fixed tooltips on Manage Perks page to work with GF 2.5.
- Fixed issue where license setting did not have autocomplete disabled.
## 2.1.11
- Fixed issue where extraneous HTTP requests checking for announcements would be sent from the WordPress admin dashboard when used in conjunction with W3 Total Cache's Object Caching.
## 2.1.10
- Fixed issue where checking for add-on-specific requirement would create infinite recursion.
## 2.1.9
- Removed deprecated Markdown library.
- Added security enhancements.
## 2.1.8
- Fixed potential warning if the Gravity Perks updater isn’t provided the optimal data format.
## 2.1.7
- Updated perk settings view to require "manage_options" capability instead of "update_plugins".
## 2.1.6
- Fixed an issue where certain API calls going to Gravity Wiz (such as checking for announcements) weren’t being cached.
## 2.1.5
- Added security enhancements to perk settings API.
## 2.1.4
- Fixed fatal error introduced in 2.1.3.
## 2.1.3
- Fixed security issue.
- Fixed notice generated when fetching available perks and no license key is specified.
## 2.1.2
- Fixed several fatal errors that occurred when running older versions of Gravity Forms.
- Fixed issue where unmet minimum requirements did not prevent GP_Plugin-based perks from initializing.
- Updated minimum required version of Gravity Forms to fix fatal errors where GFAddon::meets_minimum_requirements() did not exist.
## 2.1.1
- Fixed issue where Gravity Wiz API wouldn't have its cache cleared
## 2.1
- Updated licensing and updates API for significant performance improvements.
## 2.0.12
- Fixed issue with usage of WP_CONTENT_DIR; replaced with WP_PLUGIN_DIR
## 2.0.11
- Added GP_Late_Static_Binding::Perk_value_pass_through() method.
## 2.0.10
- Added support to disable API SSL verification with “edd_sl_api_request_verify_ssl” filter
## 2.0.9
- Fixed fatal error that could occur when Gravity Forms was not loaded.
## 2.0.8
- Fixed notice that could occur when Gravity Forms was deactivated.
- Improved Perk installation experience by reducing the number of calls to GravityWiz.com
- Updated API to use HTTPS
## 2.0.7
- Fixed fatal error that occurred when fetching announcements when Gravity Forms was not loaded and announcements were not cached.
## 2.0.6
- Fixed fatal error that occurred when attempting to log when Gravity Forms was not loaded.
## 2.0.5
- Fixed fatal error that could occur when register_scripts() was called when Gravity Forms was not loaded.
## 2.0.4
- Fixed notices generated by deprecated functions in PHP 7.2.
## 2.0.3
- Added support for enforcing minimum requirements for GP_Plugin/GP_Feed_Plugin-based perks.
## 2.0.2
- Fixed issue where incorrect response for announcements would cause PHP notices
- Fixed confusing message when running into license site limit
- Upgrade links/buttons are no longer disabled
## 2.0.1
- Fixed issue where incorrect URL was used to check, activate and deactivate licenses.
- Fixed issue where announcements did not show up for non-English sites.
## 2.0
- Added GP_Plugin and GP_Feed_Plugin to integrate with Gravity Forms Add-on Framework.
- Added support for announcements; short banner messages with news and updates about Gravity Perks.
- Added support for new license types (Basic, Advanced, Pro).
- Added license toolbar on Manager Perks page.
- Added GRAVITY_PERKS_VERSION constant for managing plugin version.
- Fixed a myriad of notices.
- Removed a myriad of unused legacy code.
- Removed settings page.
## 1.2.26
- Added GRAVITY_PERKS_VERSION constant.
- Added support for GW_STORE_URL for easier local development.
## 1.2.25
- Replaced Markdown library to resolve several PHP errors.
## 1.2.24
- Fixed fatal error when Gravity Forms was deactivated before Gravity Perks.
## 1.2.23
- Fixed fatal error w/ older versions of PHP and the usage of namespaces.
## 1.2.22
- Fixed error on multisite installs where Gravity Perks prevented any plugin from being networked activated if GP was activated but not network activated.
- Improved styling on plugin table.
## 1.2.21
- Added doing-it-wrong notice when a perk is instantiated too early.
- Fixed styling of no license and update required messages on the Plugins page.
- Fixed issue where 3rd party plugin could cause fatal error on perk's settings pages.
## 1.2.19
- Replaced Markdown library to resolve on-going conflicts with newer versions of PHP (7+).
- Fixed issue where Gravity Perks updates were not displaying correctly do to an encoding issue in the API request.
## 1.2.18.7
- Added 'gp-child-settings' helper style for use in Form Editor.
## 1.2.18.6
- Fixed fatal error when activating plugin in Network mode due to removed function.
- Fixed notice generated due to missing 3rd parameter for 'update_plugin_complete_actions' filter.
## 1.2.18.5
- Fixed issue where WP Engine's PHP validator was throwing a false positive error when PHP version was upgraded.
## 1.2.18.4
- Updated GP_Perk::generate_options() method to better handle numeric associative arrays.
## 1.2.18.3
- Fixed issue where in some cases the perk post-installation actions would show up for non-perk plugins.
## 1.2.18.2
- Fixed issue with perk installation and updates for Windows servers.
- Changed plugin author to Gravity Wiz.
## 1.2.18.1
- Updated plugin URL
- Fixed PHP standards issue
## 1.2.18
- Fixed fatal error introduced in 1.2.17
## 1.2.17
- Fixed PHP7 warnings with Markdown class.
## 1.2.16
- Fixed strict standards notice for GravityPerks::register_perk_activation_hooks() being called statically.
- Updated adminOnly check to use object notation rather than gwar()
## 1.2.15
- Fixed notice that occurs when 3rd party plugins return an invalid form object or a bad form ID is provided to the GF shortcode
## 1.2.14
- Added support for activation hooks for perks
## 1.2.13
- Added CSS style for styling perk field setting rows
## 1.2.12
- Renamed GWPerk class to GP_Perk; GWPerk class is still accessible.
- Added GP_Perk::doing_ajax() method to deterine if an AJAX action is being processed.
## 1.2.11
- Added GWPerk::add_css_class() helper function for adding a new CSS class to an existing CSS class string
- Added better translation support (and including new .pot file with plugin)
- Updated welcome pointer verbiage
- Updated admin.css with proper formatting
- Fixed minor security issue where unsanitized value would be stored in database. Props: Jeremy Felt
## 1.2.10
- Updated settings page to always check license status after saving settings; resolves issues where license is renewed by remains invalid in cache
- Updated GravityPerks::flush_license() to also flush cached get_perks() response
- Updated GWAPI::get_api_args() with a 'timeout' of 15 to further diminsh the impact of any gwiz.com downtime on client websites
- Updated styling on Manage Perks page to better equalize the heights of perk listings
## 1.2.9.3
- Added support for getting perk file name based on perk name; required for older perks moving to GP_Bootstrap
## 1.2.9.2
- Updated "Perks" menu permission from "administrator" to "update_plugins"
## 1.2.9.1
- Updated Manage Perks page to automatically hiding Install Perks tab when user does not have ability to install plugins
## 1.2.9
- Public release of 1.8.x changes to encourage updates.
- Updated to work with new API
- Fixed issue where newer perks were not visible in Inactive Perks section when deactivated
## 1.2.8.12
- Added GWPerk::register_noconflict_styles() method for registering "No Conflict" styles
## 1.2.8.11
- Fixed lingering issue with GP and individual perk updates caused by different in http vs https on activated URL
- Updated GWAPI to clean up & consolidate API parameters and request arguments
## 1.2.8.10
- Added versions to all enqueued scripts so new versions will force a refresh on cached script files
## 1.2.8.9
- Required for the new GP Limit Dates perk.
- Added gperk.togglePerksTab() function; allows toggling the perks tab when any field setting changes
## 1.2.8.8
- Added support for GWPerk::$prefix property; used by GWPerk::key() method for future-proof setting names
## 1.2.8.7
- Added helper styles for field settings
- Added template for tooltips: GravityPerks::$tooltip_template
- Fixed issue where activating perks from non-network admin was giving warning that Gravity Perks must be network activated
## 1.2.8.6
- Fixed issue where 'extra_plugin_headers' usage was overriding 3rd party headers set via the same hook
## 1.2.8.5
- Fixed notice caused when no slug is set on the plugin object.
## 1.2.8.4
- Fixed issue where version info was not loading correctly due to slug changes in 1.2.8.3
## 1.2.8.3
- Reverted 1.2.8.2; added correct slug via API response
- Fixed styling issue with Perk menu highlight on first-run
- Updated several usages of GWPerks to GravityPerks
- Added escaping to several API calls
- Added "gperks_loaded" action; will be used to load perks via bootstrap
## 1.2.8.2
- Fixed issue where updates for perks with WP 4.2 were not working due to invalid slug
## 1.2.8.1
- Fixed strict standards notices in GWNotice class
- Fixed styling issue in Perks Settings view
## 1.2.8
- Added support for dynamic hooks for the "gform_field_appearance_settings" filter
- Added logging to the GWAPI::pre_set_site_transient_update_plugins_filter() method
- Fixed issue where GP stylesheet was not included when GF no-conflict mode was enabled
- Fixed issue where https site URLs were failing license validation if originally activated for http site URL
## 1.2.7.1
- Added logging support!
- Added logging to the GWAPI::perks_plugins_api_filter() method which handles retrieving the download package when installing new perks
- Update: refactored GravityPerks::display_plugin_row_message() method
- Fixed notice in GravityPerks::save_last_modified_plugin() method
## 1.2.7
- Updated order of page checks in GWField::filter_input_html() so entry_detail_edit is checked before entry_detail
- Fixed typo in error message when GWField::input_html() is not correctly overridden
## 1.2.6
- Added support for uninstallation process for perks
- Added GravityPerks::drop_tables() and GWPerk::drop_tables() to support dropping tables more readily
- Added GWPerk::init() to better support GWPerk::setup(), classes which extend the GWPerk class can now call parent::init() to include standard init functionality
- Added GWPerk::maybe_setup() which will call GWPerk::setup() if the version is set and has changed
- Added GWPerk::drop_options() to drop all perk related options on uninstall
- Updated GWPerks::dynamic_setting_actions() to be static (resolved a lot of notices)
- Fixed styling issue with failed requirements icon on Manage Perks page
- Fixed JS bug where gform_apply_tooltip was no longer available
- Miscellaneous code cleanup
## 1.2.5
- Added GWPerk::register_script() to register scripts and simultaneously register them as no conflict
## 1.2.4
- Added GWPerk::register_preview_style() method to support loading style in GF preview mode
- Added GWPerks::dynamic_setting_actions() to add position based filters for easier display on form editor
(i.e. gform_field_standard_settings_1, gform_field_standard_settings_100, gform_field_standard_settings_250, etc )
- Fixed issue in GWAPI::perks_plugins_api_filter() to only use $args->_slug if defined
- Fixed issue with GWPerk::register_noconflict_script() method
## 1.2.3
- Added new parameter $input_id to 'gform_save_field_value' filter
- Fixed license success/failure images which are no longer included with Gravity Forms
- Fixed fatal error which occured when perk with custom field type was placed on a form with any field set to adminOnly
- Updated admin input styles to override default GF styling
## 1.2.2
- Added runtime cache for Gravity Perks update checker
- Fixed JS issue where hasOwnProperty was not checked for properties array
- Updated GWAPI::get_perks() to correctly return false rather than null
- Updated GWAPI::get_perks() method to no longer cache API response when download URL is included
- Updated GWAPI::get_perks() cache to 12 hours (down from 24 hours)
- Removed deprecated method: GravityPerks::remote_get_perk()
- Removed plugin cache clearer code
## 1.2.1
- Added GWAPI::get_site_url() to return current site making API request
- Added GravityPerks::is_debug() method for use in debugging
- Added setup process for version changes; forcing licensing to be revalidated on new versions
- Updated GWPerks class to GravityPerks; GWPerks now extends GravityPerks class for backwards compatibility
- Updated GravityPerks::get_license_key() method to trim the license key
- Updated remote GWAPI calls to pass URL; fixes issue where user's were getting "Install package not available"
- Fixed styling issue with Perk listings on Manage Perks page
## 1.2
- Added debugging output for license validation
- Added 24 hour transient caching to GWApi::get_perks()
- Added 24 hour cache to Gravity Perks version API call
- Updated GWPerk::get_perk() to check for singleton class before getting new instance of class
- Updated GWPerk::include_field() to check for singleton class before getting new instance of class
- Updated API get requests to use "Gravity Perks x.x.x" as the user agent to avoid caching issues with WP Engine
- Updated GWPerk::get_plugins() method to clear the plugin cache if the 'Perk' plugin header is not available.
- Updated GWPerk->get_perk() method to convert "-" in perk filename to "_".
example: gp-nested-forms.php => gp_nested_forms (class is actually GP_Nested_Forms)
- Updated/enhanced the GWPerk->include_field() method to allow including the fields.php in an '/includes/' folder
- Updated cache time on valid license check from 15 minutes to 24 hours
- Updated GPerks::init() to be a static function
- Updated priority of 'update_plugins' transient modifer to 99 to bypass issues where other plugins modify the transient incorrectly or fail to return it (for both Gravity Perks and Perks)
- Updated minimum WordPress version to 3.7 (requires jQuery Tabs 1.10 or greater)
- Updated gperk.addTab() method to bind tab loading events to 'beforeActivate' rather than the deprecated 'select'
- Fixed notice when updating themes and no "plugin" index is available in $_REQUEST
- Fixed notices relating to 'gf_tooltip_init' no longer being included with GF
- Fixed issue in manage_perks.php where invalid perk caused a fatal error
- Fixed various code formatting issues
- Removed some old, commented-out code; cleaning is fun!
- GWField: Added support for filtering the field content via the 'gform_field_content' filter
- GWField: Added GWField->has_field_type() method for determining if a given form object contains the current field's field type
- GWField: Various updates/improvements to GWField class
## 1.1.7
- Fixed issue where license check for "inactive" license was failing to auto-activate license
## 1.1.6
- Updated GWPerk->get_base_url() method to use plugins_url(), which auto-handles http/https; WP_UPLOAD_URL does not
## 1.1.5
- Fixed issue where license check was return "site_inactive" status; GWPerks::is_valid_license() will now attempt to activate license if this status is returned
## 1.1.4
- Added support for testing perk management on local servers
## 1.1.3
- Fixed issue where the 'Perk' plugin header was not added soon enough causing activation of some plugins to fail to load it
## 1.1.2
- Updated min GF version
- Updated tooltip functionality on Manage Perks page to work with new GF tooltips
## 1.1.1
- Fixed issue where other plugin's incorrect usage of the 'plugins_api' hook was preventing perks from being installed
## 1.1
- Resolved issue with WP 3.6, jQuery UI Tabs no longer supports "add" method
## 1.0.7
- Added Markdown() support on Manage Perks page as a temporary fix until old perks that rely on this function can be updated
## 1.0.5
- Added support for returning URL for documentation
## 1.0.4
- Added missing 'gravityperks' textdomain to several strings
## 1.0.3
- Fixed issue where WordPress.org plugin updates were not showing up when GP was active
## 1.0.2
- Fixed an issue where if the user submitted their license key with a space at the beginning or end it would correctly validate, but then fail when they attempt to download a perk.
## 1.0.1
- Updated perk install link to use subsites update.php rather than the network
## 1.0
- Added own helper functions for retrieving values from arrays, $_GET & $_POST. Reliance on GFs was resulting in too many unexpected fatal errors.
- Updated interaction with storefront API
- Updated many unused functions to be commented out for later review and removal
- Updated constant URLs
- Fixed error with documentation markdown call
## 1.0.beta4.5
- Updated has_valid_license() function to only check once per execution
- Fixed fatal error when attempting to use multisite function on non-network install
- Updated font color style on "Install Update" button on "Manage Perks" page
- Added caching for valid license check
- Fixed issue where gwget() was not available and generating fatal error
- Added GWPerks::is_gravity_page() function which checks if RGForms exists before running RGForms::is_gravity_page() check
- Fixed issue where if FTP credentials were requested, plugin package data was not retrieved and install failed
- Updated get_perk_info on the plugins_api hook to priority 11 to resolve issues where other plugins did not return $api
## 1.0.beta4
- Added support for retrieving individual perk change logs on Update Plugins page
- Updated handle_errors() to only count $pagenow as plugins.php if no 'action' parameter is set in the query string to avoid error message being output when on the delete confirmation screen
- Updated how plugin row message is output for perks.
- Added additional styles for perk documentation
- Added plugins.css which is output on the plugins.php page and handles styling perk-generated admin messages
- Added support for "header links" which includes "buy license", "register license", and "get support" conditionally based on valid license
- Fixed several issues with how error messages were being generated
- Added new pointer system along with a "tour" of pointers to familiarize new users with Gravit Perks
- Added system for adding requirements for perks
- Added support for showing failed requirements on manage perks page
- Added better support for perk actions: activate, deactivate, install, delete
- Added better support for managing perks on Network installs
## 1.0.beta3.2
- major improvements to network mode support
- fixed issue where 'gwp_active_perks' and 'gwp_active_sitewide_perks' options were not being updated correctly
- updated manage perks page to list installed perks in 'Active' and 'Inactive' sections
- added system for adding requirements for perks
- added support for showing failed requirements on manage perks page
## 1.0.beta3
- various bug fixes
- updated version
## 1.0.beta2.6
- Updated gwpSlide() function to support true boolean override
## 1.0.beta2.5
- Updated GWPerk::has_min_version() method to avoid T_PAAMAYIM_NEKUDOTAYIM error
## 1.0.beta2.4
- Removed auto-update functioanlity for beta testers while that is polished
- Fixed issue where Perks form setting tab was being removed when there were no field settings
## 1.0.beta2.3
- Fixed issue where no perks returned from API was causing an issue
## 1.0.beta2.2
- Updated get_license_key() function to no longer use gwar() as this is not available during this time of the process
## 1.0.alpha2
- Added GWField model for easier creation of GF fields
- Fixed various minor issues.