| @@ -1,9 +1,9 @@ discard block | ||
| 1 | 1 | <?php | 
| 2 | 2 |  if( ! defined('IN_MANAGER_MODE') || IN_MANAGER_MODE !== true) { | 
| 3 | -	die("<b>INCLUDE_ORDERING_ERROR</b><br /><br />Please use the EVO Content Manager instead of accessing this file directly."); | |
| 3 | +    die("<b>INCLUDE_ORDERING_ERROR</b><br /><br />Please use the EVO Content Manager instead of accessing this file directly."); | |
| 4 | 4 | } | 
| 5 | 5 |  if(!$modx->hasPermission('save_user')) { | 
| 6 | - $modx->webAlertAndQuit($_lang["error_no_privileges"]); | |
| 6 | + $modx->webAlertAndQuit($_lang["error_no_privileges"]); | |
| 7 | 7 | } | 
| 8 | 8 | |
| 9 | 9 |  $modx->loadExtension('phpass'); | 
| @@ -45,134 +45,134 @@ discard block | ||
| 45 | 45 | |
| 46 | 46 | // verify password | 
| 47 | 47 |  if($passwordgenmethod == "spec" && $input['specifiedpassword'] != $input['confirmpassword']) { | 
| 48 | -	webAlertAndQuit("Password typed is mismatched", 12); | |
| 48 | +    webAlertAndQuit("Password typed is mismatched", 12); | |
| 49 | 49 | } | 
| 50 | 50 | |
| 51 | 51 | // verify email | 
| 52 | 52 |  if($email == '' || !preg_match("/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,24}$/i", $email)) { | 
| 53 | -	webAlertAndQuit("E-mail address doesn't seem to be valid!", 12); | |
| 53 | +    webAlertAndQuit("E-mail address doesn't seem to be valid!", 12); | |
| 54 | 54 | } | 
| 55 | 55 | |
| 56 | 56 | // verify admin security | 
| 57 | 57 |  if($_SESSION['mgrRole'] != 1) { | 
| 58 | - // Check to see if user tried to spoof a "1" (admin) role | |
| 59 | -	if(!$modx->hasPermission('save_user')) { | |
| 60 | -		webAlertAndQuit("Illegal attempt to create/modify administrator by non-administrator!", 12); | |
| 61 | - } | |
| 62 | - // Verify that the user being edited wasn't an admin and the user ID got spoofed | |
| 63 | -	$rs = $modx->db->select('count(internalKey)', $tbl_user_attributes, "internalKey='{$id}' AND role=1"); | |
| 64 | - $limit = $modx->db->getValue($rs); | |
| 65 | -	if($limit > 0) { | |
| 66 | -		webAlertAndQuit("You cannot alter an administrative user.", 12); | |
| 67 | - } | |
| 58 | + // Check to see if user tried to spoof a "1" (admin) role | |
| 59 | +    if(!$modx->hasPermission('save_user')) { | |
| 60 | +        webAlertAndQuit("Illegal attempt to create/modify administrator by non-administrator!", 12); | |
| 61 | + } | |
| 62 | + // Verify that the user being edited wasn't an admin and the user ID got spoofed | |
| 63 | +    $rs = $modx->db->select('count(internalKey)', $tbl_user_attributes, "internalKey='{$id}' AND role=1"); | |
| 64 | + $limit = $modx->db->getValue($rs); | |
| 65 | +    if($limit > 0) { | |
| 66 | +        webAlertAndQuit("You cannot alter an administrative user.", 12); | |
| 67 | + } | |
| 68 | 68 | |
| 69 | 69 | } | 
| 70 | 70 | |
| 71 | 71 |  switch($input['mode']) { | 
| 72 | - case '11' : // new user | |
| 73 | - // check if this user name already exist | |
| 74 | -		$rs = $modx->db->select('count(id)', $tbl_manager_users, sprintf("username='%s'", $modx->db->escape($newusername))); | |
| 75 | - $limit = $modx->db->getValue($rs); | |
| 76 | -		if($limit > 0) { | |
| 77 | -			webAlertAndQuit("User name is already in use!", 12); | |
| 78 | - } | |
| 79 | - | |
| 80 | - // check if the email address already exist | |
| 81 | -		$rs = $modx->db->select('count(internalKey)', $tbl_user_attributes, sprintf("email='%s' AND id!='%s'", $modx->db->escape($email), $id)); | |
| 82 | - $limit = $modx->db->getValue($rs); | |
| 83 | -		if($limit > 0) { | |
| 84 | -			webAlertAndQuit("Email is already in use!", 12); | |
| 85 | - } | |
| 86 | - | |
| 87 | - // generate a new password for this user | |
| 88 | -		if($specifiedpassword != "" && $passwordgenmethod == "spec") { | |
| 89 | -			if(strlen($specifiedpassword) < 6) { | |
| 90 | -				webAlertAndQuit("Password is too short!", 12); | |
| 91 | -			} else { | |
| 92 | - $newpassword = $specifiedpassword; | |
| 93 | - } | |
| 94 | -		} elseif($specifiedpassword == "" && $passwordgenmethod == "spec") { | |
| 95 | -			webAlertAndQuit("You didn't specify a password for this user!", 12); | |
| 96 | -		} elseif($passwordgenmethod == 'g') { | |
| 97 | - $newpassword = generate_password(8); | |
| 98 | -		} else { | |
| 99 | -			webAlertAndQuit("No password generation method specified!", 12); | |
| 100 | - } | |
| 101 | - | |
| 102 | - // invoke OnBeforeUserFormSave event | |
| 103 | -		$modx->invokeEvent("OnBeforeUserFormSave", array( | |
| 104 | - "mode" => "new", | |
| 105 | - )); | |
| 106 | - | |
| 107 | - // create the user account | |
| 108 | -		$internalKey = $modx->db->insert(array('username' => $modx->db->escape($newusername)), $tbl_manager_users); | |
| 109 | - | |
| 110 | - $field = array(); | |
| 111 | - $field['password'] = $modx->phpass->HashPassword($newpassword); | |
| 112 | -		$modx->db->update($field, $tbl_manager_users, "id='{$internalKey}'"); | |
| 113 | - | |
| 114 | -		$field = compact('internalKey', 'fullname', 'role', 'email', 'phone', 'mobilephone', 'fax', 'zip', 'street', 'city', 'state', 'country', 'gender', 'dob', 'photo', 'comment', 'blocked', 'blockeduntil', 'blockedafter'); | |
| 115 | - $field = $modx->db->escape($field); | |
| 116 | - $modx->db->insert($field, $tbl_user_attributes); | |
| 117 | - | |
| 118 | - // Save user settings | |
| 72 | + case '11' : // new user | |
| 73 | + // check if this user name already exist | |
| 74 | +        $rs = $modx->db->select('count(id)', $tbl_manager_users, sprintf("username='%s'", $modx->db->escape($newusername))); | |
| 75 | + $limit = $modx->db->getValue($rs); | |
| 76 | +        if($limit > 0) { | |
| 77 | +            webAlertAndQuit("User name is already in use!", 12); | |
| 78 | + } | |
| 79 | + | |
| 80 | + // check if the email address already exist | |
| 81 | +        $rs = $modx->db->select('count(internalKey)', $tbl_user_attributes, sprintf("email='%s' AND id!='%s'", $modx->db->escape($email), $id)); | |
| 82 | + $limit = $modx->db->getValue($rs); | |
| 83 | +        if($limit > 0) { | |
| 84 | +            webAlertAndQuit("Email is already in use!", 12); | |
| 85 | + } | |
| 86 | + | |
| 87 | + // generate a new password for this user | |
| 88 | +        if($specifiedpassword != "" && $passwordgenmethod == "spec") { | |
| 89 | +            if(strlen($specifiedpassword) < 6) { | |
| 90 | +                webAlertAndQuit("Password is too short!", 12); | |
| 91 | +            } else { | |
| 92 | + $newpassword = $specifiedpassword; | |
| 93 | + } | |
| 94 | +        } elseif($specifiedpassword == "" && $passwordgenmethod == "spec") { | |
| 95 | +            webAlertAndQuit("You didn't specify a password for this user!", 12); | |
| 96 | +        } elseif($passwordgenmethod == 'g') { | |
| 97 | + $newpassword = generate_password(8); | |
| 98 | +        } else { | |
| 99 | +            webAlertAndQuit("No password generation method specified!", 12); | |
| 100 | + } | |
| 101 | + | |
| 102 | + // invoke OnBeforeUserFormSave event | |
| 103 | +        $modx->invokeEvent("OnBeforeUserFormSave", array( | |
| 104 | + "mode" => "new", | |
| 105 | + )); | |
| 106 | + | |
| 107 | + // create the user account | |
| 108 | +        $internalKey = $modx->db->insert(array('username' => $modx->db->escape($newusername)), $tbl_manager_users); | |
| 109 | + | |
| 110 | + $field = array(); | |
| 111 | + $field['password'] = $modx->phpass->HashPassword($newpassword); | |
| 112 | +        $modx->db->update($field, $tbl_manager_users, "id='{$internalKey}'"); | |
| 113 | + | |
| 114 | +        $field = compact('internalKey', 'fullname', 'role', 'email', 'phone', 'mobilephone', 'fax', 'zip', 'street', 'city', 'state', 'country', 'gender', 'dob', 'photo', 'comment', 'blocked', 'blockeduntil', 'blockedafter'); | |
| 115 | + $field = $modx->db->escape($field); | |
| 116 | + $modx->db->insert($field, $tbl_user_attributes); | |
| 117 | + | |
| 118 | + // Save user settings | |
| 119 | 119 | saveManagerUserSettings($internalKey); | 
| 120 | 120 | |
| 121 | - // invoke OnManagerSaveUser event | |
| 122 | -		$modx->invokeEvent("OnManagerSaveUser", array( | |
| 123 | - "mode" => "new", | |
| 124 | - "userid" => $internalKey, | |
| 125 | - "username" => $newusername, | |
| 126 | - "userpassword" => $newpassword, | |
| 127 | - "useremail" => $email, | |
| 128 | - "userfullname" => $fullname, | |
| 129 | - "userroleid" => $role | |
| 130 | - )); | |
| 131 | - | |
| 132 | - // invoke OnUserFormSave event | |
| 133 | -		$modx->invokeEvent("OnUserFormSave", array( | |
| 134 | - "mode" => "new", | |
| 135 | - "id" => $internalKey | |
| 136 | - )); | |
| 137 | - | |
| 138 | - // Set the item name for logger | |
| 139 | - $_SESSION['itemname'] = $newusername; | |
| 140 | - | |
| 141 | - /*******************************************************************************/ | |
| 142 | - // put the user in the user_groups he/ she should be in | |
| 143 | - // first, check that up_perms are switched on! | |
| 144 | -		if($use_udperms == 1) { | |
| 145 | -			if(!empty($user_groups)) { | |
| 146 | -				for($i = 0; $i < count($user_groups); $i++) { | |
| 147 | - $f = array(); | |
| 148 | - $f['user_group'] = (int)$user_groups[$i]; | |
| 149 | - $f['member'] = $internalKey; | |
| 150 | - $modx->db->insert($f, $tbl_member_groups); | |
| 151 | - } | |
| 152 | - } | |
| 153 | - } | |
| 154 | - // end of user_groups stuff! | |
| 155 | - | |
| 156 | -		if($passwordnotifymethod == 'e') { | |
| 121 | + // invoke OnManagerSaveUser event | |
| 122 | +        $modx->invokeEvent("OnManagerSaveUser", array( | |
| 123 | + "mode" => "new", | |
| 124 | + "userid" => $internalKey, | |
| 125 | + "username" => $newusername, | |
| 126 | + "userpassword" => $newpassword, | |
| 127 | + "useremail" => $email, | |
| 128 | + "userfullname" => $fullname, | |
| 129 | + "userroleid" => $role | |
| 130 | + )); | |
| 131 | + | |
| 132 | + // invoke OnUserFormSave event | |
| 133 | +        $modx->invokeEvent("OnUserFormSave", array( | |
| 134 | + "mode" => "new", | |
| 135 | + "id" => $internalKey | |
| 136 | + )); | |
| 137 | + | |
| 138 | + // Set the item name for logger | |
| 139 | + $_SESSION['itemname'] = $newusername; | |
| 140 | + | |
| 141 | + /*******************************************************************************/ | |
| 142 | + // put the user in the user_groups he/ she should be in | |
| 143 | + // first, check that up_perms are switched on! | |
| 144 | +        if($use_udperms == 1) { | |
| 145 | +            if(!empty($user_groups)) { | |
| 146 | +                for($i = 0; $i < count($user_groups); $i++) { | |
| 147 | + $f = array(); | |
| 148 | + $f['user_group'] = (int)$user_groups[$i]; | |
| 149 | + $f['member'] = $internalKey; | |
| 150 | + $modx->db->insert($f, $tbl_member_groups); | |
| 151 | + } | |
| 152 | + } | |
| 153 | + } | |
| 154 | + // end of user_groups stuff! | |
| 155 | + | |
| 156 | +        if($passwordnotifymethod == 'e') { | |
| 157 | 157 | sendMailMessageForUser($email, $newusername, $newpassword, $fullname, $signupemail_message, MODX_MANAGER_URL); | 
| 158 | -			if($input['stay'] != '') { | |
| 159 | -				$a = ($input['stay'] == '2') ? "12&id={$internalKey}" : "11"; | |
| 160 | -				$header = "Location: index.php?a={$a}&r=2&stay=" . $input['stay']; | |
| 161 | - header($header); | |
| 162 | -			} else { | |
| 163 | - $header = "Location: index.php?a=75&r=2"; | |
| 164 | - header($header); | |
| 165 | - } | |
| 166 | -		} else { | |
| 167 | -			if($input['stay'] != '') { | |
| 168 | -				$a = ($input['stay'] == '2') ? "12&id={$internalKey}" : "11"; | |
| 169 | -				$stayUrl = "index.php?a={$a}&r=2&stay=" . $input['stay']; | |
| 170 | -			} else { | |
| 171 | - $stayUrl = "index.php?a=75&r=2"; | |
| 172 | - } | |
| 173 | - | |
| 174 | - include_once "header.inc.php"; | |
| 175 | - ?> | |
| 158 | +            if($input['stay'] != '') { | |
| 159 | +                $a = ($input['stay'] == '2') ? "12&id={$internalKey}" : "11"; | |
| 160 | +                $header = "Location: index.php?a={$a}&r=2&stay=" . $input['stay']; | |
| 161 | + header($header); | |
| 162 | +            } else { | |
| 163 | + $header = "Location: index.php?a=75&r=2"; | |
| 164 | + header($header); | |
| 165 | + } | |
| 166 | +        } else { | |
| 167 | +            if($input['stay'] != '') { | |
| 168 | +                $a = ($input['stay'] == '2') ? "12&id={$internalKey}" : "11"; | |
| 169 | +                $stayUrl = "index.php?a={$a}&r=2&stay=" . $input['stay']; | |
| 170 | +            } else { | |
| 171 | + $stayUrl = "index.php?a=75&r=2"; | |
| 172 | + } | |
| 173 | + | |
| 174 | + include_once "header.inc.php"; | |
| 175 | + ?> | |
| 176 | 176 | |
| 177 | 177 | <h1><?php echo $_lang['user_title']; ?></h1> | 
| 178 | 178 | |
| @@ -194,125 +194,125 @@ discard block | ||
| 194 | 194 | </div> | 
| 195 | 195 | <?php | 
| 196 | 196 | |
| 197 | - include_once "footer.inc.php"; | |
| 198 | - } | |
| 199 | - break; | |
| 200 | - case '12' : // edit user | |
| 201 | - // generate a new password for this user | |
| 202 | -		if($genpassword == 1) { | |
| 203 | -			if($specifiedpassword != "" && $passwordgenmethod == "spec") { | |
| 204 | -				if(strlen($specifiedpassword) < 6) { | |
| 205 | -					webAlertAndQuit("Password is too short!", 12); | |
| 206 | -				} else { | |
| 207 | - $newpassword = $specifiedpassword; | |
| 208 | - } | |
| 209 | -			} elseif($specifiedpassword == "" && $passwordgenmethod == "spec") { | |
| 210 | -				webAlertAndQuit("You didn't specify a password for this user!", 12); | |
| 211 | -			} elseif($passwordgenmethod == 'g') { | |
| 212 | - $newpassword = generate_password(8); | |
| 213 | -			} else { | |
| 214 | -				webAlertAndQuit("No password generation method specified!", 12); | |
| 215 | - } | |
| 216 | - } | |
| 217 | -		if($passwordnotifymethod == 'e') { | |
| 197 | + include_once "footer.inc.php"; | |
| 198 | + } | |
| 199 | + break; | |
| 200 | + case '12' : // edit user | |
| 201 | + // generate a new password for this user | |
| 202 | +        if($genpassword == 1) { | |
| 203 | +            if($specifiedpassword != "" && $passwordgenmethod == "spec") { | |
| 204 | +                if(strlen($specifiedpassword) < 6) { | |
| 205 | +                    webAlertAndQuit("Password is too short!", 12); | |
| 206 | +                } else { | |
| 207 | + $newpassword = $specifiedpassword; | |
| 208 | + } | |
| 209 | +            } elseif($specifiedpassword == "" && $passwordgenmethod == "spec") { | |
| 210 | +                webAlertAndQuit("You didn't specify a password for this user!", 12); | |
| 211 | +            } elseif($passwordgenmethod == 'g') { | |
| 212 | + $newpassword = generate_password(8); | |
| 213 | +            } else { | |
| 214 | +                webAlertAndQuit("No password generation method specified!", 12); | |
| 215 | + } | |
| 216 | + } | |
| 217 | +        if($passwordnotifymethod == 'e') { | |
| 218 | 218 | sendMailMessageForUser($email, $newusername, $newpassword, $fullname, $signupemail_message, MODX_MANAGER_URL); | 
| 219 | - } | |
| 220 | - | |
| 221 | - // check if the username already exist | |
| 222 | -		$rs = $modx->db->select('count(id)', $tbl_manager_users, sprintf("username='%s' AND id!='%s'", $modx->db->escape($newusername), $id)); | |
| 223 | - $limit = $modx->db->getValue($rs); | |
| 224 | -		if($limit > 0) { | |
| 225 | -			webAlertAndQuit("User name is already in use!", 12); | |
| 226 | - } | |
| 227 | - | |
| 228 | - // check if the email address already exists | |
| 229 | -		$rs = $modx->db->select('count(internalKey)', $tbl_user_attributes, sprintf("email='%s' AND internalKey!='%s'", $modx->db->escape($email), $id)); | |
| 230 | - $limit = $modx->db->getValue($rs); | |
| 231 | -		if($limit > 0) { | |
| 232 | -			webAlertAndQuit("Email is already in use!", 12); | |
| 233 | - } | |
| 234 | - | |
| 235 | - // invoke OnBeforeUserFormSave event | |
| 236 | -		$modx->invokeEvent("OnBeforeUserFormSave", array( | |
| 237 | - "mode" => "upd", | |
| 238 | - "id" => $id | |
| 239 | - )); | |
| 240 | - | |
| 241 | - // update user name and password | |
| 242 | - $field = array(); | |
| 243 | - $field['username'] = $modx->db->escape($newusername); | |
| 244 | -		if($genpassword == 1) { | |
| 245 | - $field['password'] = $modx->phpass->HashPassword($newpassword); | |
| 246 | - } | |
| 247 | -		$modx->db->update($field, $tbl_manager_users, "id='{$id}'"); | |
| 248 | -		$field = compact('fullname', 'role', 'email', 'phone', 'mobilephone', 'fax', 'zip', 'street', 'city', 'state', 'country', 'gender', 'dob', 'photo', 'comment', 'failedlogincount', 'blocked', 'blockeduntil', 'blockedafter'); | |
| 249 | - $field = $modx->db->escape($field); | |
| 250 | -		$modx->db->update($field, $tbl_user_attributes, "internalKey='{$id}'"); | |
| 251 | - | |
| 252 | - // Save user settings | |
| 219 | + } | |
| 220 | + | |
| 221 | + // check if the username already exist | |
| 222 | +        $rs = $modx->db->select('count(id)', $tbl_manager_users, sprintf("username='%s' AND id!='%s'", $modx->db->escape($newusername), $id)); | |
| 223 | + $limit = $modx->db->getValue($rs); | |
| 224 | +        if($limit > 0) { | |
| 225 | +            webAlertAndQuit("User name is already in use!", 12); | |
| 226 | + } | |
| 227 | + | |
| 228 | + // check if the email address already exists | |
| 229 | +        $rs = $modx->db->select('count(internalKey)', $tbl_user_attributes, sprintf("email='%s' AND internalKey!='%s'", $modx->db->escape($email), $id)); | |
| 230 | + $limit = $modx->db->getValue($rs); | |
| 231 | +        if($limit > 0) { | |
| 232 | +            webAlertAndQuit("Email is already in use!", 12); | |
| 233 | + } | |
| 234 | + | |
| 235 | + // invoke OnBeforeUserFormSave event | |
| 236 | +        $modx->invokeEvent("OnBeforeUserFormSave", array( | |
| 237 | + "mode" => "upd", | |
| 238 | + "id" => $id | |
| 239 | + )); | |
| 240 | + | |
| 241 | + // update user name and password | |
| 242 | + $field = array(); | |
| 243 | + $field['username'] = $modx->db->escape($newusername); | |
| 244 | +        if($genpassword == 1) { | |
| 245 | + $field['password'] = $modx->phpass->HashPassword($newpassword); | |
| 246 | + } | |
| 247 | +        $modx->db->update($field, $tbl_manager_users, "id='{$id}'"); | |
| 248 | +        $field = compact('fullname', 'role', 'email', 'phone', 'mobilephone', 'fax', 'zip', 'street', 'city', 'state', 'country', 'gender', 'dob', 'photo', 'comment', 'failedlogincount', 'blocked', 'blockeduntil', 'blockedafter'); | |
| 249 | + $field = $modx->db->escape($field); | |
| 250 | +        $modx->db->update($field, $tbl_user_attributes, "internalKey='{$id}'"); | |
| 251 | + | |
| 252 | + // Save user settings | |
| 253 | 253 | saveManagerUserSettings($id); | 
| 254 | 254 | |
| 255 | - // Set the item name for logger | |
| 256 | - $_SESSION['itemname'] = $newusername; | |
| 257 | - | |
| 258 | - // invoke OnManagerSaveUser event | |
| 259 | -		$modx->invokeEvent("OnManagerSaveUser", array( | |
| 260 | - "mode" => "upd", | |
| 261 | - "userid" => $id, | |
| 262 | - "username" => $newusername, | |
| 263 | - "userpassword" => $newpassword, | |
| 264 | - "useremail" => $email, | |
| 265 | - "userfullname" => $fullname, | |
| 266 | - "userroleid" => $role, | |
| 267 | - "oldusername" => (($oldusername != $newusername) ? $oldusername : ""), | |
| 268 | - "olduseremail" => (($oldemail != $email) ? $oldemail : "") | |
| 269 | - )); | |
| 270 | - | |
| 271 | - // invoke OnManagerChangePassword event | |
| 272 | -		if($genpassword == 1) { | |
| 273 | -			$modx->invokeEvent("OnManagerChangePassword", array( | |
| 274 | - "userid" => $id, | |
| 275 | - "username" => $newusername, | |
| 276 | - "userpassword" => $newpassword | |
| 277 | - )); | |
| 278 | - } | |
| 279 | - | |
| 280 | - // invoke OnUserFormSave event | |
| 281 | -		$modx->invokeEvent("OnUserFormSave", array( | |
| 282 | - "mode" => "upd", | |
| 283 | - "id" => $id | |
| 284 | - )); | |
| 285 | - | |
| 286 | - /*******************************************************************************/ | |
| 287 | - // put the user in the user_groups he/ she should be in | |
| 288 | - // first, check that up_perms are switched on! | |
| 289 | -		if($use_udperms == 1) { | |
| 290 | - // as this is an existing user, delete his/ her entries in the groups before saving the new groups | |
| 291 | -			$modx->db->delete($tbl_member_groups, "member='{$id}'"); | |
| 292 | -			if(!empty($user_groups)) { | |
| 293 | -				for($i = 0; $i < count($user_groups); $i++) { | |
| 294 | - $field = array(); | |
| 295 | - $field['user_group'] = (int)$user_groups[$i]; | |
| 296 | - $field['member'] = $id; | |
| 297 | - $modx->db->insert($field, $tbl_member_groups); | |
| 298 | - } | |
| 299 | - } | |
| 300 | - } | |
| 301 | - // end of user_groups stuff! | |
| 302 | - /*******************************************************************************/ | |
| 303 | -		if($id == $modx->getLoginUserID() && ($genpassword !== 1 && $passwordnotifymethod != 's')) { | |
| 304 | - $modx->webAlertAndQuit($_lang["user_changeddata"], 'javascript:top.location.href="index.php?a=8";'); | |
| 305 | - } | |
| 306 | -		if($genpassword == 1 && $passwordnotifymethod == 's') { | |
| 307 | -			if($input['stay'] != '') { | |
| 308 | -				$a = ($input['stay'] == '2') ? "12&id={$id}" : "11"; | |
| 309 | -				$stayUrl = "index.php?a={$a}&r=2&stay=" . $input['stay']; | |
| 310 | -			} else { | |
| 311 | - $stayUrl = "index.php?a=75&r=2"; | |
| 312 | - } | |
| 313 | - | |
| 314 | - include_once "header.inc.php"; | |
| 315 | - ?> | |
| 255 | + // Set the item name for logger | |
| 256 | + $_SESSION['itemname'] = $newusername; | |
| 257 | + | |
| 258 | + // invoke OnManagerSaveUser event | |
| 259 | +        $modx->invokeEvent("OnManagerSaveUser", array( | |
| 260 | + "mode" => "upd", | |
| 261 | + "userid" => $id, | |
| 262 | + "username" => $newusername, | |
| 263 | + "userpassword" => $newpassword, | |
| 264 | + "useremail" => $email, | |
| 265 | + "userfullname" => $fullname, | |
| 266 | + "userroleid" => $role, | |
| 267 | + "oldusername" => (($oldusername != $newusername) ? $oldusername : ""), | |
| 268 | + "olduseremail" => (($oldemail != $email) ? $oldemail : "") | |
| 269 | + )); | |
| 270 | + | |
| 271 | + // invoke OnManagerChangePassword event | |
| 272 | +        if($genpassword == 1) { | |
| 273 | +            $modx->invokeEvent("OnManagerChangePassword", array( | |
| 274 | + "userid" => $id, | |
| 275 | + "username" => $newusername, | |
| 276 | + "userpassword" => $newpassword | |
| 277 | + )); | |
| 278 | + } | |
| 279 | + | |
| 280 | + // invoke OnUserFormSave event | |
| 281 | +        $modx->invokeEvent("OnUserFormSave", array( | |
| 282 | + "mode" => "upd", | |
| 283 | + "id" => $id | |
| 284 | + )); | |
| 285 | + | |
| 286 | + /*******************************************************************************/ | |
| 287 | + // put the user in the user_groups he/ she should be in | |
| 288 | + // first, check that up_perms are switched on! | |
| 289 | +        if($use_udperms == 1) { | |
| 290 | + // as this is an existing user, delete his/ her entries in the groups before saving the new groups | |
| 291 | +            $modx->db->delete($tbl_member_groups, "member='{$id}'"); | |
| 292 | +            if(!empty($user_groups)) { | |
| 293 | +                for($i = 0; $i < count($user_groups); $i++) { | |
| 294 | + $field = array(); | |
| 295 | + $field['user_group'] = (int)$user_groups[$i]; | |
| 296 | + $field['member'] = $id; | |
| 297 | + $modx->db->insert($field, $tbl_member_groups); | |
| 298 | + } | |
| 299 | + } | |
| 300 | + } | |
| 301 | + // end of user_groups stuff! | |
| 302 | + /*******************************************************************************/ | |
| 303 | +        if($id == $modx->getLoginUserID() && ($genpassword !== 1 && $passwordnotifymethod != 's')) { | |
| 304 | + $modx->webAlertAndQuit($_lang["user_changeddata"], 'javascript:top.location.href="index.php?a=8";'); | |
| 305 | + } | |
| 306 | +        if($genpassword == 1 && $passwordnotifymethod == 's') { | |
| 307 | +            if($input['stay'] != '') { | |
| 308 | +                $a = ($input['stay'] == '2') ? "12&id={$id}" : "11"; | |
| 309 | +                $stayUrl = "index.php?a={$a}&r=2&stay=" . $input['stay']; | |
| 310 | +            } else { | |
| 311 | + $stayUrl = "index.php?a=75&r=2"; | |
| 312 | + } | |
| 313 | + | |
| 314 | + include_once "header.inc.php"; | |
| 315 | + ?> | |
| 316 | 316 | |
| 317 | 317 | <h1><?php echo $_lang['user_title']; ?></h1> | 
| 318 | 318 | |
| @@ -332,18 +332,18 @@ discard block | ||
| 332 | 332 | </div> | 
| 333 | 333 | <?php | 
| 334 | 334 | |
| 335 | - include_once "footer.inc.php"; | |
| 336 | -		} else { | |
| 337 | -			if($input['stay'] != '') { | |
| 338 | -				$a = ($input['stay'] == '2') ? "12&id={$id}" : "11"; | |
| 339 | -				$header = "Location: index.php?a={$a}&r=2&stay=" . $input['stay']; | |
| 340 | - header($header); | |
| 341 | -			} else { | |
| 342 | - $header = "Location: index.php?a=75&r=2"; | |
| 343 | - header($header); | |
| 344 | - } | |
| 345 | - } | |
| 346 | - break; | |
| 347 | - default: | |
| 348 | -		webAlertAndQuit("No operation set in request.", 12); | |
| 335 | + include_once "footer.inc.php"; | |
| 336 | +        } else { | |
| 337 | +            if($input['stay'] != '') { | |
| 338 | +                $a = ($input['stay'] == '2') ? "12&id={$id}" : "11"; | |
| 339 | +                $header = "Location: index.php?a={$a}&r=2&stay=" . $input['stay']; | |
| 340 | + header($header); | |
| 341 | +            } else { | |
| 342 | + $header = "Location: index.php?a=75&r=2"; | |
| 343 | + header($header); | |
| 344 | + } | |
| 345 | + } | |
| 346 | + break; | |
| 347 | + default: | |
| 348 | +        webAlertAndQuit("No operation set in request.", 12); | |
| 349 | 349 | } | 
| @@ -1,8 +1,8 @@ discard block | ||
| 1 | 1 | <?php | 
| 2 | -if( ! defined('IN_MANAGER_MODE') || IN_MANAGER_MODE !== true) { | |
| 2 | +if (!defined('IN_MANAGER_MODE') || IN_MANAGER_MODE !== true) { | |
| 3 | 3 |  	die("<b>INCLUDE_ORDERING_ERROR</b><br /><br />Please use the EVO Content Manager instead of accessing this file directly."); | 
| 4 | 4 | } | 
| 5 | -if(!$modx->hasPermission('save_user')) { | |
| 5 | +if (!$modx->hasPermission('save_user')) { | |
| 6 | 6 | $modx->webAlertAndQuit($_lang["error_no_privileges"]); | 
| 7 | 7 | } | 
| 8 | 8 | |
| @@ -14,7 +14,7 @@ discard block | ||
| 14 | 14 | |
| 15 | 15 | $input = $_POST; | 
| 16 | 16 | |
| 17 | -$id = (int)$input['id']; | |
| 17 | +$id = (int) $input['id']; | |
| 18 | 18 | $oldusername = $input['oldusername']; | 
| 19 | 19 | $newusername = !empty ($input['newusername']) ? trim($input['newusername']) : "New User"; | 
| 20 | 20 | $fullname = $input['fullname']; | 
| @@ -44,56 +44,56 @@ discard block | ||
| 44 | 44 | $user_groups = $input['user_groups']; | 
| 45 | 45 | |
| 46 | 46 | // verify password | 
| 47 | -if($passwordgenmethod == "spec" && $input['specifiedpassword'] != $input['confirmpassword']) { | |
| 47 | +if ($passwordgenmethod == "spec" && $input['specifiedpassword'] != $input['confirmpassword']) { | |
| 48 | 48 |  	webAlertAndQuit("Password typed is mismatched", 12); | 
| 49 | 49 | } | 
| 50 | 50 | |
| 51 | 51 | // verify email | 
| 52 | -if($email == '' || !preg_match("/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,24}$/i", $email)) { | |
| 52 | +if ($email == '' || !preg_match("/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,24}$/i", $email)) { | |
| 53 | 53 |  	webAlertAndQuit("E-mail address doesn't seem to be valid!", 12); | 
| 54 | 54 | } | 
| 55 | 55 | |
| 56 | 56 | // verify admin security | 
| 57 | -if($_SESSION['mgrRole'] != 1) { | |
| 57 | +if ($_SESSION['mgrRole'] != 1) { | |
| 58 | 58 | // Check to see if user tried to spoof a "1" (admin) role | 
| 59 | -	if(!$modx->hasPermission('save_user')) { | |
| 59 | +	if (!$modx->hasPermission('save_user')) { | |
| 60 | 60 |  		webAlertAndQuit("Illegal attempt to create/modify administrator by non-administrator!", 12); | 
| 61 | 61 | } | 
| 62 | 62 | // Verify that the user being edited wasn't an admin and the user ID got spoofed | 
| 63 | 63 |  	$rs = $modx->db->select('count(internalKey)', $tbl_user_attributes, "internalKey='{$id}' AND role=1"); | 
| 64 | 64 | $limit = $modx->db->getValue($rs); | 
| 65 | -	if($limit > 0) { | |
| 65 | +	if ($limit > 0) { | |
| 66 | 66 |  		webAlertAndQuit("You cannot alter an administrative user.", 12); | 
| 67 | 67 | } | 
| 68 | 68 | |
| 69 | 69 | } | 
| 70 | 70 | |
| 71 | -switch($input['mode']) { | |
| 71 | +switch ($input['mode']) { | |
| 72 | 72 | case '11' : // new user | 
| 73 | 73 | // check if this user name already exist | 
| 74 | 74 |  		$rs = $modx->db->select('count(id)', $tbl_manager_users, sprintf("username='%s'", $modx->db->escape($newusername))); | 
| 75 | 75 | $limit = $modx->db->getValue($rs); | 
| 76 | -		if($limit > 0) { | |
| 76 | +		if ($limit > 0) { | |
| 77 | 77 |  			webAlertAndQuit("User name is already in use!", 12); | 
| 78 | 78 | } | 
| 79 | 79 | |
| 80 | 80 | // check if the email address already exist | 
| 81 | 81 |  		$rs = $modx->db->select('count(internalKey)', $tbl_user_attributes, sprintf("email='%s' AND id!='%s'", $modx->db->escape($email), $id)); | 
| 82 | 82 | $limit = $modx->db->getValue($rs); | 
| 83 | -		if($limit > 0) { | |
| 83 | +		if ($limit > 0) { | |
| 84 | 84 |  			webAlertAndQuit("Email is already in use!", 12); | 
| 85 | 85 | } | 
| 86 | 86 | |
| 87 | 87 | // generate a new password for this user | 
| 88 | -		if($specifiedpassword != "" && $passwordgenmethod == "spec") { | |
| 89 | -			if(strlen($specifiedpassword) < 6) { | |
| 88 | +		if ($specifiedpassword != "" && $passwordgenmethod == "spec") { | |
| 89 | +			if (strlen($specifiedpassword) < 6) { | |
| 90 | 90 |  				webAlertAndQuit("Password is too short!", 12); | 
| 91 | 91 |  			} else { | 
| 92 | 92 | $newpassword = $specifiedpassword; | 
| 93 | 93 | } | 
| 94 | -		} elseif($specifiedpassword == "" && $passwordgenmethod == "spec") { | |
| 94 | +		} elseif ($specifiedpassword == "" && $passwordgenmethod == "spec") { | |
| 95 | 95 |  			webAlertAndQuit("You didn't specify a password for this user!", 12); | 
| 96 | -		} elseif($passwordgenmethod == 'g') { | |
| 96 | +		} elseif ($passwordgenmethod == 'g') { | |
| 97 | 97 | $newpassword = generate_password(8); | 
| 98 | 98 |  		} else { | 
| 99 | 99 |  			webAlertAndQuit("No password generation method specified!", 12); | 
| @@ -141,11 +141,11 @@ discard block | ||
| 141 | 141 | /*******************************************************************************/ | 
| 142 | 142 | // put the user in the user_groups he/ she should be in | 
| 143 | 143 | // first, check that up_perms are switched on! | 
| 144 | -		if($use_udperms == 1) { | |
| 145 | -			if(!empty($user_groups)) { | |
| 146 | -				for($i = 0; $i < count($user_groups); $i++) { | |
| 144 | +		if ($use_udperms == 1) { | |
| 145 | +			if (!empty($user_groups)) { | |
| 146 | +				for ($i = 0; $i < count($user_groups); $i++) { | |
| 147 | 147 | $f = array(); | 
| 148 | - $f['user_group'] = (int)$user_groups[$i]; | |
| 148 | + $f['user_group'] = (int) $user_groups[$i]; | |
| 149 | 149 | $f['member'] = $internalKey; | 
| 150 | 150 | $modx->db->insert($f, $tbl_member_groups); | 
| 151 | 151 | } | 
| @@ -153,20 +153,20 @@ discard block | ||
| 153 | 153 | } | 
| 154 | 154 | // end of user_groups stuff! | 
| 155 | 155 | |
| 156 | -		if($passwordnotifymethod == 'e') { | |
| 156 | +		if ($passwordnotifymethod == 'e') { | |
| 157 | 157 | sendMailMessageForUser($email, $newusername, $newpassword, $fullname, $signupemail_message, MODX_MANAGER_URL); | 
| 158 | -			if($input['stay'] != '') { | |
| 158 | +			if ($input['stay'] != '') { | |
| 159 | 159 |  				$a = ($input['stay'] == '2') ? "12&id={$internalKey}" : "11"; | 
| 160 | -				$header = "Location: index.php?a={$a}&r=2&stay=" . $input['stay']; | |
| 160 | +				$header = "Location: index.php?a={$a}&r=2&stay=".$input['stay']; | |
| 161 | 161 | header($header); | 
| 162 | 162 |  			} else { | 
| 163 | 163 | $header = "Location: index.php?a=75&r=2"; | 
| 164 | 164 | header($header); | 
| 165 | 165 | } | 
| 166 | 166 |  		} else { | 
| 167 | -			if($input['stay'] != '') { | |
| 167 | +			if ($input['stay'] != '') { | |
| 168 | 168 |  				$a = ($input['stay'] == '2') ? "12&id={$internalKey}" : "11"; | 
| 169 | -				$stayUrl = "index.php?a={$a}&r=2&stay=" . $input['stay']; | |
| 169 | +				$stayUrl = "index.php?a={$a}&r=2&stay=".$input['stay']; | |
| 170 | 170 |  			} else { | 
| 171 | 171 | $stayUrl = "index.php?a=75&r=2"; | 
| 172 | 172 | } | 
| @@ -199,36 +199,36 @@ discard block | ||
| 199 | 199 | break; | 
| 200 | 200 | case '12' : // edit user | 
| 201 | 201 | // generate a new password for this user | 
| 202 | -		if($genpassword == 1) { | |
| 203 | -			if($specifiedpassword != "" && $passwordgenmethod == "spec") { | |
| 204 | -				if(strlen($specifiedpassword) < 6) { | |
| 202 | +		if ($genpassword == 1) { | |
| 203 | +			if ($specifiedpassword != "" && $passwordgenmethod == "spec") { | |
| 204 | +				if (strlen($specifiedpassword) < 6) { | |
| 205 | 205 |  					webAlertAndQuit("Password is too short!", 12); | 
| 206 | 206 |  				} else { | 
| 207 | 207 | $newpassword = $specifiedpassword; | 
| 208 | 208 | } | 
| 209 | -			} elseif($specifiedpassword == "" && $passwordgenmethod == "spec") { | |
| 209 | +			} elseif ($specifiedpassword == "" && $passwordgenmethod == "spec") { | |
| 210 | 210 |  				webAlertAndQuit("You didn't specify a password for this user!", 12); | 
| 211 | -			} elseif($passwordgenmethod == 'g') { | |
| 211 | +			} elseif ($passwordgenmethod == 'g') { | |
| 212 | 212 | $newpassword = generate_password(8); | 
| 213 | 213 |  			} else { | 
| 214 | 214 |  				webAlertAndQuit("No password generation method specified!", 12); | 
| 215 | 215 | } | 
| 216 | 216 | } | 
| 217 | -		if($passwordnotifymethod == 'e') { | |
| 217 | +		if ($passwordnotifymethod == 'e') { | |
| 218 | 218 | sendMailMessageForUser($email, $newusername, $newpassword, $fullname, $signupemail_message, MODX_MANAGER_URL); | 
| 219 | 219 | } | 
| 220 | 220 | |
| 221 | 221 | // check if the username already exist | 
| 222 | 222 |  		$rs = $modx->db->select('count(id)', $tbl_manager_users, sprintf("username='%s' AND id!='%s'", $modx->db->escape($newusername), $id)); | 
| 223 | 223 | $limit = $modx->db->getValue($rs); | 
| 224 | -		if($limit > 0) { | |
| 224 | +		if ($limit > 0) { | |
| 225 | 225 |  			webAlertAndQuit("User name is already in use!", 12); | 
| 226 | 226 | } | 
| 227 | 227 | |
| 228 | 228 | // check if the email address already exists | 
| 229 | 229 |  		$rs = $modx->db->select('count(internalKey)', $tbl_user_attributes, sprintf("email='%s' AND internalKey!='%s'", $modx->db->escape($email), $id)); | 
| 230 | 230 | $limit = $modx->db->getValue($rs); | 
| 231 | -		if($limit > 0) { | |
| 231 | +		if ($limit > 0) { | |
| 232 | 232 |  			webAlertAndQuit("Email is already in use!", 12); | 
| 233 | 233 | } | 
| 234 | 234 | |
| @@ -241,7 +241,7 @@ discard block | ||
| 241 | 241 | // update user name and password | 
| 242 | 242 | $field = array(); | 
| 243 | 243 | $field['username'] = $modx->db->escape($newusername); | 
| 244 | -		if($genpassword == 1) { | |
| 244 | +		if ($genpassword == 1) { | |
| 245 | 245 | $field['password'] = $modx->phpass->HashPassword($newpassword); | 
| 246 | 246 | } | 
| 247 | 247 |  		$modx->db->update($field, $tbl_manager_users, "id='{$id}'"); | 
| @@ -269,7 +269,7 @@ discard block | ||
| 269 | 269 | )); | 
| 270 | 270 | |
| 271 | 271 | // invoke OnManagerChangePassword event | 
| 272 | -		if($genpassword == 1) { | |
| 272 | +		if ($genpassword == 1) { | |
| 273 | 273 |  			$modx->invokeEvent("OnManagerChangePassword", array( | 
| 274 | 274 | "userid" => $id, | 
| 275 | 275 | "username" => $newusername, | 
| @@ -286,13 +286,13 @@ discard block | ||
| 286 | 286 | /*******************************************************************************/ | 
| 287 | 287 | // put the user in the user_groups he/ she should be in | 
| 288 | 288 | // first, check that up_perms are switched on! | 
| 289 | -		if($use_udperms == 1) { | |
| 289 | +		if ($use_udperms == 1) { | |
| 290 | 290 | // as this is an existing user, delete his/ her entries in the groups before saving the new groups | 
| 291 | 291 |  			$modx->db->delete($tbl_member_groups, "member='{$id}'"); | 
| 292 | -			if(!empty($user_groups)) { | |
| 293 | -				for($i = 0; $i < count($user_groups); $i++) { | |
| 292 | +			if (!empty($user_groups)) { | |
| 293 | +				for ($i = 0; $i < count($user_groups); $i++) { | |
| 294 | 294 | $field = array(); | 
| 295 | - $field['user_group'] = (int)$user_groups[$i]; | |
| 295 | + $field['user_group'] = (int) $user_groups[$i]; | |
| 296 | 296 | $field['member'] = $id; | 
| 297 | 297 | $modx->db->insert($field, $tbl_member_groups); | 
| 298 | 298 | } | 
| @@ -300,13 +300,13 @@ discard block | ||
| 300 | 300 | } | 
| 301 | 301 | // end of user_groups stuff! | 
| 302 | 302 | /*******************************************************************************/ | 
| 303 | -		if($id == $modx->getLoginUserID() && ($genpassword !== 1 && $passwordnotifymethod != 's')) { | |
| 303 | +		if ($id == $modx->getLoginUserID() && ($genpassword !== 1 && $passwordnotifymethod != 's')) { | |
| 304 | 304 | $modx->webAlertAndQuit($_lang["user_changeddata"], 'javascript:top.location.href="index.php?a=8";'); | 
| 305 | 305 | } | 
| 306 | -		if($genpassword == 1 && $passwordnotifymethod == 's') { | |
| 307 | -			if($input['stay'] != '') { | |
| 306 | +		if ($genpassword == 1 && $passwordnotifymethod == 's') { | |
| 307 | +			if ($input['stay'] != '') { | |
| 308 | 308 |  				$a = ($input['stay'] == '2') ? "12&id={$id}" : "11"; | 
| 309 | -				$stayUrl = "index.php?a={$a}&r=2&stay=" . $input['stay']; | |
| 309 | +				$stayUrl = "index.php?a={$a}&r=2&stay=".$input['stay']; | |
| 310 | 310 |  			} else { | 
| 311 | 311 | $stayUrl = "index.php?a=75&r=2"; | 
| 312 | 312 | } | 
| @@ -326,7 +326,7 @@ discard block | ||
| 326 | 326 | <div class="sectionHeader"><?php echo $_lang['user_title']; ?></div> | 
| 327 | 327 | <div class="sectionBody"> | 
| 328 | 328 | <div id="disp"> | 
| 329 | - <p><?php echo sprintf($_lang["password_msg"], $modx->htmlspecialchars($newusername), $modx->htmlspecialchars($newpassword)) . (($id == $modx->getLoginUserID()) ? ' ' . $_lang['user_changeddata'] : ''); ?></p> | |
| 329 | + <p><?php echo sprintf($_lang["password_msg"], $modx->htmlspecialchars($newusername), $modx->htmlspecialchars($newpassword)).(($id == $modx->getLoginUserID()) ? ' '.$_lang['user_changeddata'] : ''); ?></p> | |
| 330 | 330 | </div> | 
| 331 | 331 | </div> | 
| 332 | 332 | </div> | 
| @@ -334,9 +334,9 @@ discard block | ||
| 334 | 334 | |
| 335 | 335 | include_once "footer.inc.php"; | 
| 336 | 336 |  		} else { | 
| 337 | -			if($input['stay'] != '') { | |
| 337 | +			if ($input['stay'] != '') { | |
| 338 | 338 |  				$a = ($input['stay'] == '2') ? "12&id={$id}" : "11"; | 
| 339 | -				$header = "Location: index.php?a={$a}&r=2&stay=" . $input['stay']; | |
| 339 | +				$header = "Location: index.php?a={$a}&r=2&stay=".$input['stay']; | |
| 340 | 340 | header($header); | 
| 341 | 341 |  			} else { | 
| 342 | 342 | $header = "Location: index.php?a=75&r=2"; |