mirror of
https://github.com/pierre42100/ComunicAPI
synced 2024-11-23 13:59:29 +00:00
Can get the posts of a group and returns them to the API
This commit is contained in:
parent
cd772c03c3
commit
2d820403f5
@ -56,6 +56,31 @@ class PostsController {
|
||||
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
|
||||
*
|
||||
|
@ -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
|
||||
*
|
||||
@ -406,7 +456,7 @@ class Posts {
|
||||
return $this::NO_ACCESS;
|
||||
|
||||
//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;
|
||||
|
||||
// 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
|
||||
*
|
||||
* @param string $name The name of the $_POST field
|
||||
* @param string $default The default value (null = none)
|
||||
* @return int The integer
|
||||
*/
|
||||
function postInt(string $name) : int {
|
||||
function postInt(string $name, string $default = null) : int {
|
||||
|
||||
//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 !");
|
||||
|
||||
return (int)$_POST[$name];
|
||||
if(isset($_POST[$name]))
|
||||
return (int)$_POST[$name];
|
||||
else
|
||||
return (int) $default;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user