コード例 #1
0
 public function Execute()
 {
     $viewData = array();
     $errors = array();
     if (!PUBLIC_USER_CREATION_CODE) {
         Helper::Redirect("users.php");
     }
     if (Session::GetPublicCreationCodeEntered()) {
         Helper::Redirect("edit_user.php");
     }
     if (isset($_POST["proceed"])) {
         if ($_POST["publicCreationCode"] == PUBLIC_USER_CREATION_CODE) {
             Session::SetPublicCreationCodeEntered(true);
             Helper::Redirect("edit_user.php");
         }
         $errors[] = __("INVALID_CODE");
     }
     if (isset($_POST["cancel"])) {
         Helper::Redirect("users.php");
     }
     $viewData["Errors"] = $errors;
     return $viewData;
 }
コード例 #2
0
 public function Execute()
 {
     $viewData = array();
     $isAdmin = isset($_GET["mode"]) && $_GET["mode"] == "admin" && Helper::IsLoggedInAdmin();
     // no user specified and not admin mode - redirect to user list page
     if (!$isAdmin && !getCurrentUser() && !Session::GetPublicCreationCodeEntered()) {
         Helper::Redirect("users.php");
     }
     $errors = array();
     $user = getCurrentUser();
     $isNewUser = !isset($user) || !$user->ID;
     if ($isNewUser) {
         $user = new User();
     }
     if (isset($_POST["cancel"])) {
         Helper::Redirect($isAdmin ? "users.php" : "index.php?" . Helper::CreateQuerystring($user));
     }
     if ($isAdmin && isset($_POST["deleteConfirmed"])) {
         DataAccess::DeleteUserByID($user->ID);
         Helper::Redirect($isAdmin ? "users.php" : "index.php?" . Helper::CreateQuerystring($user));
     }
     // any category handling button clicked?
     $addCategory = null;
     $deleteCategory = null;
     foreach ($_POST as $key => $value) {
         if (substr($key, 0, 15) == "deleteCategory_") {
             $deleteCategory = substr($key, 15);
             break;
         }
         if ($key == "addCategory") {
             $addCategory = true;
             break;
         }
     }
     if (isset($_POST["save"]) || isset($_POST["delete"]) || $deleteCategory || $addCategory) {
         // populate user object with data from form elements
         $user->Username = stripslashes($_POST["username"]);
         $password = stripslashes($_POST["password"]);
         if ($password) {
             $user->Password = md5($password);
         }
         $user->FirstName = stripslashes($_POST["firstName"]);
         $user->LastName = stripslashes($_POST["lastName"]);
         $user->Email = stripslashes($_POST["email"]);
         if ($isAdmin) {
             $user->Visible = $_POST["visible"] ? 1 : 0;
         }
         if (!$isAdmin && $isNewUser) {
             $user->Visible = 1;
         }
         $defaultCategory = $_POST["defaultCategory"];
         $noOfCategoriesAdded = $_POST["noOfCategoriesAdded"];
         // the category array
         foreach ($_POST as $key => $value) {
             if (substr($key, 0, 17) == "categoryName_new_") {
                 $id = "1_" . sprintf("%08d", substr($key, 17));
                 $categories[$id] = new Category();
                 $categories[$id]->Name = stripslashes($value);
                 $categories[$id]->UserID = $user->ID;
             } elseif (substr($key, 0, 13) == "categoryName_") {
                 $id = "0_" . sprintf("%08d", substr($key, 13));
                 $categories[$id] = new Category();
                 $categories[$id]->Name = stripslashes($value);
                 $categories[$id]->UserID = $user->ID;
                 $categories[$id]->ID = substr($key, 13);
             }
         }
         ksort($categories);
         // shall we delete a category?
         if ($deleteCategory) {
             if (count($categories) <= 1) {
                 $errors[] = __("CAN_NOT_DELETE_ALL_CATEGORIES");
             } else {
                 if (substr($deleteCategory, 0, 4) == "new_") {
                     // unsaved categories can be deleted directly
                     $id = "1_" . sprintf("%08d", substr($deleteCategory, 4));
                     unset($categories[$id]);
                 } else {
                     // for saved categories, we need to check for existing maps
                     $id = "0_" . sprintf("%08d", $deleteCategory);
                     $noOfMapsInCategory = DataAccess::NoOfMapsInCategory($deleteCategory);
                     if ($noOfMapsInCategory > 0) {
                         $errors[] = sprintf(__("CAN_NOT_DELETE_NONEMPTY_CATEGORY"), $categories[$id]->Name, $noOfMapsInCategory);
                     } else {
                         unset($categories[$id]);
                     }
                 }
             }
         }
         if ($addCategory) {
             $id = "1_" . sprintf("%08d", $noOfCategoriesAdded);
             $categories[$id] = new Category();
             $categories[$id]->UserID = $user->ID;
             $noOfCategoriesAdded++;
         }
     } else {
         // first page visit
         if ($isNewUser) {
             $noOfCategoriesAdded = 0;
             if ($isAdmin) {
                 $_POST["sendEmail"] = 1;
             }
             $defaultCategoryNames = @explode(";", __("DEFAULT_CATEGORY_NAMES"));
             sort($defaultCategoryNames);
             $categories = array();
             foreach ($defaultCategoryNames as $dcn) {
                 $c = new Category();
                 $c->Name = $dcn;
                 $categories["1_" . sprintf("%08d", $noOfCategoriesAdded)] = $c;
                 $noOfCategoriesAdded++;
             }
             $defaultCategory = "new_0";
         } else {
             $categories = $user->GetCategories();
             $defaultCategory = $user->DefaultCategoryID;
         }
         $customizableSettings = Helper::GetCustomizableStrings();
         foreach ($customizableSettings["settings"] as $key => $value) {
             $_POST["CV_{$key}"] = __($key);
         }
     }
     // create category data for output and make sure that there is a default category
     $categoryData = array();
     $defaultCategoryIndex = -1;
     foreach ($categories as $key => $c) {
         $d = array();
         $d["category"] = $c;
         if ($c->ID) {
             $d["nameId"] = "categoryName_" . $c->ID;
             $d["defaultValue"] = $c->ID;
             $d["deleteId"] = "deleteCategory_" . $c->ID;
         } else {
             $id = (int) substr($key, 2);
             $d["nameId"] = "categoryName_new_{$id}";
             $d["defaultValue"] = "new_{$id}";
             $d["deleteId"] = "deleteCategory_new_{$id}";
         }
         $d["defaultId"] = "categoryDefault_" . $d["defaultValue"];
         if ($defaultCategory == $d["defaultValue"]) {
             $defaultCategoryIndex = count($categoryData);
         }
         $categoryData[] = $d;
     }
     $defaultCategory = $defaultCategoryIndex == -1 ? 0 : $categoryData[$defaultCategoryIndex]["defaultValue"];
     if (isset($_POST["save"])) {
         // validate
         if (DataAccess::UsernameExists($user->Username, $user->ID)) {
             $errors[] = __("USERNAME_EXISTS");
         }
         if (trim($user->Username) == "") {
             $errors[] = __("NO_USERNAME_ENTERED");
         }
         if (!$user->ID && trim($password) == "") {
             $errors[] = __("NO_PASSWORD_ENTERED");
         }
         if (trim($user->FirstName) == "") {
             $errors[] = __("NO_FIRST_NAME_ENTERED");
         }
         if (trim($user->LastName) == "") {
             $errors[] = __("NO_LAST_NAME_ENTERED");
         }
         if ($user->Email == "") {
             $errors[] = __("NO_EMAIL_ENTERED");
         }
         if ($user->Email != "" && !Helper::IsValidEmailAddress($user->Email)) {
             $errors[] = __("INVALID_EMAIL");
         }
         foreach ($categories as $c) {
             if (trim($c->Name) == "") {
                 $emptyCategoryNameFound = true;
             }
         }
         if (isset($emptyCategoryNameFound)) {
             $errors[] = __("CATEGORY_NAME_CANNOT_BE_EMPTY");
         }
         if (count($errors) == 0) {
             $userSettings = array();
             foreach ($_POST as $key => $value) {
                 if (substr($key, 0, 3) == "CV_") {
                     $key = substr($key, 3);
                     $userSettings[$key] = stripslashes($value);
                 }
             }
             DataAccess::SaveUser($user, $categories, $defaultCategoryIndex, $userSettings);
             // send welcome email
             if ($isNewUser && !($isAdmin && !$_POST["sendEmail"])) {
                 $fromName = __("DOMA_ADMIN_EMAIL_NAME");
                 $subject = __("NEW_USER_EMAIL_SUBJECT");
                 $baseAddress = Helper::GlobalPath("");
                 $userAddress = Helper::GlobalPath("index.php?user="******"NEW_USER_EMAIL_BODY"), $user->FirstName, $baseAddress, $userAddress, $user->Username, $password);
                 $emailSent = true;
                 $emailSentSuccessfully = Helper::SendEmail($fromName, $user->Email, $subject, $body);
             }
             // clear language cache
             Session::SetLanguageStrings(null);
             if ($isAdmin) {
                 Helper::Redirect("users.php" . ($emailSent && !$emailSentSuccessfully ? "?error=email" : ""));
             } else {
                 Helper::Redirect("index.php?" . Helper::CreateQuerystring($user));
             }
         }
     }
     if ($isAdmin) {
         $viewData["Title"] = $user->ID ? sprintf(__("EDIT_USER_X"), $user->FirstName . " " . $user->LastName) : __("ADD_USER");
         $viewData["Info"] = ($user->ID ? __("ADMIN_EDIT_USER_INFO") : __("ADMIN_ADD_USER_INFO")) . " " . sprintf(__("REQUIRED_FIELDS_INFO"), '<span class="required">*</span>');
     } else {
         $viewData["Title"] = $isNewUser ? __("ADD_USER_PROFILE_TITLE") : __("EDIT_USER_PROFILE_TITLE");
         $viewData["Info"] = sprintf(__("REQUIRED_FIELDS_INFO"), '<span class="required">*</span>');
     }
     $atoms = array();
     if ($isAdmin) {
         $atoms[] = "mode=admin";
     }
     if ($user->ID) {
         $atoms[] = Helper::CreateQuerystring($user);
     }
     $viewData["FormActionURL"] = $_SERVER["PHP_SELF"] . (count($atoms) > 0 ? "?" . join("&amp;", $atoms) : "");
     $viewData["Errors"] = $errors;
     $viewData["IsAdmin"] = $isAdmin;
     $viewData["IsNewUser"] = $isNewUser;
     $viewData["User"] = $user;
     $viewData["SendEmail"] = isset($_POST["sendEmail"]);
     $viewData["CategoryData"] = $categoryData;
     $viewData["DefaultCategory"] = $defaultCategory;
     $viewData["DeleteButtonClicked"] = isset($_POST["delete"]);
     $viewData["NoOfCategoriesAdded"] = isset($noOfCategoriesAdded) ? $noOfCategoriesAdded : 0;
     $viewData["CustomizableSettings"] = Helper::GetCustomizableStrings();
     return $viewData;
 }