Пример #1
0
function user_create_backend($props, $authenticate)
{
    if (1 == 1) {
        // system checks
        $username = strtolower(trim($props['post']['_email'][0]));
        $domain = explode('@', $username);
        $domain = strtolower($domain[1]);
        $p = user_get_backend(array('arg' => $username), $authenticate);
        if ($p['abort']) {
            // the user does not exist
            try {
                // create the user
                $props = user_get_backend(array('arg' => $username), $authenticate);
                // fetch properties
            } catch (Exception $e) {
                $props = array('abort' => true, 'cancel' => true);
                // an error occured when creating the user
            }
        } else {
            $props = user_edit_backend($props, $authenticate);
            // the user already exists ... overwrite properties
        }
    } else {
        $props = array('abort' => true, 'cancel' => true);
        // system checks failed
    }
    return $props;
}
Пример #2
0
function user_create_backend($props, $authenticate)
{
    if (class_exists('COM')) {
        $username = strtolower(trim($props['post']['_email'][0]));
        if ($username) {
            $domain = explode('@', $username);
            $domain = strtolower($domain[1]);
            $p = user_get_backend(array('arg' => $username), $authenticate);
            if ($p['abort']) {
                try {
                    $obApp = new COM('hMailServer.Application');
                    $obApp->Authenticate($authenticate['admin'], $authenticate['password']);
                    $obDomain = $obApp->Domains->ItemByName($domain);
                    $obAccount = $obDomain->Accounts->Add;
                    $obAccount->Address = $username;
                    $obAccount->Password = trim($props['post']['_pass']);
                    $obAccount->Active = $props['post']['_active'] ? true : false;
                    $obAccount->MaxSize = $props['post']['_size'] ? trim($props['post']['_size']) : 0;
                    $obAccount->Save;
                    $props = user_get_backend(array('arg' => $username), $authenticate);
                } catch (Exception $e) {
                    $props = array('abort' => true, 'cancel' => true, 'message' => array('type' => 'error', 'label' => 'errorsaving'));
                }
            } else {
                $props['post']['_user'] = $username;
                $props = user_edit_backend($props, $authenticate);
            }
        } else {
            $props = array('abort' => true, 'cancel' => true, 'message' => array('type' => 'error', 'label' => 'companyaddressbook.usernotfound'));
        }
    } else {
        $props = array('abort' => true, 'cancel' => true, 'message' => array('type' => 'error', 'label' => 'companyaddressbook.COMerror'));
    }
    return $props;
}
Пример #3
0
function user_create_backend($props, $authenticate, $db = false)
{
    $username = strtolower(trim($props['post']['_email'][0]));
    if ($username) {
        $domain = explode('@', $username);
        $domain = strtolower($domain[1]);
        $p = user_get_backend(array('arg' => $username), $authenticate, $db);
        $db = $p['db'];
        if ($p['abort']) {
            try {
                if ($db) {
                    $mailboxsize = (int) trim($props['post']['_size']);
                    $pass = trim($props['post']['_pass']);
                    $active = (int) trim($props['post']['_active']);
                    $sql = 'SELECT * FROM hm_domains WHERE domainname LIKE ? LIMIT 1';
                    $result = $db->query($sql, $domain);
                    $domainid = $db->fetch_assoc($result);
                    if ($domainid = $domainid['domainid']) {
                        $sql = "INSERT INTO hm_accounts " . "(" . "accountdomainid," . "accountaddress," . "accountpassword," . "accountactive," . "accountisad," . "accountmaxsize," . "accountpwencryption," . "accountadminlevel," . "accountaddomain," . "accountadusername," . "accountvacationmessageon," . "accountvacationmessage," . "accountvacationsubject," . "accountforwardenabled," . "accountforwardaddress," . "accountforwardkeeporiginal," . "accountenablesignature," . "accountsignatureplaintext," . "accountsignaturehtml," . "accountlastlogontime," . "accountvacationexpires," . "accountvacationexpiredate," . "accountpersonfirstname," . "accountpersonlastname" . ") VALUES (?, ?, ? , ?, '0', ?, '2', '0', '', '', '0', '', '', '0', '', '0', '0', '', '', '" . date('Y-m-d H:i:s', time()) . "', '0', '" . date('Y-m-d H:i:s', time()) . "', '', '')";
                        $result = $db->query($sql, $domainid, $username, md5($pass), $active, $mailboxsize);
                        $user_insert_id = $db->insert_id();
                        if ($user_insert_id) {
                            $sql = "SELECT * FROM hm_imapfolders WHERE folderaccountid=?";
                            $result = $db->query($sql, $user_insert_id);
                            $folders = $db->fetch_assoc($result);
                            if (!$folders) {
                                $sql = "INSERT INTO hm_imapfolders " . "(" . "folderaccountid," . "folderparentid," . "foldername," . "folderissubscribed," . "foldercreationtime," . "foldercurrentuid" . ") VALUES (?, '-1', 'INBOX' , '1', ?, '0')";
                                $result = $db->query($sql, $user_insert_id, date('Y-m-d H:i:s', time()));
                                $sql = "SELECT * FROM hm_imapfolders WHERE folderaccountid=? AND foldername=? LIMIT 1";
                                $result = $db->query($sql, $user_insert_id, 'INBOX');
                                $folder_insert_id = $db->fetch_assoc($result);
                                $folder_insert_id = $folder_insert_id['folderaccountid'];
                                if ($folder_insert_id) {
                                    $props = user_get_backend(array('arg' => $username), $authenticate, $db);
                                } else {
                                    $sql = "DELETE FROM hm_accounts WHERE accountid=? LIMIT 1";
                                    $db->query($sql, $user_insert_id);
                                    $sql = "DELETE FROM hm_imapfolders WHERE folderaccountid=?";
                                    $db->query($sql, $user_insert_id);
                                    $props = array('abort' => true, 'cancel' => true, 'message' => array('type' => 'error', 'label' => 'errorsaving'));
                                }
                            } else {
                                $sql = "DELETE FROM hm_accounts WHERE accountid=? LIMIT 1";
                                $db->query($sql, $user_insert_id);
                                $sql = "DELETE FROM hm_imapfolders WHERE folderaccountid=?";
                                $db->query($sql, $user_insert_id);
                                $props = array('abort' => true, 'cancel' => true, 'message' => array('type' => 'error', 'label' => 'errorsaving'));
                            }
                        } else {
                            $props = array('abort' => true, 'cancel' => true, 'message' => array('type' => 'error', 'label' => 'errorsaving'));
                        }
                    } else {
                        $props = array('abort' => true, 'cancel' => true, 'message' => array('type' => 'error', 'label' => 'errorsaving'));
                    }
                } else {
                    $props = array('abort' => true, 'message' => array('type' => 'error', 'label' => 'companyaddressbook.DBerror'));
                }
            } catch (Exception $e) {
                $props = array('abort' => true, 'cancel' => true, 'message' => array('type' => 'error', 'label' => 'errorsaving'));
            }
        } else {
            if (!$p['isalias']) {
                $props['post']['_user'] = $username;
                $props = user_edit_backend($props, $authenticate, $db);
            } else {
                $props = array('abort' => true, 'cancel' => $p['islias'], 'message' => array('type' => 'error', 'label' => 'companyaddressbook.isalias'));
            }
        }
    } else {
        $props = array('abort' => true, 'cancel' => true, 'message' => array('type' => 'error', 'label' => 'errorsaving'));
    }
    return $props;
}