示例#1
0
 public function onConfigBeforeSave(ConfigEvent $event)
 {
     $values = $event->getConfig();
     // Preserve existing value
     $event->unsetIfEmpty('transifex_password');
     // Check if the selected locale has been downloaded already, fetch it if not
     $installedLanguages = $this->coreParametersHelper->getParameter('supported_languages');
     if (!array_key_exists($values['coreconfig']['locale'], $installedLanguages)) {
         $fetchLanguage = $this->languageHelper->extractLanguagePackage($values['coreconfig']['locale']);
         // If there is an error, fall back to 'en_US' as it is our system default
         if ($fetchLanguage['error']) {
             $values['coreconfig']['locale'] = 'en_US';
             $message = 'mautic.core.could.not.set.language';
             $messageVars = [];
             if (isset($fetchLanguage['message'])) {
                 $message = $fetchLanguage['message'];
             }
             if (isset($fetchLanguage['vars'])) {
                 $messageVars = $fetchLanguage['vars'];
             }
             $event->setError($message, $messageVars);
         }
     }
     $event->setConfig($values);
 }
示例#2
0
 /**
  * CampaignModel constructor.
  *
  * @param CoreParametersHelper $coreParametersHelper
  * @param LeadModel $leadModel
  * @param ListModel $leadListModel
  * @param FormModel $formModel
  */
 public function __construct(CoreParametersHelper $coreParametersHelper, LeadModel $leadModel, ListModel $leadListModel, FormModel $formModel)
 {
     $this->leadModel = $leadModel;
     $this->leadListModel = $leadListModel;
     $this->formModel = $formModel;
     $this->batchSleepTime = $coreParametersHelper->getParameter('mautic.batch_sleep_time');
     $this->batchCampaignSleepTime = $coreParametersHelper->getParameter('mautic.batch_campaign_sleep_time');
 }
示例#3
0
 public function __construct(LeadModel $leadModel, CategoryModel $categoryModel, RequestStack $requestStack, IpLookupHelper $ipLookupHelper, CoreParametersHelper $coreParametersHelper)
 {
     $this->leadModel = $leadModel;
     $this->categoryModel = $categoryModel;
     $this->request = $requestStack->getCurrentRequest();
     $this->ipLookupHelper = $ipLookupHelper;
     $this->maxAssetSize = $coreParametersHelper->getParameter('mautic.max_size');
 }
示例#4
0
 /**
  * WebhookModel constructor.
  *
  * @param CoreParametersHelper $coreParametersHelper
  * @param Serializer           $serializer
  */
 public function __construct(CoreParametersHelper $coreParametersHelper, Serializer $serializer)
 {
     $this->queueMode = $coreParametersHelper->getParameter('queue_mode');
     $this->webhookStart = $coreParametersHelper->getParameter('webhook_start');
     $this->webhookLimit = $coreParametersHelper->getParameter('webhook_limit');
     $this->serializer = $serializer;
     $this->logMax = $coreParametersHelper->getParameter('webhook_log_max', 10);
 }
示例#5
0
 /**
  * IpLookupHelper constructor.
  *
  * @param RequestStack         $requestStack
  * @param EntityManager        $em
  * @param CoreParametersHelper $coreParametersHelper
  * @param AbstractLookup       $ipLookup
  */
 public function __construct(RequestStack $requestStack, EntityManager $em, CoreParametersHelper $coreParametersHelper, AbstractLookup $ipLookup = null)
 {
     $this->request = $requestStack->getCurrentRequest();
     $this->em = $em;
     $this->ipLookup = $ipLookup;
     $this->doNotTrackIps = $coreParametersHelper->getParameter('mautic.do_not_track_ips');
     $this->doNotTrackInternalIps = $coreParametersHelper->getParameter('mautic.do_not_track_internal_ips');
 }
