WP Manifestindependent plugin directory
manifest / events / exhibitors_code_system

Exhibitors Code System WP Registry grade B-. Medium-severity findings · 4 findingsWP RegistryMedium-severity findings · 4 findingsOpen the reportB-

★ 0stars
13krelease downloads
≈60active sites
7.1.2latest · 8mo ago

Install

Download exhibitors_code_system.7.1.2.zip From the 7.1.2 release on GitHub, Feb 9, 2026

Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/pwe-dev/exhibitors_code_system/releases/download/7.1.2/exhibitors_code_system.7.1.2.zip
Updates itself. It ships its own updater (Plugin Update Checker), so new versions appear under Dashboard → Updates.

Another Wordpress plugin... which allows you to generate automatically or manual codes for exhibitors and more.

Getting Started

Make sure You are using Gravity Forms and Wordpress 4.9+

Installing

First of all You need to make form in Gravity Forms plugin.

Creating a form for check entered code before access to form.

Create new form in Gravity Forms and add that one field to form's fields:

type = Single Line Text

And add class:

invitation_code
  • Add this field in confirmations for Form admin.

Thats all in Gravity Forms, now create a new Wordpress Page and set 'Page Template' to 'Exhibitors Code Checker'. Then insert in Your page content form You created in Gravity Forms.

Enjoy!

Creating a form for automaticaly generate invitation code for exhibitors.

Create new form in Gravity Forms and add that one field to form's fields:

type = Single Line Text

And add class:

code
  • Add this field in confirmations for exhibitor.

Go to plugin settings and set prefix for automatically generating exhibitors invitation code. For example:

XYZ2102
  • Individual Code for Exhibitor is generating this way: 'prefix_you_set'+'amount of exhibitors in current form base'. For example:
    XYZ21021

Set Your Grafity Form ID that You want to generate codes.

  • Optional: Set Your own list of codes comma separated - no comma at the end

Thats all in Gravity Forms, now create a new Wordpress Page and set 'Page Template' to 'Exhibitors Code Maker'. Then insert in Your page content form You created in Gravity Forms.

Enjoy!

  • Don't forget about link to Your Page Checker in notification for exhibitor.

Built With

Authors

PWE

Releases

Newest 25 of 55 recorded releases. Each count is every asset in that release; expand a row for the breakdown.

Tag
Published
Assets
Downloads
7.1.2 latest
Feb 9, 2026 8mo ago
exhibitors_code_system.7.1.2.zip
134
Nov 20, 2025 11mo ago
exhibitors_code_system.7.1.1.zip
70
Nov 5, 2025 11mo ago
exhibitors_code_system.7.1.0.zip
40
Nov 4, 2025 11mo ago
exhibitors_code_system.7.0.9.zip
47
Oct 20, 2025 1 year ago
exhibitors_code_system.7.0.8.zip
56
Sep 26, 2025 1 year ago
exhibitors_code_system.7.0.7.zip
126
Sep 16, 2025 1 year ago
exhibitors_code_system.7.0.6.zip
114
Aug 25, 2025 1 year ago
exhibitors_code_system.7.0.5.zip
121
Jul 23, 2025 1 year ago
exhibitors_code_system.7.0.4.zip
154
Jul 17, 2025 1 year ago
exhibitors_code_system.7.0.3.zip
132
Jun 26, 2025 1 year ago
exhibitors_code_system.7.0.2.zip
85
Jun 24, 2025 1 year ago
exhibitors_code_system.7.0.1.zip
115
Jun 23, 2025 1 year ago
exhibitors_code_system.7.0.0.zip
101
Jun 9, 2025 1 year ago
exhibitors_code_system.6.9.9.zip
148
May 26, 2025 1 year ago
exhibitors_code_system.6.9.8.zip
117
May 22, 2025 1 year ago
exhibitors_code_system.6.9.7.zip
101
May 16, 2025 1 year ago
exhibitors_code_system.6.9.6.zip
97
Apr 3, 2025 1 year ago
exhibitors_code_system.6.9.5.zip
95
Feb 26, 2025 1 year ago
exhibitors_code_system.6.9.4.zip
101
Feb 10, 2025 1 year ago
exhibitors_code_system.6.9.3.zip
83
Nov 14, 2024 1 year ago
exhibitors_code_system.zip
102
Nov 12, 2024 1 year ago
exhibitors_code_system.6.9.1.zip
103
6.7
Sep 11, 2024 2 years ago
exhibitors_code_system.6.7.zip
94
6.6
Jul 18, 2024 2 years ago
exhibitors_code_system.zip
99
6.5
Jul 17, 2024 2 years ago
exhibitors_code_system.zip
58
All releases on GitHub →

Active-site estimate ≈60 comes from the median of recent superseded releases. Method.

