2011-04-12 04:27:47 +02:00
|
|
|
<?php
|
|
|
|
|
2013-03-27 18:39:28 +01:00
|
|
|
namespace FOS\ElasticaBundle;
|
2011-04-12 04:27:47 +02:00
|
|
|
|
2013-03-27 18:39:28 +01:00
|
|
|
use FOS\ElasticaBundle\Provider\ProviderInterface;
|
2011-04-15 21:19:27 +02:00
|
|
|
use Closure;
|
|
|
|
|
2011-04-12 04:27:47 +02:00
|
|
|
class Populator
|
|
|
|
{
|
|
|
|
protected $providers;
|
|
|
|
|
|
|
|
public function __construct(array $providers)
|
|
|
|
{
|
2011-07-14 20:49:18 +02:00
|
|
|
foreach ($providers as $name => $provider) {
|
|
|
|
$this->addProvider($name, $provider);
|
|
|
|
}
|
2011-04-12 04:27:47 +02:00
|
|
|
}
|
|
|
|
|
2011-04-20 22:53:59 +02:00
|
|
|
public function addProvider($name, ProviderInterface $provider)
|
|
|
|
{
|
|
|
|
$this->providers[$name] = $provider;
|
|
|
|
}
|
|
|
|
|
2011-04-15 21:19:27 +02:00
|
|
|
public function populate(Closure $loggerClosure)
|
2011-04-12 04:27:47 +02:00
|
|
|
{
|
2011-04-15 21:19:27 +02:00
|
|
|
foreach ($this->providers as $name => $provider) {
|
|
|
|
$provider->populate(function($text) use ($name, $loggerClosure) {
|
|
|
|
$loggerClosure(sprintf('Indexing %s, %s', $name, $text));
|
|
|
|
});
|
2011-04-12 04:27:47 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|