vendor/pimcore/portal-engine/src/Service/StatisticsTracker/Elasticsearch/AssetUpdateTracker.php line 98

Open in your IDE?
  1. <?php
  2. /**
  3.  * Pimcore
  4.  *
  5.  * This source file is available under following license:
  6.  * - Pimcore Commercial License (PCL)
  7.  *
  8.  *  @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  9.  *  @license    http://www.pimcore.org/license     PCL
  10.  */
  11. namespace Pimcore\Bundle\PortalEngineBundle\Service\StatisticsTracker\Elasticsearch;
  12. use Pimcore\Bundle\PortalEngineBundle\Enum\ElasticSearchFields;
  13. use Pimcore\Bundle\PortalEngineBundle\Model\DataObject\PortalUserInterface;
  14. use Pimcore\Bundle\PortalEngineBundle\Service\Security\SecurityService;
  15. use Pimcore\Bundle\StatisticsExplorerBundle\StatisticsTracker\Elasticsearch\AbstractElasticsearchTracker;
  16. use Pimcore\Model\User;
  17. /**
  18.  * Class AssetUpdateTracker
  19.  *
  20.  * @package Pimcore\Bundle\PortalEngineBundle\Service\StatisticsTracker\Elasticsearch
  21.  */
  22. class AssetUpdateTracker extends AbstractElasticsearchTracker
  23. {
  24.     /**
  25.      * @var string
  26.      */
  27.     protected $indexName;
  28.     /** @var SecurityService */
  29.     protected $securityService;
  30.     /**
  31.      * @param SecurityService $securityService
  32.      * @required
  33.      */
  34.     public function setSecurityService(SecurityService $securityService)
  35.     {
  36.         $this->securityService $securityService;
  37.     }
  38.     /**
  39.      * @return array
  40.      */
  41.     protected function buildMappingArray(): array
  42.     {
  43.         return [
  44.             'timestamp' => ['type' => 'date'],
  45.             'pimcoreUserId' => ['type' => 'long'],
  46.             'userId' => ['type' => 'long'],
  47.             'path' => ['type' => 'keyword'],
  48.             ElasticSearchFields::SYSTEM_FIELDS => [
  49.                 'type' => 'object',
  50.                 'properties' => [
  51.                     ElasticSearchFields::SYSTEM_FIELDS_FULL_PATH => [
  52.                         'type' => 'text',
  53.                         'analyzer' => 'portal_engine_path_analyzer',
  54.                     ],
  55.                     ElasticSearchFields::SYSTEM_FIELDS_ID => [
  56.                         'type' => 'long',
  57.                     ],
  58.                     ElasticSearchFields::SYSTEM_FIELDS_KEY => [
  59.                         'type' => 'keyword',
  60.                     ],
  61.                 ],
  62.             ]
  63.         ];
  64.     }
  65.     /**
  66.      * @return string
  67.      */
  68.     protected function getIndexName(): string
  69.     {
  70.         return $this->indexName;
  71.     }
  72.     /**
  73.      * @param string $indexName
  74.      */
  75.     public function setIndexName(string $indexName): void
  76.     {
  77.         $this->indexName $indexName;
  78.     }
  79.     /**
  80.      * @param array $parameters
  81.      *
  82.      * @throws \Exception
  83.      */
  84.     public function trackEvent(array $parameters): void
  85.     {
  86.         /** @var User|null $pimcoreUser */
  87.         $pimcoreUser $this->securityService->getPimcoreUser();
  88.         /** @var PortalUserInterface|null $portalUser */
  89.         $portalUser $this->securityService->getPortalUser();
  90.         if ($pimcoreUser || $portalUser) {
  91.             /** @var array $values */
  92.             $values = [
  93.                 'timestamp' => (new \DateTime())->format(\DateTime::ISO8601),
  94.                 'pimcoreUserId' => $pimcoreUser $pimcoreUser->getId() : null,
  95.                 'userId' => $portalUser $portalUser->getId() : null,
  96.                 'path' => $parameters['asset']->getRealFullPath(),
  97.                 ElasticSearchFields::SYSTEM_FIELDS => [
  98.                     ElasticSearchFields::SYSTEM_FIELDS_FULL_PATH => $parameters['asset']->getRealFullPath(),
  99.                     ElasticSearchFields::SYSTEM_FIELDS_ID => $parameters['asset']->getId(),
  100.                     ElasticSearchFields::SYSTEM_FIELDS_KEY => $parameters['asset']->getKey(),
  101.                 ]
  102.             ];
  103.             $this->doTrackEvent($values);
  104.         }
  105.     }
  106.     /**
  107.      * @return array
  108.      */
  109.     protected function createIndexSettings()
  110.     {
  111.         return [
  112.             'analysis' => [
  113.                 'tokenizer' => [
  114.                     'portal_engine_path_tokenizer' => [
  115.                         'type' => 'path_hierarchy',
  116.                     ],
  117.                 ],
  118.                 'analyzer' => [
  119.                     'portal_engine_path_analyzer' => [
  120.                         'tokenizer' => 'portal_engine_path_tokenizer',
  121.                     ],
  122.                 ],
  123.             ],
  124.         ];
  125.     }
  126. }