Heey guys!
I'm an absolute PHP newb 😉 But I started trying to port some code to allow my roundcube to do (open) registrations for postfixadmin 🙂
Anyways, I'm resolved most errors so far but I'm now getting " PHP Parse error: syntax error, unexpected $end in /usr/local/www/roundcube/plugins/register/drivers/postfix_db/driver.inc.php on line 186" errors
I quickly scanned the code for missing } but didn't see anything... :/ Anybody got a clue ?
<?php
// Required hMailServer Database Version
// SELECT * FROM hm_dbversion
//define('REQUIRED_HMAIL_DB', 5320);
// remove plus addressing characters
function rcube_register_trim_user($name = "", $domain = ""){
$rcmail = rcmail::get_instance();
$pladdrstr = $rcmail->config->get('pladdrstr');
$repl = $pladdrstr[$domain];
if($repl == "+"){
if(strpos($name,$repl)){
$name = str_replace($repl, '_', $name);
echo "js:var repl = \"" . $name . "\";";
exit;
}
}
if($repl == "_"){
if(strpos($name,$repl)){
$name = str_replace($repl, '-', $name);
echo "js:var repl = \"" . $name . "\";";
exit;
}
}
if($repl == "-"){
if(strpos($name,$repl)){
$name = str_replace($repl, '_', $name);
echo "js:var repl = \"" . $name . "\";";
exit;
}
}
if($repl == "%"){
if(strpos($name,$repl)){
$name = str_replace($repl, '_', $name);
echo "js:var repl = \"" . $name . "\";";
exit;
}
}
return $name;
}
// check if user already exists
function rcube_register_user_exists($user = ""){
$user = strtolower($user);
$temparr = explode("@",$user);
$name = strtolower($temparr[0]);
$domain = strtolower($temparr[1]);
$name = rcube_register_trim_user($name, $domain);
$rcmail = rcmail::get_instance();
if ($dsn = $rcmail->config->get('db_dsnw_hmailserver')) {
// #1486067: enable new_link option
if (is_array($dsn) && empty($dsn['new_link']))
$dsn['new_link'] = true;
else if (!is_array($dsn) && !preg_match('/\?new_link=true/', $dsn))
$dsn .= '?new_link=true';
$db = new rcube_mdb2($dsn, '', FALSE);
$db->set_debug((bool)$rcmail->config->get('sql_debug'));
$db->db_connect('w');
} else {
die("FATAL ERROR ::: RoundCube Plugin ::: register ::: \$rcmail_config['db_dsnw_hmailserver'] undefined !!! ==> die");
}
if ($err = $db->is_error())
return false;
$strDomain = $arr['domainname'];
$strUser = $name . "@" . $strDomain;
$query = "SELECT * FROM postfix.mailbox WHERE username=? AND domain=?";
$sql = $db->query($query, $strUser, $strDomain);
$arr = $db->fetch_assoc($sql);
if(is_array($arr)){
return true; // user exists
}
else{
return false; //user does not exists
}
}
// check if alias already exits
function rcube_register_alias_exists($user = ""){
$user = strtolower($user);
$temparr = explode("@",$user);
$name = strtolower($temparr[0]);
$domain = strtolower($temparr[1]);
$name = rcube_register_trim_user($name, $domain);
$rcmail = rcmail::get_instance();
if ($dsn = $rcmail->config->get('db_dsnw_hmailserver')) {
// #1486067: enable new_link option
if (is_array($dsn) && empty($dsn['new_link']))
$dsn['new_link'] = true;
else if (!is_array($dsn) && !preg_match('/\?new_link=true/', $dsn))
$dsn .= '?new_link=true';
$db = new rcube_mdb2($dsn, '', FALSE);
$db->set_debug((bool)$rcmail->config->get('sql_debug'));
$db->db_connect('w');
} else {
die("FATAL ERROR ::: RoundCube Plugin ::: register ::: \$rcmail_config['db_dsnw_hmailserver'] undefined !!! ==> die");
}
if ($err = $db->is_error())
return false;
$query = "SELECT * FROM postfix.alias WHERE address=?";
$sql = $db->query($query, $user);
$arr = $db->fetch_assoc($sql);
if(is_array($arr)){
return true; // alias exists
}
else{
return false; //alias does not exists
}
}
// add user
function rcube_register_new_imap_user($user = "", $pass = ""){
$user = strtolower($user);
$temparr = explode("@",$user);
$name = strtolower($temparr[0]);
$domain = strtolower($temparr[1]);
$name = rcube_register_trim_user($name, $domain);
$rcmail = rcmail::get_instance();
if ($dsn = $rcmail->config->get('db_dsnw_hmailserver')) {
// #1486067: enable new_link option
if (is_array($dsn) && empty($dsn['new_link']))
$dsn['new_link'] = true;
else if (!is_array($dsn) && !preg_match('/\?new_link=true/', $dsn))
$dsn .= '?new_link=true';
$db = new rcube_mdb2($dsn, '', FALSE);
$db->set_debug((bool)$rcmail->config->get('sql_debug'));
$db->db_connect('w');
} else {
die("FATAL ERROR ::: RoundCube Plugin ::: register ::: \$rcmail_config['db_dsnw_hmailserver'] undefined !!! ==> die");
}
if ($err = $db->is_error())
return false;
$strDomain = $arr['domainname'];
$strUser = $name . "@" . $strDomain;
$maildir = $domain . "/" . $name . "/";
$query = "INSERT INTO postfix.mailbox ".
"(username,".
"password,".
"name,".
"maildir,".
"local_part,".
"quota,".
"domain,".
"created,".
"modified,".
"active)".
"VALUES (?, ?, 'roundcube', ?,?,'1073741824',?,?,date('Y-m-d H:i:s',time()),date('Y-m-d H:i:s',time()),'1');
$ret = $db->query($query, $strUser, md5($pass), $maildir, $name, $strDomain);
// if($ret){
// return true; // user successfully created
// }
// else{
// return false; // failed to create user
// }
}