Skip to content

Commit cdecb53

Browse files
committed
Fix addresses perf issue with ClientObject.getProperty method #264, SharePoint API example: read user field values #268
1 parent 8de16aa commit cdecb53

4 files changed

Lines changed: 42 additions & 7 deletions

File tree

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
require_once '../../vendor/autoload.php';
3+
$settings = include('../../../tests/Settings.php');
4+
5+
use Office365\Runtime\Auth\ClientCredential;
6+
use Office365\SharePoint\ClientContext;
7+
use Office365\SharePoint\MoveOperations;
8+
9+
$credentials = new ClientCredential($settings['ClientId'], $settings['ClientSecret']);
10+
$siteUrl = $settings['TeamSiteUrl'];
11+
$client = (new ClientContext($siteUrl))->withCredentials($credentials);
12+
13+
$sourceFolder = $client->getWeb()->getFolderByServerRelativeUrl("Shared Documents/2020");
14+
//$targetFolder = $sourceFolder->moveTo("Shared Documents/2021", MoveOperations::Overwrite)->executeQuery();
15+
$targetFolder = $sourceFolder->copyTo("Shared Documents/2021", true)->executeQuery();
16+
print($targetFolder->getServerRelativeUrl());
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
require_once './../../vendor/autoload.php';
4+
$settings = include('./../../../tests/Settings.php');
5+
6+
7+
use Office365\Runtime\Auth\ClientCredential;
8+
use Office365\SharePoint\ClientContext;
9+
use Office365\SharePoint\ListItem;
10+
11+
$credentials = new ClientCredential($settings['ClientId'], $settings['ClientSecret']);
12+
$siteUrl = $settings['TeamSiteUrl'];
13+
$ctx = (new ClientContext($siteUrl))->withCredentials($credentials);
14+
15+
$list = $ctx->getWeb()->getLists()->getByTitle("Documents");
16+
$items = $list->getItems()->select(["Author/Name", "Author/Title","FileRef"])->expand(["Author"])->get()->top(10)->executeQuery();
17+
18+
/** @var ListItem $item */
19+
foreach ($items as $item){
20+
print("Url:" . $item->getProperty('FileRef') . " Author:" . $item->getProperty('Author')["Name"] . PHP_EOL);
21+
}

src/Runtime/Actions/ReadEntityQuery.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public function __construct(ClientObject $entityToRead, $includeProperties = arr
1818
if (is_null($includeProperties))
1919
$includeProperties = array();
2020
$expandProperties = array_filter($includeProperties, function ($name) use ($entityToRead) {
21-
$propType = $entityToRead->getProperty($name);
21+
$propType = $entityToRead->getProperty($name, null, true);
2222
return $propType instanceof ClientObject;
2323
});
2424
if (!empty($includeProperties))

src/Runtime/ClientObject.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -262,15 +262,13 @@ public function getServerObjectIsNull(){
262262
* @param mixed|null $defaultValue
263263
* @return mixed|null
264264
*/
265-
public function getProperty($name,$defaultValue=null)
265+
public function getProperty($name,$defaultValue=null,$resolve=false)
266266
{
267-
$calledFnName = debug_backtrace()[1]['function'];
268-
269267
if($this->isPropertyAvailable($name))
270268
return $this->properties[$name];
271-
else if(is_null($defaultValue)) {
269+
else if(is_null($defaultValue) && $resolve) {
272270
$getter = "get$name";
273-
if(method_exists($this,$getter) && strcasecmp($getter, $calledFnName) != 0) {
271+
if(method_exists($this,$getter)) {
274272
$defaultValue = $this->$getter();
275273
}
276274
}
@@ -295,7 +293,7 @@ public function setProperty($name, $value, $persistChanges = true)
295293
}
296294

297295
if(!is_null($value)) {
298-
$childProperty = $this->getProperty($name);
296+
$childProperty = $this->getProperty($name,null,true);
299297
if($childProperty instanceof ClientObject || $childProperty instanceof ClientValue) {
300298
foreach ($value as $k=>$v){
301299
$childProperty->setProperty($k,$v,False);

0 commit comments

Comments
 (0)