Spaces:
No application file
No application file
| namespace Mautic\CoreBundle\Model; | |
| use Mautic\CoreBundle\Entity\AuditLog; | |
| use Mautic\UserBundle\Entity\User; | |
| /** | |
| * @extends AbstractCommonModel<AuditLog> | |
| */ | |
| class AuditLogModel extends AbstractCommonModel | |
| { | |
| /** | |
| * @return \Mautic\CoreBundle\Entity\AuditLogRepository | |
| */ | |
| public function getRepository() | |
| { | |
| return $this->em->getRepository(AuditLog::class); | |
| } | |
| /** | |
| * Writes an entry to the audit log. | |
| * | |
| * @param array $args [bundle, object, objectId, action, details, ipAddress] | |
| */ | |
| public function writeToLog(array $args): void | |
| { | |
| $bundle = $args['bundle'] ?? ''; | |
| $object = $args['object'] ?? ''; | |
| $objectId = $args['objectId'] ?? ''; | |
| $action = $args['action'] ?? ''; | |
| $details = $args['details'] ?? ''; | |
| $ipAddress = isset($args['ipAddress']) ? ($this->coreParametersHelper->get('anonymize_ip') ? '*.*.*.*' : $args['ipAddress']) : ''; | |
| $log = new AuditLog(); | |
| $log->setBundle($bundle); | |
| $log->setObject($object); | |
| $log->setObjectId($objectId); | |
| $log->setAction($action); | |
| $log->setDetails($details); | |
| $log->setIpAddress($ipAddress); | |
| $log->setDateAdded(new \DateTime()); | |
| $user = (!defined('MAUTIC_IGNORE_AUDITLOG_USER') && !defined('MAUTIC_AUDITLOG_USER')) ? $this->userHelper->getUser() : null; | |
| $userId = 0; | |
| $userName = defined('MAUTIC_AUDITLOG_USER') ? MAUTIC_AUDITLOG_USER : $this->translator->trans('mautic.core.system'); | |
| if ($user instanceof User && $user->getId()) { | |
| $userId = $user->getId(); | |
| $userName = $user->getName(); | |
| } | |
| $log->setUserId($userId); | |
| $log->setUserName($userName); | |
| $this->em->getRepository(AuditLog::class)->saveEntity($log); | |
| $this->em->detach($log); | |
| } | |
| /** | |
| * Get the audit log for specific object. | |
| * | |
| * @param string|null $object | |
| * @param string|int $id | |
| * @param \DateTimeInterface|null $afterDate | |
| * @param int $limit | |
| * @param string|null $bundle | |
| * | |
| * @return mixed | |
| */ | |
| public function getLogForObject($object, $id, $afterDate = null, $limit = 10, $bundle = null) | |
| { | |
| return $this->getRepository()->getLogForObject($object, $id, $limit, $afterDate, $bundle); | |
| } | |
| } | |