示例#6
0
    /**
     * @param PageDisplayEvent $event
     */
    public function onPageDisplay(PageDisplayEvent $event)
    {
        if (!$this->coreParametersHelper->getParameter('notification_enabled')) {
            return;
        }
        $appId = $this->coreParametersHelper->getParameter('notification_app_id');
        $safariWebId = $this->coreParametersHelper->getParameter('notification_safari_web_id');
        $this->assetsHelper->addScript($this->router->generate('mautic_js', [], UrlGeneratorInterface::ABSOLUTE_URL), 'onPageDisplay_headClose', true, 'mautic_js');
        $this->assetsHelper->addScript('https://cdn.onesignal.com/sdks/OneSignalSDK.js', 'onPageDisplay_headClose');
        $manifestUrl = $this->router->generate('mautic_onesignal_manifest');
        $this->assetsHelper->addCustomDeclaration('<link rel="manifest" href="' . $manifestUrl . '" />', 'onPageDisplay_headClose');
        $leadAssociationUrl = $this->router->generate('mautic_subscribe_notification', [], UrlGeneratorInterface::ABSOLUTE_URL);
        $oneSignalInit = <<<JS

    var OneSignal = OneSignal || [];
    
    OneSignal.push(["init", {
        appId: "{$appId}",
        safari_web_id: "{$safariWebId}",
        autoRegister: true,
        notifyButton: {
            enable: false // Set to false to hide
        }
    }]);

    var postUserIdToMautic = function(userId) {
        var xhr = new XMLHttpRequest();

        xhr.open('post', '{$leadAssociationUrl}', true);
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        xhr.send('osid=' + userId);
    };

    OneSignal.getUserId(function(userId) {
        if (! userId) {
            OneSignal.on('subscriptionChange', function(isSubscribed) {
                if (isSubscribed) {
                    OneSignal.getUserId(function(newUserId) {
                        postUserIdToMautic(newUserId);
                    });
                }
            });
        } else {
            postUserIdToMautic(userId);
        }
    });
    
    // Just to be sure we've grabbed the ID
    window.onbeforeunload = function() {
        OneSignal.getUserId(function(userId) {
            if (userId) {
                postUserIdToMautic(userId);
            }        
        });    
    };
JS;
        $this->assetsHelper->addScriptDeclaration($oneSignalInit, 'onPageDisplay_headClose');
    }
示例#7
0
 /**
  * @param bool $includePlugins
  * @return mixed
  */
 public function getMauticBundles($includePlugins = true)
 {
     $bundles = $this->coreParametersHelper->getParameter('mautic.bundles');
     if ($includePlugins) {
         $plugins = $this->coreParametersHelper->getParameter('mautic.plugin.bundles');
         $bundles = array_merge($bundles, $plugins);
     }
     return $bundles;
 }
示例#8
0
 /**
  * Check for API requests and throw denied access if API is disabled.
  *
  * @param GetResponseEvent $event
  */
 public function onKernelRequest(GetResponseEvent $event)
 {
     if (!$event->isMasterRequest()) {
         return;
     }
     $apiEnabled = $this->coreParametersHelper->getParameter('api_enabled');
     $request = $event->getRequest();
     $requestUrl = $request->getRequestUri();
     // Check if /oauth or /api
     $isApiRequest = strpos($requestUrl, '/oauth') !== false || strpos($requestUrl, '/api') !== false;
     defined('MAUTIC_API_REQUEST') or define('MAUTIC_API_REQUEST', $isApiRequest);
     if ($isApiRequest && !$apiEnabled) {
         throw new AccessDeniedHttpException($this->translator->trans('mautic.core.url.error.401', ['%url%' => $request->getRequestUri()]));
     }
 }
示例#9
0
文件: UserType.php 项目: Yame-/mautic
 /**
  * UserType constructor.
  *
  * @param TranslatorInterface  $translator
  * @param EntityManager        $em
  * @param UserModel            $model
  * @param LanguageHelper       $languageHelper
  * @param CoreParametersHelper $parametersHelper
  */
 public function __construct(TranslatorInterface $translator, EntityManager $em, UserModel $model, LanguageHelper $languageHelper, CoreParametersHelper $parametersHelper)
 {
     $this->translator = $translator;
     $this->em = $em;
     $this->model = $model;
     // Get the list of available languages
     $languages = $languageHelper->fetchLanguages(false, false);
     $langChoices = [];
     foreach ($languages as $code => $langData) {
         $langChoices[$code] = $langData['name'];
     }
     $langChoices = array_merge($langChoices, $parametersHelper->getParameter('supported_languages'));
     // Alpha sort the languages by name
     asort($langChoices);
     $this->supportedLanguages = $langChoices;
 }
