Mad Mimi Change Log

Mad Mimi Change Log

1.4 | 2020-09-081.3 | 2020-03-241.2 | 2018-04-091.1 | 2016-08-311.0 | 2015-05-14

1.4 | 2020-09-08

Added support for Gravity Forms 2.5.
Updated the feed name setting for new feeds to include a default value.

1.3 | 2020-03-24

Added translations for Hebrew, Hindi, Japanese, and Turkish.
Fixed PHP 7.4 notices which occur when the API is initializing and the settings are empty.

1.2 | 2018-04-09

Added security enhancements.
Added GPL to plugin header.
Update API library to be a public property.
Updated Plugin URI and Author URI to use https.
Updated strings for translations.
Fixed strings for translations.

1.1 | 2016-08-31

Added feed duplication support.
Added gf_madmimi() for easily getting a Mad Mimi instance.
Added support for delaying feed processing until payment by PayPal Standard is successfully completed.
Added Spanish (es_ES) translation.
Updated feed processing to abort if email is empty or invalid.
Updated API calls to use native WordPress functions.
Fixed a PHP notice on the feeds page for the list name column.
Fixed an issue which could cause an incorrect result to be displayed when validating the API settings.
Fixed a PHP warning for the List setting if no lists were returned by the API.
Fixed an issue with the request failed message if a WP_Error occurs.
Fixed a fatal error when the MadMimi class has already been included by another plugin.

1.0 | 2015-05-14

It's all new!

Setting Up the Mad Mimi Add-On

Setting Up the Mad Mimi Add-On

Pre-RequisitesSetupAdd-On Framework Hooks

Pre-Requisites

Download and install the add-on
A Mad Mimi account

Setup

Log into your WordPress admin dashboard.
On the left side navigation menu, hover over Forms and click on Settings.
From this page, click the Mad Mimi tab.
Enter your Email Address and API Key. Refer to the Obtaining Your Mad Mimi API Key article for instructions.
Click Update Settings. If you』ve entered your account information correctly, you will be notified by green check marks beside each box. If you do not see green check marks, please double check this information and try again.

Once you have entered your API key, you』re ready to begin creating a feed for the Mad Mimi Add-On.
Add-On Framework Hooks
Because the Mad Mimi Add-On is built using the Add-On Framework it also inherits any hooks available in the framework methods it uses such as:

gform_short_slug_field_value for changing a field value before it is passed to Mad Mimi.

Logging and Debugging

Logging and Debugging

IntroductionEnabling LoggingWarning MessageLogging SettingsViewing LogsDeleting Logs

Introduction

For quite a while, enabling logging has been a go-to method for debugging any issues within Gravity Forms. As of Gravity Forms version 2.2, logging functionality has been moved from being a separate add-on, and is now a core feature.

In this article, we will show you how to enable and configure logging within Gravity Forms.

Note: If you have the a role management plugin active, such as Members, you』ll need to ensure that your user has the correct permissions active to acccess logging.

Enabling Logging

To enable logging, simply enable it within the Gravity Forms settings page.

Access the Settings page by hovering over Forms on the left side menu within your WordPress dashboard, then click on Settings Next, scroll down to Logging and set it to On.

Once complete, don』t forget to save your settings.

If you』re going to send the system report or logs to support, keep logging on until the end of the issue resolution. If you turn off logging before that the logs will be deleted!

Warning Message

As of Gravity Forms 2.4, the following non-dismissible security notice will be displayed on every WordPress admin page when logging is enabled:

This is because log files can contain sensitive information stored in plain text, and should not be left running, nor left in an insecure network accessible server for extended periods.

If you enabled logging per support service request, you need to keep logging enabled during the ticket handling to allow the support staff to check your logs. When logging is disabled, the logs are deleted.

The message can be removed by turning off logging using Gravity Forms > Settings or by adding the GF_LOGGING_DISABLE_NOTICE constant to your wp-config.php file and setting it to true.

define( 'GF_LOGGING_DISABLE_NOTICE', true );

Logging Settings

Once logging is enabled within your Gravity Forms settings, an additional Settings item will appear labeled Logging. To configure any settings related to logging in Gravity Forms, simply access this tab.

Within the Logging tab, you』ll see Gravity Forms as well as any Gravity Forms add-ons that you have installed. Each of these can be configured to enable/disable logging, as well as make changes to the information that is logged.

If you』ve narrowed down exactly where you』re having issues, you might want to enable any additional add-ons.

Viewing Logs

To access the logs that are generated, take a look at the Logging tab of the Settings page. Below each item, you will see links to view or delete the logs for that particular item.

