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; }
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; }
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; }