1. Go to this page and download the library: Download hexis/audit-bundle library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use Hexis\AuditBundle\Storage\AuditWriter;
use Hexis\AuditBundle\Domain\AuditEvent;
use Hexis\AuditBundle\Domain\EventType;
use Hexis\AuditBundle\Domain\Actor;
use Hexis\AuditBundle\Domain\Target;
use Hexis\AuditBundle\Domain\Snapshot;
use Hexis\AuditBundle\Domain\ContextCollector;
final readonly class PayrollService
{
public function __construct(
private AuditWriter $audit,
private ContextCollector $context,
) {}
public function approve(Payroll $payroll): void
{
// ... business logic ...
$this->audit->write(new AuditEvent(
type: EventType::CUSTOM,
actor: $this->context->collectActor(),
target: Target::entity(Payroll::class, $payroll->getId()),
snapshot: Snapshot::none(),
context: $this->context->collectContext(),
action: 'payroll.approve',
));
}
}
use Hexis\AuditBundle\Attribute\Auditable;
#[ORM\Entity]
#[Auditable(mode: 'changed_fields', ignoreFields: ['updatedAt'])]
class Employee
{
// ...
}
use Elastic\Elasticsearch\ClientBuilder;
use Hexis\AuditBundle\Storage\Elasticsearch\ElasticsearchClient;
final readonly class ElasticClientAdapter implements ElasticsearchClient
{
public function __construct(private \Elastic\Elasticsearch\Client $client) {}
public function index(string $index, string $id, array $document, bool $refresh = false): void
{
$this->client->index([
'index' => $index,
'id' => $id,
'body' => $document,
'refresh' => $refresh ? 'true' : 'false',
]);
}
public function bulk(iterable $operations, bool $refresh = false): void
{
$body = [];
foreach ($operations as [$idx, $id, $doc]) {
$body[] = ['index' => ['_index' => $idx, '_id' => $id]];
$body[] = $doc;
}
$this->client->bulk(['body' => $body, 'refresh' => $refresh ? 'true' : 'false']);
}
public function putIndexTemplate(string $name, array $template): void
{
$this->client->indices()->putIndexTemplate(['name' => $name, 'body' => $template]);
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.