If you don』t see these things, be sure that logging has been enabled, and logs have been generated. If nothing exists within the logs, a link to display them will not appear.

Also note log files have a maximum size of 5MB, once a log file gets bigger, it』s renamed and a brand new log file with the original name is created to store additional logging messages. You can download rotated log files from /wp-content/uploads/gravity_forms/logs/ using a FTP client.

Deleting Logs

Logs are deleted almost exactly the same as they are viewed. To delete your logs, simply click on the Delete Logs link instead of the View Logs link on the logging settings tab.

List

List

SummaryCommon SettingsGeneral SettingsAdvanced SettingsMerge TagsUsageModifiersExampleRelated

Summary

The List field allows the end user to add/remove additional rows (up to a pre-set limit) of information per field. This allows for the capture of multiple field values, or a variable 「list」 of data as defined by the end user. This is a simple version of a repeater field. For more complex repeater functionality, check out this blog post about Collecting Repeatable Data in WordPress Forms. The List field is available under the Advanced Fields section within the form editor.

List field as displayed in the Field Library

List field as displayed in the Form Editor.

Common Settings

This field uses only common field settings for the Appearance settings. For a description of each of the common field settings, refer to this article. Below you will find description of specialty settings that are particular to this field.

General Settings

SettingDescriptionEnable multiple columnsChecking this option enables the list field to have multiple fields per row. You may add as many columns as you need, each column with its own unique label.Maximum RowsEnter the maximum number of rows that users are allowed to add.

Advanced Settings

SettingDescriptionAdd Icon URLEnter the URL of a custom image to replace the default 『Add a new row』 icon +.Delete Icon URLEnter the URL of a custom image to replace the default 『Remove this row』 icon -.

Merge Tags

For more information on the use of merge tags, refer to these articles.

Usage

{Field Name:2:modifier}

Modifiers

ModifierDescription:textTo output the list items as text instead of HTML formatted.

Example

Below is an example showing a List field configured in the form editor.

And this short animation gives an example showing how it appears and behaves to a user filling out our form.

Related

Want to find out more about how the List field works? See our article about GF_Field_List.

List of CSS Ready Classes

List of CSS Ready Classes

IntroductionReference ListCaveat

Introduction
This article contains a reference list of the available CSS ready classes in Gravity Forms core. Each of the classes here are expanded upon in our detailed CSS Ready Classes article.
Reference List
gf_left_half
gf_right_half
gf_left_third
gf_middle_third
gf_right_third
gf_first_quarter
gf_second_quarter
gf_third_quarter
gf_fourth_quarter
gf_inline
gf_list_2col
gf_list_3col
gf_list_4col
gf_list_5col
gf_list_2col_vertical
gf_list_3col_vertical
gf_list_4col_vertical
gf_list_5col_vertical
gf_list_inline
gf_list_height_25
gf_list_height_50
gf_list_height_75
gf_list_height_100
gf_list_height_125
gf_list_height_150
gf_alert_green
gf_alert_red
gf_alert_yellow
gf_alert_gray
gf_alert_blue
gf_confirmation_simple_yellow
gf_confirmation_simple_gray
gf_confirmation_yellow_gradient
gf_confirmation_green_gradient
gf_simple_horizontal
gf_scroll_text
gf_hide_ampm
gf_hide_charleft
Caveat
As with any CSS rules, your particular theme CSS may override or supersede some of these styles. You may have to make some adjustments to your theme styles for everything to work properly.

List Field CSS Selectors

List Field CSS Selectors

ContainerTable ContainerHeaders (Labels)ColumnsRowsOdd RowsEven RowsAll rowsCellsIcons ContainerAdd/Remove Icons

Container
(div) wraps the list field HTML table

example: List field container (div) – applies to all forms
1body .gform_wrapper .gform_body .gform_fields .gfield .ginput_listbody .gform_wrapper .gform_body .gform_fields .gfield .ginput_list {border: 1px solid red}

example: advanced field container (div) – applies just to form ID #1
1body #gform_wrapper_1 .gform_body .gform_fields .gfield .ginput_list {border: 1px solid red}

example: advanced field container (div) – applies just to specific container (based on the unique parent element ID – replace 「XX_X」 with your actual element ID)
1body .gform_wrapper .gform_body .gform_fields #field_XX_X.gfield .ginput_list {border: 1px solid red}

Table Container
List field HTML table structure that contains the list field inputs

example: List field table – applies to all forms
1body .gform_wrapper .gform_body .gform_fields .gfield .ginput_listbody .gform_wrapper .gform_body .gform_fields .gfield .ginput_list table.gfield_list {border: 1px solid red}

