Initial xentral_oss_20.3.c9ffacf
This commit is contained in:
@@ -0,0 +1,134 @@
|
||||
<?php
|
||||
|
||||
namespace Xentral\Modules\SuperSearch\SearchIndex\Provider;
|
||||
|
||||
use DateTimeInterface;
|
||||
use Xentral\Components\Database\SqlQuery\SelectQuery;
|
||||
use Xentral\Modules\SuperSearch\SearchIndex\Data\IndexData;
|
||||
use Xentral\Modules\SuperSearch\SearchIndex\Data\IndexIdentifier;
|
||||
use Xentral\Modules\SuperSearch\SearchIndex\Data\IndexItem;
|
||||
|
||||
final class AddressProvider extends AbstractBulkIndexDatabaseProvider
|
||||
{
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function getModuleName()
|
||||
{
|
||||
return 'adresse';
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function getIndexName()
|
||||
{
|
||||
return 'addresses';
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function getIndexTitle()
|
||||
{
|
||||
return 'Adressen';
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
protected function configureBaseQuery(SelectQuery $query)
|
||||
{
|
||||
$query
|
||||
->cols([
|
||||
'a.id',
|
||||
'a.projekt',
|
||||
'a.name',
|
||||
'a.abteilung',
|
||||
'a.unterabteilung',
|
||||
'a.ansprechpartner',
|
||||
'a.strasse',
|
||||
'a.ort',
|
||||
'a.plz',
|
||||
'a.adresszusatz',
|
||||
'a.telefon',
|
||||
'a.telefax',
|
||||
'a.mobil',
|
||||
'a.email',
|
||||
'a.ustid',
|
||||
'a.kundennummer',
|
||||
'a.lieferantennummer',
|
||||
'a.mitarbeiternummer',
|
||||
])
|
||||
->from('adresse AS a')
|
||||
->where('a.geloescht = ?', 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
protected function configureItemQuery(SelectQuery $baseQuery, $indexId)
|
||||
{
|
||||
$baseQuery->where('a.id = ?', (int)$indexId);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
protected function configureCountQuery(SelectQuery $baseQuery)
|
||||
{
|
||||
$baseQuery->cols(['COUNT(a.id)' => 'total_count']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
protected function configureSinceQuery(SelectQuery $baseQuery, DateTimeInterface $since)
|
||||
{
|
||||
$baseQuery->where('a.logdatei > ?', $since->format('Y-m-d H:m:i'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
protected function getRowFormatter()
|
||||
{
|
||||
return static function (array $row) {
|
||||
|
||||
$projectId = (int)$row['projekt'];
|
||||
$title = $row['name'];
|
||||
$link = sprintf('index.php?module=adresse&action=edit&id=%d', $row['id']);
|
||||
$data = new IndexData($title, $link, $projectId);
|
||||
if (!empty($row['kundennummer'])) {
|
||||
$data->addAdditionalInfo(sprintf('Kunde %s', $row['kundennummer']));
|
||||
}
|
||||
if (!empty($row['lieferantennummer'])) {
|
||||
$data->addAdditionalInfo(sprintf('Lieferant %s', $row['lieferantennummer']));
|
||||
}
|
||||
if (!empty($row['mitarbeiternummer'])) {
|
||||
$data->addAdditionalInfo(sprintf('Mitarbeiter %s', $row['mitarbeiternummer']));
|
||||
}
|
||||
|
||||
$data->addSearchWord($row['name']);
|
||||
$data->addSearchWord($row['abteilung']);
|
||||
$data->addSearchWord($row['unterabteilung']);
|
||||
$data->addSearchWord($row['ansprechpartner']);
|
||||
$data->addSearchWord($row['strasse']);
|
||||
$data->addSearchWord($row['ort']);
|
||||
$data->addSearchWord($row['plz']);
|
||||
$data->addSearchWord($row['adresszusatz']);
|
||||
$data->addSearchWord($row['telefon']);
|
||||
$data->addSearchWord($row['telefax']);
|
||||
$data->addSearchWord($row['mobil']);
|
||||
$data->addSearchWord($row['email']);
|
||||
$data->addSearchWord($row['ustid']);
|
||||
$data->addSearchWord($row['kundennummer']);
|
||||
$data->addSearchWord($row['lieferantennummer']);
|
||||
$data->addSearchWord($row['mitarbeiternummer']);
|
||||
|
||||
$identifier = new IndexIdentifier('addresses', (int)$row['id']);
|
||||
|
||||
return new IndexItem($identifier, $data);
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user