This is a regional PHP conference based in Manchester, UK, and I’ve been involved with it since it began (I’m surprised to find this is our fourth edition, it still feels like a shiny new adventure!). This year the dates are 8th and 9th of October and with an added tutorial day on the Friday, it is bigger (and of course better) than ever. In case you missed the announcements, here are the main things you need to know:
PHP|Tek and a Hackathon
Marking up Tables in LaTeX
I find the default formatting for table output in LaTeX can look a bit … squashed, so I always precede my tables with this:
\renewcommand{\arraystretch}{1.5}
To define a table, you use the tabular keyword and define your columns using l, r or c depending whether you want each one right, left or centre justified:
\begin{tabular}{l | l}
PHP OAuth Provider: Authenticate User
This phase is probably the most familiar to us as developers, as it’s simply a login form. The consumer will send the user to us at the URL we provided in the request token, and the user will have the request token key as a parameter. The access control on this page will look the same as on the rest of the website; if the user has a session already then the page is displayed, otherwise they must be logged in to see it.
Combining PDF Files With Pdftk
For years I’ve used PDF Shuffler for this sort of thing but I wondered if there was an easy way of doing this from the command line this time, since I literally wanted to glue together a bunch of files one after another. Predictably, there is and it’s called pdftk – the PDF Toolkit. Continue reading
PHP OAuth Provider: Request Tokens
The consumer requests a request token (see my earlier post about consuming OAuth), and as a provider, we need to handle that request. In my example, I chose to pass the variables as GET parameters, but you could adapt this to handle POST variables or information contained in HTTP headers.
OAuth Provider Code
We have the same block of code called on every request where we’re negotiating OAuth, and it looks like this:
$this->provider = new OAuthProvider();
// set names of functions to be called by the extension
$this->provider->consumerHandler(array($this,'lookupConsumer'));
$this->provider->timestampNonceHandler(
array($this,'timestampNonceChecker'));
$this->provider->tokenHandler(array($this,'tokenHandler'));
// no access token needed for this URL only
$this->provider->setRequestTokenPath('/v2/oauth/request_token');
// now check the request validity
$this->provider->checkOAuthRequest();
A Prototype API for Joind.In
Things you need to know:
- The service is an HTTP Web Service. Meaning it’s RESTful apart from when it isn’t
- The endpoint is here: http://api.joind.in
- You can fetch data about events and talks (read-only) at this point
- Formats available are HTML or JSON. The service will guess from your accept header but you can override it with
?format=jsonor?format=html - If you need more columns than you get by default, you can add
?verbose=yesto your request - Pagination is available, with parameters
resultsperpage(default 20, set to zero for no limits) andstart(default zero) - The service supports OAuth1.0a, which isn’t useful at this point as we’re read-only but it will come into play as we add functionality
Examples
Events list: http://api.joind.in/v2/events
Information about DPC11: http://api.joind.in/v2/events/603
Talks at DPC11: http://api.joind.in/v2/events/603/talks
Your Thoughts
Comments are welcome on this post. Bugs and feature requests should go to http://joindin.jira.com, read more about Joind.in and its community at http://joind.in/about
Idiot-Proof Deployment with Phing
Once upon a time, a long time ago, I went onto a conference stage for the very first time and said that I thought I might be the world’s ditsiest PHP developer. I actually still think that is pretty true, and if you work with me then you will know that I mostly break and fix things in approximately equal measure. With this in mind, when I launched my own product recently (BiteStats, a thing to automatically email you a summary of your analytics stats every month), I knew that I would need a really robust way of deploying code. I’ve been doing a few different things for a few years, and I’ve often implemented these tools with or for other organisations, but I don’t have much code in production in my own right, weirdly. I decided Phing was the way to go, got it installed, and worked out what to do next.
PHP OAuth Provider: Initial Requirements
OAuth Pages and Endpoints
OAuth has a little more baggage with it than just passing a username and password to an API. As well as your standard service endpoint you will need:
Continue reading
Book Review: Confessions of a Public Speaker
My first observation was that although I thought this would be a pretty serious book, I was laughing! Not just smiling, but actually giggling on a fairly small plane of people doing the short hop over to Amsterdam. I saw a few people trying to read the cover to figure out what this great comedic tome would be :)
