mirror of
https://github.com/pierre42100/ComunicAPI
synced 2025-06-19 08:35:18 +00:00
Can get all the memberships of a user at once
This commit is contained in:
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;
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user