示例#10
0
 /**
  * Fetch upstream notifications via RSS.
  */
 public function updateUpstreamNotifications()
 {
     $url = $this->coreParametersHelper->getParameter('rss_notification_url');
     if (empty($url)) {
         return;
     }
     //check to see when we last checked for an update
     $lastChecked = $this->session->get('mautic.upstream.checked', 0);
     if (time() - $lastChecked > 3600) {
         $this->session->set('mautic.upstream.checked', time());
         $lastDate = $this->getRepository()->getUpstreamLastDate();
         try {
             /** @var FeedContent $feed */
             $feed = $this->rssReader->getFeedContent($url, $lastDate);
             /** @var Item $item */
             foreach ($feed->getItems() as $item) {
                 $description = $item->getDescription();
                 if (mb_strlen(strip_tags($description)) > 300) {
                     $description = mb_substr(strip_tags($description), 0, 300);
                     $description .= '... <a href="' . $item->getLink() . '" target="_blank">' . $this->translator->trans('mautic.core.notification.read_more') . '</a>';
                 }
                 $header = $item->getTitle();
                 $this->addNotification($description, 'upstream', false, $header ? $header : null, 'fa-bullhorn');
             }
         } catch (\Exception $exception) {
             $this->logger->addWarning($exception->getMessage());
         }
     }
 }
 /**
  * Authenticate via the form using users defined in authorized_users
  *
  * @param AuthenticationEvent $event
  *
  * @return bool|void
  */
 public function onUserFormAuthentication(AuthenticationEvent $event)
 {
     $username = $event->getUsername();
     $password = $event->getToken()->getCredentials();
     $user = new User();
     $user->setUsername($username);
     $authorizedUsers = $this->parametersHelper->getParameter('authorized_users');
     if (is_array($authorizedUsers) && isset($authorizedUsers[$username])) {
         $testUser = $authorizedUsers[$username];
         $user->setPassword($testUser['password']);
         if ($this->encoder->isPasswordValid($user, $password)) {
             $user->setFirstName($testUser['firstname'])->setLastName($testUser['lastname'])->setEmail($testUser['email'])->setRole($this->em->getReference('MauticUserBundle:Role', 1));
             $event->setIsAuthenticated('authorized_users', $user, true);
         }
     }
 }
示例#12
0
 /**
  * Method to tail (a few last rows) of a file
  *
  * @param int $lines
  *
  * @return array|null
  */
 public function getLogTail($lines = 10)
 {
     $log = $this->coreParametersHelper->getParameter('log_path') . '/mautic_' . MAUTIC_ENV . '-' . date('Y-m-d') . '.php';
     if (!file_exists($log)) {
         return null;
     }
     return $this->tail($log, $lines);
 }
示例#13
0
 /**
  * PathsHelper constructor.
  *
  * @param CoreParametersHelper
  * @param UserHelper $userHelper
  */
 public function __construct(UserHelper $userHelper, CoreParametersHelper $coreParametersHelper)
 {
     $this->user = $userHelper->getUser();
     $this->paths = $coreParametersHelper->getParameter('paths');
     $this->theme = $coreParametersHelper->getParameter('theme');
     $this->imagePath = $coreParametersHelper->getParameter('image_path');
     $this->dashboardImportDir = $coreParametersHelper->getParameter('dashboard_import_dir');
     $this->dashboardImportUserDir = $coreParametersHelper->getParameter('dashboard_import_user_dir');
     $this->kernelCacheDir = $coreParametersHelper->getParameter('kernel.cache_dir');
     $this->kernelLogsDir = $coreParametersHelper->getParameter('kernel.logs_dir');
 }