example: advanced field container (div) – applies just to form ID #1
1body #gform_wrapper_1 .gform_body .gform_fields .gfield .ginput_list table.gfield_list {border: 1px solid red}

example: advanced field container (div) – applies just to specific container (based on the unique parent element ID – replace 「XX_X」 with your actual element ID)
1body .gform_wrapper .gform_body .gform_fields #field_XX_X.gfield .ginput_list table.gfield_list {border: 1px solid red}

Headers (Labels)
Targets the individual HTML table headers (labels)

example: odd-numbered column (colgroup) – applies to all forms
1body .gform_wrapper .gform_body .gform_fields .gfield div.ginput_container_list table.gfield_list thead th {color: red}

example: odd-numbered column (colgroup) – applies just to form ID #1
1body #gform_wrapper_1 .gform_body .gform_fields .gfield div.ginput_container_list table.gfield_list thead th {color:red}

example: odd-numbered column (colgroup) – applies just to specific container (based on the unique parent element ID – replace 「XX_X」 with your actual element ID)
1body .gform_wrapper .gform_body .gform_fields #field_XX_X.gfield div.ginput_container_list table.gfield_list thead th {color: red}

Columns
Targets the individual HTML table columns (colgroups) – useful for specifying sizes or creating alternating-color column styles

example: odd-numbered column (colgroup) – applies to all forms
1body .gform_wrapper .gform_body .gform_fields .gfield .ginput_list table.gfield_list colgroup col.gfield_list_col_odd {border: 1px solid red}

example: odd-numbered column (colgroup) – applies just to form ID #1
1body #gform_wrapper_1 .gform_body .gform_fields .gfield .ginput_list table.gfield_list colgroup col.gfield_list_col_odd {border: 1px solid red}

example: odd-numbered column (colgroup) – applies just to specific container (based on the unique parent element ID – replace 「XX_X」 with your actual element ID)
1body .gform_wrapper .gform_body .gform_fields #field_XX_X.gfield ginput_list table.gfield_list colgroup col.gfield_list_col_odd {border: 1px solid red}

example: even-numbered column (colgroup) – applies to all forms
1body .gform_wrapper .gform_body .gform_fields .gfield .ginput_list table.gfield_list colgroup col.gfield_list_col_even {border: 1px solid red}

example: even-numbered column (colgroup) – applies just to form ID #1
1body #gform_wrapper_1 .gform_body .gform_fields .gfield .ginput_list table.gfield_list colgroup col.gfield_list_col_even {border: 1px solid red}

example: even-numbered column (colgroup) – applies just to specific container (based on the unique parent element ID – replace 「XX_X」 with your actual element ID)
1body .gform_wrapper .gform_body .gform_fields #field_XX_X.gfield ginput_list table.gfield_list colgroup col.gfield_list_col_even {border: 1px solid red}

example: targeting a specific column (colgroup) by ID – applies just to list 2, column number 1
1body #gform_wrapper_1 .gform_body .gform_fields .gfield .ginput_list table.gfield_list colgroup col#gfield_list_2_col1 {border: 1px solid red}

Rows
Odd Rows
Targets the individual HTML table rows – useful for specifying sizes or creating alternating-color row styles

example: odd-numbered row – applies to all forms
1body .gform_wrapper .gform_body .gform_fields .gfield .ginput_list table.gfield_list tbody tr.gfield_list_row_odd {border: 1px solid red}

example: odd-numbered row – applies just to form ID #1
1body #gform_wrapper_1 .gform_body .gform_fields .gfield .ginput_list table.gfield_list tbody tr.gfield_list_row_odd {border: 1px solid red}

example: odd-numbered row – applies just to specific container (based on the unique parent element ID – replace 「XX_X」 with your actual element ID)
1body .gform_wrapper .gform_body .gform_fields #field_XX_X.gfield ginput_list table.gfield_list tbody tr.gfield_list_row_odd {border: 1px solid red}

Even Rows

example: even-numbered row – applies to all forms
1body .gform_wrapper .gform_body .gform_fields .gfield .ginput_list table.gfield_list tbody tr.gfield_list_row_even {border: 1px solid red}

example: even-numbered row – applies just to form ID #1
1body #gform_wrapper_1 .gform_body .gform_fields .gfield .ginput_list table.gfield_list tbody tr.gfield_list_row_even {border: 1px solid red}

example: even-numbered row – applies just to specific container (based on the unique parent element ID – replace 「XX_X」 with your actual element ID)
1body .gform_wrapper .gform_body .gform_fields #field_XX_X.gfield ginput_list table.gfield_list tbody tr.gfield_list_row_even {border: 1px solid red}

