Beispiel #1
0
function add_domain($domain_name)
{
    global $dbh;
    global $logger;
    if (get_domain_id($domain_name) != 0) {
        $logger->warning("Attempt to add duplicate domain:" . $domain_name);
        return 0;
    }
    // get default autocreation policy
    $default_policies = get_default_domain_policies();
    $default_autocreation_policy = $default_policies['autocreation'];
    $default_transport = $default_policies['transport'];
    $routing_domain = substr($domain_name, 1);
    // Add the domain to the maia_domains table
    $sth = $dbh->prepare("INSERT INTO maia_domains (domain, enable_user_autocreation, routing_domain, transport) VALUES (?,?,?,?)");
    $sth->execute(array($domain_name, $default_autocreation_policy, $routing_domain, $default_transport));
    if (PEAR::isError($sth)) {
        die($sth->getMessage());
    }
    $sth->free();
    $sth = $dbh->prepare("SELECT id FROM maia_domains WHERE domain = ?");
    $res = $sth->execute(array($domain_name));
    if (PEAR::isError($sth)) {
        die($sth->getMessage());
    }
    if ($row = $res->fetchrow()) {
        $domain_id = $row["id"];
    }
    $sth->free();
    // Add a new policy for the domain, based on the
    // system defaults.
    $policy_id = add_policy($domain_name);
    // Add the domain address to the users table
    $primary_email_id = add_address_to_user($policy_id, $domain_name, 0, $domain_id);
    $default_user_config = get_maia_user_row(get_user_id("@.", "@."));
    // Add a domain default user to the maia_users table
    $sth = $dbh->prepare("INSERT INTO maia_users (user_name, primary_email_id, reminders, discard_ham, theme_id) VALUES (?, ?, 'N', ?, ?)");
    $sth->execute(array($domain_name, $primary_email_id, $default_user_config["discard_ham"], $default_user_config["theme_id"]));
    if (PEAR::isError($sth)) {
        die($sth->getMessage());
    }
    $sth->free();
    $sth = $dbh->prepare("SELECT id FROM maia_users WHERE user_name = ?");
    $res = $sth->execute(array($domain_name));
    if (PEAR::isError($sth)) {
        die($sth->getMessage());
    }
    if ($row = $res->fetchrow()) {
        $maia_user_id = $row["id"];
    }
    $sth->free();
    // Update the users table to link the e-mail address back to the domain
    $sth = $dbh->prepare("UPDATE users SET maia_user_id = ? WHERE id = ?");
    $sth->execute(array($maia_user_id, $primary_email_id));
    if (PEAR::isError($sth)) {
        die($sth->getMessage());
    }
    return $domain_id;
}
function add_email_address_to_user($uid, $email)
{
    global $dbh;
    // Add a new policy for this user
    $policy_id = add_policy($email);
    // Add the user's e-mail address to the amavisd users table
    $new_address_id = add_address_to_user($policy_id, $email, $uid, 0);
    return $new_address_id;
}