# Features — jumpstarter_crowdfunding

Evidence date: 2026-10-11. Source revision: `39ef15a` on `master`.

Activation of themes and plugins is stored in the database. A feature listed as implemented means the code is in this revision. It does not mean the feature is switched on in production.

## Current (code present in `39ef15a`)

| Feature | What it does | Where |
|---|---|---|
| Campaign pages | IgnitionDeck project single: media, totals, rewards, description, updates, comments, backers, FAQs | `wp-content/themes/fundify/single-ignition_product.php` and `project/` |
| Closed project | "Project Closed" replaces "Contribute Now" when `ID_Project::project_closed()` is true | `project/project-details.php` |
| Distinct backer count | `COUNT(DISTINCT email)` from `wp_ign_pay_info` overrides the deck pledge count | `project/project-details.php` |
| PayGate checkout | PayWeb v2 form in ZAR, cents amount, hardcoded return URL | `project/project-purchase-form.php` |
| Pledge registration | Login form and subscriber registration with shipping fields in the PHP session | `project/project-purchase-form.php` |
| PayGate return recording | Checksum and result-code check, then inserts into IgnitionDeck order tables | `wp-content/themes/fundify/update.php` |
| Pure donation | "Pure donation without a reward", level 0, amount appended as `&price=` | `project/custom-pledge.php`, `wp-content/plugins/ignitiondeck/js/idf-min.js` |
| SnapScan QR | QR URL per published project on the admin screen, creator dashboard, and front-end submission form | `wp-content/plugins/so-snapscan/` |
| SnapScan sync | Copies completed SnapScan payments into `ign_pay_info`, `memberdeck_orders`, `mdid_orders` | `so-snapscan.php`, `js/so-snapscan.js` |
| Backer CSV | Author or administrator download | `so-snapscan.php`; dashboard link in `idcommerce/templates/_myProjects.php` |
| Reward images | File field per level on the front-end form; one field in the admin meta box; upload route | `wp-content/plugins/idjs/`, `wp-content/plugins/img-upload/` |
| ZAR currency option | Admin script adds ZAR to PayPal and Stripe currency selects | `wp-content/themes/fundify-child/functions.php` |
| Footer funded total | Sum of `prod_price` labelled ZAR | `wp-content/themes/fundify-child/footer.php` |
| Home shortcodes | `home_block_left`, `home_block_right`, `callout` | `fundify-child/functions.php` |
| Home Custom template | Page template that prints content in a two-column home layout and hides IgnitionDeck social icons | `fundify-child/page-templates/Home-Custom.php` |
| Fundify page templates | Staff Picks, Recently Added, Full Width, Front Page IgnitionDeck, Contact | `wp-content/themes/fundify/page-templates/` |
| Wordfence WAF bootstrap | Absolute include of the WAF on the host path recorded in `wordfence-waf.php` | `wordfence-waf.php` |
| Analytics tag | Google Analytics `UA-55077943-1` in the child header | `fundify-child/header.php` |

Vendored product surface (present, not customised except where noted):

| Feature | Version | Path |
|---|---|---|
| IgnitionDeck | 1.3.5 | `wp-content/plugins/ignitiondeck/` |
| IgnitionDeck Crowdfunding | 1.7.1 | `wp-content/plugins/ignitiondeck-crowdfunding/` |
| IgnitionDeck Commerce | 1.9.37 | `wp-content/plugins/idcommerce/` |
| IgnitionDeck Social | 1.0.3 | `wp-content/plugins/idsocial/` |
| WooCommerce | 4.0.1 | `wp-content/plugins/woocommerce/` |
| WP Crowdfunding | 2.0.3 | `wp-content/plugins/wp-crowdfunding/` |
| Wordfence | 7.2.3 | `wp-content/plugins/wordfence/` |
| Yoast SEO | 11.0 | `wp-content/plugins/wordpress-seo/` |
| Contact Form 7 | 5.1.1 | `wp-content/plugins/contact-form-7/` |
| Classic Editor | 1.4 | `wp-content/plugins/classic-editor/` |
| Site Kit by Google | 1.0.0-beta.1.0.2 | `wp-content/plugins/google-site-kit/` |
| ManageWP Worker | 4.9.6 | `wp-content/plugins/worker/` |
| Icegram | 1.10.39 | `wp-content/plugins/icegram/` |
| Official Facebook Pixel | 1.7.25 | `wp-content/plugins/official-facebook-pixel/` |
| Google Tag Manager for WordPress | 1.9.2 | `wp-content/plugins/duracelltomi-google-tag-manager/` |
| Anti-Spam by CleanTalk | 5.118.2 | `wp-content/plugins/cleantalk-spam-protect/` |
| Better WordPress reCAPTCHA | 2.0.3 | `wp-content/plugins/bwp-recaptcha/` |
| White Label CMS | 2.0.1 | `wp-content/plugins/white-label-cms/` |
| WP Meta SEO | 4.0.2 | `wp-content/plugins/wp-meta-seo/` |
| Really Simple SSL | 3.1.5 | `wp-content/plugins/.really-simple-ssl/` |
| Query Monitor | 3.6.0 | `wp-content/plugins/query-monitor/` |
| Fast Velocity Minify | 2.6.4 | `wp-content/plugins/fast-velocity-minify/` |
| Heartbeat Control | 2.0 | `wp-content/plugins/heartbeat-control/` |
| Simple Custom CSS | 4.0.3 | `wp-content/plugins/simple-custom-css/` |
| Asset CleanUp | 1.3.3.8 | `wp-content/plugins/wp-asset-clean-up/` |
| jQuery Updater | 3.4.0 | `wp-content/plugins/jquery-updater/` |
| Delete Expired Transients | 1.0.3 | `wp-content/plugins/delete-expired-transients-littlebizzy/` |
| Index Autoload | 1.1.1 | `wp-content/plugins/index-autoload-littlebizzy/` |

