mirror of
https://github.com/pierre42100/ComunicAPI
synced 2024-11-23 22:09:29 +00:00
Can get all the memberships of a user at once
This commit is contained in:
parent
9dfc400fe2
commit
50875adc3b
81
RestControllers/WebAppController.php
Normal file
81
RestControllers/WebAppController.php
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Web application controller
|
||||||
|
*
|
||||||
|
* Methods specifically targetting the web application
|
||||||
|
*
|
||||||
|
* @author Pierre HUBERT
|
||||||
|
*/
|
||||||
|
|
||||||
|
class WebAppController {
|
||||||
|
|
||||||
|
// Kins of membership
|
||||||
|
const MEMBERSHIP_FRIEND = "friend";
|
||||||
|
const MEMBERSHIP_GROUP = "group";
|
||||||
|
|
||||||
|
public function __construction() {
|
||||||
|
user_login_required();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all the memberships of the user, sorted by last activity order
|
||||||
|
*
|
||||||
|
* @url POST /webApp/getMemberships
|
||||||
|
*/
|
||||||
|
public function getMemberships() {
|
||||||
|
|
||||||
|
// Get the list of friends of the user
|
||||||
|
$friends = components()->friends->getList(userID);
|
||||||
|
|
||||||
|
// Get the list of groups of the user
|
||||||
|
$groups = components()->groups->getListUser(userID);
|
||||||
|
|
||||||
|
// Get last activities of groups
|
||||||
|
$groups_activity = array();
|
||||||
|
foreach($groups as $group)
|
||||||
|
$groups_activity[components()->groups->getLastActivity($group)] = $group;
|
||||||
|
krsort($groups_activity);
|
||||||
|
$groups = array();
|
||||||
|
foreach($groups_activity as $activity => $id)
|
||||||
|
$groups[] = array("id" => $id, "activity" => $activity);
|
||||||
|
|
||||||
|
$out = array();
|
||||||
|
while(count($friends) != 0 || count($groups) != 0) {
|
||||||
|
|
||||||
|
if(count($friends) == 0)
|
||||||
|
$type = self::MEMBERSHIP_GROUP;
|
||||||
|
|
||||||
|
else if(count($groups) == 0)
|
||||||
|
$type = self::MEMBERSHIP_FRIEND;
|
||||||
|
|
||||||
|
else if($friends[0]->getLastActivityTime() > $groups[0]["activity"])
|
||||||
|
$type = self::MEMBERSHIP_FRIEND;
|
||||||
|
|
||||||
|
else
|
||||||
|
$type = self::MEMBERSHIP_GROUP;
|
||||||
|
|
||||||
|
// In case of friend
|
||||||
|
if($type == self::MEMBERSHIP_FRIEND){
|
||||||
|
$out[] = array(
|
||||||
|
"type" => $type,
|
||||||
|
"friend" => friendsController::parseFriendAPI(array_shift($friends))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// In case of group
|
||||||
|
else {
|
||||||
|
$info = array_shift($groups);
|
||||||
|
$out[] = array(
|
||||||
|
"type" => $type,
|
||||||
|
"id" => $info["id"],
|
||||||
|
"last_activity" => $info["activity"]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return $out;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -172,6 +172,25 @@ class GroupsComponent {
|
|||||||
return $this->dbToAdvancedGroupInfo($info[0], null, TRUE);
|
return $this->dbToAdvancedGroupInfo($info[0], null, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the timestamp of the estimated last activity on the group
|
||||||
|
*
|
||||||
|
* @param int $id The ID of the target group
|
||||||
|
* @return int The time of last activity on the group
|
||||||
|
*/
|
||||||
|
public function getLastActivity(int $id) : int {
|
||||||
|
|
||||||
|
// Query the database
|
||||||
|
$posts = components()->posts->getGroupPosts($id, true, 0, 1);
|
||||||
|
|
||||||
|
if(count($posts) == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
else
|
||||||
|
return $posts[0]->get_time_sent();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a group settings
|
* Get a group settings
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user