Last active
October 6, 2020 18:54
-
-
Save xnau/24551c411e3be9486d5c0c7dc05b29e8 to your computer and use it in GitHub Desktop.
Shows how to set up a Participants Database signup form that limits the number of signups
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* | |
* signup form that limits the number of signups | |
* | |
*/ | |
// set the maximum number of signups | |
$limit = 100; | |
// set up the query to get the current total | |
$query = 'SELECT COUNT(*) FROM ' . Participants_Db::$participants_table; | |
// get the total | |
global $wpdb; | |
$total = $wpdb->get_var( $query ); | |
?> | |
<div class="wrap <?php echo $this->wrap_class ?>" > | |
<?php if ( $total > $limit ) : // show this if the limit has been reached ?> | |
<p>There are no more signups available</p> | |
<?php else : // print the signup form ?> | |
<?php // output any validation errors | |
$this->print_errors(); ?> | |
<?php $this->print_form_head(); // this must be included before any fields are output. hidden fields may be added here as an array argument to the function ?> | |
<table class="form-table pdb-signup"> | |
<?php while ( $this->have_groups() ) : $this->the_group(); ?> | |
<tbody class="field-group field-group-<?php echo $this->group->name ?>"> | |
<?php if ( $this->group->has_fields() && $this->group->printing_title() ) : // are we printing group titles and descriptions? ?> | |
<tr class="signup-group"> | |
<td colspan="2"> | |
<?php $this->group->print_title() ?> | |
<?php $this->group->print_description() ?> | |
</td> | |
</tr> | |
<?php else : ?> | |
<?php endif; // end group title/description row ?> | |
<?php while ( $this->have_fields() ) : $this->the_field(); ?> | |
<tr class="<?php $this->field->print_element_class() ?>"> | |
<th for="<?php $this->field->print_element_id() ?>"><?php $this->field->print_label(); // this function adds the required marker ?></th> | |
<td> | |
<?php $this->field->print_element_with_id(); ?> | |
<?php if ( $this->field->has_help_text() ) :?> | |
<span class="helptext"><?php $this->field->print_help_text() ?></span> | |
<?php endif ?> | |
</td> | |
</tr> | |
<?php endwhile; // fields ?> | |
</tbody> | |
<?php endwhile; // groups ?> | |
<tbody class="field-group field-group-submit"> | |
<tr> | |
<td class="submit-buttons"> | |
<?php $this->print_submit_button('button-primary'); // you can specify a class for the button ?> | |
</td> | |
<td class="submit-buttons"> | |
<?php $this->print_retrieve_link(); // this only prints if enabled in the settings ?> | |
</td> | |
</tr> | |
</tbody> | |
</table> | |
<?php $this->print_form_close() ?> | |
<?php endif ?> | |
</div> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
If you don't want to to count all the records, you can change the query. For example, to only count the "approved" records, you can use a query like this:
'SELECT COUNT(*) FROM ' . Participants_Db::$participants_table . ' WHERE approved = "yes"'