/** * Stores the submitted data to the backend / the loginprovider * * @return string */ protected function actionSaveUser() { $strReturn = ""; $bitSelfedit = false; $objUsersources = new class_module_user_sourcefactory(); if ($this->getParam("mode") == "new") { if (!$this->getObjModule()->rightEdit()) { return $this->getLang("commons_error_permissions"); } $objSubsystem = $objUsersources->getUsersource($this->getParam("usersource")); $objBlankUser = $objSubsystem->getNewUser(); $objForm = $this->getUserForm($objBlankUser, false, "new"); } else { if (!$this->getObjModule()->rightEdit()) { if ($this->getSystemid() == $this->objSession->getUserID() && class_module_system_setting::getConfigValue("_user_selfedit_") == "true") { $bitSelfedit = true; } else { return $this->getLang("commons_error_permissions"); } } $objUser = new class_module_user_user($this->getSystemid()); $objSourceUser = $objUsersources->getSourceUser($objUser); $objForm = $this->getUserForm($objSourceUser, $bitSelfedit, "edit"); } if (($this->getParam("mode") == "new" && !$this->checkAdditionalNewData($objForm)) | ($this->getParam("mode") == "edit" && !$this->checkAdditionalEditData($objForm)) | !$objForm->validateForm()) { return $this->actionNewUser($this->getParam("mode"), $objForm); } $objUser = null; if ($this->getParam("mode") == "new") { //create a new user and pass all relevant data $objUser = new class_module_user_user(); $objUser->setStrSubsystem($this->getParam("usersource")); $objUser->setStrUsername($this->getParam("user_username")); $objUser->setIntActive($this->getParam("user_active") != "" && $this->getParam("user_active") == "checked" ? 1 : 0); $objUser->setIntAdmin($this->getParam("user_adminlogin") != "" && $this->getParam("user_adminlogin") == "checked" ? 1 : 0); $objUser->setIntPortal($this->getParam("user_portal") != "" && $this->getParam("user_portal") == "checked" ? 1 : 0); } else { if ($this->getParam("mode") == "edit") { //create a new user and pass all relevant data $objUser = new class_module_user_user($this->getSystemid()); if (!$bitSelfedit) { $objUser->setStrUsername($this->getParam("user_username")); $objUser->setIntActive($this->getParam("user_active") != "" && $this->getParam("user_active") == "checked" ? 1 : 0); $objUser->setIntAdmin($this->getParam("user_adminlogin") != "" && $this->getParam("user_adminlogin") == "checked" ? 1 : 0); $objUser->setIntPortal($this->getParam("user_portal") != "" && $this->getParam("user_portal") == "checked" ? 1 : 0); } } } $objUser->setStrAdminskin($this->getParam("user_skin")); $objUser->setStrAdminlanguage($this->getParam("user_language")); $objUser->setStrAdminModule($this->getParam("user_startmodule")); $objUser->setIntItemsPerPage($this->getParam("user_items_per_page")); $objUser->updateObjectToDb(); $objSourceUser = $objUser->getObjSourceUser(); $objForm = $this->getUserForm($objSourceUser, $bitSelfedit, $this->getParam("mode")); $objForm->updateSourceObject(); $objSourceUser->updateObjectToDb(); // assign user to the same groups if we have an user where we inherit the group settings if ($this->getParam("mode") == "new") { $strInheritUserId = $this->getParam("user_inherit_permissions_id"); if (!empty($strInheritUserId)) { $objInheritUser = new class_module_user_user($strInheritUserId); $arrGroupIds = $objInheritUser->getArrGroupIds(); foreach ($arrGroupIds as $strGroupId) { $objGroup = new class_module_user_group($strGroupId); $objSourceGroup = $objGroup->getObjSourceGroup(); $objSourceGroup->addMember($objUser->getObjSourceUser()); } $this->adminReload(class_link::getLinkAdminHref($this->getArrModule("modul"), "editMemberships", "&systemid=" . $objUser->getStrSystemid())); return ""; } } if ($this->getParam("mode") == "edit") { //Reset the admin-skin cookie to force the new skin $objCookie = new class_cookie(); //flush the db-cache class_carrier::getInstance()->getObjDB()->flushQueryCache(); $this->objSession->resetUser(); //and update the cookie $objCookie->setCookie("adminskin", $this->objSession->getAdminSkin(false, true)); //update language set before $objCookie->setCookie("adminlanguage", $this->objSession->getAdminLanguage(false, true)); } //flush the navigation cache in order to get new items for a possible updated list class_admin_helper::flushActionNavigationCache(); if ($this->getObjModule()->rightView()) { $this->adminReload(class_link::getLinkAdminHref($this->getArrModule("modul"), "list")); } else { $this->adminReload(class_link::getLinkAdminHref($objUser->getStrAdminModule())); } return $strReturn; }
/** * Creates a form to collect a users data * * @return string */ private function editUserData() { $arrErrors = array(); $bitForm = true; //what to do? if ($this->getParam("submitUserForm") != "") { $objTextValidator = new class_text_validator(); $objEmailValidator = new class_email_validator(); if ($this->getParam("password") == "" || $this->getParam("password") != $this->getParam("password2")) { $arrErrors[] = $this->getLang("pr_passwordsUnequal"); } if (!$objTextValidator->validate($this->getParam("username"))) { $arrErrors[] = $this->getLang("pr_noUsername"); } //username already existing? if ($objTextValidator->validate($this->getParam("username")) && count(class_module_user_user::getAllUsersByName($this->getParam("username"))) > 0) { $arrErrors[] = $this->getLang("pr_usernameGiven"); } if (!$objEmailValidator->validate($this->getParam("email"))) { $arrErrors[] = $this->getLang("pr_invalidEmailadress"); } //Check captachcode if ($this->getParam("form_captcha") == "" || $this->getParam("form_captcha") != $this->objSession->getCaptchaCode()) { $arrErrors[] = $this->getLang("pr_captcha"); } if (count($arrErrors) == 0) { $bitForm = false; } } if ($bitForm) { $strTemplateID = $this->objTemplate->readTemplate("/element_portalregistration/" . $this->arrElementData["portalregistration_template"], "portalregistration_userdataform"); $arrTemplate = array(); $arrTemplate["username"] = $this->getParam("username"); $arrTemplate["email"] = $this->getParam("email"); $arrTemplate["forename"] = $this->getParam("forename"); $arrTemplate["name"] = $this->getParam("name"); $arrTemplate["formaction"] = class_link::getLinkPortalHref($this->getPagename(), "", "portalCreateAccount"); $arrTemplate["formErrors"] = ""; if (count($arrErrors) > 0) { foreach ($arrErrors as $strOneError) { $strErrTemplate = $this->objTemplate->readTemplate("/element_portalregistration/" . $this->arrElementData["portalregistration_template"], "errorRow"); $arrTemplate["formErrors"] .= "" . $this->fillTemplate(array("error" => $strOneError), $strErrTemplate); } } return $this->fillTemplate($arrTemplate, $strTemplateID); } else { //create new user, inactive $objUser = new class_module_user_user(); $objUser->setStrUsername($this->getParam("username")); $objUser->setIntActive(0); $objUser->setIntAdmin(0); $objUser->setIntPortal(1); $objUser->setStrSubsystem("kajona"); $strAuthcode = generateSystemid(); $objUser->setStrAuthcode($strAuthcode); if ($objUser->updateObjectToDb()) { $objSourceuser = $objUser->getObjSourceUser(); $objSourceuser->setStrEmail($this->getParam("email")); $objSourceuser->setStrForename($this->getParam("forename")); $objSourceuser->setStrName($this->getParam("name")); $objSourceuser->setStrPass($this->getParam("password")); $objSourceuser->updateObjectToDb(); //group assignments $objGroup = new class_module_user_group($this->arrElementData["portalregistration_group"]); $objGroup->getObjSourceGroup()->addMember($objUser->getObjSourceUser()); //and to the guests to avoid conflicts $objGroup = new class_module_user_group(class_module_system_setting::getConfigValue("_guests_group_id_")); $objGroup->getObjSourceGroup()->addMember($objUser->getObjSourceUser()); //create a mail to allow the user to activate itself $strMailContent = $this->getLang("pr_email_body"); $strTemp = getLinkPortalHref($this->getPagename(), "", "portalCompleteRegistration", "&authcode=" . $strAuthcode, $objUser->getSystemid()); $strMailContent .= html_entity_decode("<a href=\"" . $strTemp . "\">" . $strTemp . "</a>"); $strMailContent .= $this->getLang("pr_email_footer"); $objScriptlets = new class_scriptlet_helper(); $strMailContent = $objScriptlets->processString($strMailContent); $objMail = new class_mail(); $objMail->setSubject($this->getLang("pr_email_subject")); $objMail->setHtml($strMailContent); $objMail->addTo($this->getParam("email")); $objMail->sendMail(); } return $this->getLang("pr_register_suc"); } }