Commit 535f9075 authored by Bas de Nooijer's avatar Bas de Nooijer

Updated plugin example for new eventdispatcher

parent 43dae657
<?php
require(__DIR__.'/init.php');
use Solarium\Core\Event\Events;
// this very simple plugin shows a timing for each event and display some request debug info
class basicDebug extends Solarium\Core\Plugin\Plugin
......@@ -9,16 +9,27 @@ class basicDebug extends Solarium\Core\Plugin\Plugin
protected $start;
protected $output = array();
public function initPlugin($client, $options)
protected function initPluginType()
{
$this->start = microtime(true);
$dispatcher = $this->client->getEventDispatcher();
$dispatcher->addListener(Events::PRE_CREATE_REQUEST, array($this, 'preCreateRequest'));
$dispatcher->addListener(Events::POST_CREATE_REQUEST, array($this, 'postCreateRequest'));
$dispatcher->addListener(Events::PRE_EXECUTE_REQUEST, array($this, 'preExecuteRequest'));
$dispatcher->addListener(Events::POST_EXECUTE_REQUEST, array($this, 'postExecuteRequest'));
$dispatcher->addListener(Events::PRE_CREATE_RESULT, array($this, 'preCreateResult'));
$dispatcher->addListener(Events::POST_CREATE_RESULT, array($this, 'postCreateResult'));
$dispatcher->addListener(Events::PRE_EXECUTE, array($this, 'preExecute'));
$dispatcher->addListener(Events::POST_EXECUTE, array($this, 'postExecute'));
$dispatcher->addListener(Events::PRE_CREATE_QUERY, array($this, 'preCreateQuery'));
$dispatcher->addListener(Events::POST_CREATE_QUERY, array($this, 'postCreateQuery'));
}
protected function timer($event)
{
$time = round(microtime(true) - $this->start, 5);
$this->output[] = '['.$time.'] ' . $event;
}
public function display()
......@@ -26,59 +37,59 @@ class basicDebug extends Solarium\Core\Plugin\Plugin
echo implode('<br/>', $this->output);
}
public function preCreateRequest($query)
public function preCreateRequest()
{
$this->timer('preCreateRequest');
}
public function postCreateRequest($query, $request)
public function postCreateRequest()
{
$this->timer('postCreateRequest');
}
// This method uses the aviable param(s) (see plugin abstract class)
// You can access or modify data this way
public function preExecuteRequest($request)
public function preExecuteRequest($event)
{
$this->timer('preExecuteRequest');
// this dummy param will be visible in the debug output but will also be used in the actual Solr request
$request->addParam('dummyparam', 'dummyvalue');
$event->getRequest()->addParam('dummyparam', 'dummyvalue');
$this->output[] = 'Request URI: ' . $request->getUri();
$this->output[] = 'Request URI: ' . $event->getRequest()->getUri();
}
public function postExecuteRequest($request, $response)
public function postExecuteRequest()
{
$this->timer('postExecuteRequest');
}
public function preCreateResult($query, $response)
public function preCreateResult()
{
$this->timer('preCreateResult');
}
public function postCreateResult($query, $response, $result)
public function postCreateResult()
{
$this->timer('postCreateResult');
}
public function preExecute($query)
public function preExecute()
{
$this->timer('preExecute');
}
public function postExecute($query, $result)
public function postExecute()
{
$this->timer('postExecute');
}
public function preCreateQuery($type, $options)
public function preCreateQuery()
{
$this->timer('preCreateResult');
}
public function postCreateQuery($type, $options, $query)
public function postCreateQuery()
{
$this->timer('postCreateResult');
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment