mirror of
				https://github.com/pierre42100/ComunicAPI
				synced 2025-11-04 04:04:20 +00:00 
			
		
		
		
	Can get the posts of a group and returns them to the API
This commit is contained in:
		@@ -56,6 +56,31 @@ class PostsController {
 | 
				
			|||||||
		return $this->parsePostsList($posts);
 | 
							return $this->parsePostsList($posts);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Get group posts
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @url POST /posts/get_group
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function getGroupPosts(){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Get group ID
 | 
				
			||||||
 | 
							$groupID = getPostGroupIdWithAccess("groupID", GroupInfo::VIEW_ACCESS);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Get the startpoint for the posts
 | 
				
			||||||
 | 
							$startFrom = postInt("startFrom", 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Check whether the user can see members only posts or not
 | 
				
			||||||
 | 
							$membershipLevel = components()->groups->getMembershipLevel(userID, $groupID);
 | 
				
			||||||
 | 
							$seeAllPosts = $membershipLevel <= GroupMember::MEMBER;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Get the posts of the group
 | 
				
			||||||
 | 
							$posts = components()->posts->getGroupPosts($groupID, $seeAllPosts, $startFrom);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Return parsed list of posts
 | 
				
			||||||
 | 
							return $this->parsePostsList($posts);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * Get the latest posts for the user
 | 
						 * Get the latest posts for the user
 | 
				
			||||||
	 * 
 | 
						 * 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -159,6 +159,56 @@ class Posts {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Get the posts of a group
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param int $groupID The ID of the related group
 | 
				
			||||||
 | 
						 * @param bool $all_posts Specify whether we should get all the posts of the user or not
 | 
				
			||||||
 | 
						 * @param int $from Start point for the query
 | 
				
			||||||
 | 
						 * @param int $limit The limit for the request (default = 10)
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function getGroupPosts(int $groupID, bool $all_posts, int $from = 0, int $limit = 10){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Check the value of limit (security)
 | 
				
			||||||
 | 
							if($limit < 1){
 | 
				
			||||||
 | 
								throw new Exception("The limit of the query must absolutly be positive !");
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Get user visibility level
 | 
				
			||||||
 | 
							$visibilityLevel = $all_posts ? $this::VISIBILITY_USER : $this::VISIBILITY_PUBLIC;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Prepare the request on the database
 | 
				
			||||||
 | 
							$conditions = "WHERE group_id = ? AND (";
 | 
				
			||||||
 | 
							$dataConds = array($groupID);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Add the visibility level conditions
 | 
				
			||||||
 | 
							$conditions .= "(niveau_visibilite <= ?)";
 | 
				
			||||||
 | 
							$dataConds[] = $visibilityLevel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Close permissions conditions
 | 
				
			||||||
 | 
							$conditions .= ")";
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							//Add startpoint condition if required (and get older messages)
 | 
				
			||||||
 | 
							if($from != 0){
 | 
				
			||||||
 | 
								$conditions .= " AND ID <= ? ";
 | 
				
			||||||
 | 
								$dataConds[] = $from;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Specify order and limit
 | 
				
			||||||
 | 
							$conditions.= " ORDER BY ID DESC LIMIT ".$limit;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Perform the request
 | 
				
			||||||
 | 
							$list = CS::get()->db->select(
 | 
				
			||||||
 | 
								$this::TABLE_NAME,
 | 
				
			||||||
 | 
								$conditions,
 | 
				
			||||||
 | 
								$dataConds
 | 
				
			||||||
 | 
							);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Parse and return posts
 | 
				
			||||||
 | 
							return $this->processGetMultiple($list, TRUE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * Get the list of latest posts for a user
 | 
						 * Get the list of latest posts for a user
 | 
				
			||||||
	 * 
 | 
						 * 
 | 
				
			||||||
@@ -406,7 +456,7 @@ class Posts {
 | 
				
			|||||||
				return $this::NO_ACCESS;
 | 
									return $this::NO_ACCESS;
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
			//Check if the group is open or not
 | 
								//Check if the group is open or not
 | 
				
			||||||
			if(!components()->groups->is_open($post_info->get_group_id()))
 | 
								if(!components()->groups->isOpen($post_info->get_group_id()))
 | 
				
			||||||
				return $this::NO_ACCESS;
 | 
									return $this::NO_ACCESS;
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
			// Post public + open group > basic access
 | 
								// Post public + open group > basic access
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -102,15 +102,19 @@ function postBool(string $name) : bool {
 | 
				
			|||||||
 * This function makes a REST_Error in case of error
 | 
					 * This function makes a REST_Error in case of error
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 * @param string $name The name of the $_POST field
 | 
					 * @param string $name The name of the $_POST field
 | 
				
			||||||
 | 
					 * @param string $default The default value (null = none)
 | 
				
			||||||
 * @return int The integer
 | 
					 * @return int The integer
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
function postInt(string $name) : int {
 | 
					function postInt(string $name, string $default = null) : int {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	//Check the variable
 | 
						//Check the variable
 | 
				
			||||||
	if(!isset($_POST[$name]))
 | 
						if(!isset($_POST[$name]) && $default == null)
 | 
				
			||||||
		Rest_fatal_error(400, "Please add a POST integer named '".$name."' in the request !");
 | 
							Rest_fatal_error(400, "Please add a POST integer named '".$name."' in the request !");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return (int)$_POST[$name];
 | 
						if(isset($_POST[$name]))
 | 
				
			||||||
 | 
							return (int)$_POST[$name];
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							return (int) $default;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user