public function registerUser($session_id, $context_id, $firstname, $lastname, $email, $identification, $password, $tou) { $xml = ""; $valid = true; $errorArray = array(); if ($this->_isSessionValid($session_id)) { $this->_environment->setCurrentContextID($context_id); $contextItem = $this->_environment->getCurrentContextItem(); $translator = $this->_environment->getTranslationObject(); // check email if (!isEmailValid($email)) { $valid = false; $errorArray['email'] = $translator->getMessage('USER_EMAIL_ERROR'); } // check tou if ($contextItem->withAGB() && $contextItem->withAGBDatasecurity()) { if (!$tou) { $valid = false; $errorArray['tou'] = $translator->getMessage('CONFIGURATION_AGB_ACCEPT_ERROR'); } } // get the commsy authentication source $authSourceList = $contextItem->getAuthSourceList(); if (isset($authSourceList) && !empty($authSourceList)) { $authSourceItem = $authSourceList->getFirst(); $found = false; while ($authSourceItem and !$found) { if ($authSourceItem->isCommSyDefault()) { $found = true; } else { $authSourceItem = $authSourceList->getNext(); } } } //$authSourceItem = $contextItem->getAuthDefault(); // check password security if ($authSourceItem->getPasswordLength() > 0) { if (mb_strlen($password) < $authSourceItem->getPasswordLength()) { $valid = false; $errorArray['password_length'] = $translator->getMessage('USER_NEW_PASSWORD_LENGTH_ERROR', $authSourceItem->getPasswordLength()); } } if ($authSourceItem->getPasswordSecureBigchar() == 1) { if (!preg_match('~[A-Z]+~u', $password)) { $valid = false; $errorArray['password_bigchar'] = $translator->getMessage('USER_NEW_PASSWORD_BIGCHAR_ERROR'); } } if ($authSourceItem->getPasswordSecureSpecialchar() == 1) { if (!preg_match('~[^a-zA-Z0-9]+~u', $password)) { $valid = false; $errorArray['password_specialchar'] = $translator->getMessage('USER_NEW_PASSWORD_SPECIALCHAR_ERROR'); } } if ($authSourceItem->getPasswordSecureNumber() == 1) { if (!preg_match('~[0-9]+~u', $password)) { $valid = false; $errorArray['password_number'] = $translator->getMessage('USER_NEW_PASSWORD_NUMBER_ERROR'); } } if ($authSourceItem->getPasswordSecureSmallchar() == 1) { if (!preg_match('~[a-z]+~u', $password)) { $valid = false; $errorArray['password_smallchar'] = $translator->getMessage('USER_NEW_PASSWORD_SMALLCHAR_ERROR'); } } // check for unique user id $authentication = $this->_environment->getAuthenticationObject(); if (!$authentication->is_free($identification, $authSourceItem->getItemId())) { $valid = false; $errorArray['user_id'] = $translator->getMessage('USER_USER_ID_ERROR', $identification); } else { if (withUmlaut($identification)) { $valid = false; $errorArray['user_id'] = $translator->getMessage('USER_USER_ID_ERROR_UMLAUT', $identification); } } if ($valid) { // create user $textConverter = $this->_environment->getTextConverter(); $firstname = $textConverter->sanitizeHTML($firstname); $lastname = $textConverter->sanitizeHTML($lastname); $newAccount = $authentication->getNewItem(); $newAccount->setUserID($identification); $newAccount->setPassword($password); $newAccount->setFirstname($firstname); $newAccount->setLastname($lastname); $newAccount->setLanguage("browser"); $newAccount->setEmail($email); $newAccount->setPortalID($context_id); $newAccount->setAuthSourceId($authSourceItem->getItemId()); $authentication->save($newAccount, false); if ($authentication->getErrorMessage() == "") { $portalUserItem = $authentication->getUserItem(); // tou if ($contextItem->withAGB() && $contextItem->withAGBDatasecurity()) { if ($tou) { $portalUserItem->setAGBAcceptance(); } } // password expiration if ($contextItem->isPasswordExpirationActive()) { $portalUser->setPasswordExpireDate($contextItem->getPasswordExpiration()); } // send mail to moderators $savedLanguage = $translator->getSelectedLanguage(); $moderatorList = $contextItem->getModeratorList(); $emailArray = array(); $moderatorItem = $moderatorList->getFirst(); $recipients = ""; $language = $contextItem->getLanguage(); while ($moderatorItem) { $wantMail = $moderatorItem->getAccountWantMail(); if (!empty($wantMail) && $wantMail == 'yes') { if ($language == "user" && $moderatorItem->getLanguage() != "browser") { $emailArray[$moderatorItem->getLanguage()][] = $moderatorItem->getEmail(); } else { if ($language == "user" && $moderatorItem->getLanguage() == "browser") { $emailArray[$language][] = $moderatorItem->getEmail(); } } $recipients .= $moderatorItem->getFullname() . LF; } $moderatorItem = $moderatorList->getNext(); } foreach ($emailArray as $language => $addresses) { $translator->setSelectedLanguage($language); if (sizeof($addresses) > 0) { include_once 'classees/cs_mail.php'; $mail = new cs_mail(); $mail->set_to(implode(',', $addresses)); $serverItem = $this->environment->getServerItem(); $defaultSenderAddress = $serverItem->getDefaultSenderAddress(); if (!empty($defaultSenderAddress)) { $mail->set_from_email($defaultSenderAddress); } else { $mail->set_from_mail('@'); } $mail->set_from_name($translator->getMessage("SYSTEM_MAIL_MESSAGE", $contextItem->getTitle())); $mail->set_reply_to_name($portalUser->getFullname()); $mail->set_reply_to_email($portalUser->getEmail()); $mail->set_subject($translator->getMessage("USER_GET_MAIL_SUBJECT", $portalUser->getFullname())); $body = $translator->getMessage("MAIL_AUTO", $translator->getDateInLang(getCurrentDateTimeInMySQL()), $translator->getTimeInLang(getCurrentDateTimeInMySQL())); $body .= LF . LF; $tempLanguage = $portalUser->getLanguage(); if ($tempLanguage == "browser") { $tempLanguage = $this->_environment->getSelectedLanguage(); } // data security if ($contextItem->getHideAccountname()) { $userId = "XXX " . $translator->getMessage("COMMON_DATASECURITY"); } else { $userId = $portalUser->getUserID(); } $body .= $translator->getMessage("USER_GET_MAIL_BODY", $portalUser->getFullname(), $userid, $portalUser->getEmail(), $translator->getLanguageLabelTranslated($tempLanguage)); $body .= LF . LF; $body .= $translator->getMessage("USER_GET_MAIL_STATUS_NO"); $body .= LF . LF; $body .= $translator->getMessage("MAIL_SEND_TO", $recipients); $body .= LF; $body .= "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["PHP_SELF"] . "?cid=" . $contextItem->getItemID() . "&mod=account&fct=index&selstatus=1"; $mail->set_message($body); $mail->send(); $translator->setSelectedLanguage($savedLanguage); // activate user $portalUser->makeUser(); $portalUser->save(); $this->_environment->setcurrentUserItem($portalUser); // send mail to user if ($portalUser->isUser()) { $modText = ""; $modList = $contextItem->getContactModeratorList(); if ($modList->isEmpty()) { $modItem = $modList->getFirst(); $contactModerator = $modItem; while ($modItem) { if (!empty($modText)) { $modText .= ',' . LF; } $modText .= $modItem->getFullname(); $modText .= " (" . $modItem->getEmail() . ")"; $modItem = $modList->getNext(); } } $language = getSelectedLanguage(); $translator->setSelectedLanguage($language); include_once "classes/cs_mail.php"; $mail = new cs_mail(); $mail->set_to($portalUser->getEmail()); $mail->set_from_name($translator->getMessage("SYSTEM_MAIL_MESSAGE", $contextItem->getTitle())); $serverItem = $this->_environment->getServerItem(); $defaultSenderAddress = $serverItem->getDefaultSenderAddress(); if (!empty($defaultSenderAddress)) { $mail->set_from_email($defaultSenderAddress); } else { $userManager = $this->_environment->getUserManager(); $rootUser = $userManager->getRootUser(); $rootMailAddress = $rootUser->getEmail(); if (!empty($rootMailAddress)) { $mail->set_from_email($rootMailAddress); } else { $mail->set_from_email('@'); } } if (!empty($contactModerator)) { $mail->set_reply_to_email($contactModerator->getEmail()); $mail->set_reply_to_name($contactModerator->getFullname()); } $mail->set_subject($translator->getMessage("MAIL_SUBJECT_USER_ACCOUNT_FREE", $contextItem->getTitle())); $body = $translator->getMessage("MAIL_AUTO", $translator->getDateInLang(getCurrentDateTimeInMySQL()), $translator->getTimeInLang(getCurrentDateTimeInMySQL())); $body .= LF . LF; $body .= $translator->getEmailMEssage("MAIL_BODY_HELLO", $portalUser->getFullname()); $body .= LF . LF; $body .= $translator->getEmailMessage("MAIL_BODY_USER_STATUS_USER", $portalUser->getUserID(), $contextItem->getTitle()); $body .= LF . LF; if (empty($contactModerator)) { $body .= $translator->getMessage("SYSTEM_MAIL_REPLY_INFO") . LF; $body .= $modText; $body .= LF . LF; } else { $body .= $translator->getEmailMessage("MAIL_BODY_CIAO", $contactModerator->getFullname(), $contextItem->getTitle()); $body .= LF . LF; } $body .= "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["PHP_SELF"] . "?cid=" . $this->_environment->getCurrentContextID(); $mail->set_message($body); $mail->send(); } } } } else { $errorArray['account'] = ''; } } if (sizeof($errorArray) > 0) { $xml = "<errors>\n"; foreach ($errorArray as $code => $description) { $xml .= "<" . $code . "><![CDATA[" . $description . "]]></" . $code . ">\n"; } $xml .= "</errors>"; } else { $xml = "<success></success>"; } $xml = $this->_encode_output($xml); } else { return new SoapFault('ERROR', 'Session (' . $session_id . ') not valid!'); } return $xml; }