<?php
namespace Claromentis\People;

$GLOBALS["__65da1b1ec2d6" . "653e8a0ab7848e" . "536215"] = (@$GLOBALS["__65da1b1ec2" . "d6653e8a0ab7" . "848e536215"] ?: array()) + array("_8288bdf6cef725fd254d3ffa338a8c" . "eb" => base64_decode("L3Blb3BsZ" . "S8="), "_d44493b5db20" . "0585eb75d147e" . "32d2824" => base64_decode("Lmpw" . "Zw=="), "_9db7d4f61935744f" . "77bb41a5d83fb18a" => base64_decode("SW52YWxpZCBQZW9" . "wbGUgZW50aXR5IG" . "9yIElE"), "_7e4598ce2b" . "21a2e186ca8" . "577e79d917b" => base64_decode("X2xhcmdlL" . "mpwZw=="), "_49a769d3" . "201eb110a" . "c3f8366e2" . "84ef7b" => base64_decode("aHR0cHM6Ly93d3cuZ3Jhdm" . "F0YXIuY29tL2F2YXRhci8="), "_5e30c4717ce" . "d36cff9e93e1" . "9a5c576cc" => base64_decode("aXN" . "fc3" . "Rya" . "W5n"), "_318e4aa982e1b529017" . "493d685da05f1" => base64_decode("L3Blb3BsZS91c2VyL" . "w=="), "_62d701c3c53404f0" . "6345eb35720a47b4" => base64_decode("aXNfbnVtZXJp" . "Yw=="), "_0196b11df55" . "4da5aff4e8f1" . "291153487" => base64_decode("SW52YWxpZCB1c2VyIG9i" . "amVjdCBvciBJRA=="), "_52bf6fac6d" . "6d723bb1ba0" . "de109f27356" => base64_decode("L2ludHJhbmV0L3B" . "lb3BsZS9saXN0cG" . "VvcGxlLnBocD9ub" . "2FjY2Vzcz0x"), "_8fbcfbba22bc6b64aa" . "915086ed5c37e8" => base64_decode("Jn" . "M9"), "_3d377e2d653107298125aca92a" . "d3b596" => base64_decode("P2" . "Q9"), "_2a5789b3" . "d67b8cd24" . "b7372ffe2" . "39c928" => base64_decode("b" . "W" . "Q" . "1"), "_bb7c9b3c203" . "7577672691b8" . "1a34ee7eb" => base64_decode("L2xvZ2" . "9zLw=="), "_680cc2b8220e94c8c32" . "b8bc7c65519b4" => base64_decode("aXNfa" . "W50"), "_cf88fa10861a" . "b4dc5c0be9bb5" . "2fa1e1f" => base64_decode("Y2ZnX21pc3NpbmdfdXNlcl9hdmF0YXI" . "="));
use Claromentis\Core\CDN\CDNInterface;
use Claromentis\Core\CDN\CDNSystemException;
use Claromentis\Core\Config\Config;
use Claromentis\Core\HashId\Hasher;
use Claromentis\Core\Http\HttpUtil;
use Claromentis\Core\Security\SecurityContext;
use Claromentis\Core\Services;
use Claromentis\People\Config\ConfigOptions;
use Claromentis\People\Entity\Extranet;
use Claromentis\People\Entity\Group;
use Claromentis\People\Entity\Role;
use Claromentis\People\Entity\User;
use Claromentis\People\Repository\UserRepository;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use UnexpectedValueException;






class UrlGenerator
{
    const NO_PHOTO_URL = '/intranet/people/images/no_photo.jpg';
    
    
    
    
    protected $url_generator;
    
    
    
    
    protected $cdn;
    
    
    
    
    protected $http_util;
    
    
    
    
    protected $people_acl;
    
    
    
    
    protected $hashid;
    
    
    
    
    protected $user_repository;
    
    
    
    
    protected $gravatar_source;
    
    
    
    
    
    
    
    
    
    
    
