/** * 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; }
/** * 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; }