add earlyaccess code generation

This commit is contained in:
2017-06-29 12:40:47 +10:00
parent e90d02f46e
commit b5d9b5ea7f
4 changed files with 73 additions and 9 deletions

View File

@@ -38,4 +38,59 @@ function booking_earlyaccess_admin() {
$output .= theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => $attributes));
return $output;
}
/**
* Function to generate early access codes for the current event
*/
function booking_earlyaccess_generate_codes() {
global $event;
$num_codes_to_add = 0;
$num_codes_available = 0;
$code_length = 6;
//determine number of currently available access codes for this event
$codecount_query = db_query("SELECT count(*) as num_codes FROM {booking_regn_earlyaccess_codes} where booking_eventid = :eventid and booking_regn_earlyaccess_code_avail = 'Y'",
array(':eventid' => $event->eid))
->fetchObject();
$num_codes_available = $codecount_query->num_codes;
//get the number of codes we need to have available from variable_get('booking_earlyaccess_codes_count')
$num_codes_to_add = variable_get('booking_earlyaccess_codes_count', 0) - $num_codes_available;
//add required number of codes to database table
//use the multi-insert query type at https://drupal.org/node/310079
$insert_query = db_insert('booking_regn_earlyaccess_codes')
->fields(array(
'booking_eventid',
'booking_regn_earlyaccess_code',
'booking_regn_earlyaccess_code_avail',
));
for ($i = 0; $i < $num_codes_to_add; $i++) {
$insert_query->values(array(
'booking_eventid' => $event->eid,
'booking_regn_earlyaccess_code' => booking_getToken(code_length),
'booking_regn_earlyaccess_code_avail' => 'Y',
));
}
$insert_query->execute();
}
/**
* Function to calculate unique code
* @see https://stackoverflow.com/questions/1846202/php-how-to-generate-a-random-unique-alphanumeric-string
* Requires PHP7
*/
function booking_getToken($length){
$token = "";
$codeAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
//$codeAlphabet.= "abcdefghijklmnopqrstuvwxyz";
$codeAlphabet.= "0123456789";
$max = strlen($codeAlphabet); // edited
for ($i=0; $i < $length; $i++) {
$token .= $codeAlphabet[random_int(0, $max-1)];
}
return $token;
}