WP Manifestindependent plugin directory
manifest / events / disciple-tools-training

Disciple.Tools - Training WP Registry grade B. Medium-severity findings · 2 findingsWP RegistryMedium-severity findings · 2 findingsOpen the reportB #4 in Events & Booking

Adds simple training events tracking inside Disciple.Tools. It has features to support sharing, tasks, meeting times, connections to participants and leaders, and mapped locations.

★ 2stars
2.1krelease downloads
≈110active sites
2.7.1latest · 8mo ago

Install

Download disciple-tools-training.zip From the 2.7.1 release on GitHub, Feb 18, 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/discipletools/disciple-tools-training/releases/download/2.7.1/disciple-tools-training.zip
Updates itself. It ships its own updater (Plugin Update Checker), so new versions appear under Dashboard → Updates.

Plugin Banner

Disciple.Tools - Training

Adds simple training events tracking inside Disciple.Tools. It has features to support sharing, tasks, meeting times, connections to participants and leaders, and mapped locations.

Purpose

Disciple making movements are always to some degree complemented with training movements. This plugin tracks members, planned meeting times, groups that might come from the training locations, and things like video links and tags.

Usage

Will Do

  • Tracks scheduled meeting times
  • Tracks members and leaders of the training
  • Tracks parent, peer, and child training related to this training
  • Tracks comments and discussion
  • Can be shared and followed
  • Tracks status of the training (New, Proposed, Scheduled, In Progress, Complete, Paused, Closed)

Will Not Do

  • Train for you!

Requirements

  • Disciple.Tools Theme installed on a Wordpress Server

Installing

  • Install as a standard Disciple.Tools/Wordpress plugin in the system Admin/Plugins area.
  • Requires the user role of Administrator.

Contribution

Contributions welcome. You can report issues and bugs in the Issues section of the repo. You can present ideas in the Discussions section of the repo. And code contributions are welcome using the Pull Request system for git. For a more details on contribution see the contribution guidelines.

Screenshots

list view list

details view details

Video Walk-Through

Alt text View Video

Releases

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

Tag
Published
Assets
Downloads
2.7.1 latest
Feb 18, 2026 8mo ago
disciple-tools-training.zip
326
Jan 16, 2026 9mo ago
disciple-tools-training.zip
127
Jun 18, 2025 1 year ago
disciple-tools-training.zip
112
Nov 14, 2024 1 year ago
disciple-tools-training.zip
108
Sep 26, 2024 2 years ago
disciple-tools-training.zip
83
May 14, 2024 2 years ago
disciple-tools-training.zip
111
Jan 31, 2024 2 years ago
disciple-tools-training.zip
149
Jan 26, 2024 2 years ago
disciple-tools-training.zip
65
Jun 1, 2023 3 years ago
disciple-tools-training.zip
127
Apr 13, 2023 3 years ago
disciple-tools-training.zip
72
Feb 16, 2023 3 years ago
disciple-tools-training.zip
82
Nov 23, 2022 3 years ago
disciple-tools-training.zip
82
Oct 3, 2022 4 years ago
disciple-tools-training.zip
73
Sep 22, 2022 4 years ago
disciple-tools-training.zip
46
May 4, 2022 4 years ago
disciple-tools-training.zip
74
Oct 29, 2021 4 years ago
disciple-tools-training.zip
84
Aug 18, 2021 5 years ago
disciple-tools-training.zip
50
Aug 18, 2021 5 years ago
disciple-tools-training.zip
8
Apr 26, 2021 5 years ago
disciple-tools-training.zip
50
Apr 23, 2021 5 years ago
disciple-tools-training.zip
42
Apr 5, 2021 5 years ago
disciple-tools-training.zip
28
Mar 19, 2021 5 years ago
disciple-tools-training.zip
24
Mar 18, 2021 5 years ago
disciple-tools-training.zip
18
Mar 18, 2021 5 years ago
disciple-tools-training.zip
4
Mar 3, 2021 5 years ago
disciple-tools-training.zip
25
All releases on GitHub →

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

B grade

Security

Disciple.Tools - Training 2.7.1 · audited by WP Registry

Medium-severity findings.

2 medium
Audited release
2.7.1
Findings
2
Worst severity
medium
Content hash
173032d70b3479a2c9cae30d…

Findings

  • medium meeting_times updates write or delete arbitrary post meta keys

    unsafe_input

    dt_post_update_fields is applied by Disciple_Tools theme DT_Posts::update_post after can_update() and before field allowlisting. For trainings, any meeting_times[] object with a client-supplied key is passed straight to update_post_meta($post_id, $field['key'], $field['value']) or delete_post_meta($post_id, $field['key']) with no prefix check that the key starts with meeting_times_. A Multiplier who can edit a training (access_trainings/update_trainings on a record they own or are shared with) can POST /wp-json/dt-posts/v2/trainings/{id} with meeting_times:[{key:'assigned_to',value:'user-N'}], {key:'status',value:'...'}, or {key:'_any_protected_key',delete:true} and change or remove meta that the datetime_series UI is not supposed to touch. Blast is that one post (not site-wide options or other users' posts); new keys are generated with meeting_times_ + unique_hash and are safe.

    post-type/module-base.php:618-644

    Recommendation

    Accept only keys that match /^meeting_times_[a-zA-Z0-9]+$/ (or that already exist as meeting_times_* on this post). Ignore or reject any other key. Unset meeting_times from $fields after handling so later update_post_meta loops cannot reuse the array.

  • medium Training map REST accepts arbitrary post_type and lists other records' titles and coordinates

    information_disclosure

    DT_Metrics_Mapbox_Trainings_Maps registers POST dt-metrics/trainings/{cluster_geojson,get_grid_totals,get_list_by_grid_id,points_geojson} with permission_callback __return_true. Routes are only added when the current user has view_any_trainings or view_project_metrics (constructor gate) and a Mapbox key exists; unauth/Multiplier therefore get 404. Once registered, handlers take post_type and query from the JSON body. $this->base_filter is empty, so the query is not forced onto trainings. Disciple_Tools_Mapping_Queries::cluster_geojson / query_under_location_grid_meta_id then return post_title, post_id, lng, lat for that type. The plugin-defined training_admin role has view_any_trainings but not view_any_contacts; POSTing {post_type:'contacts',query:{}} returns every mapped contact name and coordinates. get_list_by_grid_id also skips the inner has_permission() check that the sibling methods have. Personal-map class (access_trainings, assigned_to=me) is the same pattern but scoped to the current user.

    metrics/mapbox-maps.php:76-170

    Recommendation

    Hard-code post_type to 'trainings' (or ignore the body and use $this->post_type). Put the same has_permission() check on get_list_by_grid_id. Replace permission_callback __return_true with a callback that calls has_permission() so routes are not world-callable if registration timing ever changes.

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.