dependencies[] = 'container'; $this->dependencies[] = 'metadata'; } private $hasStreamCache = array(); protected function getContainer() { return $this->getInjection('container'); } protected function getMetadata() { return $this->getInjection('metadata'); } protected function checkHasStream($entityType) { if (!array_key_exists($entityType, $this->hasStreamCache)) { $this->hasStreamCache[$entityType] = $this->getMetadata()->get("scopes.{$entityType}.stream"); } return $this->hasStreamCache[$entityType]; } protected function getNotificator($entityType) { if (empty($this->noticatorsHash[$entityType])) { $normalizedName = Util::normilizeClassName($entityType); $className = '\\Espo\\Custom\\Notificators\\' . $normalizedName; if (!class_exists($className)) { $moduleName = $this->getMetadata()->getScopeModuleName($entityType); if ($moduleName) { $className = '\\Espo\\Modules\\' . $moduleName . '\\Notificators\\' . $normalizedName; } else { $className = '\\Espo\\Notificators\\' . $normalizedName; } if (!class_exists($className)) { $className = '\\Espo\\Core\\Notificators\\Base'; } } $notificator = new $className(); $dependencies = $notificator->getDependencyList(); foreach ($dependencies as $name) { $notificator->inject($name, $this->getContainer()->get($name)); } $this->noticatorsHash[$entityType] = $notificator; } return $this->noticatorsHash[$entityType]; } public function afterSave(Entity $entity, array $options = array()) { $entityType = $entity->getEntityType(); if (!empty($options['silent']) && !empty($options['noNotifications'])) { return; } if (!$this->checkHasStream($entityType)) { if (in_array($entityType, $this->getConfig()->get('assignmentNotificationsEntityList', []))) { $notificator = $this->getNotificator($entityType); $notificator->process($entity); } } } }