All rows
If you want to target all rows with the same CSS you can use the following:

example: applies to all forms
1body .gform_wrapper .gform_body .gform_fields .gfield .ginput_list table.gfield_list tbody tr.gfield_list_group {border: 1px solid red}

example: applies just to form ID #1
1body #gform_wrapper_1 .gform_body .gform_fields .gfield .ginput_list table.gfield_list tbody tr.gfield_list_group {border: 1px solid red}

example: applies just to specific container (based on the unique parent element ID – replace 「XX_X」 with your actual element ID)
1body .gform_wrapper .gform_body .gform_fields #field_XX_X.gfield ginput_list table.gfield_list tbody tr.gfield_list_group {border: 1px solid red}

Cells
Targets the list field HTML table cells

example: list table cell – applies to all forms
1body .gform_wrapper .gform_body .gform_fields .gfield .ginput_list table.gfield_list tbody tr td.gfield_list_cell {border: 1px solid red}

example: list table cell – applies just to form ID #1
1body #gform_wrapper_1 .gform_body .gform_fields .gfield .ginput_list table.gfield_list tbody tr td.gfield_list_cell {border: 1px solid red}

example: list table cell – applies just to specific container (based on the unique parent element ID – replace 「XX_X」 with your actual element ID)
1body .gform_wrapper .gform_body .gform_fields #field_XX_X.gfield ginput_list table.gfield_list tbody tr td.gfield_list_cell {border: 1px solid red}

Icons Container
Targets the table cell that contains the icons to add or remove rows.

example: applies to all forms
1body .gform_wrapper .gform_body .gform_fields .gfield .ginput_list table.gfield_list tbody tr td.gfield_list_icons {border: 1px solid red}

example: applies just to form ID #1
1body #gform_wrapper_1 .gform_body .gform_fields .gfield .ginput_list table.gfield_list tbody tr td.gfield_list_icons {border: 1px solid red}

example: applies just to specific container (based on the unique parent element ID – replace 「XX_X」 with your actual element ID)
1body .gform_wrapper .gform_body .gform_fields #field_XX_X.gfield ginput_list table.gfield_list tbody tr td.gfield_list_icons {border: 1px solid red}

Add/Remove Icons
Targets the icons to add or remove rows.

example: hide add row icons in form ID #1
1body #gform_wrapper_1 .gform_body .gform_fields .gfield .ginput_list table.gfield_list tbody tr td.gfield_list_icons .add_list_item {display:none;}

example: hide remove row icons in form ID #1
1body #gform_wrapper_1 .gform_body .gform_fields .gfield .ginput_list table.gfield_list tbody tr td.gfield_list_icons .delete_list_item {display:none;}

Common Questions about Gravity Forms Licensing

Common Questions about Gravity Forms Licensing

License RenewalsHow do I renew my license?What happens if my license expires?Why won』t my credit card go through?License UpgradesLicense TransfersLicense Payments, Cancellations & RefundsHow do I update or change my payment method or my account profile details?License KeysHow do I find my license key(s)?How do I use my license key?Can I see which sites are associated with my license?Can I revoke access from a site?Can I restore a license that I revoked?Obtaining Another Copy Of Your Receipt

License Renewals
How do I renew my license?
See this article on renewals, or this article regarding cancelling automatic renewals.
What happens if my license expires?
See this article on expiring licenses.
Why won』t my credit card go through?
If you』re not able to renew your license due to a transaction error, please contact support and be sure to provide the complete error message.
License Upgrades
See this article, or this one for legacy licenses.
License Transfers
See this article on transferring your license to another account.
License Payments, Cancellations & Refunds
Refer to these articles for information on purchases, cancellations, and refunds.
How do I update or change my payment method or my account profile details?
Follow the instructions in this article on payment methods, or this one about profile changes.
License Keys
How do I find my license key(s)?
See this article on finding and entering your license.
How do I use my license key?
Refer to the entering your license article for details.
Can I see which sites are associated with my license?
This is available within the license section of your account. See this article.
Can I revoke access from a site?
Yes. See this article for more information.
Can I restore a license that I revoked?
Yes. See this article for more information.
Obtaining Another Copy Of Your Receipt
Refer to this article for instructions.

Legacy (Personal, Business, Developer) License FAQ

Legacy (Personal, Business, Developer) License FAQ

GeneralWhat is a legacy license?Can I keep my legacy license?Can I buy (or upgrade or downgrade to) a legacy license?RenewalsCan I use automatic renewals with my legacy license?Can I keep renewing my legacy license manually, not using automatic renewals?What happens if I do not renew my legacy license?Upgrading Legacy LicensesHow is my legacy upgrade price calculated?What happens when I upgrade?

