From 4abe9c9d47f87973c28caae63c19fc9bddff3904 Mon Sep 17 00:00:00 2001 From: damienharper Date: Mon, 29 Jan 2018 21:02:20 +0100 Subject: [PATCH] Refactoring and doc --- src/DoctrineAuditBundle/AuditReader.php | 34 ++++++++--- .../Controller/AuditController.php | 8 +-- .../Resources/config/services.yaml | 6 ++ .../Twig/Extension/TwigExtension.php | 57 +++++++++++++++++++ 4 files changed, 94 insertions(+), 11 deletions(-) create mode 100644 src/DoctrineAuditBundle/Twig/Extension/TwigExtension.php diff --git a/src/DoctrineAuditBundle/AuditReader.php b/src/DoctrineAuditBundle/AuditReader.php index e24c6484..5d32e643 100644 --- a/src/DoctrineAuditBundle/AuditReader.php +++ b/src/DoctrineAuditBundle/AuditReader.php @@ -22,11 +22,19 @@ public function __construct(AuditConfiguration $configuration, EntityManagerInte $this->entityManager = $entityManager; } + /** + * @return AuditConfiguration + */ public function getConfiguration(): AuditConfiguration { return $this->configuration; } + /** + * Returns an array of audit table names indexed by entity FQN + * + * @return array + */ public function getEntities(): array { $entities = $this->entityManager->getConfiguration()->getMetadataDriverImpl()->getAllClassNames(); @@ -41,12 +49,21 @@ public function getEntities(): array return $audited; } - public function getAudits(string $entity, int $id = null, int $page = 1, int $pageSize = 50): array + /** + * Returns an array of audited entries/operations + * + * @param string|object $entity + * @param int|null $id + * @param int $page + * @param int $pageSize + * @return array + */ + public function getAudits($entity, int $id = null, int $page = 1, int $pageSize = 50): array { $connection = $this->entityManager->getConnection(); $auditTable = implode('', [ $this->configuration->getTablePrefix(), - $this->getEntityTableName($entity), + $this->getEntityTableName(is_string($entity) ? $entity : get_class($entity)), $this->configuration->getTableSuffix(), ]); @@ -73,12 +90,17 @@ public function getAudits(string $entity, int $id = null, int $page = 1, int $pa ; } - public function getAudit(string $entity, int $id) + /** + * @param string|object $entity + * @param int $id + * @return mixed + */ + public function getAudit($entity, int $id) { $connection = $this->entityManager->getConnection(); $auditTable = implode('', [ $this->configuration->getTablePrefix(), - $this->getEntityTableName($entity), + $this->getEntityTableName(is_string($entity) ? $entity : get_class($entity)), $this->configuration->getTableSuffix(), ]); @@ -101,9 +123,7 @@ public function getAudit(string $entity, int $id) /** * Returns the table name of $entity. * - * @param EntityManagerInterface $em - * @param $entity - * + * @param string|object $entity * @return string */ public function getEntityTableName($entity): string diff --git a/src/DoctrineAuditBundle/Controller/AuditController.php b/src/DoctrineAuditBundle/Controller/AuditController.php index f7a121fd..a18130e0 100644 --- a/src/DoctrineAuditBundle/Controller/AuditController.php +++ b/src/DoctrineAuditBundle/Controller/AuditController.php @@ -32,11 +32,11 @@ public function listAuditsAction() public function showEntityHistoryAction(string $entity, int $id = null, int $page = 1, int $pageSize = 50) { $reader = $this->container->get('dh_doctrine_audit.reader'); - $results = $reader->getAudits($entity, $id, $page, $pageSize); + $entries = $reader->getAudits($entity, $id, $page, $pageSize); return $this->render('DHDoctrineAuditBundle:Audit:entity_history.html.twig', [ 'entity' => $entity, - 'entries' => $results, + 'entries' => $entries, ]); } @@ -48,11 +48,11 @@ public function showEntityHistoryAction(string $entity, int $id = null, int $pag public function showAuditEntryAction(string $entity, int $id) { $reader = $this->container->get('dh_doctrine_audit.reader'); - $results = $reader->getAudit($entity, $id); + $data = $reader->getAudit($entity, $id); return $this->render('DHDoctrineAuditBundle:Audit:entity_audit_details.html.twig', [ 'entity' => $entity, - 'entry' => $results[0], + 'entry' => $data[0], ]); } } diff --git a/src/DoctrineAuditBundle/Resources/config/services.yaml b/src/DoctrineAuditBundle/Resources/config/services.yaml index 34453c9a..ccf20948 100644 --- a/src/DoctrineAuditBundle/Resources/config/services.yaml +++ b/src/DoctrineAuditBundle/Resources/config/services.yaml @@ -20,3 +20,9 @@ services: arguments: ["@dh_doctrine_audit.configuration"] tags: - { name: doctrine.event_subscriber, connection: default } + + dh_doctrine_audit.twig_extension: + class: DH\DoctrineAuditBundle\Twig\Extension\TwigExtension + arguments: ['@doctrine'] + tags: + - { name: twig.extension } \ No newline at end of file diff --git a/src/DoctrineAuditBundle/Twig/Extension/TwigExtension.php b/src/DoctrineAuditBundle/Twig/Extension/TwigExtension.php new file mode 100644 index 00000000..adbea1f1 --- /dev/null +++ b/src/DoctrineAuditBundle/Twig/Extension/TwigExtension.php @@ -0,0 +1,57 @@ +doctrine = $doctrine; + } + + public function findUser($id, $repository) + { + $em = $this->doctrine->getManager(); + $repo = $em->getRepository($repository); + + return $repo->find($id); + } + + public function getClass($entity) + { + return get_class($entity); + } + + public function getTablename($entity) + { + return $this + ->doctrine + ->getManager() + ->getClassMetadata(get_class($entity)) + ->table['name'] + ; + } + + /** + * {@inheritdoc} + */ + public function getName() + { + return 'twig_extensions'; + } +}