mirror of
				https://github.com/pierre42100/ComunicAPI
				synced 2025-10-31 18:24:29 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			127 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * API Groups controller
 | |
|  * 
 | |
|  * @author Pierre HUBERT
 | |
|  */
 | |
| 
 | |
| class GroupsController {
 | |
| 	
 | |
| 	/**
 | |
| 	 * API groups membership levels
 | |
| 	 */
 | |
| 	const GROUPS_MEMBERSHIP_LEVELS = array(
 | |
| 		0 => "administrator",
 | |
| 		1 => "moderator",
 | |
| 		2 => "member",
 | |
| 		3 => "pending",
 | |
| 		4 => "visitor"
 | |
| 	);
 | |
| 
 | |
| 	/**
 | |
| 	 * Create a group
 | |
| 	 * 
 | |
| 	 * @url POST /groups/create
 | |
| 	 */
 | |
| 	public function create(){
 | |
| 
 | |
| 		//Login required
 | |
| 		user_login_required();
 | |
| 
 | |
| 		//Get the name of the new group
 | |
| 		$name = postString("name", 3);
 | |
| 
 | |
| 		//Prepare group creation
 | |
| 		$newGroup = new NewGroup();
 | |
| 		$newGroup->set_name($name);
 | |
| 		$newGroup->set_userID(userID);
 | |
| 		$newGroup->set_time_sent(time());
 | |
| 
 | |
| 		//Try to create the group
 | |
| 		$groupID = components()->groups->create($newGroup);
 | |
| 
 | |
| 		//Check for errors
 | |
| 		if($groupID < 1)
 | |
| 			Rest_fatal_error(500, "An error occurred while trying to create the group!");
 | |
| 		
 | |
| 		//Success
 | |
| 		return array(
 | |
| 			"success" => "The group has been successfully created!",
 | |
| 			"id" => $groupID
 | |
| 		);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Get information about a group
 | |
| 	 * 
 | |
| 	 * @url POST /groups/get_info
 | |
| 	 */
 | |
| 	public function getInfo(){
 | |
| 
 | |
| 		//Get the ID of the requested group
 | |
| 		$id = postInt("id");
 | |
| 
 | |
| 		//Get information about the group
 | |
| 		$group = components()->groups->get_info($id);
 | |
| 
 | |
| 		//Check if the group was not found
 | |
| 		if(!$group->isValid())
 | |
| 			Rest_fatal_error(404, "The requested group was not found !");
 | |
| 		
 | |
| 		//Parse and return information about the group
 | |
| 		return self::GroupInfoToAPI($group);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Get advanced information about a group
 | |
| 	 * 
 | |
| 	 * @url POST /groups/get_advanced_info
 | |
| 	 */
 | |
| 	public function getAdvancedInfo(){
 | |
| 
 | |
| 		//Get the ID of the requested group
 | |
| 		$id = postInt("id");
 | |
| 
 | |
| 		//Get information about the group
 | |
| 		$group = components()->groups->get_advanced_info($id);
 | |
| 
 | |
| 		//Check if the group was not found
 | |
| 		if(!$group->isValid())
 | |
| 			Rest_fatal_error(404, "The requested group was not found !");
 | |
| 		
 | |
| 		//Parse and return information about the group
 | |
| 		return self::AdvancedGroupInfoToAPI($group);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Parse a GroupInfo object into an array for the API
 | |
| 	 * 
 | |
| 	 * @param GroupInfo $info Information about the group
 | |
| 	 * @return array Generated API data
 | |
| 	 */
 | |
| 	public static function GroupInfoToAPI(GroupInfo $info) : array {
 | |
| 		$data = array();
 | |
| 
 | |
| 		$data["id"] = $info->get_id();
 | |
| 		$data["name"] = $info->get_name();
 | |
| 		$data["icon_url"] = $info->get_icon_url();
 | |
| 		$data["number_members"] = $info->get_number_members();
 | |
| 		$data["membership"] = self::GROUPS_MEMBERSHIP_LEVELS[$info->get_membership_level()];
 | |
| 
 | |
| 		return $data;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Parse an AdvancedGroupInfo object into an array for the API
 | |
| 	 * 
 | |
| 	 * @param AdvancedGroupInfo $info Information about the group
 | |
| 	 * @return array Generated API data
 | |
| 	 */
 | |
| 	public static function AdvancedGroupInfoToAPI(AdvancedGroupInfo $info) : array {
 | |
| 		$data = self::GroupInfoToAPI($info);
 | |
| 
 | |
| 		$data["time_create"] = $info->get_time_create();
 | |
| 
 | |
| 		return $data;
 | |
| 	}
 | |
| } | 
