GithubHelp home page GithubHelp logo

mwmgithub / phpspo Goto Github PK

View Code? Open in Web Editor NEW

This project forked from vgrem/phpspo

1.0 1.0 1.0 5.83 MB

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: MIT License

PHP 100.00%

phpspo's Introduction

Fork info

This repository is a fork from the original repository vgrem/phpSPO. The only difference that we added is the ability to specify custom additional headers in the method executeRequest. This allowed us to use all the accepted optional headers from sharepoint without the need to refactor a lot of propertary code.

We highly suggest to use the original repository available at the link above, since this repository will not ba mantained constantly and will not be updated if not necessary.

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

You can use Composer or simply Download the Release

Composer

The preferred method is via composer. Follow the installation instructions if you do not already have composer installed.

Once composer is installed, execute the following command in your project root to install this library:

composer require vgrem/php-spo:dev-master -n --no-progress

Finally, be sure to include the autoloader:

require_once '/path/to/your-project/vendor/autoload.php';

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 based 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","[email protected]"))
);
$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","[email protected]"))
);
$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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.