示例#14
0
 /**
  * EventModel constructor.
  *
  * @param IpLookupHelper       $ipLookupHelper
  * @param CoreParametersHelper $coreParametersHelper
  * @param LeadModel            $leadModel
  * @param CampaignModel        $campaignModel
  * @param MauticFactory        $factory
  */
 public function __construct(IpLookupHelper $ipLookupHelper, CoreParametersHelper $coreParametersHelper, LeadModel $leadModel, CampaignModel $campaignModel, MauticFactory $factory)
 {
     $this->ipLookupHelper = $ipLookupHelper;
     $this->leadModel = $leadModel;
     $this->campaignModel = $campaignModel;
     $this->batchSleepTime = $coreParametersHelper->getParameter('mautic.batch_sleep_time');
     $this->batchCampaignSleepTime = $coreParametersHelper->getParameter('mautic.batch_campaign_sleep_time');
     $this->scheduleTimeForFailedEvents = $coreParametersHelper->getParameter('campaign_time_wait_on_event_false');
     $this->factory = $factory;
 }
示例#15
0
 public function onConfigBeforeSave(ConfigEvent $event)
 {
     $event->unsetIfEmpty(['mailer_password', 'mailer_api_key']);
     $data = $event->getConfig('emailconfig');
     // Get the original data so that passwords aren't lost
     $monitoredEmail = $this->coreParametersHelper->getParameter('monitored_email');
     if (isset($data['monitored_email'])) {
         foreach ($data['monitored_email'] as $key => $monitor) {
             if (empty($monitor['password']) && !empty($monitoredEmail[$key]['password'])) {
                 $data['monitored_email'][$key]['password'] = $monitoredEmail[$key]['password'];
             }
             if ($key != 'general') {
                 if (empty($monitor['host']) || empty($monitor['address']) || empty($monitor['folder'])) {
                     $data['monitored_email'][$key]['override_settings'] = '';
                     $data['monitored_email'][$key]['address'] = '';
                     $data['monitored_email'][$key]['host'] = '';
                     $data['monitored_email'][$key]['user'] = '';
                     $data['monitored_email'][$key]['password'] = '';
                     $data['monitored_email'][$key]['ssl'] = '1';
                     $data['monitored_email'][$key]['port'] = '993';
                 }
             }
         }
     }
     // Ensure that percent signs are decoded in the unsubscribe/webview settings
     $decode = ['unsubscribe_text', 'webview_text', 'unsubscribe_message', 'resubscribe_message'];
     foreach ($decode as $key) {
         if (strpos($data[$key], '%') !== false) {
             $data[$key] = urldecode($data[$key]);
             if (preg_match_all('/([^%]|^)(%{1}[^%]\\S+[^%]%{1})([^%]|$)/i', $data[$key], $matches)) {
                 // Encode any left over to prevent Symfony from crashing
                 foreach ($matches[0] as $matchKey => $match) {
                     $replaceWith = $matches[1][$matchKey] . '%' . $matches[2][$matchKey] . '%' . $matches[3][$matchKey];
                     $data[$key] = str_replace($match, $replaceWith, $data[$key]);
                 }
             }
         }
     }
     $event->setConfig($data, 'emailconfig');
 }
示例#16
0
 /**
  * Batch sleep according to settings
  */
 protected function batchSleep()
 {
     $leadSleepTime = $this->coreParametersHelper->getParameter('batch_lead_sleep_time', false);
     if ($leadSleepTime === false) {
         $leadSleepTime = $this->coreParametersHelper->getParameter('batch_sleep_time', 1);
     }
     if (empty($leadSleepTime)) {
         return;
     }
     if ($leadSleepTime < 1) {
         usleep($leadSleepTime * 1000000);
     } else {
         sleep($leadSleepTime);
     }
 }
