![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/plugins/MauticSocialBundle/Model/ |
<?php namespace MauticPlugin\MauticSocialBundle\Model; use Mautic\CoreBundle\Model\FormModel; use MauticPlugin\MauticSocialBundle\Entity\Monitoring; use MauticPlugin\MauticSocialBundle\Event as Events; use MauticPlugin\MauticSocialBundle\Form\Type\MonitoringType; use MauticPlugin\MauticSocialBundle\Form\Type\TwitterHashtagType; use MauticPlugin\MauticSocialBundle\Form\Type\TwitterMentionType; use MauticPlugin\MauticSocialBundle\SocialEvents; use Symfony\Component\Form\FormFactoryInterface; use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException; use Symfony\Contracts\EventDispatcher\Event; /** * @extends FormModel<Monitoring> */ class MonitoringModel extends FormModel { /** * @var array<string, mixed> */ private array $networkTypes = [ 'twitter_handle' => [ 'label' => 'mautic.social.monitoring.type.list.twitter.handle', 'form' => TwitterMentionType::class, ], 'twitter_hashtag' => [ 'label' => 'mautic.social.monitoring.type.list.twitter.hashtag', 'form' => TwitterHashtagType::class, ], ]; /** * @param object $entity * @param string|null $action * @param mixed[] $options * * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException */ public function createForm($entity, FormFactoryInterface $formFactory, $action = null, $options = []): \Symfony\Component\Form\FormInterface { if (!$entity instanceof Monitoring) { throw new MethodNotAllowedHttpException(['Monitoring']); } if (!empty($action)) { $options['action'] = $action; } return $formFactory->create(MonitoringType::class, $entity, $options); } /** * Get a specific entity or generate a new one if id is empty. */ public function getEntity($id = null): ?Monitoring { return $id ? parent::getEntity($id) : new Monitoring(); } /** * @throws MethodNotAllowedHttpException */ protected function dispatchEvent($action, &$entity, $isNew = false, Event $event = null): ?Event { if (!$entity instanceof Monitoring) { throw new MethodNotAllowedHttpException(['Monitoring']); } switch ($action) { case 'pre_save': $name = SocialEvents::MONITOR_PRE_SAVE; break; case 'post_save': $name = SocialEvents::MONITOR_POST_SAVE; break; case 'pre_delete': $name = SocialEvents::MONITOR_PRE_DELETE; break; case 'post_delete': $name = SocialEvents::MONITOR_POST_DELETE; break; default: return null; } if ($this->dispatcher->hasListeners($name)) { if (empty($event)) { $event = new Events\SocialEvent($entity, $isNew); } $this->dispatcher->dispatch($event, $name); return $event; } else { return null; } } /** * @param Monitoring $monitoringEntity * @param bool $unlock */ public function saveEntity($monitoringEntity, $unlock = true): void { // we're editing an existing record if (!$monitoringEntity->isNew()) { // increase the revision $revision = $monitoringEntity->getRevision(); ++$revision; $monitoringEntity->setRevision($revision); } // is new else { $now = new \DateTime(); $monitoringEntity->setDateAdded($now); } parent::saveEntity($monitoringEntity, $unlock); } /** * @return \MauticPlugin\MauticSocialBundle\Entity\MonitoringRepository */ public function getRepository() { return $this->em->getRepository(Monitoring::class); } public function getPermissionBase(): string { return 'mauticSocial:monitoring'; } /** * @return string[] */ public function getNetworkTypes(): array { $types = []; foreach ($this->networkTypes as $type => $data) { $types[$type] = $data['label']; } return $types; } /** * @param string $type * * @return string|null */ public function getFormByType($type) { return array_key_exists($type, $this->networkTypes) ? $this->networkTypes[$type]['form'] : null; } }