/** * Account spam test * @return bool */ public static function onAbortNewAccount($user, &$message) { global $wgCTAccessKey, $wgCTServerURL, $wgRequest, $wgCTAgent, $wgCTExtName; $allowAccount = true; // The facility in which to store the query parameters $ctRequest = new CleantalkRequest(); $ctRequest->auth_key = $wgCTAccessKey; $ctRequest->sender_email = $user->mEmail; $ctRequest->sender_nickname = $user->mName; $ctRequest->agent = $wgCTAgent; $ctRequest->sender_ip = $wgRequest->getIP(); $ctRequest->js_on = CTBody::JSTest(); $ctRequest->submit_time = CTBody::SubmitTimeTest(); $ctRequest->sender_info = json_encode(array('page_url' => htmlspecialchars(@$_SERVER['SERVER_NAME'] . @$_SERVER['REQUEST_URI']))); $ct = new Cleantalk(); $ct->server_url = $wgCTServerURL; // Check $ctResult = $ct->isAllowUser($ctRequest); // Allow account if we have any API errors if ($ctResult->errno != 0) { if (CTBody::JSTest() != 1) { $ctResult->allow = 0; $ctResult->comment = "Forbidden. Please, enable Javascript."; } else { $ctResult->allow = 1; } } // Disallow account with CleanTalk comment if ($ctResult->allow == 0) { $allowAccount = false; $message = $ctResult->comment; } if ($ctResult->inactive === 1) { CTBody::SendAdminEmail($wgCTExtName, $ctResult->comment); } return $allowAccount; }