2016-04-14 115 views
3

PHP ve GetListItemChangesSinceToken kullanarak Sharepoint'teki belge listemdeki en son değişiklikleri almaya çalışıyorum. PHP için herhangi bir resmi Sharepoint SDK'sı olmadığı için SDK olarak phpSPO kullanıyorum.Sharepoint GetListItemChangesSinceToken CURL isteği PHP'de

Şimdiye kadar bu var:

döndürür
$payload = array(
     'query' => array(
      '__metadata' => array('type' => 'SP.ChangeLogItemQuery'), 
      'ViewName' => '', 
      'QueryOptions'=> '<QueryOptions><Folder>Shared Documents</Folder></QueryOptions>' 
     ) 
    ); 

    $headers = array(); 
    $headers["X-HTTP-Method"] = "MERGE"; 

    $changes = $this->request->executeQueryDirect($this->settings->URL . "/_api/web/Lists/GetByTitle('Documents')/GetListItemChangesSinceToken", $headers, $payload); 

: {"error":{"code":"-2147467261, System.ArgumentNullException","message":{"lang":"en-US","value":"Value cannot be null.\r\nParameter name: query"}}}

Ben X-HTTP-Method değişen ve JSON nesneleri belgelenen JSON/XML isteği (XML sığdırmak için diziyi değiştirmeden denedim

cevap

2

Birinci yaklaşımda) Microsoft hadi

$listTitle = "Documents"; 
$payload = array(
    'query' => array(
     '__metadata' => array('type' => 'SP.ChangeLogItemQuery'), 
     'ViewName' => '', 
     'QueryOptions'=> '<QueryOptions><Folder>Shared Documents</Folder></QueryOptions>' 
    ) 
); 

$request = new ClientRequest($webUrl,$authCtx); 
$options = array(
    'url' => $webUrl . "/_api/web/Lists/GetByTitle('$listTitle')/GetListItemChangesSinceToken", 
    'data' => json_encode($payload), 
    'method' => 'POST' 
); 
$response = $request->executeQueryDirect($options); 

//process results 
$xml = simplexml_load_string($response); 
$xml->registerXPathNamespace('z', '#RowsetSchema'); 
$rows = $xml->xpath("//z:row"); 
foreach($rows as $row) { 
    print (string)$row->attributes()["ows_FileLeafRef"] . "\n"; 
} 

İkinci yaklaşım SharePoint REST Client SDK for PHP şimdi GetListItemChangesSinceToken method destekler

beri önceki örnekte böyle çağrılan olabilir: 10 Aşağıdaki örnek GetListItemChangesSinceToken method yararlanmak için nasıl kullanılacağını gösterir

$list = $ctx->getWeb()->getLists()->getByTitle($listTitle); 
$query = new ChangeLogItemQuery(); 
//to request all the items set ChangeToken property to null 
$query->ChangeToken = "1;3;e49a3225-13f6-47d4-a146-30d9caa05362;635969955256400000;10637059"; 
$items = $list->getListItemChangesSinceToken($query); 
$ctx->executeQuery(); 
foreach ($items->getData() as $item) { 
    print "[List Item] $item->Title\r\n"; 
} 

fazla örnek olabilir phpSPO deposu altında here bulunabilir.

+1

Teşekkür ederim çok ** çok ** Vadim –