    public function __construct(UrlGeneratorInterface $url_generator, CDNInterface $_fee64623e267830531765c6712d0f041, HttpUtil $_019f644d80568a97cf247afb364302a5, PeopleAcl $_3d3cf5257abd66970c2706086e13633d, Hasher $hashid, UserRepository $_eeeeb0d673b7b0fd0bdca58b5541c3e0, Config $config)
    {
        $this->url_generator = $url_generator;
        $this->cdn = $_fee64623e267830531765c6712d0f041;
        $this->http_util = $_019f644d80568a97cf247afb364302a5;
        $this->people_acl = $_3d3cf5257abd66970c2706086e13633d;
        $this->hashid = $hashid;
        $this->user_repository = $_eeeeb0d673b7b0fd0bdca58b5541c3e0;
        $this->gravatar_source = $config[$GLOBALS["__65da1b1ec2d" . "6653e8a0ab784" . "8e536215"]["_cf88fa10861ab" . "4dc5c0be9bb52f" . "a1e1f"]];
    }
    
    
    
    
    
    
    
    
    
    public function getUserPhotoUrl($_24e0e36600d6af77406a44bb618a6253, SecurityContext $context = null)
    {
        $context = $context ?? Services::I()->{SecurityContext::class};
        if (!$this->people_acl->CanViewUser($context, $_24e0e36600d6af77406a44bb618a6253)) {
            return self::NO_PHOTO_URL;
        }
        $id = $this->getId($_24e0e36600d6af77406a44bb618a6253);
        if ($this->cdn->Exists($GLOBALS["__65da1b1ec2d6653e8a0ab7848e536" . "215"]["_8288bdf6ce" . "f725fd254d3" . "ffa338a8ceb"] . $id . $GLOBALS["__65da1b1ec2d6653e8a0ab" . "7848e536215"]["_d44493b5db2005" . "85eb75d147e32d2" . "824"])) {
            return $this->cdn->GetUrl($GLOBALS["__65da1b1ec2d6653e8a0ab784" . "8e536215"]["_8288bdf" . "6cef725f" . "d254d3ff" . "a338a8ce" . "b"] . $id . $GLOBALS["__65da1b1ec2d6653e8a0ab7848e" . "536215"]["_d44493b5db20" . "0585eb75d147e" . "32d2824"]);
        }
        return $this->getGravatarUrl($_24e0e36600d6af77406a44bb618a6253, 160);
    }
    
    
    
    
    
    
    
    
    
    public function getLargeUserPhotoUrl($_24e0e36600d6af77406a44bb618a6253, SecurityContext $context = null)
    {
        $context = $context ?? Services::I()->{SecurityContext::class};
        if (!$this->people_acl->CanViewUser($context, $_24e0e36600d6af77406a44bb618a6253)) {
            return self::NO_PHOTO_URL;
        }
        $id = $this->getId($_24e0e36600d6af77406a44bb618a6253);
        if ($this->cdn->Exists($GLOBALS["__65da1b1ec2d66" . "53e8a0ab7848e53" . "6215"]["_8288bdf6cef725fd254" . "d3ffa338a8ceb"] . $id . $GLOBALS["__65da1b1ec2d6653e" . "8a0ab7848e536215"]["_7e4598ce2b21a2e186ca85" . "77e79d917b"])) {
            return $this->cdn->GetUrl($GLOBALS["__65da1b1ec2" . "d6653e8a0ab7" . "848e536215"]["_8288bdf6cef7" . "25fd254d3ffa3" . "38a8ceb"] . $id . $GLOBALS["__65da1b1ec2d6653" . "e8a0ab7848e536215"]["_7e4598c" . "e2b21a2e" . "186ca857" . "7e79d917" . "b"]);
        }
        return $this->getGravatarUrl($_24e0e36600d6af77406a44bb618a6253, 630);
    }
    
    
    
    
    
    
    public function getExtranetLogoUrl(Extranet $_9a2ef4ae6a5745ffe5fac33c88a222fa, SecurityContext $context = null)
    {
        if (!$_9a2ef4ae6a5745ffe5fac33c88a222fa->logo_file) {
            return null;
        }
        try {
            $url = $this->cdn->GetUrl($GLOBALS["__65da1b1ec2d6653e8" . "a0ab7848e536215"]["_bb7c9b3c2037577672691b81a" . "34ee7eb"] . $_9a2ef4ae6a5745ffe5fac33c88a222fa->logo_file);
        } catch (CDNSystemException $exception) {
            
            
            $url = null;
        }
        if ($url === null) {
            return $url;
        }
        return $this->http_util->CreateInternalLink($url);
    }
    
    
    
    
    
    
    
    
    public function getUserProfileUrl($_24e0e36600d6af77406a44bb618a6253, SecurityContext $context = null)
    {
        $context = $context ?? Services::I()->{SecurityContext::class};
        $user_id = $this->getId($_24e0e36600d6af77406a44bb618a6253);
        if (!$user_id || $context && !$this->people_acl->CanViewUser($context, $_24e0e36600d6af77406a44bb618a6253)) {
            return $GLOBALS["__65da1b1ec2d6653e8a0ab78" . "48e536215"]["_52bf6fac6d6d723bb" . "1ba0de109f27356"];
        }
        $_26f03caed539abbac5182a268264a5d8 = $this->hashid->Encode($user_id);
        $url = $GLOBALS["__65da1b1ec2d6653e" . "8a0ab7848e536215"]["_318e4aa982e1b52901" . "7493d685da05f1"] . $_26f03caed539abbac5182a268264a5d8;
        return $url;
    }
    
    
    
    
    
    
    
