function cas_register_form($errors) {
global $cas_text, $cas_textcount, $cas_myurl, $cas_imgheight, $cas_imgwidth, $cas_limitcolor, $cas_borderclr, $cas_message, $cas_displaytext, $cas_table, $cas_count, $cas_wav, $wpdb;
// Insert a row into the count database to generate an auto_increment number
$wpdb->query('INSERT INTO ' . $cas_count . ' (id) VALUES (NULL)');
// Get the id of the inserted count to feed to the word table and image generator
$cas_rowid = $wpdb->get_var('SELECT last_insert_id()');
// Pick a random number
$cas_antiselect = rand( 1, $cas_textcount ); // 0 is for invalid, so don't select it
// Put the word corresponding to the random number into the database
$wpdb->query('INSERT INTO ' . $cas_table . ' (id, createtime, word) VALUES (' . $cas_rowid . ', ' . time() . ', \'' . $cas_text[$cas_antiselect] . '\')');
// Delete the row from the count table
$wpdb->query('DELETE FROM ' . $cas_count . ' WHERE id = ' . $cas_rowid);
// Do some table admin while we can :D
if (strlen($cas_rowid) == 10) {
// Delete all rows from the count table
$wpdb->query('DELETE FROM ' . $cas_count);
// Reset the table's auto increment if it's getting too huge
$wpdb->query('ALTER TABLE ' . $cas_count . ' AUTO_INCREMENT=1');
// Delete any anti-spam words more than a day old
$wpdb->query('DELETE FROM ' . $cas_table . ' WHERE ' . time() . ' > createtime + 86400');
}
// echo( "\t\t\t".'
'."\n\t\t\t\t" );
if ( $errors->get_error_message('cas_register') ) {
echo '
\n\t\t\t" );
}
function cas_register_post($result) {
global $_POST, $cas_text, $cas_textcount, $user_ID, $cas_displaytext, $cas_table, $wpdb, $cas_reg_blacklist;
// Validate the form input values
if( isset( $_POST['securitycode'] ) )
{
// Consider only the first 50 characters in the posted word
$securitycode = substr( strval( $_POST['securitycode'] ), 0, 50 );
// Remove all spaces and hyphens to give the commenter a break!
$securitycode = str_replace(' ', '', $securitycode);
$securitycode = str_replace('-', '', $securitycode);
} else {
$securitycode = '';
}
if( isset( $_POST['matchthis'] ) )
{
$matchnum = intval( $_POST['matchthis'] );
} else {
$matchnum = 0;
}
if ( $securitycode == '' )
{
$result['errors']->add('cas_register', $cas_displaytext['emptyfield']);
return $result;
}
else {
// Get the anti-spam word from the database
$matchthis = $wpdb->get_var('SELECT word FROM ' . $cas_table . ' WHERE id = ' . $matchnum);
// If this row doesn't exist, say something
if (is_null($matchthis)) {
$result['errors']->add('cas_register', $cas_displaytext['register_alreadyused']);
return $result;
}
else {
// Remove all spaces and hyphens, since we removed them from what the commenter entered
$matchthis = str_replace(' ', '', $matchthis);
$matchthis = str_replace('-', '', $matchthis);
// Check what was entered against what the code should be
if ( strtolower( $matchthis ) != strtolower( $securitycode ) ) {
$result['errors']->add('cas_register', $cas_displaytext['register_wrongfield']);
return $result;
}
else {
// The word matched, so delete the row for the anti-spam word so that it cannot be used again
$wpdb->query('DELETE FROM ' . $cas_table . ' WHERE id = ' . $matchnum);
unset( $matchthis );
// Do some more table admin while we can :D
// Delete any anti-spam words more than a day old
$wpdb->query('DELETE FROM ' . $cas_table . ' WHERE ' . time() . ' > createtime + 86400');
}
}
}
foreach ($cas_reg_blacklist as $cas_blacklist) {
if (stristr($_POST['user_email'], $cas_blacklist)) {
$result['errors']->add('cas_register', $cas_displaytext['register_blocked']);
return $result;
break;
}
}
// All checks passed!
return $result;
}
// Add registration protection to the appropriate hooks only if it has been enabled in this plugin's settings
if ($cas_reg_protection) {
add_action('signup_extra_fields', 'cas_register_form');
add_action('wpmu_validate_user_signup', 'cas_register_post');
}
}
?>