/**
  * Get value from current logged in Frontend User
  *
  * @return string
  */
 protected function getFromFrontendUser()
 {
     $value = '';
     if ($this->getField()->getFeuserValue()) {
         $value = FrontendUtility::getPropertyFromLoggedInFrontendUser($this->getField()->getFeuserValue());
     }
     return $value;
 }
예제 #2
0
 /**
  * Save mail on submit
  *
  * @param Mail $mail
  * @return void
  */
 protected function saveMail(Mail &$mail = null)
 {
     $marketingInfos = SessionUtility::getMarketingInfos();
     $mail->setPid(FrontendUtility::getStoragePage($this->settings['main']['pid']))->setSenderMail($this->mailRepository->getSenderMailFromArguments($mail))->setSenderName($this->mailRepository->getSenderNameFromArguments($mail))->setSubject($this->settings['receiver']['subject'])->setReceiverMail($this->settings['receiver']['email'])->setBody(DebugUtility::viewArray($this->mailRepository->getVariablesWithMarkersFromMail($mail)))->setSpamFactor(SessionUtility::getSpamFactorFromSession())->setTime(time() - SessionUtility::getFormStartFromSession($mail->getForm()->getUid(), $this->settings))->setUserAgent(GeneralUtility::getIndpEnv('HTTP_USER_AGENT'))->setMarketingRefererDomain($marketingInfos['refererDomain'])->setMarketingReferer($marketingInfos['referer'])->setMarketingCountry($marketingInfos['country'])->setMarketingMobileDevice($marketingInfos['mobileDevice'])->setMarketingFrontendLanguage($marketingInfos['frontendLanguage'])->setMarketingBrowserLanguage($marketingInfos['browserLanguage'])->setMarketingPageFunnel($marketingInfos['pageFunnel']);
     if (FrontendUtility::isLoggedInFrontendUser()) {
         $mail->setFeuser($this->userRepository->findByUid(FrontendUtility::getPropertyFromLoggedInFrontendUser('uid')));
     }
     if (!ConfigurationUtility::isDisableIpLogActive()) {
         $mail->setSenderIp(GeneralUtility::getIndpEnv('REMOTE_ADDR'));
     }
     if ($this->settings['main']['optin'] || $this->settings['db']['hidden']) {
         $mail->setHidden(true);
     }
     foreach ($mail->getAnswers() as $answer) {
         $answer->setPid(FrontendUtility::getStoragePage($this->settings['main']['pid']));
     }
     $this->mailRepository->add($mail);
     $this->persistenceManager->persistAll();
 }
 /**
  * Query for Pi2
  *
  * @param array $settings TypoScript Settings
  * @param array $piVars Plugin Variables
  * @return QueryResult
  */
 public function findListBySettings($settings, $piVars)
 {
     $query = $this->createQuery();
     /**
      * FILTER start
      */
     $and = [$query->greaterThan('uid', 0)];
     // FILTER: form
     if ((int) $settings['main']['form'] > 0) {
         $and[] = $query->equals('form', $settings['main']['form']);
     }
     // FILTER: pid
     if ((int) $settings['main']['pid'] > 0) {
         $and[] = $query->equals('pid', $settings['main']['pid']);
     }
     // FILTER: delta
     if ((int) $settings['list']['delta'] > 0) {
         $and[] = $query->greaterThan('crdate', time() - $settings['list']['delta']);
     }
     // FILTER: showownonly
     if ($settings['list']['showownonly']) {
         $and[] = $query->equals('feuser', FrontendUtility::getPropertyFromLoggedInFrontendUser());
     }
     // FILTER: abc
     if (isset($piVars['filter']['abc'])) {
         $and[] = $query->equals('answers.field', $settings['search']['abc']);
         $and[] = $query->like('answers.value', $piVars['filter']['abc'] . '%');
     }
     // FILTER: field
     if (isset($piVars['filter'])) {
         // fulltext
         $filter = [];
         if (!empty($piVars['filter']['_all'])) {
             $filter[] = $query->like('answers.value', '%' . $piVars['filter']['_all'] . '%');
         }
         // single field search
         foreach ((array) $piVars['filter'] as $field => $value) {
             if (is_numeric($field) && !empty($value)) {
                 $filterAnd = [$query->equals('answers.field', $field), $query->like('answers.value', '%' . $value . '%')];
                 $filter[] = $query->logicalAnd($filterAnd);
             }
         }
         if (count($filter) > 0) {
             // switch between AND and OR
             if (!empty($settings['search']['logicalRelation']) && strtolower($settings['search']['logicalRelation']) === 'and') {
                 $and[] = $query->logicalAnd($filter);
             } else {
                 $and[] = $query->logicalOr($filter);
             }
         }
     }
     // FILTER: create constraint
     $constraint = $query->logicalAnd($and);
     $query->matching($constraint);
     // sorting
     $query->setOrderings(['crdate' => QueryInterface::ORDER_DESCENDING]);
     // set limit
     if ((int) $settings['list']['limit'] > 0) {
         $query->setLimit((int) $settings['list']['limit']);
     }
     $mails = $query->execute();
     return $mails;
 }