start implementing stored waiting list position
This commit is contained in:
@@ -236,6 +236,26 @@ function _booking_get_waitinglist_top()
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper function to retrieve all the people on the waiting list
|
||||||
|
*/
|
||||||
|
function _booking_get_waitinglist()
|
||||||
|
{
|
||||||
|
global $event;
|
||||||
|
|
||||||
|
// Taken from the Waiting List page, not very optimised
|
||||||
|
$result = db_query('SELECT DISTINCT nid, booking_firstname, booking_lastname, booking_state, booking_readinggroup, booking_country, booking_status
|
||||||
|
FROM (
|
||||||
|
SELECT p.nid, p.booking_firstname, p.booking_lastname, p.booking_state, p.booking_country, p.booking_readinggroup, pay.booking_payment_date, p.booking_status
|
||||||
|
FROM {booking_person} p, {booking_payment} pay
|
||||||
|
WHERE p.booking_eventid = :eid and p.nid = pay.booking_person_nid and ( p.booking_status = 2 or p.booking_status = 4)
|
||||||
|
) AS booking
|
||||||
|
ORDER BY booking_status, booking_payment_date',
|
||||||
|
array(':eid' => $event->eid));
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper function to update the status of a registration
|
* Helper function to update the status of a registration
|
||||||
*/
|
*/
|
||||||
|
@@ -760,6 +760,16 @@ function booking_update_7250() {
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add field to store waiting list position
|
||||||
|
*/
|
||||||
|
function booking_update_7251() {
|
||||||
|
$spec = array('type' => 'int', 'length' => '11', 'default' => 0, 'not null' => FALSE);
|
||||||
|
db_add_field('booking_person', 'booking_waitlist_pos', $spec);
|
||||||
|
//update the view to match the new table definition
|
||||||
|
_booking_node_create_mysqlview();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add custom cache table
|
* Add custom cache table
|
||||||
*/
|
*/
|
||||||
@@ -852,6 +862,7 @@ function booking_schema() {
|
|||||||
'booking_gender' => array('type' => 'varchar', 'length' => '1', 'not null' => TRUE),
|
'booking_gender' => array('type' => 'varchar', 'length' => '1', 'not null' => TRUE),
|
||||||
'booking_dob' => array('type' => 'int', 'not null' => TRUE, 'disp-width' => '11'),
|
'booking_dob' => array('type' => 'int', 'not null' => TRUE, 'disp-width' => '11'),
|
||||||
'booking_status' => array('type' => 'int', 'length' => '11', 'default' => 0, 'not null' => FALSE),
|
'booking_status' => array('type' => 'int', 'length' => '11', 'default' => 0, 'not null' => FALSE),
|
||||||
|
'booking_waitlist_pos' => array('type' => 'int', 'length' => '11', 'default' => 0, 'not null' => FALSE),
|
||||||
'booking_committee_member' => array('type' => 'varchar', 'length' => '1', 'not null' => FALSE, 'default' => 'N'),
|
'booking_committee_member' => array('type' => 'varchar', 'length' => '1', 'not null' => FALSE, 'default' => 'N'),
|
||||||
'booking_welfare_required' => array('type' => 'varchar', 'length' => '1', 'not null' => FALSE, 'default' => 'N'),
|
'booking_welfare_required' => array('type' => 'varchar', 'length' => '1', 'not null' => FALSE, 'default' => 'N'),
|
||||||
'booking_barcode' => array('type' => 'varchar', 'length' => '20', 'not null' => FALSE),
|
'booking_barcode' => array('type' => 'varchar', 'length' => '20', 'not null' => FALSE),
|
||||||
|
@@ -612,6 +612,9 @@ function booking_update($node) {
|
|||||||
else {
|
else {
|
||||||
watchdog('booking', 'Still no room on the booked in list though.');
|
watchdog('booking', 'Still no room on the booked in list though.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update waiting list positions
|
||||||
|
_booking_waitinglist_update_trigger();
|
||||||
}
|
}
|
||||||
//check if someone has moved to booked-in list from waiting-list
|
//check if someone has moved to booked-in list from waiting-list
|
||||||
elseif ($previous_status->booking_status == 2 && $node->booking_status == 1) {
|
elseif ($previous_status->booking_status == 2 && $node->booking_status == 1) {
|
||||||
@@ -637,6 +640,8 @@ function booking_update($node) {
|
|||||||
$waitinglist_nid = _booking_get_waitinglist_top();
|
$waitinglist_nid = _booking_get_waitinglist_top();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update waiting list positions
|
||||||
|
_booking_waitinglist_update_trigger();
|
||||||
}
|
}
|
||||||
//check if someone has been demoted to the "missed payment deadline" status from being booked-in
|
//check if someone has been demoted to the "missed payment deadline" status from being booked-in
|
||||||
elseif ($previous_status->booking_status == 1 && $node->booking_status == 4) {
|
elseif ($previous_status->booking_status == 1 && $node->booking_status == 4) {
|
||||||
@@ -660,7 +665,7 @@ function booking_update($node) {
|
|||||||
//-1 means there was no one on the waiting list
|
//-1 means there was no one on the waiting list
|
||||||
if ($temp_nid != -1) {
|
if ($temp_nid != -1) {
|
||||||
//update their registration status
|
//update their registration status
|
||||||
_booking_change_status($temp_nid,1);
|
_booking_change_status($temp_nid, 1);
|
||||||
//send them an email
|
//send them an email
|
||||||
_booking_promoted_from_waitinglist_email($temp_nid);
|
_booking_promoted_from_waitinglist_email($temp_nid);
|
||||||
}
|
}
|
||||||
@@ -783,6 +788,26 @@ function booking_delete($node) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper function to update the waiting list position for everyone on the waiting list
|
||||||
|
*/
|
||||||
|
function _booking_waitinglist_update_trigger()
|
||||||
|
{
|
||||||
|
global $event;
|
||||||
|
$waiting_list = _booking_get_waitinglist();
|
||||||
|
$counter = 1;
|
||||||
|
|
||||||
|
foreach ($waiting_list as $person) {
|
||||||
|
db_update('booking_person')
|
||||||
|
->fields(array(
|
||||||
|
'booking_waitlist_pos' => $counter++,
|
||||||
|
))
|
||||||
|
->condition('nid', $person->nid)
|
||||||
|
->execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function booking_view($node, $view_mode) {
|
function booking_view($node, $view_mode) {
|
||||||
global $event;
|
global $event;
|
||||||
|
Reference in New Issue
Block a user