I just installed the plugin. I think it is much to complicated to accept new attendees in moderated mode.
So I edited the "attendees.php" to add a status collum:
<?php
include('wpframe.php');
wpframe_stop_direct_call(__FILE__);
if($_REQUEST['action'] == 'delete' or $_REQUEST['action'] == t('Delete Selected')) {
foreach ($_REQUEST['selected_rows'] as $id) {
$wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->prefix}eventr_event_attendee WHERE attendee_ID='%d'", $id));
}
}
// added by a.hoereth
if($_REQUEST['action'] == 'edit_status') {
if($_POST['status'] == 'ckecked') { $status = '1'; } else { $status = '0'; }
$id = $_POST['attendee_id'];
$sql = "UPDATE
{$wpdb->prefix}eventr_attendee
SET
status = '$status'
WHERE
ID = '$id' ";
$result = mysql_query($sql) OR die(mysql_error());
wpframe_message("Attendee details updated");
}
$event_name = $wpdb->get_var($wpdb->prepare("SELECT name FROM {$wpdb->prefix}eventr_event WHERE ID=%d", $_REQUEST['event']));
?>
<div class="wrap">
<h2><?php echo t("Attendees for ") . stripslashes($event_name); ?></h2>
<?php
wp_enqueue_script( 'listman' );
wp_enqueue_script( 'jquery' );
wp_print_scripts();
?>
<p><?php printf(t('To add the registeration form to your blog, insert the code [EVENTR REGISTRATION %d] into any post.'), $_REQUEST['event']) ?></p>
<p><?php printf(t('To show the attendee list, insert the code [EVENTR ATTENDEES %d] into any post.'), $_REQUEST['event']) ?></p>
<?php
$offset = 0;
$page = 1;
$total_items = 0;
$page_links = '';
$items_per_page = 10;
$items_per_page_choice = array(10,50,100,500);
if(isset($_REQUEST['items_per_page'])) $items_per_page = $_REQUEST['items_per_page'];
if(isset($_REQUEST['paged']) and $_REQUEST['paged']) {
$page = intval($_REQUEST['paged']);
$offset = ($page - 1) * $items_per_page;
}
// Retrieve the Attendees
$search = '';
if(isset($_REQUEST['search']) and $_REQUEST['search']) $search = "AND A.name LIKE '%$_REQUEST[search]%'";
$all_attendee = $wpdb->get_results("SELECT A.ID,A.name,A.url,A.email, EA.added_on, A.status FROM <code>{$wpdb->prefix}eventr_attendee</code> AS A
INNER JOIN <code>{$wpdb->prefix}eventr_event_attendee</code> AS EA ON attendee_ID=A.ID
WHERE EA.event_ID=$_REQUEST[event] $search ORDER BY A.name LIMIT $offset, $items_per_page");
$moderation_on = get_option('eventr_moderation');
?>
<form action="" method="post"><!-- Need to put this in 2 diff forms -or searching paging will be mixed with other paging -->
<input type="text" value="<?php echo $_REQUEST['search'] ?>" name="search" />
<input type="submit" value="Search" name="action" />
<input type="hidden" name="paged" value="1" />
</form>
<form action="" method="post">
<?php
if(count($all_attendee)) {
print '<div class="tablenav">';
// Get total attendees - for paging purpose
$total_items = $wpdb->get_var("SELECT COUNT(*) FROM <code>{$wpdb->prefix}eventr_attendee</code> AS A
INNER JOIN <code>{$wpdb->prefix}eventr_event_attendee</code> AS EA ON attendee_ID=A.ID
WHERE EA.event_ID=$_REQUEST[event] $search");
$total_pages = ceil($total_items / $items_per_page);
$page_links = paginate_links( array(
'base' => add_query_arg( 'paged', '%#%' ),
'format' => '',
'total' => $total_pages,
'current' => $page
));
if ( $page_links ) echo "<div class='tablenav-pages'>$page_links</div>";
?>
Items Per Page: <select name="items_per_page" id="items_per_page">
<?php
foreach($items_per_page_choice as $v) {
print "<option value='$v'";
if($_REQUEST['items_per_page'] == $v) print ' selected="selected"';
print ">$v</option>";
}
?>
</select>
<?php } ?>
<table class="widefat">
<thead>
<tr>
<th scope="col"> </th>
<th scope="col" style="text-align: center;">#</div></th>
<th scope="col"><?php e('Attendee Name') ?></th>
<th scope="col"><?php e('Email') ?></th>
<th scope="col"><?php e('Registered On') ?></th>
<?php // added by a.hoereth ?>
<th scope="col"><?php e('Moderation Status') ?></th>
<th scope="col" colspan="2"><?php e('Action') ?></th>
</tr>
</thead>
<tbody id="the-list">
<?php
if (count($all_attendee)) {
$attendee_count = $offset;
foreach($all_attendee as $attendee) {
$class = ('alternate' == $class) ? '' : 'alternate';
$attendee_count++;
?>
<tr id='attendee-<?php echo $attendee->ID ?>' class='row <?php echo $class ?>' <?php
if($moderation_on == 1 and $attendee->status == 0) echo 'style="background-color:#ffd59d;"';?>>
<th scope="row"><input type="checkbox" name="selected_rows[]" value="<?php echo $attendee->ID?>" class="row-selector" /></th>
<th scope="row" style="text-align: center;"><?php echo $attendee_count ?></th>
<td><?php
if($attendee->url) print "<a>url}'>". stripslashes($attendee->name) . "</a>";
else print stripslashes($attendee->name);
?></td>
<td><?php echo $attendee->email?></td>
<td><?php echo date(get_option('date_format') . ' ' . get_option('time_format'), strtotime($attendee->added_on)) ?></td>
<?php // added by a.hoereth ?>
<td>
<form method="post" action="">
<input type="checkbox" name="status" value="ckecked"<?php if($attendee->status) print " checked='checked'"; ?> />
<input type="hidden" name="attendee_id" value="<?php echo $attendee->ID ?>" />
<input type="hidden" name="action" value="edit_status" />
<input type="submit" name="submit" value="<?php e('Save') ?>" />
</form>
</td>
<td><a>ID?>&event=<?php echo $_REQUEST['event']?>&paged=<?php echo isset($_REQUEST['paged']) ? $_REQUEST['paged'] : 1 ?>'
class='edit'><?php e('View/Edit Details')?></a></td>
<td><a>ID?>&event=<?php echo $_REQUEST['event']?>&paged=<?php echo isset($_REQUEST['paged']) ? $_REQUEST['paged'] : 1 ?>'
class='delete' onclick="return confirm('<?php e(addslashes("You are about to delete this Attendee. Press 'OK' to delete and 'Cancel' to stop."))?>');"><?php e('Delete')?></a></td>
</tr>
<?php
}
} else {
?>
<tr>
<td colspan="6"><?php e('No attendeees found.') ?></td>
</tr>
<?php
}
?>
</tbody>
</table>
<?php if(count($all_attendee)) { ?>
<input type="submit" value="<?php e('Delete Selected') ?>" id="delete-selected-rows" name="action" />
<a>"><?php e('Export Attendee data for this event as a CSV file') ?></a>
<div class="tablenav">
<?php
if ( $page_links ) echo "<div class='tablenav-pages'>$page_links</div>";
?>
<?php e("Items Per Page"); ?>: <select name="items_per_page" id="items_per_page">
<?php
foreach($items_per_page_choice as $v) {
print "<option value='$v'";
if($_REQUEST['items_per_page'] == $v) print ' selected="selected"';
print ">$v</option>";
}
?>
</select>
</div>
<input type="hidden" name="paged" value="<?php echo isset($_REQUEST['paged']) ? $_REQUEST['paged'] : 1 ?>" />
<?php } ?>
</form>
</div>
<script type="text/javascript">
function init() {
jQuery(".row").click(function(e){
if(e.target.tagName == "INPUT") return;
var input = this.getElementsByTagName("input")[0];
input.checked = (input.checked) ? false : true;
});
jQuery("#delete-selected-rows").click(function(e) {
var cancel = false;
// Make sure that there is a few rows selected before attempting a delete.
var selected_count = 0;
jQuery(".row-selector").each(function() {
if(this.checked) selected_count++;
});
if(!selected_count) {
cancel = true;
alert('<?php e('Please select some rows to delete') ?>');
}
// Show a confirmation message.
if(!cancel && !confirm('<?php echo addslashes(t("You are about to delete this Attendee. Press 'OK' to delete and 'Cancel' to stop."))?>')) cancel = true;
if(cancel) {
e.preventDefault();
e.stopPropagation();
}
});
jQuery("#items_per_page").change(function(e) {
var url = document.location.href;
url = url.replace(/\&items_per_page\=\d+/,"");
document.location.href = url +'&items_per_page='+this.value;
});
}
jQuery(document).ready(init);
</script>
Things I added got the "//added by a.hoereth" php comment.
Maybe you could implement something like this in future updates - if there are any coming. Even better would be the possibility to accept more than one attendee at a time.