ComunicAPI/classes/components/AccountImage.php

118 lines
3.3 KiB
PHP
Raw Normal View History

<?php
/**
* Account image class
*
* @author Pierre HUBERT
*/
2018-04-29 12:31:52 +00:00
class AccountImage {
2017-05-26 08:23:55 +00:00
/**
2018-04-29 12:31:52 +00:00
* @var string accountImageDirConfItem The name of the configuration item that contains the path
* to the images
2017-05-26 08:23:55 +00:00
*/
2018-04-29 12:31:52 +00:00
const accountImageDirConfItem = "imageAccountPath";
2017-05-26 08:23:55 +00:00
/**
2018-04-29 12:31:52 +00:00
* @var string defaultAccountImage name of the default account image
2017-05-26 08:23:55 +00:00
*/
2018-04-29 12:31:52 +00:00
const defaultAccountImage = "0Reverse.png";
2017-05-26 08:23:55 +00:00
/**
2018-04-29 12:31:52 +00:00
* @var string defaultAccountImage name of the error account image
2017-05-26 08:23:55 +00:00
*/
2018-04-29 12:31:52 +00:00
const errorAccountImage = "0Red.png";
2017-05-26 08:23:55 +00:00
/**
2018-04-29 12:31:52 +00:00
* Returns the file of an account image
2017-05-26 07:50:20 +00:00
*
2018-04-29 12:31:52 +00:00
* @param int $userID The ID of the user on which we perform research
* @return string The URL pointing on the account image
2017-05-26 07:50:20 +00:00
*/
2018-04-29 12:31:52 +00:00
public function getFile(int $userID) : string {
2017-05-26 08:23:55 +00:00
//First, check if the account image exists
2018-04-29 12:31:52 +00:00
$accountImageFileName = $this->getFileAccountImage($userID);
if($accountImageFileName != ""){
2017-05-26 08:23:55 +00:00
//Get account image visibility level
$visibilityLevel = $this->visibilityLevel($userID);
//If account image is open or if the user signed in is the user making the request
2018-04-29 12:31:52 +00:00
if($visibilityLevel == AccountImageSettings::VISIBILITY_OPEN || userID == $userID)
2017-05-26 08:23:55 +00:00
//Account image is OPEN
2018-04-29 12:31:52 +00:00
return $accountImageFileName;
2017-05-26 08:23:55 +00:00
//If the user just requires user to be in
2018-04-29 12:31:52 +00:00
if($visibilityLevel == AccountImageSettings::VISIBILITY_PUBLIC){
2017-05-26 08:23:55 +00:00
if(userID != 0)
2018-04-29 12:31:52 +00:00
return $accountImageFileName;
2017-05-26 08:23:55 +00:00
else
2018-04-29 12:31:52 +00:00
return self::errorAccountImage;
2017-05-26 08:23:55 +00:00
}
//Else users must be friends
2018-04-29 12:31:52 +00:00
//Check the two persons are friend or not
if(CS::get()->components->friends->are_friend($userID, userID))
//User is allowed to access the image
return $accountImageFileName;
else
return self::errorAccountImage;
2017-05-26 08:23:55 +00:00
}
else
//Return default account image
2018-04-29 12:31:52 +00:00
return self::defaultAccountImage;
}
/**
* Returns the URL to an account image
*
* @param int $userID Target user ID
* @return string $url The URL of the account image
*/
public function getURL(int $userID) : string {
return path_user_data(cs()->config->get(self::accountImageDirConfItem).$this->getFile($userID));
2017-05-26 08:23:55 +00:00
}
/**
* Get visibilty level of the account image
*
* 1. The user and his friend ONLY
* 2. User, friends, and logged in users
* 3. Everybody
*
2018-04-29 12:31:52 +00:00
* @param int $userID The ID of the user on which we perform researchs
* @return int The visibility level of the account image
2017-05-26 08:23:55 +00:00
*/
2018-04-29 12:31:52 +00:00
private function visibilityLevel(int $userID) : int {
$filePath = path_user_data(cs()->config->get(self::accountImageDirConfItem)."adresse_avatars/limit_view_".$userID.".txt", TRUE);
2017-05-26 08:23:55 +00:00
//Check restriction file
if(!file_exists($filePath))
2018-04-29 12:31:52 +00:00
return AccountImageSettings::VISIBILITY_OPEN; //Everybody by default
2017-05-26 08:23:55 +00:00
//Check for personnalized level
$fileContent = file_get_contents($filePath);
2018-04-29 12:31:52 +00:00
//Return visibility level
return $fileContent;
}
/**
* Get the file to the user account image, if the user has any
*
* @param int $userID Target user ID
* @return string The path to the user account image, empty string else
*/
private function getFileAccountImage(int $userID) : string {
$fileName = path_user_data(cs()->config->get(self::accountImageDirConfItem)."adresse_avatars/".$userID.".txt", TRUE);
if(file_exists($fileName))
return file_get_contents($fileName);
2017-05-26 08:23:55 +00:00
else
2018-04-29 12:31:52 +00:00
return "";
}
}
//Register class
2018-04-29 12:09:55 +00:00
Components::register("accountImage", new AccountImage());