示例#17
0
 /**
  * Obtains a list of entities as defined by the API URL.
  *
  * @return Response
  */
 public function getEntitiesAction()
 {
     $repo = $this->model->getRepository();
     $tableAlias = $repo->getTableAlias();
     $publishedOnly = $this->request->get('published', 0);
     if ($publishedOnly) {
         $this->listFilters[] = ['column' => $tableAlias . '.isPublished', 'expr' => 'eq', 'value' => true];
     }
     $args = ['start' => $this->request->query->get('start', 0), 'limit' => $this->request->query->get('limit', $this->coreParametersHelper->getParameter('default_pagelimit')), 'filter' => ['string' => $this->request->query->get('search', ''), 'force' => $this->listFilters], 'orderBy' => $this->request->query->get('orderBy', ''), 'orderByDir' => $this->request->query->get('orderByDir', 'ASC'), 'withTotalCount' => true];
     $results = $this->model->getEntities($args);
     list($entities, $totalCount) = $this->prepareEntitiesForView($results);
     $view = $this->view(['total' => $totalCount, $this->entityNameMulti => $entities], Codes::HTTP_OK);
     $this->setSerializationContext($view);
     return $this->handleView($view);
 }
示例#18
0
 /**
  * Validates file before upload
  *
  * @param ValidationEvent $event
  */
 public function onUploadValidation(ValidationEvent $event)
 {
     $file = $event->getFile();
     $extensions = $this->coreParametersHelper->getParameter('allowed_extensions');
     $maxSize = $this->assetModel->getMaxUploadSize('B');
     if ($file !== null) {
         if ($file->getSize() > $maxSize) {
             $message = $this->translator->trans('mautic.asset.asset.error.file.size', ['%fileSize%' => round($file->getSize() / 1048576, 2), '%maxSize%' => round($maxSize / 1048576, 2)], 'validators');
             throw new ValidationException($message);
         }
         if (!in_array(strtolower($file->getExtension()), array_map('strtolower', $extensions))) {
             $message = $this->translator->trans('mautic.asset.asset.error.file.extension', ['%fileExtension%' => $file->getExtension(), '%extensions%' => implode(', ', $extensions)], 'validators');
             throw new ValidationException($message);
         }
     }
 }
示例#19
0
 /**
  * Set vars on login.
  *
  * @param InteractiveLoginEvent $event
  */
 public function onSecurityInteractiveLogin(InteractiveLoginEvent $event)
 {
     if (defined('MAUTIC_INSTALLER')) {
         return;
     }
     $session = $event->getRequest()->getSession();
     if ($this->securityContext->isGranted('IS_AUTHENTICATED_FULLY') || $this->securityContext->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
         $user = $event->getAuthenticationToken()->getUser();
         //set a session var for filemanager to know someone is logged in
         $session->set('mautic.user', $user->getId());
         //mark the user as last logged in
         $user = $this->userHelper->getUser();
         if ($user instanceof User) {
             $this->userModel->setOnlineStatus('online');
             $this->userModel->getRepository()->setLastLogin($user);
             // Set the timezone and locale in session while we have it since Symfony dispatches the onKernelRequest prior to the
             // firewall setting the known user
             $tz = $user->getTimezone();
             if (empty($tz)) {
                 $tz = $this->params['default_timezone'];
             }
             $session->set('_timezone', $tz);
             $locale = $user->getLocale();
             if (empty($locale)) {
                 $locale = $this->params['locale'];
             }
             $session->set('_locale', $locale);
         }
         //dispatch on login events
         if ($this->dispatcher->hasListeners(UserEvents::USER_LOGIN)) {
             $event = new LoginEvent($this->userHelper->getUser());
             $this->dispatcher->dispatch(UserEvents::USER_LOGIN, $event);
         }
     } else {
         $session->remove('mautic.user');
     }
     //set a couple variables used by filemanager
     $session->set('mautic.docroot', $event->getRequest()->server->get('DOCUMENT_ROOT'));
     $session->set('mautic.basepath', $event->getRequest()->getBasePath());
     $session->set('mautic.imagepath', $this->coreParametersHelper->getParameter('image_path'));
 }
