| Conditions | 25 |
| Paths | 1440 |
| Total Lines | 140 |
| Code Lines | 91 |
| Lines | 30 |
| Ratio | 21.43 % |
| Changes | 0 | ||
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php |
||
| 26 | function insert_update_user_account(\Slim\Route $route) |
||
| 27 | { |
||
| 28 | $app = \Slim\Slim::getInstance(); |
||
| 29 | $final_global_template_vars = $app->config('final_global_template_vars'); |
||
| 30 | |||
| 31 | require_once $final_global_template_vars["absolute_path_to_this_module"] . "/models/user_account.class.php"; |
||
| 32 | require_once $final_global_template_vars["default_module_list"]["group"]["absolute_path_to_this_module"] . "/models/group.class.php"; |
||
| 33 | require_once $final_global_template_vars["default_module_list"]["authenticate"]["absolute_path_to_this_module"] . "/models/authenticate.class.php"; |
||
| 34 | require_once $_SERVER["PATH_TO_VENDOR"] . "wixel/gump/gump.class.php"; |
||
| 35 | // URL parameters matched in the route. |
||
| 36 | $params = $route->getParams(); |
||
| 37 | $user_account_id = isset($params["user_account_id"]) ? $params["user_account_id"] : false; |
||
| 38 | $db_conn = new \PHPSkeleton\models\db($final_global_template_vars["db_connection"]); |
||
| 39 | $db_resource = $db_conn->get_resource(); |
||
| 40 | $useraccount = new \PHPSkeleton\UserAccount($db_resource, $final_global_template_vars["session_key"]); |
||
| 41 | $group = new \PHPSkeleton\Group($db_resource, $final_global_template_vars["session_key"]); |
||
| 42 | $authenticate = new \PHPSkeleton\Authenticate($db_resource, $final_global_template_vars["session_key"]); |
||
| 43 | $post = $app->request()->post(); |
||
| 44 | |||
| 45 | $errors = false; |
||
| 46 | $gump = new GUMP(); |
||
| 47 | $rules_password = array(); |
||
| 48 | |||
| 49 | $rules = array( |
||
| 50 | "first_name" => "required|alpha_numeric" |
||
| 51 | ,"last_name" => "required|alpha_numeric" |
||
| 52 | ,"user_account_email" => "required|valid_email" |
||
| 53 | ); |
||
| 54 | |||
| 55 | if (isset($post["user_account_password"]) && !empty($post["user_account_password"])) { |
||
| 56 | $rules_password = array( |
||
| 57 | "user_account_password" => "max_len,100|min_len,6" |
||
| 58 | ,"password_check" => "required|max_len,100|min_len,6" |
||
| 59 | ); |
||
| 60 | } |
||
| 61 | |||
| 62 | $rules = array_merge($rules, $rules_password); |
||
| 63 | |||
| 64 | $validated = $gump->validate($post, $rules); |
||
| 65 | |||
| 66 | View Code Duplication | if ($post["user_account_password"] != $post["password_check"]) { |
|
| 67 | $validated_password_check = array( |
||
| 68 | "field" => "user_account_password_check" |
||
| 69 | ,"value" => null |
||
| 70 | ,"rule" => "validate_required" |
||
| 71 | ); |
||
| 72 | if (is_array($validated)) { |
||
| 73 | array_push($validated, $validated_password_check); |
||
| 74 | } else { |
||
| 75 | $validated = array($validated_password_check); |
||
| 76 | } |
||
| 77 | } |
||
| 78 | |||
| 79 | $errors = array(); |
||
| 80 | if ($validated !== true) { |
||
| 81 | $errors = \phpskeleton\models\utility::gump_parse_errors($validated); |
||
| 82 | } |
||
| 83 | |||
| 84 | if (isset($errors["user_account_password_check"])) { |
||
| 85 | $errors["user_account_password_check"] = "Passwords did not match."; |
||
| 86 | } |
||
| 87 | |||
| 88 | $has_permission = array_intersect($_SESSION[$final_global_template_vars["session_key"]]["user_role_list"], $final_global_template_vars["role_perm_manage_all_accounts_access"]); |
||
| 89 | $role_perm_manage_all_accounts_access = empty($has_permission) ? false : true; |
||
| 90 | |||
| 91 | if (!empty($post) && $role_perm_manage_all_accounts_access) { |
||
| 92 | $current_group_values = $useraccount->get_user_group_roles_map($user_account_id, $final_global_template_vars["proxy_id"]); |
||
| 93 | $proposed_group_value = json_decode($post["group_data"], true); |
||
| 94 | $changes = array(); |
||
| 95 | $current_group_role_array = array(); |
||
| 96 | $proposed_group_role_array = array(); |
||
| 97 | View Code Duplication | foreach ($proposed_group_value as $single_group_info) { |
|
| 98 | foreach ($single_group_info["roles"] as $single_role_id) { |
||
| 99 | $tmp_array = array( |
||
| 100 | "group_id" => $single_group_info["group_id"] |
||
| 101 | ,"role_id" => $single_role_id |
||
| 102 | ); |
||
| 103 | $proposed_group_role_array[] = json_encode($tmp_array); |
||
| 104 | } |
||
| 105 | } |
||
| 106 | |||
| 107 | if(is_array($current_group_values) && !empty($current_group_values)) { |
||
| 108 | View Code Duplication | foreach ($current_group_values as $single_group_info) { |
|
| 109 | foreach ($single_group_info["roles"] as $single_role_id) { |
||
| 110 | $tmp_array = array( |
||
| 111 | "group_id" => $single_group_info["group_id"] |
||
| 112 | ,"role_id" => $single_role_id |
||
| 113 | ); |
||
| 114 | $current_group_role_array[] = json_encode($tmp_array); |
||
| 115 | } |
||
| 116 | } |
||
| 117 | } |
||
| 118 | $changes = array_diff($proposed_group_role_array, $current_group_role_array); |
||
| 119 | $changes = array_merge($changes, array_diff($current_group_role_array, $proposed_group_role_array)); |
||
| 120 | |||
| 121 | /** |
||
| 122 | * Check to see if the user is trying to hack the system and add a role they are not able to. |
||
| 123 | **/ |
||
| 124 | foreach ($changes as $single_change) { |
||
| 125 | $single_change_array = json_decode($single_change, true); |
||
| 126 | $show_all = array_intersect($_SESSION[$final_global_template_vars["session_key"]]["user_role_list"], $final_global_template_vars["role_perm_assign_user_account_to_any_group"]); |
||
| 127 | if (!empty($show_all)) { |
||
| 128 | // This user can add any group to any user. |
||
| 129 | } else { |
||
| 130 | $group_roles = $useraccount->has_role($_SESSION[$final_global_template_vars["session_key"]]["user_account_id"], $final_global_template_vars["administrator_id"], $single_change_array["group_id"]); |
||
| 131 | if (empty($group_roles)) { |
||
| 132 | $failed_group = $group->get_group_record($single_change_array["group_id"]); |
||
| 133 | $errors[] = "You are not able to administor group: " . $failed_group["name"]; |
||
| 134 | } |
||
| 135 | } |
||
| 136 | } |
||
| 137 | |||
| 138 | // Check to see if the user is trying to add a role to a group they are not able to. |
||
| 139 | foreach ($changes as $single_change) { |
||
| 140 | $single_change_array = json_decode($single_change, true); |
||
| 141 | if (in_array($single_change_array["role_id"], $final_global_template_vars["exclude_ids_from_selector"])) { |
||
| 142 | $errors[] = "You are not able to administer that role."; |
||
| 143 | } |
||
| 144 | } |
||
| 145 | } |
||
| 146 | |||
| 147 | if (!$errors) { |
||
| 148 | // Hash the incoming password (with some salt). |
||
| 149 | if (!empty($post["user_account_password"])) { |
||
| 150 | $post["user_account_password"] = $authenticate->generate_hashed_password($post["user_account_password"]); |
||
| 151 | } |
||
| 152 | |||
| 153 | $useraccount->insert_update_user_account($post, $user_account_id, true, $final_global_template_vars["proxy_id"], $role_perm_manage_all_accounts_access); |
||
| 154 | $useraccount->insert_addresses($post, $user_account_id, $_SESSION[$final_global_template_vars["session_key"]]["user_account_id"]); |
||
| 155 | $app->flash('message', 'Account successfully updated.'); |
||
| 156 | if ($role_perm_manage_all_accounts_access) { |
||
| 157 | $app->redirect($final_global_template_vars["path_to_this_module"]); |
||
| 158 | } else { |
||
| 159 | $app->redirect($final_global_template_vars["path_to_this_module"]."/manage/".$user_account_id); |
||
| 160 | } |
||
| 161 | } else { |
||
| 162 | $env = $app->environment(); |
||
| 163 | $env["default_validation_errors"] = $errors; |
||
| 164 | } |
||
| 165 | } |
||
| 166 |