Automatic Forum account creation

Nabeel what im trying to do is once a pilot is approved then a forum account is created, I have the creation script i just need to put it in to the trigger which i want to be the approve button, or thinking on further maybe when you click the pilots name i could add a button to create a forum account as well.

The easiest option would be to get the script to fire reading the profile name email etc when the approve pilot button is hit, so i suppose the question is what happens now when you double click the accept pilot.

Hope i make some kind of sence,

Thanks

Well, you can create a module with events, but I haven’t hashed out an events system for the admin. You can use the ā€œregister_completeā€ event when they actually register to create the profile:

http://www.phpvms.net/docs/development:02_events_list#registration_complete

Scroll up a bit to see how to create the module, and then the event. Hopefully that makes sense. You can use ā€œregistration_precompleteā€ even to get the user info, but in this next build I fixed it to postcomplete includes the user info.

That will ā€˜fire’ when they create a profile, but before it’s approved. The next update will have an events subsystem for the admin panel; I haven’t done it uptil now because no one is really using it.

Yes, thats it Thanks will have a play with that.

Cool, just make a new module with that event, and you should be good to go!

Hi guys, i feel a bit cheeky asking this but i have been trying to get this to work and i keep hitting a brick wall, im no coder but i have the code that works to directly create accounts i just need the code to pass it the details from the registration data ie firstname lastname and pilotid passwird and email.

If anyone has the time to explain to an old man who should have learnt coding years ago i would be grateful.

Thanks

Hey no prob,

First you have to create a module:

So, create a folder in /core/modules called ā€œForumRegisterā€

Then create a file: ForumRegister.php

Inside that, paste:

<?php
class ForumRegister extends CodonModule
{

public function __construct()
{
	CodonEvent::addListener('ForumRegister');
}

public function EventListener($eventinfo)
{
	if($eventinfo[0] == 'registration_complete')
	{ 
		// Place your forum registration code here

		// You'll need their user information, so
		$userinfo = $eventinfo[2];

		$userinfo->firstname;
		$userinfo->lastname;
		//etc

		// do :

		print_r($userinfo);

		// to show all the options
	}
}	
}
?>

This creates the module and sets up the event listener, and then when the registration_complete event is fired, that bit of code will run.

Now, I think you’re running the latest beta build, which fixes a bug where that user info wasn’t passed.

I hope that helps!

WOW! Christmas comes early!

Thank you.

No prob! Lemme know if you need any other help/if that worked. Kinda just banged it out, didn’t really test it

No prob! Lemme know if you need any other help/if that worked. Kinda just banged it out, didn’t really test it

You make it seem so easy

Thanks for that will give it a try later when i finish work.

Did you get this working? I am very interested…

Well, it’s only work with the beta versions, since the current release is missing the $userinfo bit

Is this for SMF or any forum?

Would be excellent for it to be able to work in phpBB, if possible

Thats what im using bb3, here is the code for phpbb3. as you are taking the data from a sanitised source all of the safe guards have been removed, valid email etc… This code takes the data from the existing redistration page and puts it directly in to bb3 db. I have not had chance to check fully but will be testing tonight.

<?php
/**
* Created on 22-nov-2008 17:10:39
*
* Phpbb3 -- register_extern.php
* @author   Ramon Fincken http://www.ramonfincken.com/permalink/topic82.html
* @author   Mr Kirkland      http://www.mrkirkland.com/adding-a-user-to-phpbb3-from-an-external-script/
*/
define('IN_PHPBB', true);
$phpbb_root_path = '';  // Your path here
$phpEx = substr(strrchr( __FILE__ , '.'), 1);
include($phpbb_root_path . 'common.php');

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();

require($phpbb_root_path .'includes/functions_user.php');


$username = '';
$password = ''; // Do NOT encrypt !
$email  = ''; // Please validate this email yourself ! Phpbb will accept non-valid emails.


// Do a check if username is allready there, same for email, otherwhise a nasty error will occur

$user_row = array(
'username' => $username,
'user_password' => md5($password), 'user_email' => $email,
'group_id' => 2, #Registered users group
'user_timezone' => '1.00',
'user_dst' => 0,
'user_lang' => 'en',
'user_type' => '0',
'user_actkey' => '',
'user_dateformat' => 'd M Y H:i',
'user_style' => 1,
'user_regdate' => time(),
);

$phpbb_user_id = user_add($user_row); 
echo "New user id = ".$phpbb_user_id; /code]

