2008-06-09, 07:34 PM
I am trying to create a pm on registration plugin that doesn't require you to alter the permissions for "awaiting activation" group.
There is a hook in member.php:
member_activate_accountactivated
However the problem is that in my plugin the user permissions still display group 5 when in fact the user should at that point be in group 2 (registered). So my PMs aren't passing validation.
This is driving me nuts as the logic appears fine.
Here is the action from member.php:
Here is my plugin function:
It's getting tiring trying dozens of things to no effect. Any help is appreciated. I ain't that great with OOP yet.
There is a hook in member.php:
member_activate_accountactivated
However the problem is that in my plugin the user permissions still display group 5 when in fact the user should at that point be in group 2 (registered). So my PMs aren't passing validation.
This is driving me nuts as the logic appears fine.
Here is the action from member.php:
elseif($mybb->input['action'] == "activate")
{
$plugins->run_hooks("member_activate_start");
if($mybb->input['username'])
{
$query = $db->simple_select(TABLE_PREFIX."users", "*", "LOWER(username)='".$db->escape_string(my_strtolower($mybb->input['username']))."'");
$user = $db->fetch_array($query);
if(!$user['username'])
{
error($lang->error_invalidusername);
}
$uid = $user['uid'];
}
else
{
$query = $db->simple_select(TABLE_PREFIX."users", "*", "uid='".intval($mybb->input['uid'])."'");
$user = $db->fetch_array($query);
}
if($mybb->input['code'] && $user['uid'])
{
$mybb->settings['awaitingusergroup'] = "5";
$query = $db->simple_select(TABLE_PREFIX."awaitingactivation", "*", "uid='".$user['uid']."' AND (type='r' OR type='e')");
$activation = $db->fetch_array($query);
if(!$activation['uid'])
{
error($lang->error_alreadyactivated);
}
if($activation['code'] != $mybb->input['code'])
{
error($lang->error_badactivationcode);
}
$db->delete_query(TABLE_PREFIX."awaitingactivation", "uid='".$user['uid']."' AND (type='r' OR type='e')");
if($user['usergroup'] == 5 && $activation['type'] != "e")
{
$newgroup = array(
"usergroup" => 2,
);
$db->update_query(TABLE_PREFIX."users", $newgroup, "uid='".$user['uid']."'");
}
if($activation['type'] == "e")
{
$newemail = array(
"email" => $db->escape_string($activation['misc']),
);
$db->update_query(TABLE_PREFIX."users", $newemail, "uid='".$user['uid']."'");
if(function_exists("emailChanged"))
{
emailChanged($mybb->user['uid'], $email);
}
$plugins->run_hooks("member_activate_emailupdated");
redirect("usercp.php", $lang->redirect_emailupdated);
}
else
{
if(function_exists("accountActivated") && $activation['type'] == "r")
{
accountActivated($user['uid']);
}
$plugins->run_hooks("member_activate_accountactivated");
redirect("index.php", $lang->redirect_accountactivated);
}
}
else
{
$plugins->run_hooks("member_activate_form");
eval("\$activate = \"".$templates->get("member_activate")."\";");
output_page($activate);
}
Here is my plugin function:
function pmonreg()
{
global $mybb, $db, $user;
if($mybb->settings['pmonreg_enable'] == "on")
{
require_once MYBB_ROOT."inc/datahandlers/pm.php";
$pmhandler = new PMDataHandler();
$pm = array(
"subject" => $mybb->settings['pmonreg_subject'],
"message" => str_replace('{username}', $user['username'], $mybb->settings['pmonreg_message']),
"icon" => -1,
"fromid" => intval($mybb->settings['pmonreg_send_uid']),
"toid" => intval($user['uid']),
"do" => '',
"pmid" => ''
);
$pm['options'] = array(
"savecopy" => "no",
"saveasdraft" => 0,
"signature" => "no",
"disablesmilies" => "no",
);
$pm['saveasdraft'] = 0;
$pmhandler->admin_override = 1;
$pmhandler->set_data($pm);
if($pmhandler->validate_pm())
{
$pmhandler->insert_pm();
}
}
}
It's getting tiring trying dozens of things to no effect. Any help is appreciated. I ain't that great with OOP yet.