Server IP : 184.154.167.98 / Your IP : 3.21.104.16 Web Server : Apache System : Linux pink.dnsnetservice.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 User : puertode ( 1767) PHP Version : 7.2.34 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/puertode/public_html/contratos/3rdparty/sabre/dav/lib/DAVACL/ |
Upload File : |
<?php namespace Sabre\DAVACL; use Sabre\DAV; use Sabre\HTTP\URLUtil; /** * Principal class * * This class is a representation of a simple principal * * Many WebDAV specs require a user to show up in the directory * structure. * * This principal also has basic ACL settings, only allowing the principal * access it's own principal. * * @copyright Copyright (C) fruux GmbH (https://fruux.com/) * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ class Principal extends DAV\Node implements IPrincipal, DAV\IProperties, IACL { use ACLTrait; /** * Struct with principal information. * * @var array */ protected $principalProperties; /** * Principal backend * * @var PrincipalBackend\BackendInterface */ protected $principalBackend; /** * Creates the principal object * * @param PrincipalBackend\BackendInterface $principalBackend * @param array $principalProperties */ function __construct(PrincipalBackend\BackendInterface $principalBackend, array $principalProperties = []) { if (!isset($principalProperties['uri'])) { throw new DAV\Exception('The principal properties must at least contain the \'uri\' key'); } $this->principalBackend = $principalBackend; $this->principalProperties = $principalProperties; } /** * Returns the full principal url * * @return string */ function getPrincipalUrl() { return $this->principalProperties['uri']; } /** * Returns a list of alternative urls for a principal * * This can for example be an email address, or ldap url. * * @return array */ function getAlternateUriSet() { $uris = []; if (isset($this->principalProperties['{DAV:}alternate-URI-set'])) { $uris = $this->principalProperties['{DAV:}alternate-URI-set']; } if (isset($this->principalProperties['{http://sabredav.org/ns}email-address'])) { $uris[] = 'mailto:' . $this->principalProperties['{http://sabredav.org/ns}email-address']; } return array_unique($uris); } /** * Returns the list of group members * * If this principal is a group, this function should return * all member principal uri's for the group. * * @return array */ function getGroupMemberSet() { return $this->principalBackend->getGroupMemberSet($this->principalProperties['uri']); } /** * Returns the list of groups this principal is member of * * If this principal is a member of a (list of) groups, this function * should return a list of principal uri's for it's members. * * @return array */ function getGroupMembership() { return $this->principalBackend->getGroupMemberShip($this->principalProperties['uri']); } /** * Sets a list of group members * * If this principal is a group, this method sets all the group members. * The list of members is always overwritten, never appended to. * * This method should throw an exception if the members could not be set. * * @param array $groupMembers * @return void */ function setGroupMemberSet(array $groupMembers) { $this->principalBackend->setGroupMemberSet($this->principalProperties['uri'], $groupMembers); } /** * Returns this principals name. * * @return string */ function getName() { $uri = $this->principalProperties['uri']; list(, $name) = URLUtil::splitPath($uri); return $name; } /** * Returns the name of the user * * @return string */ function getDisplayName() { if (isset($this->principalProperties['{DAV:}displayname'])) { return $this->principalProperties['{DAV:}displayname']; } else { return $this->getName(); } } /** * Returns a list of properties * * @param array $requestedProperties * @return array */ function getProperties($requestedProperties) { $newProperties = []; foreach ($requestedProperties as $propName) { if (isset($this->principalProperties[$propName])) { $newProperties[$propName] = $this->principalProperties[$propName]; } } return $newProperties; } /** * Updates properties on this node. * * This method received a PropPatch object, which contains all the * information about the update. * * To update specific properties, call the 'handle' method on this object. * Read the PropPatch documentation for more information. * * @param DAV\PropPatch $propPatch * @return void */ function propPatch(DAV\PropPatch $propPatch) { return $this->principalBackend->updatePrincipal( $this->principalProperties['uri'], $propPatch ); } /** * Returns the owner principal * * This must be a url to a principal, or null if there's no owner * * @return string|null */ function getOwner() { return $this->principalProperties['uri']; } }