<?php

// Disallow direct access to this file for security reasons
if(!defined('IN_MYBB'))
	die('Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.');

$plugins->add_hook('member_do_register_end', 'pmregister_run');

function pmregister_info()
{
	return array(
		'name'			=> 'PM to New Users',
		'description'	=> 'Automatically sends a PM to newly registered members.',
		'website'		=> 'http://mybbhacks.zingaburga.com/',
		'author'		=> 'ZiNgA BuRgA',
		'authorsite'	=> 'http://zingaburga.com/',
		'version'		=> '1.4',
		'compatibility'	=> '12*,14*,15*,16*,17*,18*'
	);
}

function pmregister_activate()
{
	global $db, $mybb;
	$prefix = '';
	$no = '0';
	if($mybb->version_code < 1400) {
		$prefix = TABLE_PREFIX;
		$no = 'no';
	}
	$db->insert_query($prefix.'settinggroups', array(
		'name' => 'pmregister', 
		'title' => 'PM to New Users Options',
		'description' => '',
		'disporder' => 200, 
		'isdefault' => $no,
	));
	$gid = $db->insert_id();
	$db->insert_query($prefix.'settings', array(
		'name' => 'pmregister_fromuid',
		'title' => 'Sender UID',
		'description' => 'UserID of the sender of the PM',
		'optionscode' => 'text',
		'value' => '1',
		'disporder' => 1,
		'gid' => $gid
	));
	$db->insert_query($prefix.'settings', array(
		'name' => 'pmregister_subject',
		'title' => 'PM Subject',
		'description' => 'Subject of the PM.',
		'optionscode' => 'text',
		'value' => 'Welcome to the Forums!',
		'disporder' => 3,
		'gid' => $gid
	));
	$db->insert_query($prefix.'settings', array(
		'name' => 'pmregister_message',
		'title' => 'PM Message',
		'description' => $db->escape_string('The message to send to the user.  Use {username} to specify their username, {uid} for the UserID, {email} for their email address, and {regip} for registration IP.  Note that this field is also eval\'d, allowing some other values (ie <em>{$mybb->settings[\'bburl\']}</em>)'),
		'optionscode' => 'textarea',
		'value' => $db->escape_string('Hi {username},
Thank you for taking the time to register at {$mybb->settings[\'bbname\']}!  I\'d like to personally welcome you to our community, and I hope you enjoy your stay here.

If you have any queries, please feel free to respond to this PM.
Regards,
{$mybb->settings[\'bbname\']} Staff'),
		'disporder' => 4,
		'gid' => $gid
	));
	rebuild_settings();
}
function pmregister_deactivate()
{
	global $db, $mybb;
	$prefix = '';
	if($mybb->version_code < 1400) {
		$prefix = TABLE_PREFIX;
	}
	$gid = $db->fetch_field($db->simple_select($prefix.'settinggroups', 'gid', 'name=\'pmregister\''), 'gid');
	if($gid)
	{
		$db->delete_query($prefix.'settings', 'gid='.$gid);
		$db->delete_query($prefix.'settinggroups', 'gid='.$gid);
		rebuild_settings();
	}
}

function pmregister_eval($__m)
{
	global $user, $mybb, $lang, $user_info, $session;
	$v = ${$__m[1]};
	return eval('return $v'.$__m[2].';');
}

function pmregister_run()
{
	global $lang, $mybb, $user_info, $db;
	if($mybb->settings['enablepms'] == '0') return;
	
	$fromid = intval($mybb->settings['pmregister_fromuid']);
	if($user_info['receivepms'] == '0') return;
	
	
	$lang->load('messages'); // required for email notification
	include_once MYBB_ROOT.'inc/datahandlers/pm.php';
	include_once MYBB_ROOT.'inc/functions_user.php'; // required by above file
	$pmh = new PMDataHandler();
	$message = strtr($mybb->settings['pmregister_message'], array(
		'{username}' => '{$user_info[\'username\']}',
		'{uid}' => '{$user_info[\'uid\']}',
		'{email}' => '{$user_info[\'email\']}',
		'{password}' => '{$user_info[\'password\']}',
		'{regip}' => '{$session->ipaddress}'
	));
	
	// set up evals (this is a safe form evaluation)
	$message = preg_replace_callback('~\\{\\$([a-zA-Z_0-9]+)((-\\>[a-zA-Z_0-9]+|\\[[\'"]?[a-zA-Z_ 0-9]+[\'"]?\\])*)\\}~', 'pmregister_eval', $message);
	
	$pm = array(
		'username' => $user_info['username'],
		'toid' => array($user_info['uid']),
		'fromid' => intval($mybb->settings['pmregister_fromuid']),
		'subject' => $mybb->settings['pmregister_subject'],
		'message' => $message,
		'options' => array(
			'signature' => '0',
			'disablesmilies' => '0',
			'savecopy' => '0',
			'readreceipt' => '0'
		)
	);
	
	$pmh->admin_override = true;
	$pmh->set_data($pm);
	// it _should_ validate... - if not (ie PMs disabled), we'll ignore it
	if($pmh->validate_pm())
		$pmh->insert_pm();
	unset($pmh);
}
?>