Skip to content
This repository has been archived by the owner on Sep 15, 2022. It is now read-only.
/ phpSPO Public archive
forked from vgrem/phpSPO

The library provides a Office365 REST client for PHP applications. It allows to performs CRUD operations againts Office 365 resources via an REST/OData based API

License

Notifications You must be signed in to change notification settings

devigner/phpSPO

 
 

Repository files navigation

About

The library provides a Office 365 REST client for PHP applications. It allows to performs CRUD operations against Office 365 resources via an REST/OData based API.

The list of supported Office 365 REST APIs:

Status

Build Status

Installation

PHP version

API

  • PHP:cURL underlying library is used to perform HTTP requests
  • ClientContext - represents a SharePoint client context to performs CRUD operations against SharePoint resources via SharePoint Online REST API
  • OutlookClient - represents a client context to performs CRUD operations against Office resources such as Outlook resources
  • ClientRequest - represents a client request (more low level compared to ClientContext) to to performs CRUD operations against SharePoint resources via SharePoint Online REST API
  • AuthenticationContext - represents an object that provides credentials to access SharePoint Online resources.
  • NetworkCredentialContext - provides credentials for password-based authentication schemes such as Basic.

There are two approaches available to perform REST queries:

  • via ClientRequest class where you need to construct REST queries by specifying endpoint url, headers if required and payload (low level approach), see renameFolder.php for a more details
  • via ClientContext class where you target client object resources such as Web, ListItem and etc., see list_examples.php for a more details

Usage

Using SharePoint REST API

The following examples demonstrates how to perform basic CRUD operations against SharePoint list item resources.

Example 1. How to read SharePoint list items


$authCtx = new AuthenticationContext($Url);
$authCtx->acquireTokenForUser($UserName,$Password); //authenticate

$ctx = new ClientContext($Url,$authCtx); //initialize REST client    
$web = $ctx->getWeb();
$list = $web->getLists()->getByTitle($listTitle); //init List resource
$items = $list->getItems();  //prepare a query to retrieve from the 
$ctx->load($items);  //save a query to retrieve list items from the server 
$ctx->executeQuery(); //submit query to SharePoint Online REST service
foreach( $items->getData() as $item ) {
    print "Task: '{$item->Title}'\r\n";
}

Example 2. How to create SharePoint list item:

$listTitle = 'Tasks';
$list = $ctx->getWeb()->getLists()->getByTitle($listTitle);
$itemProperties = array('Title' => 'Order Approval', 'Body' => 'Order approval task','__metadata' => array('type' => 'SP.Data.TasksListItem'));
$item = $list->addItem($itemProperties);
$ctx->executeQuery();
print "Task '{$item->Title}' has been created.\r\n";

Example 3. How to delete a SharePoint list item:

$listTitle = 'Tasks';
$itemToDeleteId = 1;
$list = $ctx->getWeb()->getLists()->getByTitle($listTitle);
$listItem = $list->getItemById($itemToDeleteId);
$listItem->deleteObject();
$ctx->executeQuery();

Example 4. How to update SharePoint list item:

$listTitle = 'Tasks';
$itemToUpdateId = 1;
$list = $ctx->getWeb()->getLists()->getByTitle($listTitle);
$listItem = $list->getItemById($itemId);
$itemProperties = array('PercentComplete' => 1);
$listItem->update($itemProperties);
$ctx->executeQuery();

Using Outlook REST API

The following examples demonstrates how to read, create and send messages via Outlook Mail API.

Example 1. How to create a draft message


$authCtx = new NetworkCredentialContext($UserName,$Password); //using Basic Auth scheme (for v1 API only)
$ctx = new OutlookClient($authCtx); //initialize OutlookServices client
$message = $ctx->getMe()->getMessages()->createMessage(); //create a Message resource
//set Message properties
$message->Subject = "--subject--";
$message->Body = new ItemBody(BodyType::Text,"--Content goes here--");
$message->ToRecipients = array(
     new Recipient(new EmailAddress("Jon Doe","jdoe@contoso.onmicrosoft.com"))
);
$ctx->executeQuery();

Example 2. How to get messages


$authCtx = new NetworkCredentialContext($UserName,$Password); //using Basic Auth scheme (for v1 API only)
$ctx = new OutlookClient($authCtx); //initialize OutlookServices client
$messages = $ctx->getMe()->getMessages();
$ctx->load($messages);
$ctx->executeQuery();
//print messages subjects
foreach ($messages->getData() as $curMessage){
   print $curMessage->Subject;
}

Example 3. How to send a message


$authCtx = new NetworkCredentialContext($UserName,$Password); //using Basic Auth scheme (for v1 API only)
$ctx = new OutlookClient($authCtx); //initialize OutlookServices client
$message = $ctx->getMe()->getMessages()->createMessage(); //create a Message resource
//set Message properties
$message->Subject = "--subject--";
$message->Body = new ItemBody(BodyType::Text,"--Content goes here--");
$message->ToRecipients = array(
     new Recipient(new EmailAddress("Jon Doe","jdoe@contoso.onmicrosoft.com"))
);
$ctx->getMe()->sendEmail($message,false); //send a Message
$ctx->executeQuery();

Changelog

1.0.0 - May 23st, 2014

  • Initial release.

2.0.0 - February 14, 2016

  • AuthenticationContext and ClientContext classes have been introduced.

About

The library provides a Office365 REST client for PHP applications. It allows to performs CRUD operations againts Office 365 resources via an REST/OData based API

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 100.0%