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);
?>
SharePoint Web Services: 3 things to consider before coding in Java
Before starting the adventure of coding an application in Java for SharePoint Online, make sure you’re well prepared for the following points:
- Documentation is rare. No code examples exist on MSDN other than for C# or VB.NET (and some SOAP signatures). Moreover, translating MSDN’s C# examples into Java is tough, as they use language specific imports. The best info I could find was a webcast with a java coding demo for SharePoint (in French: MSDN Webcast by Stève Sfartz). The SharePoint Online Developer Guide and the MSDN documentation will be your best friends though.
- Microsoft’s WSDLs won’t generate easy to use POJOs. This is essentially because SharePoint Online’s SOAP Web Services are resource-orientated. This means you can send big and complex requests to SharePoint’s Web Services, but also that you’ll have to manipulate your objects like XML documents rather than objects. And the “XAML” structure used in the requests/responses isn’t always fully documented with examples on MSDN either.
- Consuming SharePoint Online’s WSDLs in your favorite Java IDE won’t necessarily work. I had to use the Axis 1.4 from the command line to generate my Java classes for Netbeans (the generated classes couldn’t be compiled when imported from Netbeans wizard). Your mileage may vary…
Therefore, if you have the possibility to use C# instead of Java, don’t think twice: use C#. You’ll save a lot of development and maintenance time. I wouldn’t recommend developing an application in Java if its size goes beyond the one of a small application or proof-of-concept.
Welcome to my new blog
Dear cyber visitor,
Thanks for stopping by! Time has come for me to contribute some of my IT projects and experiments to the almighty web!
Firstly, my posts will focus on the interaction possibilities between Microsoft SharePoint Online and non-Microsoft languages like Java, PHP, and JavaScript. I think this topic is pretty interesting because, as of today use cases, documentation and examples remain pretty rare. We’ll see after that!
The content will be split in multiple posts. I’ll upload relevant code and resources as well (yay!).
Here’s what I plan to post (the topics might change):
Using external business data with SharePoint Online
- Part 1: Scenario and conception of a solution
- Part 2: Java and SharePoint Online’s Web Services
- Part 3: Bridging PHP and Java
- Part 4: Testing and conclusion
Extending SharePoint Online’s functionality with jQuery
- Part 1: Why a JavaScript plugin?
- Part 2: Coding the plugin, its loading scheme and its UI
- Part 3: Copy operations
Thank you for visiting my blog. I’ll be happy hear your feedback on those posts.
David Dudok de Wit








