1
0
mirror of https://gitlab.com/comunic/comunicapiv2 synced 2025-06-20 00:25:17 +00:00

Can update group settings

This commit is contained in:
2019-12-26 13:49:17 +01:00
parent 7e28722574
commit 0c8ce5c922
10 changed files with 317 additions and 3 deletions

View File

@ -2,6 +2,7 @@ import { crypt, sha1, randomStr } from "../utils/CryptUtils";
import { APIClient } from "../entities/APIClient";
import { UserLoginTokens } from "../entities/UserLoginTokens";
import { DatabaseHelper } from "./DatabaseHelper";
import { UserHelper } from "./UserHelper";
/**
* Account helper
@ -139,4 +140,17 @@ export class AccountHelper {
token2: row.token2
};
}
/**
* Check out whether a virtual directory is available or not
*
* @param dir Virtual directory to check
* @param userID Target user ID
*/
public static async CheckUserDirectoryAvailability(dir: string, userID: number = -1) : Promise<boolean> {
const foundUser = await UserHelper.FindByFolder(dir);
return foundUser < 1 || userID == foundUser;
}
}

View File

@ -3,6 +3,7 @@ import { GroupsAccessLevel, GroupVisibilityLevel, GroupInfo } from "../entities/
import { GroupMembershipLevels, GroupMember } from "../entities/GroupMember";
import { NewGroup } from "../entities/NewGroup";
import { time } from "../utils/DateUtils";
import { GroupSettings } from "../entities/GroupSettings";
/**
* Groups helper
@ -98,6 +99,23 @@ export class GroupsHelper {
return this.DbToGroupInfo(row);
}
/**
* Update (set) group settings
*
* @param settings Group settings
*/
public static async SetSettings(settings: GroupSettings) {
const dbEntry = this.GroupSettingsToDB(settings);
await DatabaseHelper.UpdateRows({
table: GROUPS_LIST_TABLE,
where: {
id: settings.id
},
set: dbEntry
});
}
/**
* Get the visibility level of a group
*
@ -222,6 +240,36 @@ export class GroupsHelper {
return this.DbToGroupMember(data);
}
/**
* Find a group by its virtual directory
*
* @param dir Target directory
* @returns The ID of the target directory / -1 if none found
*/
public static async FindByVirtualDirectory(dir: string) : Promise<number> {
const result = await DatabaseHelper.QueryRow({
table: GROUPS_LIST_TABLE,
where: {
virtual_directory: dir
},
fields: ["id"]
});
return result == null ? -1 : result.id;
}
/**
* Check out whether a virtual directory is available or not
*
* @param dir The directory to check
* @param groupID The ID of the group making the request
*/
public static async CheckDirectoryAvailability(dir: string, groupID: number = -1) : Promise<boolean> {
const currID = await this.FindByVirtualDirectory(dir);
return currID < 1 || currID == groupID;
}
/**
* Count the number of members of a group
@ -277,4 +325,40 @@ export class GroupsHelper {
following: row.following == 1
});
}
/**
* Turn a GroupSettings object into a database entry object
*
* @param settings Group settings object to transform
* @return Generated database entry
*/
private static GroupSettingsToDB(settings: GroupSettings) : Object {
let data = {};
if(settings.name != null)
data['name'] = settings.name;
if(settings.hasLogo)
data["path_logo"] = settings.logo;
if(settings.visiblity != null)
data["visibility"] = settings.visiblity;
if(settings.registrationLevel != null)
data["registration_level"] = settings.registrationLevel;
if(settings.postsCreationLevel != null)
data["posts_level"] = settings.postsCreationLevel;
if(settings.virtualDirectory != null)
data["virtual_directory"] = settings.virtualDirectory;
if(settings.description != null)
data["description"] = settings.description;
if(settings.url != null)
data["url"] = settings.url;
return data;
}
}

View File

@ -68,6 +68,24 @@ export class UserHelper {
return request.map((e) => e.ID);
}
/**
* Search for user by virtual directory
*
* @param dir Target directory
* @returns The ID of the user found / -1 if none found
*/
public static async FindByFolder(dir: string) : Promise<number> {
const result = await DatabaseHelper.QueryRow({
table: TABLE_NAME,
where: {
sous_repertoire: dir
},
fields: ["ID"]
});
return result == null ? -1 : Number(result.ID);
}
private static async DbToUser(row: any) : Promise<User> {
return new User({