Ignition Crowdfunding v0.23.0
The person who sets a site up and the person who runs its fundraising are often different people. Until now the second one needed an administrator login, which also let them install plugins, manage users and change payment keys. This release adds operators: staff who approve campaigns, handle pledges and refunds and change business settings, without any of the administrator’s technical powers. The release also lets you close an ended campaign without declaring a result, and shows on each campaign’s page which payment methods it offers and why any are missing.
New Features
Section titled “New Features”-
Operators — Tick Ignition operator on any user’s profile, or click Make operator on the Users list, and that person can run the fundraising from wp-admin: campaigns, pledges, refunds, backers, exports, staff emails, and the business settings under Ignition > Settings. They keep their WordPress role, and the Users list labels them Operator. Technical settings stay with administrators: payment methods and their keys, the offline payment instructions, page assignments, currency and the sender email address. Operators don’t see those at all, and the settings screen keeps them unchanged when an operator saves. See Administrators and Operators.
-
Close a campaign without declaring a result — On an ended campaign with no recorded outcome, the campaign’s page now offers Close beside Declare Result. Closing this way records no outcome and sends backers no outcome email. The confirmation box says so, and the status history notes Closed without a recorded outcome. See Declaring Campaign Results.
-
See why a payment method isn’t offered on a campaign — A campaign’s page in wp-admin has a new Payment methods row. It lists the methods checkout offers on that campaign, and for each enabled method that isn’t offered, every reason why. Administrators also get a link to where each problem can be fixed. The row reads from the same source as checkout, so the two always agree. See Payment methods.
Improvements
Section titled “Improvements”-
“Staff”, not “Admin” — Emails meant for the people running the site now go to administrators and operators alike, and say so: they carry (Staff) in their names on the Emails tab. The front-end Account → Notifications page has an Emails for staff group, so staff can switch them there as well as on their WordPress profile. See Notification preferences.
-
Settings shows operators only what they can change — An operator sees the General, Emails and Sharing tabs. The Add-ons tab appears only when an active add-on has settings an operator may change, and lists just those add-ons. See Add-ons.
Bug Fixes
Section titled “Bug Fixes”-
Cancelling a pledge stops the payment going through — Cancelling a pending pledge left its payment attempt open underneath. A payment provider that captures later, such as PayPal, could still charge the backer after the pledge was cancelled. Cancelling now closes the attempt as well, and if it can’t, the cancel is refused rather than left half-done.
-
A campaign closed twice at once is recorded once — Two people closing the same campaign at the same moment, for example one on its page and one with the bulk Close action, each recorded a close. That meant two status-history entries and every closing email sent twice. The second close is now refused.
-
The campaign wizard keeps its Next and Back links — When the Dashboard page setting pointed at a page that had been deleted or unpublished, the campaign creation wizard showed its steps with no way to move between them. It now falls back to the page it is on.
-
Amount boxes match the currency — The refund amount box accepted any number of decimal places, and scrolling the mouse wheel over it changed the amount. The minimum and maximum pledge settings always stepped by 0.01. All three now follow the site currency’s decimal places, so yen step by 1 and a three-decimal currency steps by 0.001. Scrolling over the refund box no longer changes it.
-
Phone-width admin tables keep their column headers for screen readers — Below 601px, wp-admin tables that stack into labelled cards hid their header row from screen readers. Cell-by-cell table navigation now still announces each column.
-
The Payments list fits on a phone — Its status badge now wraps instead of pushing the table past the screen edge.
-
Uninstall removes the user-summaries permission — Uninstalling left the permission that opens the Backers screen behind on the Administrator role.
Developer
Section titled “Developer”-
Three new permissions —
igcf_staff,igcf_manage_settingsandigcf_manage_campaign_termsare added at check time. The first two go to anyone withmanage_options, the third to anyone withmanage_categories, and all three go to operators. Core now checks these where it used to checkmanage_options. Campaign categories and tags useigcf_manage_campaign_terms. See Staff and operators. -
Let operators change your add-on’s settings — Declare keys on
igcf_operator_settings. Every key you don’t list stays administrator-only, enforced when the option is saved. An add-on that declares keys appears on an operator’s Add-ons tab.Igcf_Settings_Guard::can_edit( $option, $key )tells a screen which fields to show. See Registering Add-on Settings. -
Operator and staff helpers —
Igcf_Operator::is_operator(),grant()andrevoke(), with theigcf_operator_grantedandigcf_operator_revokedactions, plusIgcf_Staff::get_users()andis_staff(). UseIgcf_Staff::get_users()rather than querying for administrators when you email or notify the people running the site. -
Gateways say why they aren’t offered —
Igcf_Payment_Gateway::get_unavailable_reasons( $campaign_id )returns a list ofcode/message/fix_urlreasons. Override it instead ofis_available_for_campaign(), which now returns true exactly when that list is empty. Other plugins add reasons throughigcf_gateway_unavailable_reasons.Igcf_Payment_Gateway_Service::explain_availability()returns the full result, andget_available_ids()is built from it.igcf_gateway_available_for_campaignstill works, but new code should use the reasons filter. See Registering a Payment Gateway. -
has_operator_settings()on gateways — Returntruewhen your gateway’s screen has a field opened to operators. No shipped gateway does. -
Payment switches are administrator-only — The
igcf/set-payment-gateway-enabledability now requiresmanage_options.Igcf_Payment_Gateway_Service::set_enabled()reports a save that didn’t take asigcf_gateway_save_failed(500), or asigcf_gateway_forbidden(403) when the settings guard held the caller back. -
Igcf_Campaign_Service::close()— Closes an ended campaign and records whether a result had been declared. It is used by the close ability and the bulk action. A status change that loses a race with another one now returnsigcf_campaign_status_conflict. See the Service Layer. -
Focal-point permission narrowed — The focal-point REST route now accepts the image’s uploader, or someone with
edit_others_igcf_campaignsfor that campaign’s own images only. Previously, anyone who could edit the campaign and hadedit_others_postscould pass any image in the media library. -
igcf_money_step()— Returns a currency’s smallest step ("0.01","1","0.001") for a money field’sstepandmin. See Currency helpers. -
New payment-attempt failure code —
pledge_canceled, stamped on open attempts when their pledge is cancelled. Seeigcf_payment_attempt_failure_codes.