mirror of
				https://gitlab.com/comunic/comunicapiv2
				synced 2025-11-04 03:24:04 +00:00 
			
		
		
		
	Can get the posts of a group
This commit is contained in:
		@@ -304,6 +304,11 @@ export class GroupsHelper {
 | 
			
		||||
	 * @param userID The ID of target user
 | 
			
		||||
	 */
 | 
			
		||||
	public static async GetMembershipLevel(groupID: number, userID: number) : Promise<GroupMembershipLevels> {
 | 
			
		||||
		
 | 
			
		||||
		// If the user is not signed in
 | 
			
		||||
		if(userID < 1)
 | 
			
		||||
			return GroupMembershipLevels.VISITOR;
 | 
			
		||||
		
 | 
			
		||||
		const result = await DatabaseHelper.Query({
 | 
			
		||||
			table: GROUPS_MEMBERS_TABLE,
 | 
			
		||||
			where: {
 | 
			
		||||
 
 | 
			
		||||
@@ -108,6 +108,56 @@ export class PostsHelper {
 | 
			
		||||
		return entries.map((r) => this.DBToPost(r));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Get the posts of a group
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param userID The ID of the user making the request
 | 
			
		||||
	 * @param groupID The ID of the target group
 | 
			
		||||
	 * @param startFrom Start point. 0 for none
 | 
			
		||||
	 */
 | 
			
		||||
	public static async GetGroupPosts(userID: number, groupID: number, 
 | 
			
		||||
		startFrom: number = 0, limit: number = 10) : Promise<Array<Post>> {
 | 
			
		||||
 | 
			
		||||
		if(limit < 1)
 | 
			
		||||
			throw new Error("Limit (" + limit +") is invalid!");
 | 
			
		||||
 | 
			
		||||
		// Check membership of the user
 | 
			
		||||
		const membership = await GroupsHelper.GetMembershipLevel(groupID, userID);
 | 
			
		||||
		const canSeeAllPosts = membership <= GroupMembershipLevels.MEMBER;
 | 
			
		||||
 | 
			
		||||
		const visibilityLevel = canSeeAllPosts ? PostVisibilityLevel.VISIBILITY_GROUP_MEMBERS : PostVisibilityLevel.VISIBILITY_PUBLIC;
 | 
			
		||||
		
 | 
			
		||||
 | 
			
		||||
		// Prepare request
 | 
			
		||||
 | 
			
		||||
		// === VISIBILITY RESTRICTION ===
 | 
			
		||||
		let customWhere = "(niveau_visibilite <= ?)";
 | 
			
		||||
		let customWhereArgs = [visibilityLevel.toString()];
 | 
			
		||||
		// == /VISIBILITY RESTRICTION ===
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// === START POINT ===
 | 
			
		||||
		if(startFrom != 0) {
 | 
			
		||||
			customWhere += " AND ID <= ?";
 | 
			
		||||
			customWhereArgs.push(startFrom.toString());
 | 
			
		||||
		}
 | 
			
		||||
		// == /START POINT ===
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		const results = await DatabaseHelper.Query({
 | 
			
		||||
			table: TABLE_NAME,
 | 
			
		||||
			where: {
 | 
			
		||||
				group_id: groupID
 | 
			
		||||
			},
 | 
			
		||||
			customWhere: customWhere,
 | 
			
		||||
			customWhereArgs: customWhereArgs,
 | 
			
		||||
			order: "ID DESC",
 | 
			
		||||
			limit: limit
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		return results.map((r) => this.DBToPost(r));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Get the access level of a user over a post
 | 
			
		||||
	 * 
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user