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;
    }
}
Example #3
0
 /**
  * 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';
 }
Example #4
0
    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;