B- grade

Security

Exhibitors Code System 7.1.2 · audited by WP Registry

Medium-severity findings.

3 medium 1 low
Audited release
7.1.2
Findings
4
Worst severity
medium
Content hash
eadef31a4eab7fd7c6e4d5b1…

Findings

  • medium [phpinclude] shortcode includes arbitrary theme-relative PHP with path traversal

    file_access

    PHP_Include is registered as [phpinclude] whenever a plugin page template loads shortcodes.php. The file attribute is concatenated into get_theme_root()/get_template()/$file.php and include()'d with no basename(), realpath() prefix check, or capability gate. The plugin itself calls [phpinclude file='page'] from all three public templates, which also registers the shortcode for the rest of that request (the_content, widgets). Anyone who can put shortcodes on those pages (edit_pages: Editor+, and on Multisite Editors lack unfiltered_html but can still insert shortcodes) can include ../../../wp-config.php or other .php files outside the theme. Combined with any writable PHP (compromised upload, plugin file), this is RCE; standalone it is local file inclusion of executable PHP. Subscriber cannot insert the shortcode; this is still below manage_options.

    shortcodes.php:65-74

    Recommendation

    Do not expose include() as a shortcode. Hardcode the theme page.php include in the templates. If a file parameter must exist, allowlist a fixed set of names and reject .. and directory separators.

  • medium Invitation codes are sequential and the next value is printed in public JavaScript

    predictable_token

    javascript_shortcode (hooked onto Exhibitors Code Maker via add_additional_js_content on the_content) counts rows in wp_gf_entry for get_option('form_id') and sets the hidden Gravity Forms .code field to code_prefix concatenated with (count+1). That assignment is inline JS on a public page, so any visitor learns PREFIX and the next sequence number. Prior codes PREFIX1…PREFIXN-1 are then accepted by page-checkform.php (SQL meta_value match or list/CSV) and unlock the visitor or VIP registration form. The readme documents this scheme (prefix + amount of exhibitors). Consumer is the Visitor Code Checker gate: the plugin's only authorization check for registration. No rate limit or unguessable token (wp_generate_password / CSPRNG) is used.

    shortcodes.php:102-123

    Recommendation

    Generate invitation codes with wp_generate_password / random_bytes, store a hashed lookup, and do not print the next code in page source. Rate-limit checker guesses. Do not treat every Gravity Forms meta_value as a valid code.

  • medium Invitation-code CSVs are stored as publicly reachable upload URLs

    information_disclosure

    csv_file_upload / vip_csv_file_upload pass the admin-selected file to wp_handle_upload() and persist $urls['url'] (typically https://site/wp-content/uploads/YYYY/MM/filename.csv) in options csv_file and vip_csv_file. page-checkform.php fopen()s those options on every Visitor Code Checker request to build the valid-code arrays. WordPress uploads are world-readable; the original filename is kept, so a guessed or crawled /wp-content/uploads/…/codes.csv (or directory listing) dumps every exhibitor and VIP invitation code. Those codes are the secret that prepend_user_form / prepend_vip_form use to reveal the registration Gravity Forms. Upload is manage_options + options.php nonce (not subscriber-reachable); the confidentiality failure is the storage location.

    form_exhibit_ids.php:561-582

    Recommendation

    Store code lists in a directory protected by web-server rules (or as a private option/attachment with no public URL). Persist a filesystem path, not the public URL, and fopen that path. Restrict upload mimes to csv/txt.

  • low Invitation-code lookup interpolates $_GET into mysqli queries without a prepared statement

    unsafe_input

    page-checkform.php and page-checkformexhibitor.php assign $passcode from $_GET['input_value'] (strtoupper on the visitor template) and concatenate it into SELECT * FROM `wp_gf_entry_meta` WHERE `meta_value` = '$passcode' …. javascript_shortcode does the same with get_option('form_id') into wp_gf_entry. Queries run over a raw mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) with no mysqli_real_escape_string / $wpdb->prepare and hardcoded wp_ table prefixes. These files run as WP page templates, so wp_magic_quotes() has already addslashes()'d $_GET; there is no wp_unslash and the value sits in a quoted string, so this is not currently exploitable as SQL injection on a default install. It remains unsafe input: a future stripslashes, a different charset, or loading the template without WP bootstrap would make it SQLi, and the checker is unauthenticated.

    page-checkform.php:34-46

    Recommendation

    Use $wpdb->prepare() (or mysqli prepared statements) with the real $wpdb->prefix. Cast form IDs with absint(). Abort if input_value is missing instead of interpolating null.

WP Registry hashes the installable build and reports on that exact bytes-for-bytes copy. Embargoed findings are withheld until they are disclosed, so a clean verdict means nothing public is outstanding. WP Manifest does not audit code itself.