General
What is a legacy license?
「Legacy license」 refers to the Gravity Forms license types we had in place prior to September 2017, called 「Personal」, 「Business」 and 「Developer」. These older license types are now referred to collectively as 「legacy licenses.」 Legacy licenses can be maintained and continued, but can no longer be purchased as a new sale or an upgrade.
Can I keep my legacy license?
Of course! Any legacy license you own is still fully functional and will work exactly as it does now, as long you keep it active. Additionally, the annual renewal price of an active license will not change for its lifetime, as long as you don』t let it expire. So you may continue to use your legacy licenses exactly as you have been if you stay up to date with your renewals.
Can I buy (or upgrade or downgrade to) a legacy license?
No. Legacy licenses are no longer offered for sale, so any purchases or upgrades will need to be to one of our new license types. Check them out on the Gravity Forms purchase page of 「Basic」, 「Pro」 and 「Elite」, which now include additional features.
Renewals
Can I use automatic renewals with my legacy license?
Yes. Whenever you renew a legacy license, you will be prompted to add a payment method to your account, and that license will be enrolled in automatic renewals. The renewal date and annual renewal amount for that license will not change, you just no longer have to remember to renew manually each year.
Can I keep renewing my legacy license manually, not using automatic renewals?
No. Our new payment processing system utilizes auto-renewal for all subscribed licenses. You can cancel an auto-renewal for any license following the instructions in this article, but not that you will no longer be able to renew or upgrade that license once automatic renewals are canceled.
What happens if I do not renew my legacy license?
If you fail to renew your legacy license on time, it will expire. You cannot renew, purchase again, upgrade or otherwise recover an expired legacy license.
Upgrading Legacy Licenses
Legacy licenses can be upgraded to a current license type of higher feature set. This means you can:

upgrade a Personal license to any new license type
upgrade a Business license to a new Pro or new Elite license.

When you upgrade, your license key will remain unchanged, so no change is necessary for any sites it is in use on.
Please note that:

you cannot upgrade a developer license, as this license offers the same benefits as the Elite license.
you cannot upgrade a legacy license to higher legacy license type. They are no longer offered for sale.

For instructions on upgrading, see this article.
How is my legacy upgrade price calculated?
When upgrading, you may be entitled to a discount, based on any unused term of your existing license, and the amount you paid for it in your most previous transaction, such as the last renewal or a previous upgrade. Any discounts will be identified in your Plan Summary on the pre-checkout page, right before you are asked to complete your purchase.
Upgrade discounts affect the initial purchase price of the new license type only, and do not apply to future renewals.
What happens when I upgrade?
When you upgrade, your license key does not change, but we do update the license type it represents. No changes are necessary to any websites you have the license key installed on.
When upgrading your license, your new license will have an annual renewal date equal to the same day you upgraded. So if your original license was set to renew on December 1st, but you went ahead and upgraded it on October 1st, then your new license will renew on October 1st of each subsequent year, until cancelled.

Is Gravity Forms PCI Compliant?

Is Gravity Forms PCI Compliant?

PCI Compliance Requirements in Gravity FormsMore Information on PCI Compliance

The short answer is yes, Gravity Forms is PCI compliant. However, this is subject to change depending on your environment and setup, as Gravity Forms is simply a single piece of the puzzle.
Gravity Forms is only used to collect user input, it is not a payment processor. Instead, Gravity Forms transmits that data to the credit card processor of your choice, such as Stripe, Authorize.Net, or PayPal, to handle authorization and payment.
PCI Compliance Requirements in Gravity Forms
Below are the requirements for PCI compliance that pertain to Gravity Forms:

Protect stored cardholder data
Gravity Forms does not store any cardholder data.
Encrypt transmission of cardholder data across open, public networks
Gravity Forms requires SSL (https), for any add-ons that transmit credit card information to a 3rd party payment processor. Note that add-ons such as the PayPal Standard add-on do not require SSL as the customer is being redirected to PayPal and there is no credit card data entered within your form.
Develop and maintain secure systems and applications
Gravity Forms is regularly checked for security. (Read our Security white paper here.) Please note that while Gravity Forms is developed with security in mind, your other plugins and themes can impact this. Read more about WordPress and Gravity Forms Security Practices here.
Log payment application activity
Gravity Forms keeps a log of all transactions that occur.

More Information on PCI Compliance
PCI Security Standards Council
WP Engine Article on PCI Compliance with some good general information which applies to WordPress sites on any host.