[Plugin: Eventr] suggestion for quick status edit
-
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.
- The topic ‘[Plugin: Eventr] suggestion for quick status edit’ is closed to new replies.