    protected function getId($value)
    {
        if ($value instanceof User || $value instanceof Group || $value instanceof Role || $value instanceof Extranet) {
            return $value->id;
        }
        if ($GLOBALS["__65da1b1ec2d6653e8a" . "0ab7848e536215"]["_680cc2b8220e94c8c32b8bc7c6" . "5519b4"]($value) || $GLOBALS["__65da1b1ec2d6653e8a0ab7848e53" . "6215"]["_5e30c4717ced3" . "6cff9e93e19a5c" . "576cc"]($value) && $GLOBALS["__65da1b1ec2d6653" . "e8a0ab7848e536215"]["_62d701c3c53404f0" . "6345eb35720a47b4"]($value)) {
            return $value;
        }
        throw new UnexpectedValueException($GLOBALS["__65da1b1ec2d6653e8a0ab7" . "848e536215"]["_9db7d4f61935744" . "f77bb41a5d83fb18" . "a"]);
    }
    
    
    
    
    
    protected function getUser($_24e0e36600d6af77406a44bb618a6253) : ?User
    {
        if ($GLOBALS["__65da1b1ec2d6653e8a0ab7848e5362" . "15"]["_62d701c3c53404f0" . "6345eb35720a47b4"]($_24e0e36600d6af77406a44bb618a6253)) {
            return $this->user_repository->find($_24e0e36600d6af77406a44bb618a6253);
        }
        if ($_24e0e36600d6af77406a44bb618a6253 instanceof User) {
            return $_24e0e36600d6af77406a44bb618a6253;
        }
        throw new UnexpectedValueException($GLOBALS["__65da1b1ec" . "2d6653e8a0a" . "b7848e53621" . "5"]["_0196b11" . "df554da5" . "aff4e8f1" . "29115348" . "7"]);
    }
    
    
    
    
    
    
    
    
    protected function getGravatarUrl($_24e0e36600d6af77406a44bb618a6253, int $size)
    {
        $_24e0e36600d6af77406a44bb618a6253 = $this->getUser($_24e0e36600d6af77406a44bb618a6253);
        if (!$_24e0e36600d6af77406a44bb618a6253 || $this->gravatar_source === ConfigOptions::AVATAR_SOURCE_DEFAULT) {
            return self::NO_PHOTO_URL;
        }
        $_72a7209efcd9c803cef80753f412d5cd = $GLOBALS["__65da1b1ec2d6" . "653e8a0ab7848e" . "536215"]["_2a5789b3d67b8cd24" . "b7372ffe239c928"]($_24e0e36600d6af77406a44bb618a6253->email);
        return $GLOBALS["__65da1b1ec2d6653e8a0ab7848e5" . "36215"]["_49a769d3201eb110" . "ac3f8366e284ef7b"] . $_72a7209efcd9c803cef80753f412d5cd . $GLOBALS["__65da1b1ec2d6653e8a0ab7" . "848e536215"]["_3d377e2d6" . "5310729812" . "5aca92ad3b" . "596"] . $this->gravatar_source . $GLOBALS["__65da1b1ec2d6653e8a0ab7848e" . "536215"]["_8fbcfbba22bc6b6" . "4aa915086ed5c37e" . "8"] . $size;
    }
}