?>

Let me know if you get it working  ;D  hopefully find the time tonight fingers crossed…

So no support for SMF?  I don’t like PHPBB

Should be similar for smf, if I get time I’ll look something up

still not magaged to get it to work with phpbb3, this is a good feature so if we can get this working on A forum then that would be good, i suppose add to the list lol. can someone ask for more hours in the day…

Yeah support for SMF would be great thats what im using as well!

OK i have tried and tried and i have no hair left. So i have switched to SMF, i had the thing working as a test but then i tried messing about and wrecked it lol…

Here is what i started with so it will give you some idea if you know what your doing unlike me lol…

Good luck

<?php
include "forum/SSI.php"; //your forum path
include "forum/Sources/Subs-Members.php";
?>

<script language="JavaScript" type="text/javascript" src="/forum/Themes/default/script.js?fin11"></script>

<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
function verifyAgree()
{
if (document.forms.registrationForm.passwrd1.value != document.forms.registrationForm.passwrd2.value)
{
	alert("The two passwords you entered are not the same!");
	return false;
}
if (!document.forms.registrationForm.regagree.checked)
{
	alert("Please read and accept the agreement before registering.");
	return false;
}
return true;
}
function checkAgree()
{
document.forms.registrationForm.regSubmit.disabled = isEmptyText(document.forms.registrationForm.user) || isEmptyText(document.forms.registrationForm.email) || isEmptyText(document.forms.registrationForm.passwrd1) || !document.forms.registrationForm.regagree.checked;
setTimeout("checkAgree();", 1000);
}
setTimeout("checkAgree();", 1000);
// ]]></script>

<?php
if (!isset($_POST['regSubmit'])) {
?>
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td style="width: 600px;">

	<form action="<?php echo $PHP_SELF; ?>" method="post" accept-charset="ISO-8859-1" name="registrationForm" onsubmit="return verifyAgree();">
	<table cellspacing="0" cellpadding="5" border="0">

	<tr>
	<td>
		<b>Choose username:</b>
	</td>
	<td>
		<input type="text" name="user" size="20" tabindex="1" maxlength="25" />
	</td>
	</tr>

	<tr>
	<td>
		<b>Email:</b>
	</td>
	<td>
		<input type="text" name="email" size="30" tabindex="2" />
			<label for="hideEmail">
				<input type="checkbox" name="hideEmail" id="hideEmail" class="check" />
				 Hide email address from public?
			</label>
	</td>
	</tr>

	<tr>
	<td>
		<b>Choose password:</b>
	</td>
	<td>
		<input type="password" name="passwrd1" size="30" tabindex="3" />
	</td>
	</tr>

	<tr>
	<td>
		<b>Verify password:</b>
	</td>
	<td>
		<input type="password" name="passwrd2" size="30" tabindex="4" />
	</td>
	</tr>

	<tr>
	<td colspan="2"><?php
	$agreement = fopen("forum/agreement.txt", "r"); while(!feof($agreement)) { $line = fgets($agreement); echo $line; } fclose($agreement);
	?>
	</td>
	</tr>

	<tr>
	<td colspan="2" align="center">
		<label for="regagree">
			<input type="checkbox" name="regagree" onclick="checkAgree();" id="regagree" class="check" />
			 <b>I Agree</b>
		</label>
	</td>
	</tr>

	<tr>
	<td colspan="2">
		<div align="center">
			<input type="submit" name="regSubmit" value="Register" />
		</div>
	</td>
	</tr>

	</table>
	</form>
	<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
		document.forms.registrationForm.regagree.checked = false;
		document.forms.registrationForm.regSubmit.disabled = !document.forms.registrationForm.regagree.checked;
	// ]]></script>
</td>
</tr>
</table>
<?php
} else {

$password = sha1(strtolower($_POST['user']) . $_POST['passwrd1']);
$password2 = sha1(strtolower($_POST['user']) . $_POST['passwrd2']);
$regOptions = array(
	'interface' => 'guest',
	'username' => $_POST['user'],
	'password' => $password,
	'password_check' => $password2,
	'email' => $_POST['email'],
	'check_reserved_name' => true,
	'check_email_ban' => true,
	'send_welcome_email' => false,
	'require' => 'nothing',
	'auth_method' => 'password',
);

registerMember($regOptions);
}	
?>

I’ll take a look after the release, then I can concentrate on it a bit