示例#20
0
 /**
  * @param EmailSendEvent $event
  */
 public function onEmailGenerate(EmailSendEvent $event)
 {
     $idHash = $event->getIdHash();
     $lead = $event->getLead();
     $email = $event->getEmail();
     if ($idHash == null) {
         // Generate a bogus idHash to prevent errors for routes that may include it
         $idHash = uniqid();
     }
     $unsubscribeText = $this->coreParametersHelper->getParameter('unsubscribe_text');
     if (!$unsubscribeText) {
         $unsubscribeText = $this->translator->trans('mautic.email.unsubscribe.text', ['%link%' => '|URL|']);
     }
     $unsubscribeText = str_replace('|URL|', $this->emailModel->buildUrl('mautic_email_unsubscribe', ['idHash' => $idHash]), $unsubscribeText);
     $event->addToken('{unsubscribe_text}', $unsubscribeText);
     $event->addToken('{unsubscribe_url}', $this->emailModel->buildUrl('mautic_email_unsubscribe', ['idHash' => $idHash]));
     $webviewText = $this->coreParametersHelper->getParameter('webview_text');
     if (!$webviewText) {
         $webviewText = $this->translator->trans('mautic.email.webview.text', ['%link%' => '|URL|']);
     }
     $webviewText = str_replace('|URL|', $this->emailModel->buildUrl('mautic_email_webview', ['idHash' => $idHash]), $webviewText);
     $event->addToken('{webview_text}', $webviewText);
     // Show public email preview if the lead is not known to prevent 404
     if (empty($lead['id']) && $email) {
         $event->addToken('{webview_url}', $this->emailModel->buildUrl('mautic_email_preview', ['objectId' => $email->getId()]));
     } else {
         $event->addToken('{webview_url}', $this->emailModel->buildUrl('mautic_email_webview', ['idHash' => $idHash]));
     }
     $signatureText = $this->coreParametersHelper->getParameter('default_signature_text');
     $fromName = $this->coreParametersHelper->getParameter('mailer_from_name');
     if (!empty($lead['owner_id'])) {
         $owner = $this->factory->getModel('lead')->getRepository()->getLeadOwner($lead['owner_id']);
         if ($owner && !empty($owner['signature'])) {
             $fromName = $owner['first_name'] . ' ' . $owner['last_name'];
             $signatureText = $owner['signature'];
         }
     }
     $signatureText = str_replace('|FROM_NAME|', $fromName, nl2br($signatureText));
     $event->addToken('{signature}', $signatureText);
     $event->addToken('{subject}', $event->getSubject());
 }
示例#21
0
 /**
  * @param CampaignExecutionEvent $event
  */
 public function onCampaignTriggerAction(CampaignExecutionEvent $event)
 {
     $lead = $event->getLead();
     if ($this->leadModel->isContactable($lead, 'sms') !== DoNotContact::IS_CONTACTABLE) {
         return $event->setFailed('mautic.sms.campaign.failed.not_contactable');
     }
     $leadPhoneNumber = $lead->getFieldValue('mobile');
     if (empty($leadPhoneNumber)) {
         $leadPhoneNumber = $lead->getFieldValue('phone');
     }
     if (empty($leadPhoneNumber)) {
         return $event->setFailed('mautic.sms.campaign.failed.missing_number');
     }
     $smsId = (int) $event->getConfig()['sms'];
     $sms = $this->smsModel->getEntity($smsId);
     if ($sms->getId() !== $smsId) {
         return $event->setFailed('mautic.sms.campaign.failed.missing_entity');
     }
     $smsEvent = new SmsSendEvent($sms->getMessage(), $lead);
     $smsEvent->setSmsId($smsId);
     $this->dispatcher->dispatch(SmsEvents::SMS_ON_SEND, $smsEvent);
     $tokenEvent = $this->dispatcher->dispatch(SmsEvents::TOKEN_REPLACEMENT, new TokenReplacementEvent($smsEvent->getContent(), $lead, ['channel' => ['sms', $sms->getId()]]));
     $metadata = $this->smsApi->sendSms($leadPhoneNumber, $tokenEvent->getContent());
     $defaultFrequencyNumber = $this->coreParametersHelper->getParameter('sms_frequency_number');
     $defaultFrequencyTime = $this->coreParametersHelper->getParameter('sms_frequency_time');
     /** @var \Mautic\LeadBundle\Entity\FrequencyRuleRepository $frequencyRulesRepo */
     $frequencyRulesRepo = $this->leadModel->getFrequencyRuleRepository();
     $leadIds = $lead->getId();
     $dontSendTo = $frequencyRulesRepo->getAppliedFrequencyRules('sms', $leadIds, $defaultFrequencyNumber, $defaultFrequencyTime);
     if (!empty($dontSendTo) and $dontSendTo[0]['lead_id'] != $lead->getId()) {
         $metadata = $this->smsApi->sendSms($leadPhoneNumber, $smsEvent->getContent());
     }
     // If there was a problem sending at this point, it's an API problem and should be requeued
     if ($metadata === false) {
         return $event->setResult(false);
     }
     $this->smsModel->createStatEntry($sms, $lead);
     $this->smsModel->getRepository()->upCount($smsId);
     $event->setChannel('sms', $sms->getId());
     $event->setResult(['type' => 'mautic.sms.sms', 'status' => 'mautic.sms.timeline.status.delivered', 'id' => $sms->getId(), 'name' => $sms->getName(), 'content' => $tokenEvent->getContent()]);
 }