IgnitionDeck Commerce libraries on disk, used only if that gateway or mailer is configured: PayPal Adaptive, Stripe PHP 4.2.0, Authorize.Net, Coinbase, Mailchimp, Mandrill, SendGrid, AWS. Path: `wp-content/plugins/idcommerce/lib/`.

## Completed (landed in git, no later removal)

| Date | Commit | Feature |
|---|---|---|
| 2020-05-20 | `231da62` | Reward image plugin `img-upload` and `idjs` form fields |
| 2020-05-20 | `d5341f6` | SnapScan plugin skeleton and front-end script |
| 2020-05-20 | `19a4c8a` | Payment recording path, `.htaccess`, `project_id` on `hDeck` |
| 2020-05-20 | `be40cf4` | Sync REST route |
| 2020-05-22 | `be1d7a5` | Backer email taken from SnapScan `userReference` |
| 2020-05-23 | `ea3c0d9` | CSV export and dashboard link |
| 2020-05-24 | `bc226f1` | Admin QR table, CSS, admin filter script |
| 2020-05-24 | `4f2ebaa` | Shipping column on the CSV |
| 2020-08-17 | `59523e6` | Further sync changes in `so-snapscan.php` |
| 2020-08-17 | `a1a63cc` | Pure-donation price appended in `idf-min.js` |

PayGate templates were already in the init commit `b99d915` (2020-05-20), with backup copies dated April and May 2020.

## Planned

No planned feature is written down in the repository. Provenance: **Unknown**. Nothing in comments or README describes future work.

## In development

No branch other than `master`. No unreleased feature branch. The latest commit is a filename rename with no behaviour change.

## Recently changed

The newest product behaviour change is `a1a63cc` / `59523e6` on 2020-08-17 (SnapScan sync and the pure-donation script).

`39ef15a` (2023-08-04) renamed `ignitiondeck-idf.php.` (trailing dot) to `ignitiondeck-idf.php.back`. The file `ignitiondeck-idf.php` that WordPress would load was not removed.

## Deprecated, leftover, or unused in this tree

| Item | Evidence | Status |
|---|---|---|
| Dated `*.bck*` and `*copy*` theme files | Listed under `wp-content/themes/fundify/` and one child backup | Committed copies. Not loaded by WordPress template hierarchy |
| `XXpurchase.php` and `XXpurchase.php.bck13052020` | Second "Purchase-ts Page" template name, same PayGate form | Leftover. Two files share that template name with `project-purchase-form.php` |
| `project-purchase-form_.php` | Escaped copy of the PayGate form | Not included by `single-ignition_product.php` |
| SnapScan settings fields | API key, URL, snap code, and token inputs, and the Save button, are commented out | UI cannot save credentials. Constants are used instead |
| `five_seconds` cron interval | Registered in `so-snapscan.php` | No event is scheduled on it in this plugin |
| `idjs_get_lvl_images` | Reads meta `idjs_level_images` | Upload plugin writes `ign_project_level_image_{n}`, not that key |
| `days_left()` at the bottom of `so-snapscan.php` | Defined, not called | Unused in this plugin |
| WP Crowdfunding 2.0.3 | Plugin tree present | No Overdrive code references it. Activation **Unknown** |
| WooCommerce 4.0.1 | Plugin tree present | Custom checkout does not call WooCommerce. Activation **Unknown** |
| `wp-content/wordpress-seo/` | Yoast tree outside `plugins/` | WordPress will not load it as a plugin. No mu-plugin includes it |
| `wp-admin/test.php` | Prints a timestamp and one post meta value; contains commented SQL | Debug script committed into `wp-admin` |
| Query Monitor 3.6.0 | Development plugin vendored | Activation **Unknown** |
| Plugins named in `.gitignore` but absent | `wp-file-manager`, `give`, `updraftplus`, `duplicator`, `all-in-one-wp-migration` and its unlimited extension | Ignored and not in the tree. `updraft/` and `ai1wm-backups/` contain only deny stub files, not backup archives |
| Commented PayGate id | A second id is commented beside the active one in the purchase templates | The commented id is not used |

## Removed

Git history does not delete the PayGate, SnapScan, or image features after they were added. The only removal-like change is the 2023 rename of the stray trailing-dot IgnitionDeck file.

## Not features of this repository

- SonarQube project files and `wp-snapshots` were reported by the 2026-09-28 onboarding scan. They are not in `39ef15a`.
- CI, automated tests, and a deployment pipeline are not in git.
