function dbDeleteGroup($group_id) { try { $db = pdoConnect(); global $db_table_prefix; $groupDetails = fetchGroupDetails($group_id); if ($groupDetails['can_delete'] == '0') { addAlert("danger", lang("CANNOT_DELETE_PERMISSION_GROUP", array($groupDetails['name']))); return false; } $stmt = $db->prepare("DELETE FROM " . $db_table_prefix . "groups \n WHERE id = :group_id"); $stmt2 = $db->prepare("DELETE FROM " . $db_table_prefix . "user_group_matches \n WHERE group_id = :group_id"); $stmt3 = $db->prepare("DELETE FROM " . $db_table_prefix . "group_page_matches \n WHERE group_id = :group_id"); $stmt4 = $db->prepare("DELETE FROM " . $db_table_prefix . "group_action_permits \n WHERE group_id = :group_id"); $sqlVars = array(":group_id" => $group_id); $stmt->execute($sqlVars); if ($stmt->rowCount() > 0) { // Delete user and page matches for this group. $stmt2->execute($sqlVars); $stmt3->execute($sqlVars); $stmt4->execute($sqlVars); return $groupDetails['name']; } else { addAlert("danger", "The specified group does not exist."); return false; } } catch (PDOException $e) { addAlert("danger", "Oops, looks like our database encountered an error."); error_log("Error in " . $e->getFile() . " on line " . $e->getLine() . ": " . $e->getMessage()); return false; } catch (ErrorException $e) { addAlert("danger", "Oops, looks like our server might have goofed. If you're an admin, please check the PHP error logs."); return false; } }
/** * Update group based on new details * @param int $group_id the id of the group to edit. * @param string $name the new name of the group * @param int $is_default 0 if the group is not a default group for new users, 1 if it is, 2 if it is also the primary default group for new users * @param int $home_page_id the id of the home page for users who have this group as their primary group * @return boolean true for success, false if failed */ function updateGroup($group_id, $name, $is_default, $home_page_id) { // This block automatically checks this action against the permissions database before running. if (!checkActionPermissionSelf(__FUNCTION__, func_get_args())) { addAlert("danger", "Sorry, you do not have permission to access this resource."); return false; } //Check if selected group exists if (!groupIdExists($group_id)) { addAlert("danger", "I'm sorry, the group id you specified is invalid!"); return false; } $groupDetails = fetchGroupDetails($group_id); //Fetch information specific to group //Update group name, if different from previous and not already taken $name = trim($name); if (strtolower($name) != strtolower($groupDetails['name'])) { if (groupNameExists($name)) { addAlert("danger", lang("ACCOUNT_PERMISSIONNAME_IN_USE", array($name))); return false; } elseif (minMaxRange(1, 50, $name)) { addAlert("danger", lang("ACCOUNT_PERMISSION_CHAR_LIMIT", array(1, 50))); return false; } } if (dbUpdateGroup($group_id, $name, $is_default, $home_page_id)) { addAlert("success", lang("GROUP_UPDATE", array($name))); return true; } else { return false; } }
/** * Return true if the specified group_id is a default group. * @param int $group_id the group_id to check. */ static function isDefaultGroup($group_id) { $group = fetchGroupDetails($group_id); return $group['is_default'] >= '1'; }
exit; } // Update a group, specified by id, with the given group name, is_default setting, and home page id. // POST: group_id, [group_name, is_default, home_page_id] $validator = new Validator(); $group_id = $validator->requiredPostVar('group_id'); // Add alerts for any failed input validation foreach ($validator->errors as $error) { addAlert("danger", $error); } if (!$group_id) { echo json_encode(array("errors" => 1, "successes" => 0)); exit; } // Fetch data for this group $group = fetchGroupDetails($group_id); $group_name = $validator->optionalPostVar('group_name'); if (!$group_name) { $group_name = $group['name']; } $is_default = $validator->optionalPostVar('is_default'); if ($is_default === null) { $is_default = $group['is_default']; } $home_page_id = $validator->optionalPostVar('home_page_id'); if (!$home_page_id) { $home_page_id = $group['home_page_id']; } if (!updateGroup($group_id, $group_name, $is_default, $home_page_id)) { echo json_encode(array("errors" => 1, "successes" => 0)); exit;