/** * @param int $page * * @return string */ public function getTokenContent($page = 1) { if (!$this->factory->getSecurity()->isGranted('lead:fields:full')) { return; } $session = $this->factory->getSession(); //set limits $limit = 5; $start = $page === 1 ? 0 : ($page - 1) * $limit; if ($start < 0) { $start = 0; } $request = $this->factory->getRequest(); $search = $request->get('search', $session->get('mautic.lead.emailtoken.filter', '')); $session->set('mautic.lead.emailtoken.filter', $search); $filter = array('string' => $search, 'force' => array(array('column' => 'f.isPublished', 'expr' => 'eq', 'value' => true))); $fields = $this->factory->getModel('lead.field')->getEntities(array('start' => $start, 'limit' => $limit, 'filter' => $filter, 'orderBy' => 'f.label', 'orderByDir' => 'ASC', 'hydration_mode' => 'HYDRATE_ARRAY')); $count = count($fields); if ($count && $count < $start + 1) { //the number of entities are now less then the current page so redirect to the last page if ($count === 1) { $page = 1; } else { $page = ceil($count / $limit) ?: 1; } $session->set('mautic.lead.emailtoken.page', $page); } return $this->factory->getTemplating()->render('MauticLeadBundle:SubscribedEvents\\EmailToken:list.html.php', array('items' => $fields, 'page' => $page, 'limit' => $limit, 'totalCount' => $count, 'tmpl' => $request->get('tmpl', 'index'), 'searchValue' => $search)); }
/** * {@inheritdoc} * * @param Request $request * * @return Response never null */ public function logout(Request $request, Response $response, TokenInterface $token) { /** @var \Mautic\UserBundle\Model\UserModel $userModel */ $userModel = $this->factory->getModel('user'); $userModel->setOnlineStatus('offline'); $dispatcher = $this->factory->getDispatcher(); if ($dispatcher->hasListeners(UserEvents::USER_LOGOUT)) { $event = new LogoutEvent($this->factory); $dispatcher->dispatch(UserEvents::USER_LOGOUT, $event); } // Clear session $this->factory->getSession()->clear(); }
/** * @param int $page * @param array $entityArguments * @param array $viewParameters * * @return string */ public function getTokenContent($page = 1, $entityArguments = array(), $viewParameters = array()) { if (is_array($page)) { // Laziness $entityArguments = $page; $page = 1; } //set some permissions $permissions = $this->factory->getSecurity()->isGranted($this->permissionSet, "RETURN_ARRAY"); if (in_array(false, $permissions)) { return; } $session = $this->factory->getSession(); //set limits $limit = 5; $start = $page === 1 ? 0 : ($page - 1) * $limit; if ($start < 0) { $start = 0; } $request = $this->factory->getRequest(); $search = $request->get('search', $session->get('mautic' . $this->langVar . 'buildertoken.filter', '')); $session->set('mautic' . $this->langVar . 'buildertoken.filter', $search); $model = $this->factory->getModel($this->modelName); $repo = $model->getRepository(); $prefix = $repo->getTableAlias(); if (!empty($prefix)) { $prefix .= '.'; } $filter = array('string' => $search); $filter['force'] = isset($entityArguments['filter']['force']) ? $entityArguments['filter']['force'] : array(); if (isset($permissions[$this->viewPermissionBase . ':viewother']) && !$permissions[$this->viewPermissionBase . ':viewother']) { $filter['force'][] = array('column' => $prefix . 'createdBy', 'expr' => 'eq', 'value' => $this->factory->getUser()->getId()); } $entityArguments['filter'] = $filter; $entityArguments = array_merge(array('start' => $start, 'limit' => $limit, 'orderByDir' => 'DESC'), $entityArguments); $items = $model->getEntities($entityArguments); $count = count($items); if ($count && $count < $start + 1) { //the number of entities are now less then the current page so redirect to the last page if ($count === 1) { $page = 1; } else { $page = ceil($count / $limit) ?: 1; } $session->set('mautic' . $this->langVar . 'buildertoken.page', $page); } return $this->factory->getTemplating()->render($this->bundleName . ':SubscribedEvents\\BuilderToken:list.html.php', array_merge($viewParameters, array('items' => $items, 'page' => $page, 'limit' => $limit, 'totalCount' => $count, 'tmpl' => $request->get('tmpl', 'index'), 'searchValue' => $search))); }
/** * Find and add menu items * * @param MauticEvents\IconEvent $event * * @return void */ protected function buildIcons(MauticEvents\IconEvent $event) { $session = $this->factory->getSession(); $icons = $session->get('mautic.menu.icons', array()); if (empty($icons)) { $bundles = $this->factory->getMauticBundles(true); $menuHelper = $this->factory->getHelper('menu'); foreach ($bundles as $bundle) { if (!empty($bundle['config']['menu']['main'])) { $items = !isset($bundle['config']['menu']['main']['items']) ? $bundle['config']['menu']['main'] : $bundle['config']['menu']['main']['items']; } if (!empty($items)) { $menuHelper->createMenuStructure($items); foreach ($items as $item) { if (isset($item['iconClass']) && isset($item['id'])) { $id = explode('_', $item['id']); if (isset($id[1])) { // some bundle names are in plural, create also singular item if (substr($id[1], -1) == 's') { $event->addIcon(rtrim($id[1], 's'), $item['iconClass']); } $event->addIcon($id[1], $item['iconClass']); } } } } } unset($bundles, $menuHelper); $icons = $event->getIcons(); $session->set('mautic.menu.icons', $icons); } else { $event->setIcons($icons); } }
/** * Extacts the auth keys from response and saves entity * * @param $data * @param $tokenOverride * * @return bool|string false if no error; otherwise the error string */ public function extractAuthKeys($data, $tokenOverride = null) { //check to see if an entity exists $entity = $this->getIntegrationSettings(); if ($entity == null) { $entity = new Integration(); $entity->setName($this->getName()); } // Prepare the keys for extraction such as renaming, setting expiry, etc $data = $this->prepareResponseForExtraction($data); //parse the response $authTokenKey = $tokenOverride ? $tokenOverride : $this->getAuthTokenKey(); if (is_array($data) && isset($data[$authTokenKey])) { $keys = $this->mergeApiKeys($data, null, true); $encrypted = $this->encryptApiKeys($keys); $entity->setApiKeys($encrypted); $this->factory->getSession()->set($this->getName() . '_tokenResponse', $data); $error = false; } elseif (is_array($data) && isset($data['access_token'])) { $this->factory->getSession()->set($this->getName() . '_tokenResponse', $data); $error = false; } else { $error = $this->getErrorsFromResponse($data); if (empty($error)) { $error = $this->factory->getTranslator()->trans("mautic.integration.error.genericerror", array(), "flashes"); } } //save the data $em = $this->factory->getEntityManager(); $em->persist($entity); $em->flush(); $this->setIntegrationSettings($entity); return $error; }
/** * @param MauticFactory $factory */ public function __construct(MauticFactory $factory) { $this->translator = $factory->getTranslator(); $this->validator = $factory->getValidator(); $this->apiMode = $factory->getRequest()->get('api_mode', $factory->getSession()->get('mautic.client.filter.api_mode', 'oauth1a')); $this->router = $factory->getRouter(); }
/** * @param $message * @param array $messageVars * @param string $domain * @param null $title * @param null $icon * @param bool $addNotification * @param string $type */ public function addBrowserNotification($message, $messageVars = array(), $domain = 'flashes', $title = null, $icon = null, $addNotification = true, $type = 'notice') { if ($domain == null) { $domain = 'flashes'; } $translator = $this->factory->getTranslator(); if ($domain === false) { //message is already translated $translatedMessage = $message; } else { if (isset($messageVars['pluralCount'])) { $translatedMessage = $translator->transChoice($message, $messageVars['pluralCount'], $messageVars, $domain); } else { $translatedMessage = $translator->trans($message, $messageVars, $domain); } } if ($title !== null) { $title = $translator->trans($title); } else { $title = 'Mautic'; } if ($icon == null) { $icon = 'media/images/favicon.ico'; } if (strpos($icon, 'http') !== 0) { $assetHelper = $this->factory->getHelper('template.assets'); $icon = $assetHelper->getUrl($icon, null, null, true); } $session = $this->factory->getSession(); $browserNotifications = $session->get('mautic.browser.notifications', array()); $browserNotifications[] = array('message' => $translatedMessage, 'title' => $title, 'icon' => $icon); $session->set('mautic.browser.notifications', $browserNotifications); if (!defined('MAUTIC_INSTALLER') && $addNotification) { switch ($type) { case 'warning': $iconClass = "text-warning fa-exclamation-triangle"; break; case 'error': $iconClass = "text-danger fa-exclamation-circle"; break; case 'notice': $iconClass = "fa-info-circle"; default: break; } //If the user has not interacted with the browser for the last 30 seconds, consider the message unread $lastActive = $this->request->get('mauticUserLastActive', 0); $isRead = $lastActive > 30 ? 0 : 1; $this->addNotification($translatedMessage, null, $isRead, null, $iconClass); } }
/** * Generate the auth login URL. Note that if oauth2, response_type=code is assumed. If this is not the case, * override this function. * * @return string */ public function getAuthLoginUrl() { $authType = $this->getAuthenticationType(); if ($authType == 'oauth2') { $callback = $this->getAuthCallbackUrl(); $clientIdKey = $this->getClientIdKey(); $state = $this->getAuthLoginState(); $url = $this->getAuthenticationUrl() . '?client_id=' . $this->keys[$clientIdKey] . '&response_type=code' . '&redirect_uri=' . urlencode($callback) . '&state=' . $state; if ($scope = $this->getAuthScope()) { $url .= '&scope=' . urlencode($scope); } $this->factory->getSession()->set($this->getName() . '_csrf_token', $state); return $url; } else { return $this->factory->getRouter()->generate('mautic_integration_auth_callback', array('integration' => $this->getName())); } }
/** * @param MauticFactory $factory */ public function __construct(MauticFactory $factory) { $this->translator = $factory->getTranslator(); $this->session = $factory->getSession(); }