示例#22
0
 /**
  * @param CampaignBuilderEvent $event
  */
 public function onCampaignBuild(CampaignBuilderEvent $event)
 {
     if ($this->coreParametersHelper->getParameter('notification_enabled')) {
         $event->addAction('notification.send_notification', ['label' => 'mautic.notification.campaign.send_notification', 'description' => 'mautic.notification.campaign.send_notification.tooltip', 'eventName' => NotificationEvents::ON_CAMPAIGN_TRIGGER_ACTION, 'formType' => 'notificationsend_list', 'formTypeOptions' => ['update_select' => 'campaignevent_properties_notification'], 'formTheme' => 'MauticNotificationBundle:FormTheme\\NotificationSendList', 'timelineTemplate' => 'MauticNotificationBundle:SubscribedEvents\\Timeline:index.html.php']);
     }
 }
示例#23
0
 public function __construct(CoreParametersHelper $coreParametersHelper, FormatterHelper $formatterHelper, TemplatingHelper $templatingHelper)
 {
     $this->defaultPageLimit = $coreParametersHelper->getParameter('default_pagelimit');
     $this->formatterHelper = $formatterHelper;
     $this->templatingHelper = $templatingHelper;
 }
示例#24
0
 /**
  * Clears the temporary widget cache
  */
 public function clearDashboardCache()
 {
     $cacheDir = $this->coreParametersHelper->getParameter('cached_data_dir', $this->pathsHelper->getSystemPath('cache', true));
     $cacheStorage = new CacheStorageHelper($cacheDir, $this->user->getId());
     $cacheStorage->clear();
 }
示例#25
0
文件: Mailbox.php 项目: Yame-/mautic
 /**
  * Mailbox constructor.
  *
  * @param CoreParametersHelper $parametersHelper
  * @param PathsHelper          $pathsHelper
  */
 public function __construct(CoreParametersHelper $parametersHelper, PathsHelper $pathsHelper)
 {
     $this->mailboxes = $parametersHelper->getParameter('monitored_email', []);
     if (isset($this->mailboxes['general'])) {
         $this->settings = $this->mailboxes['general'];
     } else {
         $this->settings = ['host' => '', 'port' => '', 'password' => '', 'user' => '', 'encryption' => ''];
     }
     // Check that cache attachments directory exists
     $cacheDir = $pathsHelper->getSystemPath('cache', true);
     $this->attachmentsDir = $cacheDir . '/attachments';
     if (!file_exists($this->attachmentsDir)) {
         mkdir($this->attachmentsDir);
     }
     if ($this->settings['host'] == 'imap.gmail.com') {
         $this->isGmail = true;
     }
 }