Blog status
Just to give you a heads up, I won’t be updating the blog in the short to mid term.
Unfortunately I don’t have enough time to dedicate to this blog anymore because of various engagements. So, instead of bringing it offline I will keep it here as is, especially since the SharePoint tutorials interestingly seem to attract more and more interest over time.
Thank you all for visiting my blog and enjoy the posts.
Improve Document Management in SharePoint with jQuery
- Increase of productivity by reducing the number of manual actions to perform by the user to customize teaching materials for a customer.
- Decreased risks linked to misfiled documents, like information loss or duplicates, thanks to the automatic mapping of customers’ metadata.
- Less training necessary for the end user, as the process is fully integrated into SharePoint Onlines’ user interface.
- Minimized maintenance: the plugin was designed to be easily installable, configurable and portable. Indeed, just a line in a content editor web part is necessary to enable it, and the plugin requires almost no configuration. Furthermore, it is entirely cross browser compatible and can’t possibly crash SharePoint Onlines’ servers as the code is executed on the client side.
Swiss SharePoint Club Meeting #16

Updated March 27, 2010: PowerPoint presentation added
I will be speaking Wednesday March 24 at the 16th Swiss SharePoint Club meeting at the St-Roch center, in Yverdon-les-Bains (the agenda of the meeting, which includes SharePoint technology and user experience sessions, is available here).
Mr Seydoux of the SharePoint Competence Center kindly invited me to this event, so I can explain the advantages of using SharePoint Online in a deskless company, based on my recent thesis experience.
Here are the main topics that I will cover:
- SharePoint Online as a Document Management System
- Interoperability with a custom made CRM
- Extending SharePoint’s functionality with jQuery
Sounds interesting to you? I hope to see you there then, but if you can’t make it, you might still want to grab my presentation (here: Swiss SharePoint Club – presentation). And hey, that doesn’t mean I’ve given up posting on my blog, as I will elaborate on the jQuery and SharePoint topic in my following posts!
Reading a SharePoint list with PHP (updated)
Updated (March 4, 2010): Added an example that uses the PHP5 built-in SOAP support instead of the NuSOAP library.
![]()
![]()
In my previous posts I showed a way to interact with SharePoint’s Lists Web Service through a Java application. Today I’d like to show how to do similar basic tricks with PHP. Once again, toying with SharePoint Web Services from a non-Microsoft language isn’t exactly a walk in the park.
I tried to do some experiments lately: I managed to read a SharePoint Online List from PHP, thanks to the nusoap library and a blog post written by Craige Thomas. As usual, a lot of trouble comes from the consumption of a WSDL that lies behind an NTLM/SSL server (in the case of SharePoint Online anyways). Once again, the easiest way to avoid such problems is to download and parse the WSDL file locally (Lists.asmx). Using basic authentication is the way to go when building a simple lists reading application in PHP, solving the NTLM issue implies too many intricacies in my opinion. If you manage to do it with a simple and straightforward solution, please let me know.
The code sample below will basically display the Lists Web Service request and response (see the screenshot above). Before running the code, you’ll have to set the username, password, and the local path to your Lists WSDL file. The logical next step, if you want to manipulate the results, would be to cast the response into a DOM document and parse it for the information you’re looking for.
<?php
//Requires the NuSOAP library
require_once('lib/nusoap.php');
$username = 'yourLogin';
$password = 'yourPassword';
$rowLimit = '150';
/* A string that contains either the display name or the GUID for the list.
* It is recommended that you use the GUID, which must be between curly
* braces ({}).
*/
$listName = "yourSharePointListName";
/* Local path to the Lists.asmx WSDL file (localhost). You must first download
* it manually from your SharePoint site (which should be available at
* yoursharepointsite.com/subsite/_vti_bin/Lists.asmx?WSDL)
*/
$wsdl = "http://localhost/phpsp/Lists.wsdl";
//Basic authentication. Using UTF-8 to allow special characters.
$client = new nusoap_client($wsdl, true);
$client->setCredentials($username,$password);
$client->soap_defencoding='UTF-8';
//XML for the request. Add extra fields as necessary
$xml ='
<GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<listName>'.$listName.'</listName>
<rowLimit>'.$rowLimit.'</rowLimit>
</GetListItems>
';
//Invoke the Web Service
$result = $client->call('GetListItems', $xml);
//Error check
if(isset($fault)) {
echo("<h2>Error</h2>". $fault);
}
//Extracting and preparing the Web Service response for display
$responseContent = utf8_decode(htmlspecialchars(substr($client->response,strpos($client->response, "<"),strlen($client->response)-1)));
//Displaying the request and the response, broken down by header and XML content
echo "<h2>Request</h2><pre>" . utf8_decode(htmlspecialchars($client->request, ENT_QUOTES)) . "</pre>";
echo "<h2>Response header</h2><pre>" . utf8_decode(htmlspecialchars(substr($client->response,0,strpos($client->response, "<")))) . "</pre>";
echo "<h2>Response content</h2><pre>".$responseContent."</pre>";
//Uncomment for debugging info:
//echo("<h2>Debug</h2><pre>" . htmlspecialchars($client->debug_str, ENT_QUOTES) . "</pre>");
unset($client);
?>





