epochblue/philip — pull request #10 by jubianchi (2013-01-16 22:03:50+00:00)
Title: Add some features to Philip

I reworked my previous PR to have of clean set of commits.

I made a single PR again as these commit are quite related for most of them. The last commit, introducing unit tests, implies everything before is merged so I kept everything together.

If you think come commit might be useless, let me know and I'll remove them from the PR, fixing the tests at the same time.

This PR adds some new features to Philip:
* NickServ authentication (5cefa8011e1af0ec0f5b3b069ea036e5d35426e3) : this allows Philip to identify on networks using NickServ (using the ```/msg NickServ identify``` command)
* A basic flood control (ba5af9a) : this allows user to configure delays used by Philip when sending message. These settings will avoid Philip getting flood notice.
* An API for plugin to display help messages (ccf63d8) : by providing an standard interface which is called by Philip when invoking the ```!help```command.
* Add a gracefull stop (ad2c4bb)

Philip's core has also been a bit reworked to:
* Ease unit testing introduced in 9e79de2
* Allow plugins to access each others (8bdf186) : this is to access plugins exposing a service (storage, auth, ...)

There is a tiny BC break since 8bdf186e36be053a60a9676826abcbc32cf83eae:

```
loadPlugin('\\Name\\Of\\The\\Plugin\\Class');

// AFTER

$bot = new \Philip\Philip();
$bot->loadPlugin(new \Name\Of\The\Plugin\Class($bot));
```

This allows code to be simpler and more robust as typehinting is done directly with PHP. It also easy testing ;)