mirror of
				https://github.com/pierre42100/ComunicAPI
				synced 2025-11-04 04:04:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			173 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			173 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/**
 | 
						|
 * Group information model
 | 
						|
 * 
 | 
						|
 * @author Pierre HUBERT
 | 
						|
 */
 | 
						|
 | 
						|
class GroupInfo extends BaseUniqueObject {
 | 
						|
 | 
						|
	//Path to group logo in user data
 | 
						|
	const PATH_GROUPS_LOGO = "groups_logo";
 | 
						|
 | 
						|
	//Groups visibility
 | 
						|
	const OPEN_GROUP = 0;
 | 
						|
	const PRIVATE_GROUP = 1;
 | 
						|
	const SECRET_GROUP = 2;
 | 
						|
 | 
						|
	//Registration levels
 | 
						|
	const OPEN_REGISTRATION = 0;
 | 
						|
	const MODERATED_REGISTRATION = 1;
 | 
						|
	const CLOSED_REGISTRATION = 2;
 | 
						|
 | 
						|
	//User access to a group
 | 
						|
	const NO_ACCESS = 0; //Can not even know if the group exists or not
 | 
						|
	const LIMITED_ACCESS = 1; //Access to the name of the group only
 | 
						|
	const VIEW_ACCESS = 2; //Can see the posts of the group, but not a member of the group
 | 
						|
	const MEMBER_ACCESS = 3; //Member access (same as view access but as member)
 | 
						|
	const MODERATOR_ACCESS = 4; //Can create posts, even if posts creation is restricted
 | 
						|
	const ADMIN_ACCESS = 5; //Can do everything
 | 
						|
 | 
						|
	//Post levels
 | 
						|
	const POSTS_LEVEL_MODERATORS = 0; //Only the moderators and the administrator can create posts
 | 
						|
	const POSTS_LEVEL_ALL_MEMBERS = 1; //All the members of the group can create posts
 | 
						|
 | 
						|
	//Private fields
 | 
						|
    private $name;
 | 
						|
    private $number_members = -1;
 | 
						|
	private $logo;
 | 
						|
	private $membership_level = -1;
 | 
						|
	private $visiblity = -1;
 | 
						|
	private $registration_level = -1;
 | 
						|
	private $posts_level = -1;
 | 
						|
	private $virtual_directory;
 | 
						|
	private $following = FALSE;
 | 
						|
    
 | 
						|
    //Get and set the name of group
 | 
						|
    public function set_name(string $name){
 | 
						|
		$this->name = $name == "" ? null : $name;
 | 
						|
	}
 | 
						|
 | 
						|
	public function has_name() : bool {
 | 
						|
		return $this->name != null;
 | 
						|
	}
 | 
						|
 | 
						|
	public function get_name() : string {
 | 
						|
		return $this->name != null ? $this->name : "null";
 | 
						|
    }
 | 
						|
    
 | 
						|
    //Get and set the number of members of the group
 | 
						|
    public function set_number_members(int $number_members){
 | 
						|
		$this->number_members = $number_members;
 | 
						|
	}
 | 
						|
 | 
						|
	public function has_number_members() : bool {
 | 
						|
		return $this->number_members > -1;
 | 
						|
	}
 | 
						|
 | 
						|
	public function get_number_members() : int {
 | 
						|
		return $this->number_members;
 | 
						|
	}
 | 
						|
	
 | 
						|
	//Get and set the URL of the logo of group
 | 
						|
    public function set_logo(string $logo){
 | 
						|
		$this->logo = $logo == "" ? null : $logo;
 | 
						|
	}
 | 
						|
 | 
						|
	public function has_logo() : bool {
 | 
						|
		return $this->logo != null;
 | 
						|
	}
 | 
						|
 | 
						|
	public function get_logo() : string {
 | 
						|
		return $this->logo != null ? $this->logo : self::PATH_GROUPS_LOGO."/default.png";
 | 
						|
	}
 | 
						|
	
 | 
						|
	public function get_logo_url() : string {
 | 
						|
		return path_user_data($this->get_logo());
 | 
						|
	}
 | 
						|
 | 
						|
	public function get_logo_sys_path() : string {
 | 
						|
 | 
						|
		//For security reasons, this method is available 
 | 
						|
		//only if the user has really a logo (avoid unattended
 | 
						|
		//operation on default logo)
 | 
						|
		if(!$this->has_logo())
 | 
						|
			throw new Exception("This GroupInfo object has not any logo set!");
 | 
						|
 | 
						|
		return path_user_data($this->get_logo(), true);
 | 
						|
	}
 | 
						|
	
 | 
						|
	//Get and set the membership level of the current user
 | 
						|
	public function set_membership_level(int $membership_level){
 | 
						|
		$this->membership_level = $membership_level;
 | 
						|
	}
 | 
						|
 | 
						|
	public function has_membership_level() : bool {
 | 
						|
		return $this->membership_level > -1;
 | 
						|
	}
 | 
						|
 | 
						|
	public function get_membership_level() : int {
 | 
						|
		return $this->membership_level;
 | 
						|
	}
 | 
						|
 | 
						|
	//Get and set group visibility
 | 
						|
    public function set_visibility(int $visibility){
 | 
						|
		$this->visibility = $visibility;
 | 
						|
	}
 | 
						|
 | 
						|
	public function has_visibility() : bool {
 | 
						|
		return $this->visibility > -1;
 | 
						|
	}
 | 
						|
 | 
						|
	public function get_visibility() : int {
 | 
						|
		return $this->visibility;
 | 
						|
	}
 | 
						|
 | 
						|
	//Get and set registration levels
 | 
						|
    public function set_registration_level(int $registration_level){
 | 
						|
		$this->registration_level = $registration_level;
 | 
						|
	}
 | 
						|
 | 
						|
	public function has_registration_level() : bool {
 | 
						|
		return $this->registration_level > -1;
 | 
						|
	}
 | 
						|
 | 
						|
	public function get_registration_level() : int {
 | 
						|
		return $this->registration_level;
 | 
						|
	}
 | 
						|
 | 
						|
	//Get and set posts level
 | 
						|
    public function set_posts_level(int $posts_level){
 | 
						|
		$this->posts_level = $posts_level;
 | 
						|
	}
 | 
						|
 | 
						|
	public function has_posts_level() : bool {
 | 
						|
		return $this->posts_level > -1;
 | 
						|
	}
 | 
						|
 | 
						|
	public function get_posts_level() : int {
 | 
						|
		return $this->posts_level;
 | 
						|
	}
 | 
						|
 | 
						|
	//Get and set virtual directory
 | 
						|
    public function set_virtual_directory(string $virtual_directory){
 | 
						|
		$this->virtual_directory = $virtual_directory == "" ? null : $virtual_directory;
 | 
						|
	}
 | 
						|
 | 
						|
	public function has_virtual_directory() : bool {
 | 
						|
		return $this->virtual_directory != null;
 | 
						|
	}
 | 
						|
 | 
						|
	public function get_virtual_directory() : string {
 | 
						|
		return $this->virtual_directory != null ? $this->virtual_directory : "null";
 | 
						|
	}
 | 
						|
 | 
						|
	//Set and get following status
 | 
						|
	public function set_following(bool $following){
 | 
						|
		$this->following = $following;
 | 
						|
	}
 | 
						|
	
 | 
						|
	public function isFollowing() : bool {
 | 
						|
		return $this->following;
 | 
						|
	}
 | 
						|
} |