'Math CAPTCHA', 'file' => 'math_captcha.admin.inc', 'page callback' => 'drupal_get_form', 'page arguments' => array('math_captcha_settings_form'), 'access arguments' => array('administer CAPTCHA settings'), 'type' => MENU_LOCAL_TASK, ); return $items; } /** * Function for getting the enabled challenges (e.g. for use as checkboxes default_value) */ function _math_captcha_enabled_challenges() { $enabled = variable_get('math_captcha_enabled_challenges', array( 'addition' => 'addition', 'subtraction' => 'subtraction', 'multiplication' => 'multiplication' )); return $enabled; } /** * Implementation of hook_captcha(). */ function math_captcha_captcha($op, $captcha_type='') { switch ($op) { case 'list': return array('Math CAPTCHA'); case 'generate': require_once('math_captcha.challenge.inc'); if ($captcha_type == 'Math CAPTCHA') { // get the available challenges $challenges = array_filter(_math_captcha_enabled_challenges()); $challenge = $challenges[array_rand($challenges)]; $form_item = call_user_func("_math_captcha_{$challenge}_challenge"); return $form_item; } } }